First commit

This commit is contained in:
Egor 2024-08-31 02:09:35 +03:00
commit a8734380a1
42 changed files with 1956 additions and 0 deletions

258
bin/volume-brightness Executable file
View file

@ -0,0 +1,258 @@
#!/bin/bash
# See README.md for usage instructions
volume_step=5
mic_volume_step=5
brightness_step=5
kbd_brightness_step=5
max_volume=100
max_mic_volume=100
volume_notification_timeout=1000
mic_volume_notification_timeout=1000
brightness_notification_timeout=1000
kbd_brightness_notification_timeout=1000
player_notification_timeout=5000
download_album_art=true
show_album_art=true
show_music_in_volume_indicator=true
# Uses regex to get volume from pactl
function get_volume {
pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '[0-9]{1,3}(?=%)' | head -1
}
function get_mic_volume {
pactl get-source-volume @DEFAULT_SOURCE@ | grep -Po '[0-9]{1,3}(?=%)' | head -1
}
# Uses regex to get mute status from pactl
function get_mute {
pactl get-sink-mute @DEFAULT_SINK@ | grep -Po '(?<=Mute: )(yes|no)'
}
function get_mic_mute {
pactl get-source-mute @DEFAULT_SOURCE@ | grep -Po '(?<=Mute: )(yes|no)'
}
# Uses regex to get brightness from xbacklight
function get_brightness {
brightnessctl -c backlight -P get | grep -Po '[0-9]{1,3}' | head -n 1
}
function get_kbd_brightness {
brightnessctl -d kbd_backlight -P get | grep -Po '[0-9]{1,3}' | head -n 1
}
# Returns a mute icon, a volume-low icon, or a volume-high icon, depending on the volume
function get_volume_icon {
volume=$(get_volume)
mute=$(get_mute)
if [ "$mute" == "yes" ]; then
volume_icon="volume-level-muted"
elif [ "$volume" -eq 0 ]; then
volume_icon="volume-level-low"
elif [ "$volume" -lt 50 ]; then
volume_icon="volume-level-medium"
else
volume_icon="volume-level-high"
fi
}
function get_mic_volume_icon {
mic_volume=$(get_mic_volume)
mic_mute=$(get_mic_mute)
if [ "$mic_mute" == "yes" ]; then
mic_volume_icon="mic-volume-muted"
elif [ "$mic_volume" -eq 0 ]; then
mic_volume_icon="mic-volume-low"
elif [ "$mic_volume" -lt 50 ]; then
mic_volume_icon="mic-volume-medium"
else
mic_volume_icon="mic-volume-high"
fi
}
# Always returns the same icon - I couldn't get the brightness-low icon to work with fontawesome
function get_brightness_icon {
brightness=$(get_brightness)
if [ "$brightness" -eq 0 ]; then
brightness_icon="gpm-brightness-lcd-disabled"
else
brightness_icon="gpm-brightness-lcd"
fi
}
function get_kbd_brightness_icon {
kbd_brightness=$(get_kbd_brightness)
if [ "$kbd_brightness" -eq 0 ]; then
kbd_brightness_icon="gpm-brightness-kbd-disabled"
else
kbd_brightness_icon="gpm-brightness-kbd"
fi
}
function get_album_art {
url=$(playerctl -f "{{mpris:artUrl}}" metadata)
if [[ $url == "file://"* ]]; then
album_art="${url/file:\/\//}"
elif [[ $url == "http://"* ]] && [[ $download_album_art == "true" ]]; then
# Identify filename from URL
filename="$(echo $url | sed "s/.*\///")"
# Download file to /tmp if it doesn't exist
if [ ! -f "/tmp/$filename" ]; then
wget -O "/tmp/$filename" "$url"
fi
album_art="/tmp/$filename"
elif [[ $url == "https://"* ]] && [[ $download_album_art == "true" ]]; then
# Identify filename from URL
filename="$(echo $url | sed "s/.*\///")"
# Download file to /tmp if it doesn't exist
if [ ! -f "/tmp/$filename" ]; then
wget -O "/tmp/$filename" "$url"
fi
album_art="/tmp/$filename"
else
album_art=""
fi
}
# Displays a volume notification
function show_volume_notif {
volume=$(get_mute)
get_volume_icon
notify-send -a "volume-brightness" -t $volume_notification_timeout -h string:x-dunst-stack-tag:volume_notif -h int:value:$volume -i "$volume_icon" "Volume"
}
function show_mic_volume_notif {
mic_volume=$(get_mic_mute)
get_mic_volume_icon
notify-send -a "volume-brightness" -t $mic_volume_notification_timeout -h string:x-dunst-stack-tag:volume_notif -h int:value:$mic_volume -i "$mic_volume_icon" "Microphone volume"
}
# Displays a music notification
function show_music_notif {
song_title=$(playerctl -f "{{title}}" metadata)
song_artist=$(playerctl -f "{{artist}}" metadata)
song_album=$(playerctl -f "{{album}}" metadata)
if [[ $show_album_art == "true" ]]; then
get_album_art
fi
notify-send -a "volume-brightness" -t $player_notification_timeout -h string:x-dunst-stack-tag:music_notif -i "$album_art" "$song_title" "$song_artist - $song_album"
}
# Displays a brightness notification using dunstify
function show_brightness_notif {
brightness=$(get_brightness)
echo $brightness
get_brightness_icon
notify-send -a "volume-brightness" -t $brightness_notification_timeout -h string:x-dunst-stack-tag:brightness_notif -h int:value:$brightness -i "$brightness_icon" "Brightness"
}
function show_kbd_brightness_notif {
kbd_brightness=$(get_kbd_brightness)
echo $kbd_brightness
get_kbd_brightness_icon
notify-send -a "volume-brightness" -t $kbd_brightness_notification_timeout -h string:x-dunst-stack-tag:brightness_notif -h int:value:$kbd_brightness -i "$kbd_brightness_icon" "Keyboard brightness"
}
# Main function - Takes user input, "volume_up", "volume_down", "brightness_up", or "brightness_down"
case $1 in
volume_up)
# Unmutes and increases volume, then displays the notification
pactl set-sink-mute @DEFAULT_SINK@ 0
volume=$(get_volume)
if [ $(( "$volume" + "$volume_step" )) -gt $max_volume ]; then
pactl set-sink-volume @DEFAULT_SINK@ $max_volume%
else
pactl set-sink-volume @DEFAULT_SINK@ +$volume_step%
fi
show_volume_notif
;;
volume_down)
# Raises volume and displays the notification
pactl set-sink-volume @DEFAULT_SINK@ -$volume_step%
show_volume_notif
;;
volume_mute)
# Toggles mute and displays the notification
pactl set-sink-mute @DEFAULT_SINK@ toggle
show_volume_notif
;;
mic_volume_up)
# Unmutes and increases volume, then displays the notification
pactl set-source-mute @DEFAULT_SOURCE@ 0
mic_volume=$(get_mic_volume)
if [ $(( "$mic_volume" + "$mic_volume_step" )) -gt $max_mic_volume ]; then
pactl set-source-volume @DEFAULT_SOURCE@ $max_mic_volume%
else
pactl set-source-volume @DEFAULT_SOURCE@ +$mic_volume_step%
fi
show_mic_volume_notif
;;
mic_volume_down)
# Raises volume and displays the notification
pactl set-source-volume @DEFAULT_SOURCE@ -$mic_volume_step%
show_mic_volume_notif
;;
mic_volume_mute)
# Toggles mute and displays the notification
pactl set-source-mute @DEFAULT_SOURCE@ toggle
show_mic_volume_notif
;;
brightness_up)
# Increases brightness and displays the notification
brightnessctl -c backlight set $brightness_step%+
show_brightness_notif
;;
brightness_down)
# Decreases brightness and displays the notification
brightnessctl -c backlight set $brightness_step%-
show_brightness_notif
;;
kbd_brightness_up)
# Increases brightness and displays the notification
brightnessctl -d kbd_backlight set $kbd_brightness_step%+
show_kbd_brightness_notif
;;
kbd_brightness_down)
# Decreases brightness and displays the notification
brightnessctl -d kbd_backlight set $kbd_brightness_step%-
show_kbd_brightness_notif
;;
next_track)
# Skips to the next song and displays the notification
playerctl next
sleep 0.5 && show_music_notif
;;
prev_track)
# Skips to the previous song and displays the notification
playerctl previous
sleep 0.5 && show_music_notif
;;
play_pause)
playerctl play-pause
show_music_notif
# Pauses/resumes playback and displays the notification
;;
esac

32
config/dunst/dunstrc Normal file
View file

@ -0,0 +1,32 @@
[global]
frame_color = "#cba6f7"
separator_color = frame
font = Rubik Medium 11
icon_theme = "Papirus-Dark"
enable_recursive_icon_lookup = true
frame_width = 2
corner_radius = 10
progress_bar_corner_radius = 10
progress_bar_frame_width = 1
origin = top-right
[urgency_low]
background = "#1e1e2ee6"
foreground = "#cdd6f4"
highlight = "#cba6f7"
[urgency_normal]
background = "#1e1e2ee6"
foreground = "#cdd6f4"
highlight = "#cba6f7"
[urgency_critical]
background = "#1e1e2ee6"
foreground = "#cdd6f4"
frame_color = "#ed5365"
highlight = "#cba6f7"
[volume-brightness]
appname = volume-brightness
alignment = center
max_icon_size = 128

View file

@ -0,0 +1,82 @@
// Inspired by Catnap
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "kitty",
"source": "~/Pictures/AsahiLinux_logomark.png",
"padding": {
"top": 1
}
},
"display": {
"separator": " ",
"color": {
"keys": "35"
}
},
"modules": [
{
"key": " ",
"type": "custom"
},
{
"key": " ",
"type": "custom"
},
{
"key": "╭───────────╮",
"type": "custom"
},
{
"key": "│ {#31} user {#keys}│",
"type": "title",
"format": "{user-name}"
},
{
"key": "│ {#32}{icon} distro {#keys}│",
"type": "os"
},
{
"key": "│ {#33}󰇄 wm {#keys}│",
"type": "wm"
},
{
"key": "│ {#34}󰍛 cpu {#keys}│",
"type": "cpu",
},
{
"key": "│ {#36} term {#keys}│",
"type": "terminal"
},
{
"key": "│ {#31}󰦨 font {#keys}│",
"type": "terminalfont"
},
{
"key": "│ {#32} shell {#keys}│",
"type": "shell"
},
{
"key": "│ {#33} editor {#keys}│",
"type": "editor",
},
{
"key": "│ {#34} pkgs {#keys}│",
"type": "packages",
},
{
"key": "├───────────┤",
"type": "custom"
},
{
"key": "│ {#39} colors {#keys}│",
"type": "colors",
"symbol": "circle"
},
{
"key": "╰───────────╯",
"type": "custom"
}
]
}

0
config/gtk-3.0/bookmarks Normal file
View file

View file

@ -0,0 +1,7 @@
[Settings]
gtk-theme-name = catppuccin-mocha-mauve-standard+default
gtk-font-name = Rubik Medium, 11
gtk-cursor-theme-name = Bibata-Modern-ClassicX
gtk-icon-theme-name = Papirus-Dark
gtk-application-prefer-dark-theme = false

View file

@ -0,0 +1,7 @@
[Settings]
gtk-theme-name = catppuccin-mocha-mauve-standard+default
gtk-font-name = Rubik Medium, 11
gtk-cursor-theme-name = Bibata-Modern-ClassicX
gtk-icon-theme-name = Papirus-Dark
gtk-application-prefer-dark-theme = false

28
config/hypr/hypridle.conf Normal file
View file

@ -0,0 +1,28 @@
general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
listener {
timeout = 180 # 3 min.
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restore.
}
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
listener {
timeout = 180 # 3 min.
on-timeout = brightnessctl -d kbd_backlight -s set 0% # turn off keyboard backlight.
on-resume = brightnessctl -d kbd_backlight -r # turn on keyboard backlight.
}
listener {
timeout = 300 # 5 min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}
listener {
timeout = 600 # 10 min
on-timeout = systemctl suspend # suspend pc
}

222
config/hypr/hyprland.conf Normal file
View file

@ -0,0 +1,222 @@
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#
source = ~/.config/hypr/mocha.conf
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor = ,preferred,auto,auto
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
exec-once = waybar
exec-once = hyprpaper
exec-once = dunst
exec-once = nm-applet
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = /usr/libexec/polkit-gnome-authentication-agent-1
exec-once = copyq --start-server
exec-once = udiskie
exec-once = blueman-applet
exec-once = hypridle
exec-once = nekobox
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
# Set programs that you use
$terminal = kitty
$fileManager = nemo
$menu = rofi -show drun
# Some default env vars.
env = HYPRCURSOR_THEME, Bibata-Modern-Classic
env = HYPRCURSOR_SIZE, 24
env = QT_QPA_PLATFORMTHEME, qt5ct # change to qt6ct if you have that
env = SUDO_EDITOR, nvim
env = SYSTEMD_EDITOR, nvim
env = EDITOR, nvim
env = TERMINAL, kitty
env = BROWSER, firefox
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us,ru
kb_variant =
kb_model =
kb_options = grp:alt_shift_toggle
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = yes
}
sensitivity = 0 # -1.0 to 1.0, 0 means no modification.
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5
gaps_out = 20
border_size = 2
col.active_border = $mauve rgba($mauveAlphaee) 45deg
col.inactive_border = rgba($baseAlphaaa)
layout = dwindle
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10
blur {
enabled = true
size = 7
passes = 1
}
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba($baseAlphaee)
}
animations {
enabled = yes
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_is_master = true
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = on
}
misc {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
windowrulev2 = opacity 0.9, class:(kitty)
windowrulev2 = opacity 0.9, class:(dunst)
windowrulev2 = float, class:(imv)
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, Return, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
# bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod SHIFT, F, workspaceopt, allfloat
bind = $mainMod, F, fullscreen
bind = $mainMod, X, exec, copyq toggle
bind = $mainMod, S, exec, sspath="$(xdg-user-dir PICTURES)/screenshots/$(date +'ss_%F_%H-%M-%S.png')" && grim "$sspath" && wl-copy -t image/png < "$sspath"
bind = $mainMod SHIFT, S, exec, sspath="$(xdg-user-dir PICTURES)/screenshots/$(date +'ss_%F_%H-%M-%S.png')" && grim -g "$(slurp)" "$sspath" && wl-copy -t image/png < "$sspath"
bind = $mainMod SHIFT, L, exec, hyprlock
bindle = , XF86MonBrightnessDown, exec, ~/.local/bin/volume-brightness brightness_down
bindle = , XF86MonBrightnessUp, exec, ~/.local/bin/volume-brightness brightness_up
bindle = ALT_L, XF86MonBrightnessDown, exec, ~/.local/bin/volume-brightness kbd_brightness_down
bindle = ALT_L, XF86MonBrightnessUp, exec, ~/.local/bin/volume-brightness kbd_brightness_up
# bind = , XF86LaunchA, exec, $menu
bind = , XF86Search, exec, $menu
bindl = , XF86AudioRecord, exec, ~/.local/bin/volume-brightness mic_volume_mute
bindl = , XF86AudioPrev, exec, ~/.local/bin/volume-brightness prev_track
bindl = , XF86AudioPlay, exec, ~/.local/bin/volume-brightness play_pause
bindl = , XF86AudioNext, exec, ~/.local/bin/volume-brightness next_track
bindl = , XF86AudioMute, exec, ~/.local/bin/volume-brightness volume_mute
bindl = ALT_L, XF86AudioMute, exec, ~/.local/bin/volume-brightness mic_volume_mute
bindle = , XF86AudioLowerVolume, exec, ~/.local/bin/volume-brightness volume_down
bindle = , XF86AudioRaiseVolume, exec, ~/.local/bin/volume-brightness volume_up
bindle = ALT_L, XF86AudioLowerVolume, exec, ~/.local/bin/volume-brightness mic_volume_down
bindle = ALT_L, XF86AudioRaiseVolume, exec, ~/.local/bin/volume-brightness mic_volume_up
# Move focus with mainMod + arrow keys
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
# bind = $mainMod, S, togglespecialworkspace, magic
# bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, Control_L, movewindow
bindm = $mainMod, ALT_L, resizewindow

99
config/hypr/hyprlock.conf Normal file
View file

@ -0,0 +1,99 @@
source = /home/egor/.config/hypr/mocha.conf
hide_cursor = true
ignore_empty_input = true
background {
monitor =
path = screenshot
color = rgba(0, 0, 0, 0)
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
blur_passes = 3 # 0 disables blurring
blur_size = 7
noise = 0.0117
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
}
input-field {
monitor =
size = 400, 50
outline_thickness = 3
dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
outer_color = $base
inner_color = $text
font_color = rgb(10, 10, 10)
fade_on_empty = true
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
hide_input = false
rounding = -1 # -1 means complete rounding (circle/oval)
check_color = rgb(204, 136, 34)
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
fail_timeout = 2000 # milliseconds before fail_text and fail_color disappears
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
capslock_color = -1
numlock_color = -1
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
invert_numlock = false # change color if numlock is off
swap_font_color = false # see below
position = 0, -180
halign = center
valign = center
}
label {
monitor =
text = Locked
shadow_passes = 1
shadow_size = 3
text_align = center # center/right or any value for default left. multi-line text alignment inside label container
color = rgba($textAlphaff)
font_size = 64
font_family = Rubik Medium
rotate = 0 # degrees, counter-clockwise
position = 0, 140
halign = center
valign = center
}
label {
monitor =
text = $TIME
shadow_passes = 1
shadow_size = 3
text_align = center # center/right or any value for default left. multi-line text alignment inside label container
color = rgba($mauveAlphaff)
font_size = 128
font_family = Rubik Medium
rotate = 0 # degrees, counter-clockwise
position = 0, 0
halign = center
valign = center
}
label {
monitor =
text = $LAYOUT
shadow_passes = 1
shadow_size = 3
text_align = center # center/right or any value for default left. multi-line text alignment inside label container
color = rgba($textAlphaff)
font_size = 32
font_family = Rubik Medium
rotate = 0 # degrees, counter-clockwise
position = 0, -100
halign = center
valign = center
}

View file

@ -0,0 +1,8 @@
preload = ~/Pictures/wallpapers/19-cat.jpg
wallpaper = ,~/Pictures/wallpapers/19-cat.jpg
#enable splash text rendering over the wallpaper
splash = false
#fully disable ipc
ipc = off

78
config/hypr/mocha.conf Normal file
View file

@ -0,0 +1,78 @@
$rosewater = rgb(f5e0dc)
$rosewaterAlpha = f5e0dc
$flamingo = rgb(f2cdcd)
$flamingoAlpha = f2cdcd
$pink = rgb(f5c2e7)
$pinkAlpha = f5c2e7
$mauve = rgb(cba6f7)
$mauveAlpha = cba6f7
$red = rgb(f38ba8)
$redAlpha = f38ba8
$maroon = rgb(eba0ac)
$maroonAlpha = eba0ac
$peach = rgb(fab387)
$peachAlpha = fab387
$yellow = rgb(f9e2af)
$yellowAlpha = f9e2af
$green = rgb(a6e3a1)
$greenAlpha = a6e3a1
$teal = rgb(94e2d5)
$tealAlpha = 94e2d5
$sky = rgb(89dceb)
$skyAlpha = 89dceb
$sapphire = rgb(74c7ec)
$sapphireAlpha = 74c7ec
$blue = rgb(89b4fa)
$blueAlpha = 89b4fa
$lavender = rgb(b4befe)
$lavenderAlpha = b4befe
$text = rgb(cdd6f4)
$textAlpha = cdd6f4
$subtext1 = rgb(bac2de)
$subtext1Alpha = bac2de
$subtext0 = rgb(a6adc8)
$subtext0Alpha = a6adc8
$overlay2 = rgb(9399b2)
$overlay2Alpha = 9399b2
$overlay1 = rgb(7f849c)
$overlay1Alpha = 7f849c
$overlay0 = rgb(6c7086)
$overlay0Alpha = 6c7086
$surface2 = rgb(585b70)
$surface2Alpha = 585b70
$surface1 = rgb(45475a)
$surface1Alpha = 45475a
$surface0 = rgb(313244)
$surface0Alpha = 313244
$base = rgb(1e1e2e)
$baseAlpha = 1e1e2e
$mantle = rgb(181825)
$mantleAlpha = 181825
$crust = rgb(11111b)
$crustAlpha = 11111b

View file

@ -0,0 +1,50 @@
# vim:ft=kitty
## name: Tokyo Night Moon
## license: MIT
## author: Folke Lemaitre
## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_moon.conf
background #222436
foreground #c8d3f5
selection_background #2d3f76
selection_foreground #c8d3f5
url_color #4fd6be
cursor #c8d3f5
cursor_text_color #222436
# Tabs
active_tab_background #82aaff
active_tab_foreground #1e2030
inactive_tab_background #2f334d
inactive_tab_foreground #545c7e
#tab_bar_background #1b1d2b
# Windows
active_border_color #82aaff
inactive_border_color #2f334d
# normal
color0 #1b1d2b
color1 #ff757f
color2 #c3e88d
color3 #ffc777
color4 #82aaff
color5 #c099ff
color6 #86e1fc
color7 #828bb8
# bright
color8 #444a73
color9 #ff757f
color10 #c3e88d
color11 #ffc777
color12 #82aaff
color13 #c099ff
color14 #86e1fc
color15 #c8d3f5
# extended colors
color16 #ff966c
color17 #c53b53

14
config/kitty/kitty.conf Normal file
View file

@ -0,0 +1,14 @@
hide_window_decorations yes
include current-theme.conf
enable_audio_bell no
font_size 11.0
font_family CaskaydiaCove Nerd Font
bold_font auto
italic_font auto
bold_italic_font auto
map ctrl+shift+enter new_window_with_cwd
enabled_layouts fat:bias=75;full_size=1;mirrored=false,tall:bias=50;full_size=1;mirrored=false,horizontal

4
config/nvim/init.lua Normal file
View file

@ -0,0 +1,4 @@
require('config.options')
require('config.lazy')
require('config.keymaps')

View file

@ -0,0 +1,31 @@
{
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"bufferline.nvim": { "branch": "main", "commit": "2e3c8cc5a57ddd32f1edd2ffd2ccb10c09421f6c" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" },
"go.nvim": { "branch": "master", "commit": "e66c3240d26936428cd0f320dc5ffa1eb01538b8" },
"guihua.lua": { "branch": "master", "commit": "225db770e36aae6a1e9e3a65578095c8eb4038d3" },
"lazy.nvim": { "branch": "main", "commit": "077102c5bfc578693f12377846d427f49bc50076" },
"lualine.nvim": { "branch": "master", "commit": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "f2acd4a21db1ca0a12559e7a9f7cdace3bdbfb09" },
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"nvim": { "branch": "main", "commit": "18bab5ec4c782cdf7d7525dbe89c60bfa02fc195" },
"nvim-autopairs": { "branch": "master", "commit": "48ca9aaee733911424646cb1605f27bc01dedbe3" },
"nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" },
"nvim-lspconfig": { "branch": "master", "commit": "ad32182cc4a03c8826a64e9ced68046c575fdb7d" },
"nvim-neoclip.lua": { "branch": "main", "commit": "709c97fabec9da7d04f7d2f5e207423af8c02871" },
"nvim-surround": { "branch": "main", "commit": "ec2dc7671067e0086cdf29c2f5df2dd909d5f71f" },
"nvim-tree.lua": { "branch": "master", "commit": "ad0b95dee55955817af635fa121f6e2486b10583" },
"nvim-treesitter": { "branch": "master", "commit": "3de418e73d5b912096229aaeea8bb7aef5094e0d" },
"nvim-web-devicons": { "branch": "master", "commit": "3722e3d1fb5fe1896a104eb489e8f8651260b520" },
"plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
"sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"trouble.nvim": { "branch": "main", "commit": "6efc446226679fda0547c0fd6a7892fd5f5b15d8" },
"vim-be-good": { "branch": "master", "commit": "4fa57b7957715c91326fcead58c1fa898b9b3625" }
}

View file

@ -0,0 +1,9 @@
vim.keymap.set('n', '<c-w>v', ':vnew<cr>')
vim.keymap.set('n', '<c-b>', ':bn<cr>')
vim.keymap.set('n', '<s-b>', ':bp<cr>')
vim.keymap.set('n', '<c-d>', ':bd<cr>:bn<cr>')
vim.keymap.set('n', '<c-j>', '<c-w><Down>')
vim.keymap.set('n', '<c-k>', '<c-w><Up>')
vim.keymap.set('n', '<c-h>', '<c-w><Left>')
vim.keymap.set('n', '<c-l>', '<c-w><Right>')

View file

@ -0,0 +1,17 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
end
vim.opt.rtp:prepend(lazypath)
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- s also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Setup lazy.nvim
require('lazy').setup('plugins')

View file

@ -0,0 +1,25 @@
vim.g.mapleader = ' '
vim.opt.termguicolors = true
vim.opt.autoindent = true
vim.opt.clipboard = 'unnamedplus'
vim.opt.mouse = 'a'
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.cursorline = true
vim.opt.splitbelow = true
vim.opt.splitright = true
vim.opt.showmode = false
vim.opt.incsearch = true
vim.opt.hlsearch = false
vim.opt.ignorecase = true
vim.opt.smartcase = true

View file

@ -0,0 +1,6 @@
return {
'windwp/nvim-autopairs',
event = 'InsertEnter',
config = true,
}

View file

@ -0,0 +1,21 @@
return {
'akinsho/bufferline.nvim',
version = '*',
dependencies = 'nvim-tree/nvim-web-devicons',
config = function ()
require('bufferline').setup({
options = {
diagnostics = 'nvim_lsp',
separator_style = 'slant',
offsets = {
{
filetype = "NvimTree",
text = "File Explorer",
highlight = "Directory",
separator = true
}
}
}
})
end
}

View file

@ -0,0 +1,22 @@
return {
'ray-x/go.nvim',
dependencies = {
'ray-x/guihua.lua',
'neovim/nvim-lspconfig',
'nvim-treesitter/nvim-treesitter',
},
config = function()
require('go').setup()
local format_sync_grp = vim.api.nvim_create_augroup("GoFormat", {})
vim.api.nvim_create_autocmd("BufWritePre", {
pattern = "*.go",
callback = function()
require('go.format').goimports()
end,
group = format_sync_grp,
})
end,
event = {'CmdlineEnter'},
ft = {'go', 'gomod'},
build = ':lua require("go.install").update_all_sync()'
}

View file

@ -0,0 +1,8 @@
return {
{
'williamboman/mason.nvim',
config = true
},
'ThePrimeagen/vim-be-good',
}

View file

@ -0,0 +1,97 @@
return {
{
'williamboman/mason-lspconfig.nvim',
opts = {
ensure_installed = { 'lua_ls', 'gopls', 'rust_analyzer', 'pylsp' }
}
},
{
'L3MON4D3/LuaSnip',
version = 'v2.*',
build = 'make install_jsregexp',
dependencies = {
'rafamadriz/friendly-snippets'
},
config = function ()
local vscode_loader = require('luasnip.loaders.from_vscode')
vscode_loader.lazy_load()
vscode_loader.lazy_load({ paths = { './snippets' } })
local ls = require('luasnip')
vim.keymap.set({"i"}, "<C-K>", function() ls.expand() end, {silent = true})
vim.keymap.set({"i", "s"}, "<C-L>", function() ls.jump( 1) end, {silent = true})
vim.keymap.set({"i", "s"}, "<C-J>", function() ls.jump(-1) end, {silent = true})
end
},
{
'hrsh7th/nvim-cmp',
event = 'InsertEnter',
dependencies = {
'hrsh7th/cmp-buffer',
'hrsh7th/cmp-path',
'hrsh7th/cmp-cmdline',
'hrsh7th/cmp-nvim-lsp',
'saadparwaiz1/cmp_luasnip'
},
config = function ()
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
local cmp = require('cmp')
local luasnip = require('luasnip')
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end
},
mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable( -1) then
luasnip.jump( -1)
else
fallback()
end
end, { "i", "s" }),
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
{ name = 'buffer' },
{ name = 'path' },
})
})
end
},
{
'neovim/nvim-lspconfig',
config = function()
local lspconfig = require('lspconfig')
local lsp_capabilities = require('cmp_nvim_lsp').default_capabilities()
lspconfig.lua_ls.setup({ capabilities = lsp_capabilities })
lspconfig.rust_analyzer.setup({ capabilities = lsp_capabilities })
lspconfig.gopls.setup({ capabilities = lsp_capabilities })
lspconfig.typst_lsp.setup({ capabilities = lsp_capabilities })
lspconfig.pylsp.setup({ capabilities = lsp_capabilities })
end
},
}

View file

@ -0,0 +1,7 @@
return {
{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
config = true
}
}

View file

@ -0,0 +1,9 @@
return {
'iamcco/markdown-preview.nvim',
cmd = { 'MarkdownPreviewToggle', 'MarkdownPreview', 'MarkdownPreviewStop' },
build = 'cd app && yarn install',
init = function ()
vim.g.mkdp_filetypes = { 'markdown' }
end,
ft = { 'markdown' }
}

View file

@ -0,0 +1,11 @@
return {
'AckslD/nvim-neoclip.lua',
dependencies = {
{ 'kkharji/sqlite.lua', module = 'sqlite' },
{ 'nvim-telescope/telescope.nvim' }
},
config = function ()
require('neoclip').setup()
vim.keymap.set('n', '<leader>v', ':Telescope neoclip plus<cr>')
end
}

View file

@ -0,0 +1,6 @@
return {
"kylechui/nvim-surround",
version = "*", -- Use for stability; omit to use `main` branch for the latest features
event = "VeryLazy",
config = true
}

View file

@ -0,0 +1,18 @@
return {
'nvim-telescope/telescope.nvim', tag = '0.1.8',
dependencies = { 'nvim-lua/plenary.nvim' },
config = function ()
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
vim.keymap.set('n', '<leader>lr', builtin.lsp_references, {})
vim.keymap.set('n', '<leader>ld', builtin.lsp_definitions, {})
vim.keymap.set('n', '<leader>li', builtin.lsp_implementations, {})
vim.keymap.set('n', '<leader>gc', builtin.git_commits, {})
vim.keymap.set('n', '<leader>gb', builtin.git_branches, {})
vim.keymap.set('n', '<leader>gs', builtin.git_status, {})
vim.keymap.set('n', '<leader>bb', builtin.builtin, {})
end
}

View file

@ -0,0 +1,17 @@
return {
'catppuccin/nvim',
lazy = false,
priority = 1000,
config = function()
require('catppuccin').setup({
flavour = 'mocha',
integrations = {
cmp = true,
nvimtree = true,
treesitter = true
}
})
vim.cmd[[colorscheme catppuccin]]
end
}

View file

@ -0,0 +1,19 @@
return {
'nvim-tree/nvim-tree.lua',
dependencies = {
'nvim-tree/nvim-web-devicons'
},
config = function ()
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.keymap.set('n', '<leader>e', ':NvimTreeToggle<cr>')
require('nvim-tree').setup({
filters = {
dotfiles = true
}
})
vim.api.nvim_create_autocmd({"QuitPre"}, {
callback = function() vim.cmd("NvimTreeClose") end,
})
end
}

View file

@ -0,0 +1,14 @@
return {
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
config = function ()
local configs = require('nvim-treesitter.configs')
configs.setup({
ensure_installed = { 'c', 'lua', 'vim', 'vimdoc', 'query' },
auto_install = true,
highlight = { enable = true },
indent = { enable = true }
})
end
}

View file

@ -0,0 +1,37 @@
return {
"folke/trouble.nvim",
opts = {},
cmd = "Trouble",
keys = {
{
"<leader>xx",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<leader>xX",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
{
"<leader>cs",
"<cmd>Trouble symbols toggle focus=false<cr>",
desc = "Symbols (Trouble)",
},
{
"<leader>cl",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)",
},
{
"<leader>xL",
"<cmd>Trouble loclist toggle<cr>",
desc = "Location List (Trouble)",
},
{
"<leader>xQ",
"<cmd>Trouble qflist toggle<cr>",
desc = "Quickfix List (Trouble)",
},
},
}

View file

@ -0,0 +1,13 @@
{
"name": "my-snippets",
"contributes": {
"snippets": [
{
"language": [
"rust"
],
"path": "./rust.json"
}
]
}
}

View file

@ -0,0 +1,34 @@
{
"leetcode": {
"prefix": "leetcode",
"body": [
"pub struct Solution;",
"impl Solution {",
" pub fn ${1:name}(${2:arg}: ${3:Type}) -> ${4:RetType} {",
" ${5:todo!();}",
" }",
"}",
"",
"#[cfg(test)]",
"mod tests {",
" use super::Solution;",
"",
" #[test]",
" fn test1() {",
" ${6:todo!();}",
" }",
"",
" #[test]",
" fn test2() {",
" ${7:todo!();}",
" }",
"",
" #[test]",
" fn test3() {",
" ${8:todo!();}",
" }",
"}"
],
"description": "leetcode Solution snippet"
}
}

View file

@ -0,0 +1,4 @@
[ColorScheme]
active_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ff1e1e2e, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
disabled_colors=#ffa6adc8, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffa6adc8, #ffa6adc8, #ffa6adc8, #ff1e1e2e, #ff11111b, #ff7f849c, #ff89b4fa, #ff45475a, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
inactive_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ffa6adc8, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c

28
config/qt5ct/qt5ct.conf Normal file
View file

@ -0,0 +1,28 @@
[Appearance]
color_scheme_path=/home/egor/.config/qt5ct/colors/Catppuccin-Mocha.conf
custom_palette=true
icon_theme=Papirus-Dark
standard_dialogs=default
style=Fusion
[Fonts]
fixed=@Variant(\0\0\0@\0\0\0\n\0R\0u\0\x62\0i\0k@&\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x39\x10)
general=@Variant(\0\0\0@\0\0\0\n\0R\0u\0\x62\0i\0k@&\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x39\x10)
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=@Invalid()
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
[SettingsWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x62\0\0\x2\xd5\0\0\0\0\0\0\0\0\0\0\x2\x7f\0\0\x3\x1\0\0\0\0\x2\0\0\0\x5\0\0\0\0\0\0\0\0\0\0\0\x2\x62\0\0\x2\xd5)

View file

@ -0,0 +1,4 @@
[ColorScheme]
active_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ff1e1e2e, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
disabled_colors=#ffa6adc8, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffa6adc8, #ffa6adc8, #ffa6adc8, #ff1e1e2e, #ff11111b, #ff7f849c, #ff89b4fa, #ff45475a, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
inactive_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ffa6adc8, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c

32
config/qt6ct/qt6ct.conf Normal file
View file

@ -0,0 +1,32 @@
[Appearance]
color_scheme_path=/home/egor/.config/qt6ct/colors/Catppuccin-Mocha.conf
custom_palette=true
icon_theme=Papirus-Dark
standard_dialogs=default
style=Fusion
[Fonts]
fixed="Rubik,11,-1,5,500,0,0,0,0,0,0,0,0,0,0,1,Medium"
general="Rubik,11,-1,5,500,0,0,0,0,0,0,0,0,0,0,1,Medium"
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=@Invalid()
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
[SettingsWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x62\0\0\x2\xd5\0\0\0\0\0\0\0\0\0\0\x2\x7f\0\0\x3\x1\0\0\0\0\x2\0\0\0\x5\0\0\0\0\0\0\0\0\0\0\0\x2\x62\0\0\x2\xd5)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()

18
config/rofi/config.rasi Normal file
View file

@ -0,0 +1,18 @@
configuration{
modi: "run,drun,window";
icon-theme: "Papirus-Dark";
show-icons: true;
terminal: "kitty";
drun-display-format: "{icon} {name}";
location: 0;
disable-history: false;
hide-scrollbar: true;
display-drun: "  Apps ";
display-run: "  Run ";
display-window: " 󰕰 Window";
display-Network: " 󰤨 Network";
sidebar-mode: true;
}
@theme "catppuccin-mocha"

201
config/waybar/config.jsonc Normal file
View file

@ -0,0 +1,201 @@
// -*- mode: jsonc -*-
{
// "layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"height": 30, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 4, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [
"hyprland/workspaces"
],
"modules-center": [
"hyprland/window"
],
"modules-right": [
"hyprland/language",
"battery",
"clock",
"tray"
],
"hyprland/language": {
"format-en": "us",
"format-ru": "ru"
},
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"hyprland/workspaces": {
"format": "{icon}",
"format-icons": {
"default": "",
"active": "",
"empty": "",
"persistent": "",
"special": "",
"urgent": "",
},
"on-scroll-up": "hyprctl dispatch workspace e+1",
"on-scroll-down": "hyprctl dispatch workspace e-1"
},
"wireplumber": {
"format": "{icon} {volume}%",
"format-muted": "",
"on-click": "pavucontrol",
"max-volume": 150,
"scroll-step": 0.2,
"format-icons": ["", "", ""]
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10
},
"clock": {
// "timezone": "America/New_York",
"interval": 1,
"format": "{:%H:%M:%S}",
"tooltip-format": "<big>{:%B %d %Y}</big>\n<tt><small>{calendar}</small></tt>",
"tooltip": false,
"format-alt": "{:%d/%m/%Y}"
},
"cpu": {
"format": "{usage}% ",
"tooltip": false
},
"memory": {
"format": "{}% "
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent}% {icon}",
"format-icons": ["🌑", "🌘", "🌗", "🌖", "🌕"]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-full": "{capacity}% {icon}",
"format-charging": "{capacity}% ",
"format-plugged": "{capacity}% ",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{essid} ({signalStrength}%) ",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{volume}% {icon} {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
}
}

26
config/waybar/mocha.css Normal file
View file

@ -0,0 +1,26 @@
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;

333
config/waybar/style.css Normal file
View file

@ -0,0 +1,333 @@
@import "mocha.css";
* {
font-family: 'Rubik Medium', 'Font Awesome 6 Free', 'Font Awesome 6 Brands', monospace;
font-size: 13px;
}
window#waybar {
background-color: alpha(@base, 0.9);
border-bottom: 2px solid alpha(@mauve, 0.9);
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
/*
window#waybar.empty {
background-color: transparent;
}
window#waybar.solo {
background-color: #FFFFFF;
}
*/
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
/* you can set a style on hover for any module like this */
#pulseaudio:hover {
background-color: #a37800;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #ffffff;
}
#workspaces button.active {
color: @mauve;
}
#workspaces button:hover {
background: alpha(@overlay0, 0.2);
}
#workspaces button.focused {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: #ffffff;
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
background-color: @surface1;
min-width: 64px;
}
#battery {
background-color: @surface1;
color: #ffffff;
}
#battery.charging, #battery.plugged {
color: #ffffff;
background-color: @green;
}
@keyframes blink {
to {
background-color: @surface1;
color: #ffffff;
}
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
background-color: @red;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#power-profiles-daemon {
padding-right: 15px;
}
#power-profiles-daemon.performance {
background-color: #f53c3c;
color: #ffffff;
}
#power-profiles-daemon.balanced {
background-color: #2980b9;
color: #ffffff;
}
#power-profiles-daemon.power-saver {
background-color: #2ecc71;
color: #000000;
}
label:focus {
background-color: #000000;
}
#cpu {
background-color: #2ecc71;
color: #000000;
}
#memory {
background-color: #9b59b6;
}
#disk {
background-color: #964B00;
}
#backlight {
background-color: #90b1b1;
}
#network {
background-color: #2980b9;
}
#network.disconnected {
background-color: #f53c3c;
}
#pulseaudio {
background-color: #f1c40f;
color: #000000;
}
#pulseaudio.muted {
background-color: #90b1b1;
color: #2a5c45;
}
#wireplumber {
background-color: #fff0f5;
color: #000000;
}
#wireplumber.muted {
background-color: #f53c3c;
}
#custom-media {
background-color: #66cc99;
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature {
background-color: #f0932b;
}
#temperature.critical {
background-color: #eb4d4b;
}
#tray {
background-color: @surface0;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
background-color: #2d3436;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
#language {
background: @surface2;
color: #ffffff;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
background: #97e1ad;
color: #000000;
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
}
#privacy {
padding: 0;
}
#privacy-item {
padding: 0 5px;
color: white;
}
#privacy-item.screenshare {
background-color: #cf5700;
}
#privacy-item.audio-in {
background-color: #1ca000;
}
#privacy-item.audio-out {
background-color: #0069d4;
}