diff --git a/.gitignore b/.gitignore index ae621a2..703e7e8 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ Thunar/renamerrc !xss-lock/ !zsh/ !zsh/aliases.sh +!zsh/misspell.sh !bluetuith/** !bspwm/** diff --git a/cava/config b/cava/config index 26e96d4..a3b16be 100644 --- a/cava/config +++ b/cava/config @@ -47,7 +47,7 @@ bar_width = 1 # Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and # only check for input once per second. Cava will wake up once input is detected. 0 = disable. -; sleep_timer = 0 +; sleep_timer = 5 [input] diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index 087038b..9be974f 100644 --- a/hypr/hyprland.conf +++ b/hypr/hyprland.conf @@ -25,37 +25,32 @@ $privateBrowser = env GTK_THEME=Adwaita:light zen-browser --private-window $notificationCenter = pkill rofi & swaync-client -t -sw || notify-send --hint int:transient:1 "Error SwayNC is down" $mpdpass = kapuchinamusica +$startDelay = sleep 2 ################# ### AUTOSTART ### ################# -exec = sh -c '[[ $(cat "$HOME/.config/waybar/goal.txt") != "." ]] && swaync-client -C && notify-send -u critical -i "$HOME/Pictures/Fetch/atheism_paint.png" "Reminder" "$(cat $HOME/.config/waybar/goal.txt)"' -exec-once = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" - -# Autostart necessary processes (like notifications daemons, status bars, etc.) -# Or execute your favorite apps at launch like this: - -# Le essential hyprland crap -# exec-once = hyprpaper +exec-once = sh -c '[[ $(cat "$HOME/.config/waybar/goal.txt") != "." ]] && swaync-client -C && notify-send -u critical -i "$HOME/Pictures/Fetch/atheism_paint.png" "Reminder" "$(cat $HOME/.config/waybar/goal.txt)"' exec-once = swww-daemon -exec-once = ~/.config/hypr/scripts/autofreeze_swww.sh +exec-once = wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 50% && play -v 0.7 ~/.config/hypr/sound/login.ogg exec-once = ~/.config/waybar/run.sh -exec-once = swaync -exec-once = hypridle -exec-once = hyprsunset -exec-once = eww daemon -exec-once = mullvad-vpn -exec-once = ~/.config/hypr/scripts/random_wallpaper.sh -exec-once = ~/.config/hypr/scripts/autofreezer.sh -exec-once = ~/.config/fastfetch/scripts/fetch_update_count.sh -exec-once = copyq --start-server -exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 -exec-once = thunar --daemon -exec-once = touch /tmp/toggle_ssocks -exec-once = ~/.config/hypr/scripts/toggle_proxy.sh -exec-once = nextcloud --background & -exec-once = [workspace 8 silent] AyuGram +exec-once = $startDelay && hypridle +exec-once = $startDelay && hyprsunset +exec-once = $startDelay && /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec-once = $startDelay && thunar --daemon +exec-once = $startDelay && [workspace 8 silent] AyuGram +exec-once = $startDelay && swaync +exec-once = $startDelay && mullvad-vpn +exec-once = $startDelay && touch /tmp/toggle_ssocks +exec-once = $startDelay && ~/.config/hypr/scripts/autofreeze_swww.sh +exec-once = $startDelay && ~/.config/fastfetch/scripts/fetch_update_count.sh +exec-once = $startDelay && ~/.config/hypr/scripts/toggle_proxy.sh +exec-once = $startDelay && ~/.config/hypr/scripts/sounds.sh +exec-once = $startDelay && ~/.config/hypr/scripts/random_wallpaper.sh +exec-once = $startDelay && ~/.config/hypr/scripts/autofreezer.sh + +exec-shutdown = play -v 0.7 $HOME/Templates/Sounds/teleport.mp3 ############################# ### ENVIRONMENT VARIABLES ### @@ -92,8 +87,8 @@ env = HYPRCURSOR_SIZE,24 # https://wiki.hyprland.org/Configuring/Variables/#general general { - gaps_in = 12.5 - gaps_out = 12 + gaps_in = 15 + gaps_out = 25 border_size = 1 @@ -115,12 +110,11 @@ general { snap { enabled = true } - } # https://wiki.hyprland.org/Configuring/Variables/#decoration decoration { - rounding = 10 + rounding = 15 rounding_power = 2 border_part_of_window = 0 @@ -164,7 +158,7 @@ group { col.active = rgba(F8859Eff) col.inactive = rgba(32323264) rgba(32323264) 45deg gaps_in = 5 - gaps_out = 5 + gaps_out = 2 } } @@ -246,16 +240,22 @@ master { new_status = master } +render { + direct_scanout = 1 +} + # https://wiki.hyprland.org/Configuring/Variables/#misc misc { - force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers - disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( + force_default_wallpaper = 1 + disable_hyprland_logo = true vfr = true animate_manual_resizes = true enable_swallow = true swallow_regex = ^(kitty)$ middle_click_paste = false enable_anr_dialog = false + render_unfocused_fps = 1 + size_limits_tiled = true } ############## @@ -303,7 +303,8 @@ gestures { # Workspaces gesture = 4, horizontal, scale: 2, workspace workspace_swipe_forever = true - + workspace_swipe_direction_lock = false + workspace_swipe_touch = true gesture = 3, vertical, dispatcher, exec, pkill rofi || $menu # Notification center @@ -723,7 +724,7 @@ workspace = 9, gapsin:15, gapsout:40 ############### ### PLUGINS ### ############### -# exec-once = hyprpm reload -n +exec-once = hyprpm reload # # Easymotion # bind = SUPER, x, easymotion, action:hyprctl dispatch focuswindow address:{} @@ -731,15 +732,56 @@ workspace = 9, gapsin:15, gapsout:40 # Close unfocused # bind = $mainMod SHIFT, x, plugin:xtd:closeunfocused -# plugin { -# -# hyprfocus { -# animation = hyprfocusIn, 1, 3, quick -# animation = hyprfocusOut, 1, 3, quick -# fade_opacity = 0.94 -# mode = flash -# } -# +plugin { + + hyprfocus { + animation = hyprfocusIn, 1, 3, quick + animation = hyprfocusOut, 1, 3, quick + fade_opacity = 0.94 + mode = flash + } + hyprbars { + enabled = true + bar_height = 18 + bar_color = rgba(1c1c1cce) + bar_title_enabled = false + bar_buttons_alignment = right + bar_blur = true + icon_on_hover = true + bar_part_of_window = false + bar_precedence_over_border = true + + bar_text_font = "Iosevka Nerd Font Propo" + bar_text_size = 10 + + hyprbars-button = rgba(ff4040ff), 12, X, hyprctl dispatch killactive + hyprbars-button = rgba(11ee11ff), 12, F, hyprctl dispatch togglefloating && hyprctl dispatch resizeactive exact 1280 700 && hyprctl dispatch centerwindow + hyprbars-button = rgba(eeee11ff), 12, Z, hyprctl dispatch tagwindow zawarudo + inactive_button_color = rgba(D583995c) + + on_double_click = + + windowrule = plugin:hyprbars:bar_color rgb(261B1E), class:^(com.ayugram.desktop) + windowrule = plugin:hyprbars:bar_color rgb(121214), class:^(vesktop) + windowrule = plugin:hyprbars:bar_color rgb(131313), class:^(zen) + windowrule = plugin:hyprbars:bar_color rgb(F1F3F4), class:^(draw.io) + windowrule = plugin:hyprbars:bar_color rgb(1C1C1C), class:^(thunar) + windowrule = plugin:hyprbars:bar_color rgb(1C1C1C), floating:1 + } + + hyprexpo { + } + + dynamic-cursors { + shake { + threshold = 3 + limit = 15 + timeout = 1 + effects = true + nearest = true + } + } + # easymotion { # #font size of the text # textsize=72 @@ -791,7 +833,7 @@ workspace = 9, gapsin:15, gapsout:40 # #if a monitor has a focused special workspace, only put easymotion labels on the windows in the special workspace # only_special = true # } -# } +} debug { disable_logs = false diff --git a/hypr/scripts/gamemode.sh b/hypr/scripts/gamemode.sh index c4f513f..3fbf4f9 100755 --- a/hypr/scripts/gamemode.sh +++ b/hypr/scripts/gamemode.sh @@ -14,14 +14,14 @@ if [ "$HYPRGAMEMODE" = 1 ] ; then if pgrep waybar > /dev/null; then pkill waybar # TODO: lite waybar version - waybar -c "$HOME/.config/waybar/config_top.jsonc" -s "$HOME/.config/waybar/style_top.css" & + $HOME/.config/waybar/run.sh fi exit fi if pgrep waybar > /dev/null; then pkill waybar - waybar -c "$HOME/.config/waybar/config_top.jsonc" -s "$HOME/.config/waybar/style_top.css" & + $HOME/.config/waybar/run.sh fi hyprctl reload diff --git a/hypr/scripts/sounds.sh b/hypr/scripts/sounds.sh new file mode 100755 index 0000000..3dae90c --- /dev/null +++ b/hypr/scripts/sounds.sh @@ -0,0 +1,150 @@ +#!/usr/bin/env bash + + +SOUND_DIR="$HOME/.config/hypr/sound" +PLAYER="play" +VOLUME="0.1" + +declare -A SOUND_MAP=( + ["workspace"]="futuristic-click.wav" + ["activewindow"]="popup.wav" + ["activelayout"]="popup.wav" + ["fullscreen"]="fullscreen.wav" + ["openwindow"]="open.mp3" + ["closewindow"]="popup.wav" + ["movewindow"]="popup.wav" + ["changefloatingmode"]="float.wav" +) + +declare -A EVENT_ENABLED=( + ["workspace"]=1 + ["activewindow"]=1 + ["activelayout"]=0 + ["fullscreen"]=1 + ["openwindow"]=1 + ["closewindow"]=1 + ["movewindow"]=1 + ["changefloatingmode"]=1 +) + +declare -A EVENT_COOLDOWN=( + ["activewindow"]=0.1 + ["movewindow"]=0.2 + ["changefloatingmode"]=0.3 +) + +DEBUG=1 +declare -a SOUND_QUEUE=() +declare -A COOLDOWN_TIMERS=() + +mkdir -p "$SOUND_DIR" + +log() { + if [ $DEBUG -eq 1 ]; then + echo "[$(date '+%H:%M:%S')] $1" >&2 + fi +} + +play_sound() { + local event="$1" + local sound_file="$2" + local full_path="$SOUND_DIR/$sound_file" + + if [ ! -f "$full_path" ]; then + log "Sound file not found: $full_path" + return 1 + fi + + log "Playing: $event -> $sound_file" + + play -v $VOLUME "$full_path" & + + return 0 +} + +handle_event() { + local raw_event="$1" + local event_type="" + local event_data="" + + if [[ "$raw_event" == *">>"* ]]; then + event_type="${raw_event%%>>*}" + event_data="${raw_event#*>>}" + else + event_type="$raw_event" + fi + + log "Received event: $event_type (data: $event_data)" + + case "$event_type" in + "workspace"*) + if [[ "$event_data" == *,* ]]; then + trigger_event "workspace" "$event_data" + fi + ;; + "activelayout"*) + trigger_event "activelayout" "$event_data" + ;; + "fullscreen"*) + trigger_event "fullscreen" "$event_data" + ;; + "openwindow"*) + trigger_event "openwindow" "$event_data" + ;; + "closewindow"*) + trigger_event "closewindow" "$event_data" + ;; + "movewindow"*) + if [[ "$event_data" == *,*,* ]]; then + trigger_event "movewindow" "$event_data" + fi + ;; + "changefloating"*) + trigger_event "changefloatingmode" "$event_data" + ;; + *) + log "Unknown event: $event_type" + ;; + esac +} + +trigger_event() { + local event="$1" + local data="$2" + + if [ "${EVENT_ENABLED[$event]:-0}" -ne 1 ]; then + log "Event $event is disabled" + return + fi + + local sound_file="${SOUND_MAP[$event]}" + + if [ -z "$sound_file" ]; then + log "No sound mapped for event: $event" + return + fi + + if [ "$event" = "changefloatingmode" ]; then + local state="${data#*,}" + if [ "$state" -eq 1 ]; then + sound_file="float.wav" + else + sound_file="tile.wav" + fi + fi + + play_sound "$event" "$sound_file" +} + +echo "Sound directory: $SOUND_DIR" +echo "Enabled events:" +for event in "${!EVENT_ENABLED[@]}"; do + if [ "${EVENT_ENABLED[$event]}" -eq 1 ]; then + echo " - $event: ${SOUND_MAP[$event]}" + fi +done + +socat - "UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" | \ +while read -r line; do + handle_event "$line" +done diff --git a/hypr/sound/add.wav b/hypr/sound/add.wav new file mode 100644 index 0000000..61c8f68 Binary files /dev/null and b/hypr/sound/add.wav differ diff --git a/hypr/sound/change_workspace.wav b/hypr/sound/change_workspace.wav new file mode 100644 index 0000000..6ecedbe Binary files /dev/null and b/hypr/sound/change_workspace.wav differ diff --git a/hypr/sound/float.wav b/hypr/sound/float.wav new file mode 100644 index 0000000..185e131 Binary files /dev/null and b/hypr/sound/float.wav differ diff --git a/hypr/sound/fullscreen.wav b/hypr/sound/fullscreen.wav new file mode 100644 index 0000000..347ad7f Binary files /dev/null and b/hypr/sound/fullscreen.wav differ diff --git a/hypr/sound/futuristic-click.mp3 b/hypr/sound/futuristic-click.mp3 new file mode 100644 index 0000000..a4267dc Binary files /dev/null and b/hypr/sound/futuristic-click.mp3 differ diff --git a/hypr/sound/futuristic-click.wav b/hypr/sound/futuristic-click.wav new file mode 100644 index 0000000..8fd912d Binary files /dev/null and b/hypr/sound/futuristic-click.wav differ diff --git a/hypr/sound/login.ogg b/hypr/sound/login.ogg new file mode 100644 index 0000000..31a48d1 Binary files /dev/null and b/hypr/sound/login.ogg differ diff --git a/hypr/sound/open.mp3 b/hypr/sound/open.mp3 new file mode 100644 index 0000000..11c9e51 Binary files /dev/null and b/hypr/sound/open.mp3 differ diff --git a/hypr/sound/popup.wav b/hypr/sound/popup.wav new file mode 100644 index 0000000..f1849c9 Binary files /dev/null and b/hypr/sound/popup.wav differ diff --git a/hypr/sound/remove.wav b/hypr/sound/remove.wav new file mode 100644 index 0000000..7a77a08 Binary files /dev/null and b/hypr/sound/remove.wav differ diff --git a/hypr/sound/screenshot_notif.wav b/hypr/sound/screenshot_notif.wav new file mode 100644 index 0000000..d6f16c5 Binary files /dev/null and b/hypr/sound/screenshot_notif.wav differ diff --git a/hypr/sound/tile.wav b/hypr/sound/tile.wav new file mode 100644 index 0000000..57bf4d7 Binary files /dev/null and b/hypr/sound/tile.wav differ diff --git a/hypr/sound/volume_notif.wav b/hypr/sound/volume_notif.wav new file mode 100644 index 0000000..6433f77 Binary files /dev/null and b/hypr/sound/volume_notif.wav differ diff --git a/mpd/mpd.conf b/mpd/mpd.conf index 79c52a1..1b3bf2c 100644 --- a/mpd/mpd.conf +++ b/mpd/mpd.conf @@ -55,7 +55,7 @@ state_file "~/.mpd/state" # The location of the sticker database. This is a database which # manages dynamic information attached to songs. # -#sticker_file "~/.mpd/sticker.sql" +sticker_file "~/.mpd/sticker.sql" # ############################################################################### diff --git a/rmpc/config.ron b/rmpc/config.ron index c42be12..898a6fd 100644 --- a/rmpc/config.ron +++ b/rmpc/config.ron @@ -65,15 +65,16 @@ "": PaneRight, "": UpHalf, "N": PreviousResult, - "": Add, + "": AddOptions(kind: Action(all: false, autoplay: None, position: EndOfQueue)), + "": AddOptions(kind: Action(all: false, autoplay: Hovered, position: EndOfQueue)), + "": Confirm, "": AddAll, "r": Rename, "n": NextResult, "g": Top, "m": Select, - "M": InvertSelection, + "M": InvertSelection, "G": Bottom, - "": Confirm, "i": FocusInput, "J": MoveDown, "": DownHalf, @@ -144,6 +145,7 @@ autosens: true, // default true sensitivity: 100, // default 100 bar_width: 1, + channels: 2, bar_spacing: 0, lower_cutoff_freq: 50, // not passed to cava if not provided higher_cutoff_freq: 10000, // not passed to cava if not provided diff --git a/rofi/launchers/type-1/style-7.rasi b/rofi/launchers/type-1/style-7.rasi index 787d633..377c2c9 100644 --- a/rofi/launchers/type-1/style-7.rasi +++ b/rofi/launchers/type-1/style-7.rasi @@ -226,8 +226,8 @@ error-message { configuration { kb-mode-next: "Shift+Right,Control+Tab,L"; kb-mode-previous: "Shift+Left,H"; - kb-page-prev: "K"; - kb-page-next: "J"; + kb-row-up: "K"; + kb-row-down: "J"; me-select-entry: ""; me-accept-entry: "!MousePrimary"; kb-cancel: "MousePrimary,Escape"; diff --git a/swaync/config.json b/swaync/config.json index 1721c57..2a18d80 100644 --- a/swaync/config.json +++ b/swaync/config.json @@ -27,15 +27,27 @@ "keyboard-shortcuts": true, "notification-grouping": false, "image-visibility": "when-available", + "show-per-app-icon": true, "transition-time": 100, "hide-on-clear": false, "hide-on-action": true, - "text-empty": "No nothing", + "text-empty": "No disturbances", "script-fail-notify": true, "scripts": { - "notification-sound": { - "exec": "sh $HOME/.config/swaync/scripts/sound.sh", - "app-name": "^(?!.*AyuGram).*$" + "notification-sound-low": { + "exec": "sh $HOME/.config/swaync/scripts/sound.sh low", + "app-name": "^(?!.*AyuGram).*$", + "urgency": "Low" + }, + "notification-sound-normal": { + "exec": "sh $HOME/.config/swaync/scripts/sound.sh normal", + "app-name": "^(?!.*AyuGram).*$", + "urgency": "Normal" + }, + "notification-sound-critical": { + "exec": "sh $HOME/.config/swaync/scripts/sound.sh critical", + "app-name": "^(?!.*AyuGram).*$", + "urgency": "Critical" } }, "notification-visibility": { @@ -48,8 +60,6 @@ "widgets": [ "menubar", "buttons-grid", - "volume", - "slider#brightness", "inhibitors", "title", "notifications", diff --git a/swaync/scripts/sound.sh b/swaync/scripts/sound.sh index c655193..7ab1b10 100755 --- a/swaync/scripts/sound.sh +++ b/swaync/scripts/sound.sh @@ -5,29 +5,42 @@ if [ $(swaync-client --get-dnd) == "true" ]; then exit 0 fi -# Directory containing your notification sounds -SOUND_DIR="$HOME/.config/swaync/scripts/sounds" +SOUND_LOW_DIR="$HOME/.config/swaync/scripts/sounds/low" +SOUND_NORMAL_DIR="$HOME/.config/swaync/scripts/sounds/normal" +SOUND_CRITICAL_DIR="$HOME/.config/swaync/scripts/sounds/critical" + +case $1 in + low) + DIR=$SOUND_LOW_DIR + ;; + normal) + DIR=$SOUND_NORMAL_DIR + ;; + critical) + DIR=$SOUND_CRITICAL_DIR + ;; + *) + echo "Unknown urgency level '$1'" + exit 1 + ;; +esac # Enable nullglob to prevent literal interpretation when no files match shopt -s nullglob -# Get a list of audio files in the directory (simpler approach) SOUND_FILES=() for ext in wav mp3 ogg flac; do - SOUND_FILES+=("$SOUND_DIR"/*."$ext") + SOUND_FILES+=("$DIR"/*."$ext") done -# Check if any sound files exist if [ ${#SOUND_FILES[@]} -eq 0 ]; then - echo "No sound files found in $SOUND_DIR" - exit 0 # Exit with success so notifications still work + echo "No sound files found in $SOUND_NORMAL_DIR" + exit 0 fi -# Select a random sound file RANDOM_INDEX=$((RANDOM % ${#SOUND_FILES[@]})) RANDOM_SOUND="${SOUND_FILES[$RANDOM_INDEX]}" -# Play the random sound play -v 0.5 "$RANDOM_SOUND" 2>/dev/null || { echo "Failed to play $RANDOM_SOUND" } diff --git a/swaync/scripts/sounds/critical/sting_instruction3.mp3 b/swaync/scripts/sounds/critical/sting_instruction3.mp3 new file mode 100644 index 0000000..958d0ad Binary files /dev/null and b/swaync/scripts/sounds/critical/sting_instruction3.mp3 differ diff --git a/swaync/scripts/sounds/critical/sting_instruction4.mp3 b/swaync/scripts/sounds/critical/sting_instruction4.mp3 new file mode 100644 index 0000000..cfe98f8 Binary files /dev/null and b/swaync/scripts/sounds/critical/sting_instruction4.mp3 differ diff --git a/swaync/scripts/sounds/low/pc_granted.mp3 b/swaync/scripts/sounds/low/pc_granted.mp3 new file mode 100644 index 0000000..c692806 Binary files /dev/null and b/swaync/scripts/sounds/low/pc_granted.mp3 differ diff --git a/swaync/scripts/sounds/sting_instruction1.wav b/swaync/scripts/sounds/normal/sting_instruction1.wav similarity index 100% rename from swaync/scripts/sounds/sting_instruction1.wav rename to swaync/scripts/sounds/normal/sting_instruction1.wav diff --git a/swaync/scripts/sounds/sting_instruction2.wav b/swaync/scripts/sounds/normal/sting_instruction2.wav similarity index 100% rename from swaync/scripts/sounds/sting_instruction2.wav rename to swaync/scripts/sounds/normal/sting_instruction2.wav diff --git a/swaync/style.css b/swaync/style.css index acd90f7..0f8ed60 100644 --- a/swaync/style.css +++ b/swaync/style.css @@ -20,6 +20,8 @@ --button-top: #505050; --button-on-top: #CE5268; --button-off: #2e2d31; + + --accent: #E83C82; } * { @@ -66,12 +68,12 @@ button:hover { } .notification-row .notification-background { - padding: 6px 12px; + padding: 6px 15px; } .notification-row .notification-background .notification { /* The actual notification */ - border-radius: 12px; + border-radius: 15px; border: 1px solid var(--noti-border-color); padding: 0; transition: background 0.15s ease-in-out; @@ -88,18 +90,35 @@ button:hover { .notification-row .notification-background .notification.critical { /* Critical Priority Notification */ + border-color: var(--accent); +} + + /* Critical Priority Notification */ +.notification-row .notification-background .notification.critical .notification-default-action .notification-content .text-box .summary { + color: var(--accent); + text-shadow: 0px 0px 8px var(--accent); +} + +.notification-row .notification-background .notification.critical .notification-default-action .notification-content .text-box .summary { + color: var(--accent); + text-shadow: 0px 0px 8px var(--accent); +} + +.notification-row .notification-background .notification.critical .notification-default-action .notification-content .text-box .body { + color: var(--accent); + text-shadow: 0px 0px 8px var(--accent); } .notification-row .notification-background .notification .notification-default-action { /* The large action that also displays the notification summary and body */ - padding: 4px; + padding: 10px; margin: 0; box-shadow: none; background: transparent; border: none; color: var(--text-color); transition: background 0.15s ease-in-out; - border-radius: 12px; + border-radius: 15px; } .notification-row:focus .notification-background .notification .notification-default-action { @@ -118,7 +137,7 @@ button:hover { .notification-row .notification-background .notification .notification-default-action .notification-content { background: transparent; - border-radius: 12px; + border-radius: 15px; padding: 0; } @@ -194,14 +213,14 @@ button:hover { color: var(--text-color); caret-color: var(--text-color); border: 1px solid var(--noti-border-color); - border-radius: 12px; + border-radius: 15px; } .notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button { margin-left: 4px; background: rgba(var(--noti-bg), var(--noti-bg-alpha)); border: 1px solid var(--noti-border-color); - border-radius: 12px; + border-radius: 15px; color: var(--text-color); } @@ -218,8 +237,8 @@ button:hover { .notification-row .notification-background .notification .notification-alt-actions { background: none; - border-bottom-left-radius: 12px; - border-bottom-right-radius: 12px; + border-bottom-left-radius: 15px; + border-bottom-right-radius: 15px; padding: 4px; } @@ -230,7 +249,7 @@ button:hover { } .notification-row .notification-background .notification .notification-action > button { - border-radius: 12px; + border-radius: 15px; } .notification-group { @@ -256,7 +275,7 @@ button:hover { } .notification-group .notification-group-close-button .close-button { - margin: 12px 20px; + margin: 15px 20px; } .notification-group .notification-group-buttons, .notification-group .notification-group-headers { @@ -363,7 +382,7 @@ button:hover { .widget-title > button { margin: 0px; - border-radius: 12px; + border-radius: 15px; } /* DND widget */ @@ -374,7 +393,7 @@ button:hover { } .widget-dnd switch { - border-radius: 12px; + border-radius: 15px; margin: 8px; } @@ -384,7 +403,7 @@ button:hover { .widget-dnd switch slider { - border-radius: 12px; + border-radius: 15px; } /* Label widget */ @@ -410,7 +429,7 @@ button:hover { .widget-mpris .widget-mpris-player { margin: 16px 20px; - border-radius: 12px; + border-radius: 15px; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); } @@ -429,7 +448,7 @@ button:hover { } .widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art { - border-radius: 12px; + border-radius: 15px; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); -gtk-icon-size: var(--mpris-album-art-icon-size); } @@ -464,11 +483,11 @@ button:hover { min-height: 50px; padding: 8px; margin: 8px; - border-radius: 12px; + border-radius: 15px; } .widget-buttons-grid flowboxchild > button { - border-radius: 12px; + border-radius: 15px; height: auto; } @@ -513,7 +532,7 @@ button:hover { } .widget-menubar > .menu-button-bar > .widget-menubar-container button { - border-radius: 12px; + border-radius: 15px; padding: 0px 15px; margin: 0 4px; background-color: var(--noti-bg-selection); @@ -536,7 +555,7 @@ button:hover { } .widget-menubar > revealer button { - border-radius: 12px; + border-radius: 15px; margin: 8px; margin-top: 0; } @@ -553,7 +572,7 @@ button:hover { .widget-volume { padding: 8px; margin: 8px; - border-radius: 12px; + border-radius: 15px; } .widget-volume label:first-child { @@ -573,14 +592,14 @@ button:hover { background-color: var(--noti-bg-alt); padding: 4px 8px 8px 8px; margin: 0px 8px 8px 8px; - border-radius: 12px; + border-radius: 15px; } /* Slider widget */ .widget-slider { padding: 8px; margin: 8px; - border-radius: 12px; + border-radius: 15px; } .widget-slider trough highlight { @@ -595,7 +614,7 @@ button:hover { .widget-backlight { padding: 8px; margin: 8px; - border-radius: 12px; + border-radius: 15px; } /* Inhibitors widget */ @@ -606,7 +625,7 @@ button:hover { .widget-inhibitors > button { margin: 8px; - border-radius: 12px; + border-radius: 15px; } .notification-row:parent { diff --git a/waybar/config_bottom.jsonc b/waybar/config_bottom.jsonc index 6cab99f..cfa019c 100644 --- a/waybar/config_bottom.jsonc +++ b/waybar/config_bottom.jsonc @@ -21,11 +21,12 @@ "custom/launcher" ], "modules-right": [ + "battery", "cpu", "memory", "temperature" ], - "custom/separator_invisible": { + "custom/separator": { "format": " ", "interval": "once", "tooltip": false @@ -53,6 +54,7 @@ "on-click": "activate", "on-click-middle": "close", "active-first": false, + "sort-by-app-id": true, "ignore-list": [ "Alacritty" ], @@ -60,11 +62,14 @@ "firefoxdeveloperedition": "firefox-developer-edition" }, "rewrite": { - "Firefox Web Browser": "Firefox", - "Foot Server": "Terminal", ".*(steam_app_[0-9]+).*": "Game" } }, + "battery": { + "interval": 5, + "format": "{power:.0f}W |", + "on-click": "sh -c 'swaync-client -cp & ~/.config/rofi/scripts/dmenu_powermodemenu.sh'" + }, "cpu": { "format": "{icon}", "tooltip": true, diff --git a/waybar/config_top.jsonc b/waybar/config_top.jsonc index a898312..8bb91da 100644 --- a/waybar/config_top.jsonc +++ b/waybar/config_top.jsonc @@ -76,10 +76,14 @@ "paused": "", "playing": "" }, - "tooltip-format": "MPD (connected)", - "tooltip-format-disconnected": "MPD (disconnected)", + "tooltip-format": "MPD (connected) | MMB - toggle, LMB/RMB - next/prev, scroll - volume", + "tooltip-format-disconnected": "MPD (disconnected) | MMB - toggle, LMB/RMB - next/prev, scroll - volume", "format-stopped": " Stopping player...", - "on-click": "mpc toggle --password kapuchinamusica" + "on-click-right": "mpc --password kapuchinamusica next", + "on-click-middle": "mpc --password kapuchinamusica prev", + "on-click": "mpc --password kapuchinamusica toggle", + "on-scroll-down": "mpc --password kapuchinamusica volume +1", + "on-scroll-up": "mpc --password kapuchinamusica volume -1" }, "clock": { "timezone": "Europe/Moscow", diff --git a/waybar/run.sh b/waybar/run.sh index f2643e6..09865e5 100755 --- a/waybar/run.sh +++ b/waybar/run.sh @@ -8,6 +8,9 @@ TOP_STYLE="$DIR/style/style_top.css" BOTTOM_CONFIG="$DIR/config_bottom.jsonc" BOTTOM_STYLE="$DIR/style/style_bottom.css" +DOCK_CONFIG="$DIR/config_dock.jsonc" +DOCK_STYLE="$DIR/style/style_dock.css" + kill_bars() { if pgrep waybar > /dev/null; then pkill waybar @@ -19,6 +22,7 @@ kill_bars() { run_bars() { waybar -c "$TOP_CONFIG" -s "$TOP_STYLE" & waybar -c "$BOTTOM_CONFIG" -s "$BOTTOM_STYLE" & + waybar -c "$DOCK_CONFIG" -s "$DOCK_STYLE" & return 0 } diff --git a/waybar/style/style_bottom.css b/waybar/style/style_bottom.css index 0747aea..315edbe 100644 --- a/waybar/style/style_bottom.css +++ b/waybar/style/style_bottom.css @@ -126,6 +126,13 @@ window#waybar.chromium { padding: 0; } +/* -------------------------------------------------------------------------- + BATTERY + -------------------------------------------------------------------------- */ +#battery { + padding-right: 0; +} + /* -------------------------------------------------------------------------- CPU -------------------------------------------------------------------------- */ @@ -154,7 +161,7 @@ window#waybar.chromium { .modules-left, .modules-right { /* Layout & Box Model */ border: 1px solid @border-color; - border-radius: 12px; + border-radius: 15px; /* Colors */ background-color: @bg-panel; @@ -166,13 +173,30 @@ window#waybar.chromium { } .modules-center { - background: linear-gradient(to right, - alpha(#000000, 0) 0%, - alpha(@bg-panel, 1) 20%, - alpha(@bg-panel, 1) 80%, - alpha(#000000, 0) 100% + background: + /* Top border gradient */ + linear-gradient(to right, + transparent 0%, + @border-color 25%, + @border-color 75%, + transparent 100% + ) 0 0 / 100% 1px no-repeat, + + /* Bottom border gradient */ + linear-gradient(to right, + transparent 0%, + @border-color 25%, + @border-color 75%, + transparent 100% + ) 0 100% / 100% 1px no-repeat, + + /* Main background */ + linear-gradient(to right, + alpha(#000000, 0) 0%, + alpha(@bg-panel, 1) 25%, + alpha(@bg-panel, 1) 75%, + alpha(#000000, 0) 100% ); - padding: 0 20px; } @@ -234,14 +258,14 @@ window#waybar.chromium { } #taskbar button.active { - background: radial-gradient(circle, alpha(@accent, 1) 0%, alpha(@accent, 1) 30%, rgba(0, 0, 0, 0) 80%, rgba(0, 0, 0, 0) 100%); + background: radial-gradient(circle, alpha(@text-primary, 1) 0%, alpha(@text-primary, 1) 30%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 100%); transition: color 0.3s, box-shadow 0.3s, background 0.3s; } #taskbar button.active image { min-width: 24px; min-height: 24px; - padding: 0 5px; + /* padding: 0 5px; */ } /* POMODORO STATES */ @@ -280,26 +304,6 @@ window#waybar.chromium { color: @text-secondary; } -/* BATTERY STATES */ -#battery.charging, -#battery.plugged { - color: @success; - text-shadow: 0px 0px 8px @success; - transition: color 0.3s, box-shadow 0.3s, background 0.3s; -} - -#battery.warning:not(.charging) { - color: @warning; - text-shadow: 0px 0px 8px @warning; - transition: color 0.3s, box-shadow 0.3s, background 0.3s; -} - -#battery.critical:not(.charging) { - color: @danger; - text-shadow: 0px 0px 8px @danger; - transition: color 0.3s, box-shadow 0.3s, background 0.3s; -} - /* CPU && MEMORY STATES */ #cpu.s1, #memory.s1, #temperature.s1 { color: @text-primary; diff --git a/waybar/style/style_top.css b/waybar/style/style_top.css index 904c5f2..b0bc9ed 100644 --- a/waybar/style/style_top.css +++ b/waybar/style/style_top.css @@ -105,7 +105,7 @@ window#waybar.chromium { #mpd, .modules-center, .modules-right { /* Layout & Box Model */ border: 1px solid @border-color; - border-radius: 12px; + border-radius: 15px; /* Colors */ background-color: @bg-panel; @@ -181,12 +181,13 @@ window#waybar.chromium { /* MPD STATES */ #mpd { - font-weight: 700; transition: color 2s, background 2s; } #mpd.playing { color: @accent; + font-weight: 700; + /* color: @text-primary; */ } #mpd.stopped { diff --git a/zsh/aliases.sh b/zsh/aliases.sh index d73475c..1b59521 100644 --- a/zsh/aliases.sh +++ b/zsh/aliases.sh @@ -10,6 +10,7 @@ alias cl="clear" alias pi="source ~/.venv/bin/activate" alias pivenv="source ~/.venv312/bin/activate" alias nvim="http_proxy='' nvim" +alias n="nvim" alias updatew="sudo pacman -Syuw --noconfirm" alias insta="sudo pacman -S" alias detdom="sudo pacman -Qdtq | sudo pacman -Rns -" diff --git a/zsh/misspell.sh b/zsh/misspell.sh new file mode 100644 index 0000000..5766e3e --- /dev/null +++ b/zsh/misspell.sh @@ -0,0 +1,2 @@ +alias hyrpm="hyprpm" +alias hyrppm="hyprpm"