From a8734380a1e20d4685071447fc6f563b9a0d5df3 Mon Sep 17 00:00:00 2001 From: erius Date: Sat, 31 Aug 2024 02:09:35 +0300 Subject: [PATCH] First commit --- bin/volume-brightness | 258 +++++++++++++++++ config/dunst/dunstrc | 32 +++ config/fastfetch/config.jsonc | 82 ++++++ config/gtk-3.0/bookmarks | 0 config/gtk-3.0/settings.ini | 7 + config/gtk-4.0/settings.ini | 7 + config/hypr/hypridle.conf | 28 ++ config/hypr/hyprland.conf | 222 +++++++++++++++ config/hypr/hyprlock.conf | 99 +++++++ config/hypr/hyprpaper.conf | 8 + config/hypr/mocha.conf | 78 +++++ config/kitty/current-theme.conf | 50 ++++ config/kitty/kitty.conf | 14 + config/nvim/init.lua | 4 + config/nvim/lazy-lock.json | 31 ++ config/nvim/lua/config/keymaps.lua | 9 + config/nvim/lua/config/lazy.lua | 17 ++ config/nvim/lua/config/options.lua | 25 ++ config/nvim/lua/plugins/autopairs.lua | 6 + config/nvim/lua/plugins/bufferline.lua | 21 ++ config/nvim/lua/plugins/go.lua | 22 ++ config/nvim/lua/plugins/init.lua | 8 + config/nvim/lua/plugins/lsp.lua | 97 +++++++ config/nvim/lua/plugins/lualine.lua | 7 + config/nvim/lua/plugins/mdpreview.lua | 9 + config/nvim/lua/plugins/neoclip.lua | 11 + config/nvim/lua/plugins/surround.lua | 6 + config/nvim/lua/plugins/telescope.lua | 18 ++ config/nvim/lua/plugins/theme.lua | 17 ++ config/nvim/lua/plugins/tree.lua | 19 ++ config/nvim/lua/plugins/treesitter.lua | 14 + config/nvim/lua/plugins/trouble.lua | 37 +++ config/nvim/snippets/package.json | 13 + config/nvim/snippets/rust.json | 34 +++ config/qt5ct/colors/Catppuccin-Mocha.conf | 4 + config/qt5ct/qt5ct.conf | 28 ++ config/qt6ct/colors/Catppuccin-Mocha.conf | 4 + config/qt6ct/qt6ct.conf | 32 +++ config/rofi/config.rasi | 18 ++ config/waybar/config.jsonc | 201 +++++++++++++ config/waybar/mocha.css | 26 ++ config/waybar/style.css | 333 ++++++++++++++++++++++ 42 files changed, 1956 insertions(+) create mode 100755 bin/volume-brightness create mode 100644 config/dunst/dunstrc create mode 100644 config/fastfetch/config.jsonc create mode 100644 config/gtk-3.0/bookmarks create mode 100644 config/gtk-3.0/settings.ini create mode 100644 config/gtk-4.0/settings.ini create mode 100644 config/hypr/hypridle.conf create mode 100644 config/hypr/hyprland.conf create mode 100644 config/hypr/hyprlock.conf create mode 100644 config/hypr/hyprpaper.conf create mode 100644 config/hypr/mocha.conf create mode 100644 config/kitty/current-theme.conf create mode 100644 config/kitty/kitty.conf create mode 100644 config/nvim/init.lua create mode 100644 config/nvim/lazy-lock.json create mode 100644 config/nvim/lua/config/keymaps.lua create mode 100644 config/nvim/lua/config/lazy.lua create mode 100644 config/nvim/lua/config/options.lua create mode 100644 config/nvim/lua/plugins/autopairs.lua create mode 100644 config/nvim/lua/plugins/bufferline.lua create mode 100644 config/nvim/lua/plugins/go.lua create mode 100644 config/nvim/lua/plugins/init.lua create mode 100644 config/nvim/lua/plugins/lsp.lua create mode 100644 config/nvim/lua/plugins/lualine.lua create mode 100644 config/nvim/lua/plugins/mdpreview.lua create mode 100644 config/nvim/lua/plugins/neoclip.lua create mode 100644 config/nvim/lua/plugins/surround.lua create mode 100644 config/nvim/lua/plugins/telescope.lua create mode 100644 config/nvim/lua/plugins/theme.lua create mode 100644 config/nvim/lua/plugins/tree.lua create mode 100644 config/nvim/lua/plugins/treesitter.lua create mode 100644 config/nvim/lua/plugins/trouble.lua create mode 100644 config/nvim/snippets/package.json create mode 100644 config/nvim/snippets/rust.json create mode 100644 config/qt5ct/colors/Catppuccin-Mocha.conf create mode 100644 config/qt5ct/qt5ct.conf create mode 100644 config/qt6ct/colors/Catppuccin-Mocha.conf create mode 100644 config/qt6ct/qt6ct.conf create mode 100644 config/rofi/config.rasi create mode 100644 config/waybar/config.jsonc create mode 100644 config/waybar/mocha.css create mode 100644 config/waybar/style.css diff --git a/bin/volume-brightness b/bin/volume-brightness new file mode 100755 index 000000000..29e183f74 --- /dev/null +++ b/bin/volume-brightness @@ -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 + diff --git a/config/dunst/dunstrc b/config/dunst/dunstrc new file mode 100644 index 000000000..379df04fe --- /dev/null +++ b/config/dunst/dunstrc @@ -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 diff --git a/config/fastfetch/config.jsonc b/config/fastfetch/config.jsonc new file mode 100644 index 000000000..ad6274490 --- /dev/null +++ b/config/fastfetch/config.jsonc @@ -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" + } + ] +} diff --git a/config/gtk-3.0/bookmarks b/config/gtk-3.0/bookmarks new file mode 100644 index 000000000..e69de29bb diff --git a/config/gtk-3.0/settings.ini b/config/gtk-3.0/settings.ini new file mode 100644 index 000000000..abb2ecb09 --- /dev/null +++ b/config/gtk-3.0/settings.ini @@ -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 + diff --git a/config/gtk-4.0/settings.ini b/config/gtk-4.0/settings.ini new file mode 100644 index 000000000..abb2ecb09 --- /dev/null +++ b/config/gtk-4.0/settings.ini @@ -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 + diff --git a/config/hypr/hypridle.conf b/config/hypr/hypridle.conf new file mode 100644 index 000000000..d6b960912 --- /dev/null +++ b/config/hypr/hypridle.conf @@ -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 +} diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf new file mode 100644 index 000000000..1925fac64 --- /dev/null +++ b/config/hypr/hyprland.conf @@ -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 diff --git a/config/hypr/hyprlock.conf b/config/hypr/hyprlock.conf new file mode 100644 index 000000000..e6f7c02b5 --- /dev/null +++ b/config/hypr/hyprlock.conf @@ -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 = Input Password... # 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 = $FAIL ($ATTEMPTS) # 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 +} diff --git a/config/hypr/hyprpaper.conf b/config/hypr/hyprpaper.conf new file mode 100644 index 000000000..d42b0f969 --- /dev/null +++ b/config/hypr/hyprpaper.conf @@ -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 diff --git a/config/hypr/mocha.conf b/config/hypr/mocha.conf new file mode 100644 index 000000000..8ccb56aa5 --- /dev/null +++ b/config/hypr/mocha.conf @@ -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 diff --git a/config/kitty/current-theme.conf b/config/kitty/current-theme.conf new file mode 100644 index 000000000..014901bf6 --- /dev/null +++ b/config/kitty/current-theme.conf @@ -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 diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf new file mode 100644 index 000000000..c861cd6fa --- /dev/null +++ b/config/kitty/kitty.conf @@ -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 + diff --git a/config/nvim/init.lua b/config/nvim/init.lua new file mode 100644 index 000000000..87639da98 --- /dev/null +++ b/config/nvim/init.lua @@ -0,0 +1,4 @@ +require('config.options') +require('config.lazy') +require('config.keymaps') + diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json new file mode 100644 index 000000000..4fb489d6c --- /dev/null +++ b/config/nvim/lazy-lock.json @@ -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" } +} diff --git a/config/nvim/lua/config/keymaps.lua b/config/nvim/lua/config/keymaps.lua new file mode 100644 index 000000000..826109a6f --- /dev/null +++ b/config/nvim/lua/config/keymaps.lua @@ -0,0 +1,9 @@ +vim.keymap.set('n', 'v', ':vnew') +vim.keymap.set('n', '', ':bn') +vim.keymap.set('n', '', ':bp') +vim.keymap.set('n', '', ':bd:bn') +vim.keymap.set('n', '', '') +vim.keymap.set('n', '', '') +vim.keymap.set('n', '', '') +vim.keymap.set('n', '', '') + diff --git a/config/nvim/lua/config/lazy.lua b/config/nvim/lua/config/lazy.lua new file mode 100644 index 000000000..9240dd311 --- /dev/null +++ b/config/nvim/lua/config/lazy.lua @@ -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') + diff --git a/config/nvim/lua/config/options.lua b/config/nvim/lua/config/options.lua new file mode 100644 index 000000000..99f6daa72 --- /dev/null +++ b/config/nvim/lua/config/options.lua @@ -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 + diff --git a/config/nvim/lua/plugins/autopairs.lua b/config/nvim/lua/plugins/autopairs.lua new file mode 100644 index 000000000..f8c1f6ca8 --- /dev/null +++ b/config/nvim/lua/plugins/autopairs.lua @@ -0,0 +1,6 @@ +return { + 'windwp/nvim-autopairs', + event = 'InsertEnter', + config = true, +} + diff --git a/config/nvim/lua/plugins/bufferline.lua b/config/nvim/lua/plugins/bufferline.lua new file mode 100644 index 000000000..cc0e85755 --- /dev/null +++ b/config/nvim/lua/plugins/bufferline.lua @@ -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 +} diff --git a/config/nvim/lua/plugins/go.lua b/config/nvim/lua/plugins/go.lua new file mode 100644 index 000000000..ef90de246 --- /dev/null +++ b/config/nvim/lua/plugins/go.lua @@ -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()' +} diff --git a/config/nvim/lua/plugins/init.lua b/config/nvim/lua/plugins/init.lua new file mode 100644 index 000000000..25835fee9 --- /dev/null +++ b/config/nvim/lua/plugins/init.lua @@ -0,0 +1,8 @@ +return { + { + 'williamboman/mason.nvim', + config = true + }, + 'ThePrimeagen/vim-be-good', +} + diff --git a/config/nvim/lua/plugins/lsp.lua b/config/nvim/lua/plugins/lsp.lua new file mode 100644 index 000000000..52714c8fa --- /dev/null +++ b/config/nvim/lua/plugins/lsp.lua @@ -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"}, "", function() ls.expand() end, {silent = true}) + vim.keymap.set({"i", "s"}, "", function() ls.jump( 1) end, {silent = true}) + vim.keymap.set({"i", "s"}, "", 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({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + [""] = 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" }), + [""] = 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 + }, +} diff --git a/config/nvim/lua/plugins/lualine.lua b/config/nvim/lua/plugins/lualine.lua new file mode 100644 index 000000000..b9f5ad9af --- /dev/null +++ b/config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,7 @@ +return { + { + 'nvim-lualine/lualine.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' }, + config = true + } +} diff --git a/config/nvim/lua/plugins/mdpreview.lua b/config/nvim/lua/plugins/mdpreview.lua new file mode 100644 index 000000000..00f8e9442 --- /dev/null +++ b/config/nvim/lua/plugins/mdpreview.lua @@ -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' } +} diff --git a/config/nvim/lua/plugins/neoclip.lua b/config/nvim/lua/plugins/neoclip.lua new file mode 100644 index 000000000..f4a3cded6 --- /dev/null +++ b/config/nvim/lua/plugins/neoclip.lua @@ -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', 'v', ':Telescope neoclip plus') + end +} diff --git a/config/nvim/lua/plugins/surround.lua b/config/nvim/lua/plugins/surround.lua new file mode 100644 index 000000000..7fff0d6ee --- /dev/null +++ b/config/nvim/lua/plugins/surround.lua @@ -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 +} diff --git a/config/nvim/lua/plugins/telescope.lua b/config/nvim/lua/plugins/telescope.lua new file mode 100644 index 000000000..497a52042 --- /dev/null +++ b/config/nvim/lua/plugins/telescope.lua @@ -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', 'ff', builtin.find_files, {}) + vim.keymap.set('n', 'fg', builtin.live_grep, {}) + vim.keymap.set('n', 'fb', builtin.buffers, {}) + vim.keymap.set('n', 'fh', builtin.help_tags, {}) + vim.keymap.set('n', 'lr', builtin.lsp_references, {}) + vim.keymap.set('n', 'ld', builtin.lsp_definitions, {}) + vim.keymap.set('n', 'li', builtin.lsp_implementations, {}) + vim.keymap.set('n', 'gc', builtin.git_commits, {}) + vim.keymap.set('n', 'gb', builtin.git_branches, {}) + vim.keymap.set('n', 'gs', builtin.git_status, {}) + vim.keymap.set('n', 'bb', builtin.builtin, {}) + end +} diff --git a/config/nvim/lua/plugins/theme.lua b/config/nvim/lua/plugins/theme.lua new file mode 100644 index 000000000..30bde0fe9 --- /dev/null +++ b/config/nvim/lua/plugins/theme.lua @@ -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 +} + diff --git a/config/nvim/lua/plugins/tree.lua b/config/nvim/lua/plugins/tree.lua new file mode 100644 index 000000000..3d77aa793 --- /dev/null +++ b/config/nvim/lua/plugins/tree.lua @@ -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', 'e', ':NvimTreeToggle') + require('nvim-tree').setup({ + filters = { + dotfiles = true + } + }) + vim.api.nvim_create_autocmd({"QuitPre"}, { + callback = function() vim.cmd("NvimTreeClose") end, + }) + end +} diff --git a/config/nvim/lua/plugins/treesitter.lua b/config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 000000000..170132365 --- /dev/null +++ b/config/nvim/lua/plugins/treesitter.lua @@ -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 +} + diff --git a/config/nvim/lua/plugins/trouble.lua b/config/nvim/lua/plugins/trouble.lua new file mode 100644 index 000000000..04ebd87a4 --- /dev/null +++ b/config/nvim/lua/plugins/trouble.lua @@ -0,0 +1,37 @@ +return { + "folke/trouble.nvim", + opts = {}, + cmd = "Trouble", + keys = { + { + "xx", + "Trouble diagnostics toggle", + desc = "Diagnostics (Trouble)", + }, + { + "xX", + "Trouble diagnostics toggle filter.buf=0", + desc = "Buffer Diagnostics (Trouble)", + }, + { + "cs", + "Trouble symbols toggle focus=false", + desc = "Symbols (Trouble)", + }, + { + "cl", + "Trouble lsp toggle focus=false win.position=right", + desc = "LSP Definitions / references / ... (Trouble)", + }, + { + "xL", + "Trouble loclist toggle", + desc = "Location List (Trouble)", + }, + { + "xQ", + "Trouble qflist toggle", + desc = "Quickfix List (Trouble)", + }, + }, +} diff --git a/config/nvim/snippets/package.json b/config/nvim/snippets/package.json new file mode 100644 index 000000000..412e999bb --- /dev/null +++ b/config/nvim/snippets/package.json @@ -0,0 +1,13 @@ +{ + "name": "my-snippets", + "contributes": { + "snippets": [ + { + "language": [ + "rust" + ], + "path": "./rust.json" + } + ] + } +} diff --git a/config/nvim/snippets/rust.json b/config/nvim/snippets/rust.json new file mode 100644 index 000000000..0d08c3f50 --- /dev/null +++ b/config/nvim/snippets/rust.json @@ -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" + } +} diff --git a/config/qt5ct/colors/Catppuccin-Mocha.conf b/config/qt5ct/colors/Catppuccin-Mocha.conf new file mode 100644 index 000000000..e566a6307 --- /dev/null +++ b/config/qt5ct/colors/Catppuccin-Mocha.conf @@ -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 diff --git a/config/qt5ct/qt5ct.conf b/config/qt5ct/qt5ct.conf new file mode 100644 index 000000000..88f45b3fd --- /dev/null +++ b/config/qt5ct/qt5ct.conf @@ -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) diff --git a/config/qt6ct/colors/Catppuccin-Mocha.conf b/config/qt6ct/colors/Catppuccin-Mocha.conf new file mode 100644 index 000000000..e566a6307 --- /dev/null +++ b/config/qt6ct/colors/Catppuccin-Mocha.conf @@ -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 diff --git a/config/qt6ct/qt6ct.conf b/config/qt6ct/qt6ct.conf new file mode 100644 index 000000000..430d9e946 --- /dev/null +++ b/config/qt6ct/qt6ct.conf @@ -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() diff --git a/config/rofi/config.rasi b/config/rofi/config.rasi new file mode 100644 index 000000000..222517b11 --- /dev/null +++ b/config/rofi/config.rasi @@ -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" + diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc new file mode 100644 index 000000000..859bae481 --- /dev/null +++ b/config/waybar/config.jsonc @@ -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": " ", + "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": "{:%B %d %Y}\n{calendar}", + "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" + } + } +} diff --git a/config/waybar/mocha.css b/config/waybar/mocha.css new file mode 100644 index 000000000..0eb6a826e --- /dev/null +++ b/config/waybar/mocha.css @@ -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; diff --git a/config/waybar/style.css b/config/waybar/style.css new file mode 100644 index 000000000..5cad0024d --- /dev/null +++ b/config/waybar/style.css @@ -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; +}