From 7e2ddc10545c1a8c621ef8a120e405fb3916d161 Mon Sep 17 00:00:00 2001 From: ManOfGoldForever Date: Mon, 10 Nov 2025 12:37:40 -0500 Subject: [PATCH] Some config files added --- .config/hypr/config/animations.conf | 15 ++ .config/hypr/config/autostart.conf | 28 +++ .config/hypr/config/colors.conf | 13 ++ .config/hypr/config/decorations.conf | 24 +++ .config/hypr/config/defaults.conf | 16 ++ .config/hypr/config/environment.conf | 10 ++ .config/hypr/config/input.conf | 10 ++ .config/hypr/config/keybinds.conf | 167 ++++++++++++++++++ .config/hypr/config/monitors.conf | 5 + .config/hypr/config/variables.conf | 87 +++++++++ .config/hypr/config/windowrules.conf | 66 +++++++ .config/hypr/config/workspaces.conf | 7 + .config/hypr/dracula_colors.conf | 24 +++ .config/hypr/gamemode.sh | 21 +++ .config/hypr/hypridle.conf | 11 ++ .config/hypr/hyprland.conf | 68 +++++++ .config/hypr/hyprlock.conf | 68 +++++++ .config/waybar/colors.css | 12 ++ .config/waybar/config | 79 +++++++++ .config/waybar/mediaplayer.py | 127 +++++++++++++ .config/waybar/modules/mail.py | 42 +++++ .config/waybar/modules/spotify.sh | 18 ++ .config/waybar/modules/storage.sh | 24 +++ .config/waybar/modules/update-check.sh | 8 + .config/waybar/modules/weather.sh | 79 +++++++++ .config/waybar/style.css | 44 +++++ .config/waybar/waybar.sh | 10 ++ .config/waybar/wittr.sh | 5 + .config/wlogout/layout | 36 ++++ .config/wlogout/style.css | 51 ++++++ .config/wob/wob.ini | 1 + .config/wob/wob_horizontal.ini | 59 +++++++ .pacman.list | 235 +++++++++++++++++++++++++ 33 files changed, 1470 insertions(+) create mode 100644 .config/hypr/config/animations.conf create mode 100644 .config/hypr/config/autostart.conf create mode 100644 .config/hypr/config/colors.conf create mode 100644 .config/hypr/config/decorations.conf create mode 100644 .config/hypr/config/defaults.conf create mode 100644 .config/hypr/config/environment.conf create mode 100644 .config/hypr/config/input.conf create mode 100644 .config/hypr/config/keybinds.conf create mode 100644 .config/hypr/config/monitors.conf create mode 100644 .config/hypr/config/variables.conf create mode 100644 .config/hypr/config/windowrules.conf create mode 100644 .config/hypr/config/workspaces.conf create mode 100644 .config/hypr/dracula_colors.conf create mode 100755 .config/hypr/gamemode.sh 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/waybar/colors.css create mode 100644 .config/waybar/config create mode 100755 .config/waybar/mediaplayer.py create mode 100755 .config/waybar/modules/mail.py create mode 100755 .config/waybar/modules/spotify.sh create mode 100755 .config/waybar/modules/storage.sh create mode 100755 .config/waybar/modules/update-check.sh create mode 100755 .config/waybar/modules/weather.sh create mode 100644 .config/waybar/style.css create mode 100755 .config/waybar/waybar.sh create mode 100755 .config/waybar/wittr.sh create mode 100644 .config/wlogout/layout create mode 100644 .config/wlogout/style.css create mode 120000 .config/wob/wob.ini create mode 100644 .config/wob/wob_horizontal.ini create mode 100644 .pacman.list diff --git a/.config/hypr/config/animations.conf b/.config/hypr/config/animations.conf new file mode 100644 index 0000000..fa6fe14 --- /dev/null +++ b/.config/hypr/config/animations.conf @@ -0,0 +1,15 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Animations Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +# https://wiki.hyprland.org/Configuring/Animations/ + +animations { + enabled = yes + bezier = overshot, 0.13, 0.99, 0.29, 1.1 + animation = windowsIn, 1, 4, overshot, slide + animation = windowsOut, 1, 5, default, popin 80% + animation = border, 1, 5, default + animation = workspacesIn, 1, 6, overshot, slide + animation = workspacesOut, 1, 6, overshot, slidefade 80% +} diff --git a/.config/hypr/config/autostart.conf b/.config/hypr/config/autostart.conf new file mode 100644 index 0000000..e985b27 --- /dev/null +++ b/.config/hypr/config/autostart.conf @@ -0,0 +1,28 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Autostart Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +source = ~/.config/hypr/config/defaults.conf + +exec-once = xrandr --output HDMI-A-1 --primary +exec-once=hyprctl setcursor Dracula 24 +# exec-once = hyprctl dispatch workspace 1 + +# Autostart wiki https://wiki.hyprland.org/Configuring/Keywords/#executing + +exec-once = waybar & +exec-once = mako & +exec-once = nm-applet --indicator & +exec-once = bash -c "mkfifo /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob && tail -f /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob | wob & disown" & +exec-once = /usr/lib/polkit-kde-authentication-agent-1 & +# exec-once = hyprlock & +exec-once = swww-daemon & sleep 0.1 && swww img /mnt/data/Wallpapers/base.png --transition-type none & + + +# ## Slow app launch fix +exec-once = systemctl --user import-environment & +exec-once = hash dbus-update-activation-environment 2>/dev/null & +exec-once = dbus-update-activation-environment --systemd & + +# ## Idle configuration +exec-once = $idlehandler diff --git a/.config/hypr/config/colors.conf b/.config/hypr/config/colors.conf new file mode 100644 index 0000000..5f3a3ef --- /dev/null +++ b/.config/hypr/config/colors.conf @@ -0,0 +1,13 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Colors Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +$cachylgreen = rgba(82dcccff) +$cachymgreen = rgba(00aa84ff) +$cachydgreen = rgba(007d6fff) +$cachylblue = rgba(01ccffff) +$cachymblue = rgba(182545ff) +$cachydblue = rgba(111826ff) +$cachywhite = rgba(ffffffff) +$cachygrey = rgba(ddddddff) +$cachygray = rgba(798bb2ff) diff --git a/.config/hypr/config/decorations.conf b/.config/hypr/config/decorations.conf new file mode 100644 index 0000000..0a08c22 --- /dev/null +++ b/.config/hypr/config/decorations.conf @@ -0,0 +1,24 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Decorations Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +source = ~/.config/hypr/config/colors.conf + +# https://wiki.hyprland.org/Configuring/Variables/#decoration + +decoration { + active_opacity = 1 + rounding = 4 + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + size = 15 + passes = 2 # more passes = more resource intensive. + xray = true + } + + # https://wiki.hyprland.org/Configuring/Variables/#shadow + shadow { + enabled = false + } +} diff --git a/.config/hypr/config/defaults.conf b/.config/hypr/config/defaults.conf new file mode 100644 index 0000000..280b74d --- /dev/null +++ b/.config/hypr/config/defaults.conf @@ -0,0 +1,16 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Defaults Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + + +# General +$webbrowser = firefox +$filemanager = nautilus +$applauncher = rofi -show drun +$terminal = kitty +$idlehandler = hypridle + +# Screenshots +$shot-region = grimblast copy area +$shot-window = grimblast copy active +$shot-screen = grimblast copy output diff --git a/.config/hypr/config/environment.conf b/.config/hypr/config/environment.conf new file mode 100644 index 0000000..9c548fb --- /dev/null +++ b/.config/hypr/config/environment.conf @@ -0,0 +1,10 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Enviroment Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +envd = HYPRCURSOR_THEME, Dracula +envd = HYPRCURSOR_SIZE,24 +envd = XCURSOR_THEME, Dracula +envd = XCURSOR_SIZE,24 +envd = QT_CURSOR_THEME, Dracula +envd = QT_CURSOR_SIZE,24 diff --git a/.config/hypr/config/input.conf b/.config/hypr/config/input.conf new file mode 100644 index 0000000..5580415 --- /dev/null +++ b/.config/hypr/config/input.conf @@ -0,0 +1,10 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Input Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +# Input wiki https://wiki.hyprland.org/Configuring/Variables/#input + +input { + follow_mouse = 2 # 0|1|2|3 + float_switch_override_focus = 2 +} diff --git a/.config/hypr/config/keybinds.conf b/.config/hypr/config/keybinds.conf new file mode 100644 index 0000000..debeca2 --- /dev/null +++ b/.config/hypr/config/keybinds.conf @@ -0,0 +1,167 @@ + +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Keybinds ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +source = ~/.config/hypr/config/defaults.conf + +# https://wiki.hyprland.org/Configuring/Binds/ +bindd = $mainMod, F2, Runs gamemode script, exec, ~/.config/hypr/gamemode.sh +bindd = $mainMod, W, Runs Rofi Wallpaper Selector Script, exec, ~/.config/rofi/wallpaper_selector.sh +bindd = $mainMod, P, Opens power menu (Wlogout), exec, wlogout +bindd = $mainMod, A, Opens mumble, exec, mumble +bindd = $mainMod, S, Opens steam, exec, steam +bindd = $mainMod, B, Opens your preferred web browser($webbrowser), exec, $webbrowser +bindd = $mainMod, RETURN, Opens your preferred terminal emulator ($terminal), exec, $terminal +bindd = $mainMod, E, Opens your preferred filemanager ($filemanager), exec, $filemanager +bindd = $mainMod, Q, Closes (not kill) current window, killactive, +bindd = $mainMod SHIFT, M, Exits Hyprland by terminating the user sessions, exec, loginctl terminate-user "" +bindd = $mainMod, V, Switches current window between floating and tiling mode, togglefloating, +bindd = $mainMod, SPACE, Runs your application launcher, exec, $applauncher +bindd = $mainMod, F, Toggles current window fullscreen mode, fullscreen +bindd = $mainMod, Y, Pin current window (shows on all workspaces), pin +bindd = $mainMod, J, Toggles current window split mode, togglesplit, # dwindle + +bindd = , Print, Creates a screenshot of an area, exec, $shot-region, +bindd = CTRL, Print, Creates a screenshot of the active window, exec, $shot-window, +bindd = ALT, Print, Creates a screenshot of the active display, exec, $shot-screen, +# ======= Grouping Windows ======= + +bindd = $mainMod, K, Toggles current window group mode (ungroup all related), togglegroup, +bindd = $mainMod, Tab, Switches to the next window in the group, changegroupactive, f + +# ======= Toggle Gaps ======= + +bindd = $mainMod SHIFT, G, Set CachyOS default gaps, exec, hyprctl --batch "keyword general:gaps_out 5;keyword general:gaps_in 3" +bindd = $mainMod, G, Remove gaps between window, exec, hyprctl --batch "keyword general:gaps_out 0;keyword general:gaps_in 0" + +# ======= Volume Control ======= + +bindel = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% && pactl get-sink-volume @DEFAULT_SINK@ | grep -oP '\d+(?=%)' | awk '{if($1>100) system("pactl set-sink-volume @DEFAULT_SINK@ 100%")}' && pactl get-sink-volume @DEFAULT_SINK@ | grep -oP '\d+(?=%)' | awk '{print $1}' | head -1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob # Raise Volume +bindel = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% && pactl get-sink-volume @DEFAULT_SINK@ | grep -oP '\d+(?=%)' | awk '{print $1}' | head -1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob # Lower Volume +bindel = , XF86AudioMute, exec, amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob #Mutes player audio + +# ======= Playback Control ======= + +bind = SUPER, bracketright, exec, playerctl --player=spotify_player next +bind = SUPER, bracketleft, exec, playerctl --player=spotify_player previous +bind = SUPER, backslash, exec, playerctl --player=spotify_player play-pause + +bindd = , XF86AudioPlay, Toggles play/pause, exec, playerctl play-pause +bindd = , XF86AudioNext, Next track, exec, playerctl next +bindd = , XF86AudioPrev, Previous track, exec, playerctl previous + +# ======= Screen Brightness ======= + +bindel = , XF86MonBrightnessUp, exec, brightnessctl s +5% #Increases brightness 5% +bindel = , XF86MonBrightnessDown, exec, brightnessctl s 5%- #Decreases brightness 5% +bindd = $mainMod, L, Lock the screen, exec, swaylock-fancy -e -K -p 10 -f Hack-Regular +bindd = $mainMod, O, Reload/restarts Waybar, exec, killall -SIGUSR2 waybar + +# ======= Window Actions ======= + +## Move window with mainMod + LMB/RMB and dragging +bindd = $mainMod, mouse:272, Move the window towards a direction, movewindow +## Move window towards a direction +bindd = $mainMod SHIFT, left, Move active window to the left, movewindow, l +bindd = $mainMod SHIFT, right, Move active window to the right, movewindow, r +bindd = $mainMod SHIFT, up, Move active window upwards, movewindow, u +bindd = $mainMod SHIFT, down, Move active window downwards, movewindow, d +## Move focus with mainMod + arrow keys +bindd = $mainMod, left, Move focus to the left, movefocus, l +bindd = $mainMod, right, Move focus to the right, movefocus, r +bindd = $mainMod, up, Move focus upwards, movefocus, u +bindd = $mainMod, down, Move focus downwards, movefocus, d + +## Resizing windows +# Activate keyboard window resize mode +# https://wiki.hyprland.org/Configuring/Binds/#submaps +bindd = $mainMod, R, Activates window resizing mode, submap, resize +submap = resize +bindd = , right, Resize to the right (resizing mode), resizeactive, 15 0 +bindd = , left, Resize to the left (resizing mode), resizeactive, -15 0 +bindd = , up, Resize upwards (resizing mode), resizeactive, 0 -15 +bindd = , down, Resize downwards (resizing mode), resizeactive, 0 15 +bindd = , l, Resize to the right (resizing mode), resizeactive, 15 0 +bindd = , h, Resize to the left (resizing mode), resizeactive, -15 0 +bindd = , k, Resize upwards (resizing mode), resizeactive, 0 -15 +bindd = , j, Resize downwards (resizing mode), resizeactive, 0 15 +bindd = , escape, Ends window resizing mode, submap, reset +submap = reset +# Quick resize window with keyboard +# !!! added $mainMod here because CTRL + SHIFT is used for word selection in various text editors +bindd = $mainMod CTRL SHIFT, right, Resize to the right, resizeactive, 15 0 +bindd = $mainMod CTRL SHIFT, left, Resize to the left, resizeactive, -15 0 +bindd = $mainMod CTRL SHIFT, up, Resize upwards, resizeactive, 0 -15 +bindd = $mainMod CTRL SHIFT, down, Resize downwards, resizeactive, 0 15 +bindd = $mainMod CTRL SHIFT, l, Resize to the right, resizeactive, 15 0 +bindd = $mainMod CTRL SHIFT, h, Resize to the left, resizeactive, -15 0 +bindd = $mainMod CTRL SHIFT, k, Resize upwards, resizeactive, 0 -15 +bindd = $mainMod CTRL SHIFT, j, Resize downwards, resizeactive, 0 15 +# Resize window with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:273, resizewindow #Resize the window towards a direction +bindm = $mainMod, mouse:272, movewindow #Drag window +## Resizing Windows End # + +## Move active window to a workspace with $mainMod + CTRL + [0-9] +bindd = $mainMod CTRL, 1, Move window and switch to workspace 1, movetoworkspace, 1 +bindd = $mainMod CTRL, 2, Move window and switch to workspace 2, movetoworkspace, 2 +bindd = $mainMod CTRL, 3, Move window and switch to workspace 3, movetoworkspace, 3 +bindd = $mainMod CTRL, 4, Move window and switch to workspace 4, movetoworkspace, 4 +bindd = $mainMod CTRL, 5, Move window and switch to workspace 5, movetoworkspace, 5 +bindd = $mainMod CTRL, 6, Move window and switch to workspace 6, movetoworkspace, 6 +bindd = $mainMod CTRL, 7, Move window and switch to workspace 7, movetoworkspace, 7 +bindd = $mainMod CTRL, 8, Move window and switch to workspace 8, movetoworkspace, 8 +bindd = $mainMod CTRL, 9, Move window and switch to workspace 9, movetoworkspace, 9 +bindd = $mainMod CTRL, 0, Move window and switch to workspace 10, movetoworkspace, 10 +bindd = $mainMod CTRL, left, Move window and switch to the next workspace, movetoworkspace, -1 +bindd = $mainMod CTRL, right, Move window and switch to the previous workspace, movetoworkspace, +1 +## Same as above, but doesn't switch to the workspace +bindd = $mainMod SHIFT, 1, Move window silently to workspace 1, movetoworkspacesilent, 1 +bindd = $mainMod SHIFT, 2, Move window silently to workspace 2, movetoworkspacesilent, 2 +bindd = $mainMod SHIFT, 3, Move window silently to workspace 3, movetoworkspacesilent, 3 +bindd = $mainMod SHIFT, 4, Move window silently to workspace 4, movetoworkspacesilent, 4 +bindd = $mainMod SHIFT, 5, Move window silently to workspace 5, movetoworkspacesilent, 5 +bindd = $mainMod SHIFT, 6, Move window silently to workspace 6, movetoworkspacesilent, 6 +bindd = $mainMod SHIFT, 7, Move window silently to workspace 7, movetoworkspacesilent, 7 +bindd = $mainMod SHIFT, 8, Move window silently to workspace 8, movetoworkspacesilent, 8 +bindd = $mainMod SHIFT, 9, Move window silently to workspace 9, movetoworkspacesilent, 9 +bindd = $mainMod SHIFT, 0, Move window silently to workspace 10, movetoworkspacesilent, 10 +# Window actions End # + +# ======= Workspace Actions ======= + +# Switch workspaces with mainMod + [0-9] +bindd = $mainMod, 1, Switch to workspace 1, workspace, 1 +bindd = $mainMod, 2, Switch to workspace 2, workspace, 2 +bindd = $mainMod, 3, Switch to workspace 3, workspace, 3 +bindd = $mainMod, 4, Switch to workspace 4, workspace, 4 +bindd = $mainMod, 5, Switch to workspace 5, workspace, 5 +bindd = $mainMod, 6, Switch to workspace 6, workspace, 6 +bindd = $mainMod, 7, Switch to workspace 7, workspace, 7 +bindd = $mainMod, 8, Switch to workspace 8, workspace, 8 +bindd = $mainMod, 9, Switch to workspace 9, workspace, 9 +bindd = $mainMod, 0, Switch to workspace 10, workspace, 10 +# Scroll through existing workspaces with mainMod + , or . +bindd = $mainMod, PERIOD, Scroll through workspaces incrementally, workspace, e+1 +bindd = $mainMod, COMMA, Scroll through workspaces decrementally, workspace, e-1 +# With $mainMod + scroll +bindd = $mainMod, mouse_down, Scroll through workspaces incrementally, workspace, e+1 +bindd = $mainMod, mouse_up, Scroll through workspaces decrementally, workspace, e-1 +bindd = $mainMod, slash, Switch to the previous workspace, workspace, previous +# Special workspaces (scratchpads) +bindd = $mainMod, minus, Move active window to Special workspace, movetoworkspace, special +bindd = $mainMod, equal, Toggles the Special workspace, togglespecialworkspace, special +bindd = $mainMod, F1, Call special workspace scratchpad, togglespecialworkspace, scratchpad +bindd = $mainMod ALT SHIFT, F1, Move active window to special workspace scratchpad, movetoworkspacesilent, special:scratchpad + +# ======= Additional Settings ======= + +# https://wiki.hyprland.org/Configuring/Binds +binds { + allow_workspace_cycles = 1 + workspace_back_and_forth = 1 + workspace_center_on = 1 + movefocus_cycles_fullscreen = true + window_direction_monitor_fallback = true +} diff --git a/.config/hypr/config/monitors.conf b/.config/hypr/config/monitors.conf new file mode 100644 index 0000000..61ca9c5 --- /dev/null +++ b/.config/hypr/config/monitors.conf @@ -0,0 +1,5 @@ +# Generated by nwg-displays on 2025-11-02 at 02:52:57. Do not edit manually. + +monitor = HDMI-A-1,1920x1080@239.76,0x0,1,transform,0 +monitor = DP-1,2560x1440@59.95,1920x0,1,transform,1 +monitor = eDP-2,disable diff --git a/.config/hypr/config/variables.conf b/.config/hypr/config/variables.conf new file mode 100644 index 0000000..9040873 --- /dev/null +++ b/.config/hypr/config/variables.conf @@ -0,0 +1,87 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Variables Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +source = ~/.config/hypr/config/colors.conf + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 3 + gaps_out = 5 + border_size = 3 + col.active_border = $cachylgreen + col.inactive_border = $cachymblue + layout = dwindle # master|dwindle + + # https://wiki.hyprland.org/Configuring/Variables/#snap + snap { + enabled = true + } +} + +# removed old gestures {} block — Hyprland 0.39+ uses gesture = … lines + +# https://wiki.hyprland.org/Configuring/Variables/#group +group { + col.border_active = $cachydgreen + col.border_inactive = $cachylgreen + col.border_locked_active = $cachymgreen + col.border_locked_inactive = $cachydblue + + # https://wiki.hyprland.org/Configuring/Variables/#groupbar + groupbar { + font_family = "Fira Sans" + text_color = $cachydblue + col.active = $cachydgreen + col.inactive = $cachylgreen + col.locked_active = $cachymgreen + col.locked_inactive = $cachydblue + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + font_family = "Fira Sans" + splash_font_family = "Fira Sans" + disable_hyprland_logo = true + col.splash = $cachylgreen + background_color = $cachydblue + enable_swallow = true + swallow_regex = ^(nautilus|nemo|thunar|btrfs-assistant.)$ + focus_on_activate = true + vrr = 2 +} + +# https://wiki.hyprland.org/Configuring/Variables/#render +render { + direct_scanout = true +} + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + special_scale_factor = 0.8 + pseudotile = true + preserve_split = true +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master + special_scale_factor = 0.8 +} + +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Gestures ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +# 4-finger horizontal swipe to switch workspaces +gesture = 4, horizontal, workspace + +# 3-finger swipe down closes active window +gesture = 3, down, close + +# 3-finger swipe up toggles fullscreen +gesture = 3, up, fullscreen + +# 3-finger swipe left toggles float/tile +gesture = 3, left, float diff --git a/.config/hypr/config/windowrules.conf b/.config/hypr/config/windowrules.conf new file mode 100644 index 0000000..008d755 --- /dev/null +++ b/.config/hypr/config/windowrules.conf @@ -0,0 +1,66 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Windowrules Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +# Windows Rules https://wiki.hyprland.org/Configuring/Window-Rules/ # + +windowrulev2 = fullscreen, initialTitle:^(ARC Raiders)$, monitor:1 +windowrule = monitor 1, initialTitle:^(Deadlock)$ + +# Float Necessary Windows +windowrule = tile, initialTitle:^(Godot)$ +windowrule = float, class:^(org.pulseaudio.pavucontrol) +windowrule = float, class:^()$,title:^(Picture in picture)$ +windowrule = float, class:^()$,title:^(Save File)$ +windowrule = float, class:^()$,title:^(Open File)$ +windowrule = float, class:^(LibreWolf)$,title:^(Picture-in-Picture)$ +windowrule = float, class:^(blueman-manager)$ +windowrule = float, class:^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$ +windowrule = float, class:^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$ +windowrule = float, class:^(CachyOSHello)$ +windowrule = float, class:^(zenity)$ +windowrule = float, class:^()$,title:^(Steam - Self Updater)$ +# Increase the opacity +windowrule = opacity 0.92, class:^(thunar|nemo)$ +windowrule = opacity 0.96, class:^(discord|armcord|webcord)$ +windowrule = opacity 0.95, title:^(QQ|Telegram)$ +windowrule = opacity 0.95, title:^(NetEase Cloud Music Gtk4)$ +# General window rules +windowrule = float, title:^(Picture-in-Picture)$ +windowrule = size 960 540, title:^(Picture-in-Picture)$ +windowrule = move 25%-, title:^(Picture-in-Picture)$ +windowrule = float, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$ +windowrule = move 25%-, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$ +windowrule = size 960 540, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$ +windowrule = pin, title:^(danmufloat)$ +windowrule = rounding 5, title:^(danmufloat|termfloat)$ +windowrule = animation slide right, class:^(kitty|Alacritty)$ +windowrule = noblur, class:^(org.mozilla.firefox)$ +# Decorations related to floating windows on workspaces 1 to 10 +windowrule = bordersize 2, floating:1, onworkspace:w[fv1-10] +windowrule = bordercolor $cachylblue, floating:1, onworkspace:w[fv1-10] +windowrule = rounding 8, floating:1, onworkspace:w[fv1-10] +# Decorations related to tiling windows on workspaces 1 to 10 +windowrule = bordersize 3, floating:0, onworkspace:f[1-10] +windowrule = rounding 4, floating:0, onworkspace:f[1-10] +# Windows Rules End # + +# Workspaces Rules https://wiki.hyprland.org/Configuring/Workspace-Rules/ # +# workspace = 1, default:true, monitor:$priMon +# workspace = 3, default:true, monitor:$secMon +# Workspace selectors https://wiki.hyprland.org/Configuring/Workspace-Rules/#workspace-selectors +# workspace = r[1-2], monitor:$priMon +# workspace = r[3-5], monitor:$secMon +# workspace = special:scratchpad, on-created-empty:$applauncher +# no_gaps_when_only deprecated instead workspaces rules with selectors can do the same +# Smart gaps from 0.45.0 https://wiki.hyprland.org/Configuring/Workspace-Rules/#smart-gaps +workspace = w[tv1-10], gapsout:5, gapsin:3 +workspace = f[1], gapsout:5, gapsin:3 +# Workspaces Rules End # + +# Layers Rules # +layerrule = animation slide top, logout_dialog +# layerrule = animation popin 50%, waybar +layerrule = animation slide down, waybar +layerrule = animation fade 50%, wallpaper +# Layers Rules End # diff --git a/.config/hypr/config/workspaces.conf b/.config/hypr/config/workspaces.conf new file mode 100644 index 0000000..a845e81 --- /dev/null +++ b/.config/hypr/config/workspaces.conf @@ -0,0 +1,7 @@ +# Generated by nwg-displays on 2025-11-02 at 02:49:30. Do not edit manually. + +workspace=1,monitor:HDMI-A-1,default:true +workspace=2,monitor:HDMI-A-1 +workspace=3,monitor:DP-1,default:true +workspace=4,monitor:DP-1 +workspace=5,monitor:DP-1 diff --git a/.config/hypr/dracula_colors.conf b/.config/hypr/dracula_colors.conf new file mode 100644 index 0000000..0550e94 --- /dev/null +++ b/.config/hypr/dracula_colors.conf @@ -0,0 +1,24 @@ +$background = rgb(282A36) +$backgroundRaw = 282A36 +$foreground = rgb(F8F8F2) +$foregroundRaw = F8F8F2 +$selection = rgb(44475A) +$selectionRaw = 44475A +$comment = rgb(6272A4) +$commentRaw = 6272A4 +$red = rgb(FF5555) +$redRaw = FF5555 +$orange = rgb(FFB86C) +$orangeRaw = FFB86C +$yellow = rgb(F1FA8C) +$yellowRaw = F1FA8C +$green = rgb(50FA7B) +$greenRaw = 50FA7B +$purple = rgb(BD93F9) +$purpleRaw = BD93F9 +$cyan = rgb(8BE9FD) +$cyanRaw = 8BE9FD +$pink = rgb(FF79C6) +$pinkRaw = FF79C6 +$accent = $purple +$accentRaw = $purpleRaw diff --git a/.config/hypr/gamemode.sh b/.config/hypr/gamemode.sh new file mode 100755 index 0000000..d52a3d1 --- /dev/null +++ b/.config/hypr/gamemode.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env sh +HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}') +if [ "$HYPRGAMEMODE" = 1 ] ; then + hyprctl --batch "\ + keyword animations:enabled 0;\ + keyword animation borderangle,0; \ + keyword decoration:shadow:enabled 0;\ + keyword decoration:blur:enabled 0;\ + keyword decoration:fullscreen_opacity 1;\ + keyword general:gaps_in 0;\ + keyword general:gaps_out 0;\ + keyword general:border_size 1;\ + keyword decoration:rounding 0" + hyprctl notify 1 5000 "rgb(40a02b)" "Gamemode [ON]" + exit +else + hyprctl notify 1 5000 "rgb(d20f39)" "Gamemode [OFF]" + hyprctl reload + exit 0 +fi +exit 1 diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf new file mode 100644 index 0000000..8a95a62 --- /dev/null +++ b/.config/hypr/hypridle.conf @@ -0,0 +1,11 @@ +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 = 1800 # 30min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired. +} diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..c8e415a --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,68 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ CachyOS Hyprland Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +$mainMod = SUPER + +env = HYPRCURSOR_THEME,Dracula +env = HYPRCURSOR_SIZE,24 +env = GTK_CSD,0 + +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Source Files ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ +source = ~/.config/hypr/config/animations.conf +source = ~/.config/hypr/config/autostart.conf +source = ~/.config/hypr/config/decorations.conf +source = ~/.config/hypr/config/environment.conf +source = ~/.config/hypr/config/input.conf +source = ~/.config/hypr/config/keybinds.conf +source = ~/.config/hypr/config/monitors.conf +source = ~/.config/hypr/config/variables.conf +source = ~/.config/hypr/config/windowrules.conf +source = ~/.config/hypr/config/workspaces.conf + +# Modifying these configs can be done by creating a user defined config in the home directory, e.g. +## ~/.config/hypr/config/user-config.conf +# source = ~/.config/hypr/config/user-config.conf +# dracula/hyprland +general { + col.active_border = rgb(44475a) rgb(bd93f9) 90deg + col.inactive_border = rgba(44475aaa) + col.nogroup_border = rgba(282a36dd) + col.nogroup_border_active = rgb(bd93f9) rgb(44475a) 90deg + no_border_on_floating = false + border_size = 2 + + # non-gradient alternative + #col.active_border = rgb(bd93f9) + #col.inactive_border = rgba(44475aaa) + #col.group_border = rgba(282a36dd) + #col.group_border_active = rgb(bd93f9) + + # darker alternative + #col.active_border = rgb(44475a) # or rgb(6272a4) + #col.inactive_border = rgb(282a36) + #col.group_border = rgb(282a36) + #col.group_border_active = rgb(44475a) # or rgb(6272a4) + +} + +decoration:shadow { + color = rgba(1E202966) + + # suggested shadow setting + #enabled = true + #range = 60 + #offset = 1 2 + #render_power = 3 + #scale = 0.97 +} + +group { + groupbar { + col.active = rgb(bd93f9) rgb(44475a) 90deg + col.inactive = rgba(282a36dd) + } +} +windowrulev2 = bordercolor rgb(ff5555),xwayland:1 # check if window is xwayland diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..1a454a8 --- /dev/null +++ b/.config/hypr/hyprlock.conf @@ -0,0 +1,68 @@ +source = $HOME/.config/hypr/dracula_colors.conf + +$font = JetBrainsMono Nerd Font +$base = $background +$text = $foreground +$textAlpha = $foregroundRaw +$accentAlpha = $accentRaw + +# GENERAL +general { + hide_cursor = true +} + +# BACKGROUND +background { + monitor = + # change to the path to your wallpaper + path = /mnt/data/Wallpapers/base.png + blur_passes = 0 + color = $base +} + +# TIME +label { + monitor = + text = $TIME12 + color = $text + font_size = 90 + font_family = $font + position = 30, 0 + halign = left + valign = top +} + +# DATE +label { + monitor = + text = cmd[update:43200000] echo "$(date +"%A, %d %B %Y")" + color = $text + font_size = 25 + font_family = $font + position = 30, -150 + halign = left + valign = top +} + +# INPUT FIELD +input-field { + monitor = + size = 300, 60 + outline_thickness = 4 + dots_size = 0.2 + dots_spacing = 0.2 + dots_center = true + outer_color = $accent + inner_color = $background + font_color = $text + fade_on_empty = false + placeholder_text = 󰌾 Logged in as $USER + hide_input = false + check_color = $accent + fail_color = $red + fail_text = $FAIL ($ATTEMPTS) + capslock_color = $yellow + position = 0, -35 + halign = center + valign = center +} diff --git a/.config/waybar/colors.css b/.config/waybar/colors.css new file mode 100644 index 0000000..c1d5bda --- /dev/null +++ b/.config/waybar/colors.css @@ -0,0 +1,12 @@ +@define-color background-darker rgba(30, 31, 41, 230); +@define-color background #282a36; +@define-color selection #44475a; +@define-color foreground #f8f8f2; +@define-color comment #6272a4; +@define-color cyan #8be9fd; +@define-color green #50fa7b; +@define-color orange #ffb86c; +@define-color pink #ff79c6; +@define-color purple #bd93f9; +@define-color red #ff5555; +@define-color yellow #f1fa8c; diff --git a/.config/waybar/config b/.config/waybar/config new file mode 100644 index 0000000..3940d5a --- /dev/null +++ b/.config/waybar/config @@ -0,0 +1,79 @@ +{ + "layer": "top", + "position": "top", + "height": 24, + "spacing": 4, + "modules-left": [ + "hyprland/workspaces", + ], + "modules-center": [ + "hyprland/window" + ], + "modules-right": [ + "custom/media", + "custom/updates", + "custom/storage", + "tray", + "clock" + ], + "wlr/taskbar": { + "on-click": "activate", + "on-click-middle": "close", + "ignore-list": [ + "foot" + ] + }, + "hyprland/workspaces": { + "on-click": "activate", + "on-scroll-up": "hyprctl dispatch workspace e-1", + "on-scroll-down": "hyprctl dispatch workspace e+1" + }, + "hyprland/window": { + "max-length": 128 + }, + "clock": { + "format": "{:%m/%d/%Y %I:%M %p}", + "tooltip-format": "{:%Y %B}\n{calendar}" + }, + "tray": { + "spacing": 4 + }, + "custom/weather": { + "exec": "~/.config/waybar/wittr.sh", + "return-type": "json", + "format": "{}", + "tooltip": true, + "interval": 900 + }, + "custom/spotify": { + "exec": "~/.config/waybar/modules/spotify.sh", + "return-type": "json", + "format": "{}", + "tooltip": false, + "interval": 5 + }, + "custom/media": { + "exec": "~/.config/waybar/mediaplayer.py --player spotify_player", + "return-type": "json", + "interval": 0, + "on-click": "playerctl play-pause", + "tooltip": false + }, + "custom/storage": { + "exec": "~/.config/waybar/modules/storage.sh", + "return-type": "json", + "interval": 900, + "format": "{}", + "tooltip": false + }, + "custom/updates": { + "exec": "~/.config/waybar/modules/update-check.sh", + "interval": 900, + "return-type": "json", + "format": "{text}", + "on-click": "kitty -e fish -ic 'update'", + "on-output": "class: no-updates", + "on-error": "class: updates-available", + "tooltip": false + }, +} diff --git a/.config/waybar/mediaplayer.py b/.config/waybar/mediaplayer.py new file mode 100755 index 0000000..7404f48 --- /dev/null +++ b/.config/waybar/mediaplayer.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 +import argparse +import logging +import sys +import signal +import gi +import json +gi.require_version('Playerctl', '2.0') +from gi.repository import Playerctl, GLib + +logger = logging.getLogger(__name__) + + +def write_output(text, player): + logger.info('Writing output') + + output = {'text': text, + 'class': 'custom-' + player.props.player_name, + 'alt': player.props.player_name} + + sys.stdout.write(json.dumps(output) + '\n') + sys.stdout.flush() + + +def on_play(player, status, manager): + logger.info('Received new playback status') + on_metadata(player, player.props.metadata, manager) + + +def on_metadata(player, metadata, manager): + logger.info('Received new metadata') + track_info = '' + + if player.props.player_name == 'spotify' and \ + 'mpris:trackid' in metadata.keys() and \ + ':ad:' in player.props.metadata['mpris:trackid']: + track_info = 'AD PLAYING' + elif player.get_artist() != '' and player.get_title() != '': + track_info = '{artist} - {title}'.format(artist=player.get_artist(), + title=player.get_title()) + else: + track_info = player.get_title() + + if player.props.status != 'Playing' and track_info: + track_info = ' ' + track_info + write_output(track_info, player) + + +def on_player_appeared(manager, player, selected_player=None): + if player is not None and (selected_player is None or player.name == selected_player): + init_player(manager, player) + else: + logger.debug("New player appeared, but it's not the selected player, skipping") + + +def on_player_vanished(manager, player): + logger.info('Player has vanished') + sys.stdout.write('\n') + sys.stdout.flush() + + +def init_player(manager, name): + logger.debug('Initialize player: {player}'.format(player=name.name)) + player = Playerctl.Player.new_from_name(name) + player.connect('playback-status', on_play, manager) + player.connect('metadata', on_metadata, manager) + manager.manage_player(player) + on_metadata(player, player.props.metadata, manager) + + +def signal_handler(sig, frame): + logger.debug('Received signal to stop, exiting') + sys.stdout.write('\n') + sys.stdout.flush() + # loop.quit() + sys.exit(0) + + +def parse_arguments(): + parser = argparse.ArgumentParser() + + # Increase verbosity with every occurance of -v + parser.add_argument('-v', '--verbose', action='count', default=0) + + # Define for which player we're listening + parser.add_argument('--player') + + return parser.parse_args() + + +def main(): + arguments = parse_arguments() + + # Initialize logging + logging.basicConfig(stream=sys.stderr, level=logging.DEBUG, + format='%(name)s %(levelname)s %(message)s') + + # Logging is set by default to WARN and higher. + # With every occurrence of -v it's lowered by one + logger.setLevel(max((3 - arguments.verbose) * 10, 0)) + + # Log the sent command line arguments + logger.debug('Arguments received {}'.format(vars(arguments))) + + manager = Playerctl.PlayerManager() + loop = GLib.MainLoop() + + manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player)) + manager.connect('player-vanished', on_player_vanished) + + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) + + for player in manager.props.player_names: + if arguments.player is not None and arguments.player != player.name: + logger.debug('{player} is not the filtered player, skipping it' + .format(player=player.name) + ) + continue + + init_player(manager, player) + + loop.run() + + +if __name__ == '__main__': + main() diff --git a/.config/waybar/modules/mail.py b/.config/waybar/modules/mail.py new file mode 100755 index 0000000..abc36ec --- /dev/null +++ b/.config/waybar/modules/mail.py @@ -0,0 +1,42 @@ +#!/usr/bin/python + +import os +import imaplib + +import mailsecrets + +def getmails(username, password, server): + imap = imaplib.IMAP4_SSL(server, 993) + imap.login(username, password) + imap.select('INBOX') + ustatus, uresponse = imap.uid('search', None, 'UNSEEN') + if ustatus == 'OK': + unread_msg_nums = uresponse[0].split() + else: + unread_msg_nums = [] + + fstatus, fresponse = imap.uid('search', None, 'FLAGGED') + if fstatus == 'OK': + flagged_msg_nums = fresponse[0].split() + else: + flagged_msg_nums = [] + + return [len(unread_msg_nums), len(flagged_msg_nums)] + +ping = os.system("ping " + mailsecrets.server + " -c1 > /dev/null 2>&1") +if ping == 0: + mails = getmails(mailsecrets.username, mailsecrets.password, mailsecrets.server) + text = '' + alt = '' + + if mails[0] > 0: + text = alt = str(mails[0]) + if mails[1] > 0: + alt = str(mails[1]) + "  " + alt + else: + exit(1) + + print('{"text":"' + text + '", "alt": "' + alt + '"}') + +else: + exit(1) diff --git a/.config/waybar/modules/spotify.sh b/.config/waybar/modules/spotify.sh new file mode 100755 index 0000000..7c38bc6 --- /dev/null +++ b/.config/waybar/modules/spotify.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +class=$(playerctl metadata --player=spotify_player --format '{{lc(status)}}') +icon="" + +if [[ $class == "playing" ]]; then + info=$(playerctl metadata --player=spotify_player --format '{{artist}} - {{title}}') + if [[ ${#info} > 40 ]]; then + info=$(echo $info | cut -c1-40)"..." + fi + text=$info" "$icon +elif [[ $class == "paused" ]]; then + text=$icon +elif [[ $class == "stopped" ]]; then + text="" +fi + +echo -e "{\"text\":\""$text"\", \"class\":\""$class"\"}" diff --git a/.config/waybar/modules/storage.sh b/.config/waybar/modules/storage.sh new file mode 100755 index 0000000..fd08de9 --- /dev/null +++ b/.config/waybar/modules/storage.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +mount="/" +warning=20 +critical=10 + +df -h -P -l "$mount" | awk -v warning=$warning -v critical=$critical ' +/\/.*/ { + text=$5 + tooltip="Filesystem: "$1"\rSize: "$2"\rUsed: "$3"\rAvail: "$4"\rUse%: "$5"\rMounted on: "$6 + use=$5 + exit 0 +} +END { + class="" + gsub(/%$/,"",use) + if ((100 - use) < critical) { + class="critical" + } else if ((100 - use) < warning) { + class="warning" + } + print "{\"text\":\""text"\", \"percentage\":"use",\"tooltip\":\""tooltip"\", \"class\":\""class"\"}" +} +' diff --git a/.config/waybar/modules/update-check.sh b/.config/waybar/modules/update-check.sh new file mode 100755 index 0000000..d328bbe --- /dev/null +++ b/.config/waybar/modules/update-check.sh @@ -0,0 +1,8 @@ +#!/bin/bash +updates=$(($(checkupdates 2>/dev/null | wc -l) + $(paru -Qum 2>/dev/null | wc -l))) + +if [ "$updates" -gt 0 ]; then + echo '{"text":"⟳","class":"updates-available"}' +else + echo '{"text":"⟳","class":"no-updates"}' +fi diff --git a/.config/waybar/modules/weather.sh b/.config/waybar/modules/weather.sh new file mode 100755 index 0000000..06157ef --- /dev/null +++ b/.config/waybar/modules/weather.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +cachedir=~/.cache/rbn +cachefile=${0##*/}-$1 + +if [ ! -d $cachedir ]; then + mkdir -p $cachedir +fi + +if [ ! -f $cachedir/$cachefile ]; then + touch $cachedir/$cachefile +fi + +# Save current IFS +SAVEIFS=$IFS +# Change IFS to new line. +IFS=$'\n' + +cacheage=$(($(date +%s) - $(stat -c '%Y' "$cachedir/$cachefile"))) +if [ $cacheage -gt 1740 ] || [ ! -s $cachedir/$cachefile ]; then + data=($(curl -s https://en.wttr.in/$1\?0qnT 2>&1)) + echo ${data[0]} | cut -f1 -d, > $cachedir/$cachefile + echo ${data[1]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile + echo ${data[2]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile +fi + +weather=($(cat $cachedir/$cachefile)) + +# Restore IFSClear +IFS=$SAVEIFS + +temperature=$(echo ${weather[2]} | sed -E 's/([[:digit:]])+\.\./\1 to /g') + +#echo ${weather[1]##*,} + +# https://fontawesome.com/icons?s=solid&c=weather +case $(echo ${weather[1]##*,} | tr '[:upper:]' '[:lower:]') in +"clear" | "sunny") + condition="" + ;; +"partly cloudy") + condition="杖" + ;; +"cloudy") + condition="" + ;; +"overcast") + condition="" + ;; +"mist" | "fog" | "freezing fog") + condition="" + ;; +"patchy rain possible" | "patchy light drizzle" | "light drizzle" | "patchy light rain" | "light rain" | "light rain shower" | "rain") + condition="" + ;; +"moderate rain at times" | "moderate rain" | "heavy rain at times" | "heavy rain" | "moderate or heavy rain shower" | "torrential rain shower" | "rain shower") + condition="" + ;; +"patchy snow possible" | "patchy sleet possible" | "patchy freezing drizzle possible" | "freezing drizzle" | "heavy freezing drizzle" | "light freezing rain" | "moderate or heavy freezing rain" | "light sleet" | "ice pellets" | "light sleet showers" | "moderate or heavy sleet showers") + condition="ﭽ" + ;; +"blowing snow" | "moderate or heavy sleet" | "patchy light snow" | "light snow" | "light snow showers") + condition="流" + ;; +"blizzard" | "patchy moderate snow" | "moderate snow" | "patchy heavy snow" | "heavy snow" | "moderate or heavy snow with thunder" | "moderate or heavy snow showers") + condition="ﰕ" + ;; +"thundery outbreaks possible" | "patchy light rain with thunder" | "moderate or heavy rain with thunder" | "patchy light snow with thunder") + condition="" + ;; +*) + condition="" + echo -e "{\"text\":\""$condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}" + ;; +esac + +#echo $temp $condition + +echo -e "{\"text\":\""$temperature $condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}" diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..266e776 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,44 @@ +@import url("./colors.css"); +* { + border: none; + border-radius: 0; + font-family: Iosevka; + font-size: 11pt; + min-height: 0; +} +window#waybar { + opacity: 1; + background: @background-darker; + color: @foreground; + border-bottom: 2px solid @background; +} +#workspaces button { + padding: 0 10px; + background: @background; + color: @foreground; +} +#workspaces button:hover { + box-shadow: inherit; + text-shadow: inherit; + background-image: linear-gradient(0deg, @selection, @background-darker); +} +#workspaces button.focused, +#workspaces button.active { + background-image: linear-gradient(0deg, @purple, @selection); +} +#workspaces button.urgent { + background-image: linear-gradient(0deg, @red, @background-darker); +} +#taskbar button.active { + background-image: linear-gradient(0deg, @selection, @background-darker); +} +#clock { + padding: 0 4px; + background: @background; +} +#custom-updates.no-updates { + color: #f8f8f2; +} +#custom-updates.updates-available { + color: #bd93f9; +} diff --git a/.config/waybar/waybar.sh b/.config/waybar/waybar.sh new file mode 100755 index 0000000..d03b9eb --- /dev/null +++ b/.config/waybar/waybar.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + +# Terminate already running bar instances +killall -q waybar + +# Wait until the processes have been shut down +while pgrep -x waybar >/dev/null; do sleep 1; done + +# Launch main +waybar & diff --git a/.config/waybar/wittr.sh b/.config/waybar/wittr.sh new file mode 100755 index 0000000..ad7d097 --- /dev/null +++ b/.config/waybar/wittr.sh @@ -0,0 +1,5 @@ +#!/usr/bin/sh +req=$(curl -s wttr.in/CITY?format="%t|%l+(%c%f)+%h,+%C") +bar=$(echo $req | awk -F "|" '{print $1}') +tooltip=$(echo $req | awk -F "|" '{print $2}') +echo "{\"text\":\"$bar\", \"tooltip\":\"$tooltip\"}" diff --git a/.config/wlogout/layout b/.config/wlogout/layout new file mode 100644 index 0000000..de9a5d2 --- /dev/null +++ b/.config/wlogout/layout @@ -0,0 +1,36 @@ +{ + "label" : "lock", + "action" : "hyprlock", + "text" : "Lock", + "keybind" : "l" +} +{ + "label" : "hibernate", + "action" : "systemctl hibernate", + "text" : "Hibernate", + "keybind" : "h" +} +{ + "label" : "logout", + "action" : "hyprctl dispatch exit", + "text" : "Logout", + "keybind" : "e" +} +{ + "label" : "shutdown", + "action" : "systemctl poweroff", + "text" : "Shutdown", + "keybind" : "s" +} +{ + "label" : "suspend", + "action" : "systemctl suspend", + "text" : "Suspend", + "keybind" : "u" +} +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "Reboot", + "keybind" : "r" +} diff --git a/.config/wlogout/style.css b/.config/wlogout/style.css new file mode 100644 index 0000000..313b82b --- /dev/null +++ b/.config/wlogout/style.css @@ -0,0 +1,51 @@ +* { + background-image: none; + box-shadow: none; +} + +window { + background-color: rgba(40, 42, 54, 0.8); /* DraculaBackground and slightly transparent */ +} + +button { + border-radius: 4; + margin: 5; + border-color: #44475a; /* DraculaPurple */ + text-decoration-color: #BD93F9; /* DraculaPurple */ + color: #BD93F9; /* DraculaPurple */ + background-color: #282A36; /* DraculaBackground */ + border-style: solid; + border-width: 2px; + background-repeat: no-repeat; + background-position: center; + background-size: 25%; +} + +button:focus, button:active, button:hover { + border-color: #BD93F9; /* DraculaPurple */ + outline-style: none; +} + +#lock { + background-image: image(url("/usr/share/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png")); +} + +#logout { + background-image: image(url("/usr/share/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png")); +} + +#suspend { + background-image: image(url("/usr/share/wlogout/icons/suspend.png"), url("/usr/local/share/wlogout/icons/suspend.png")); +} + +#hibernate { + background-image: image(url("/usr/share/wlogout/icons/hibernate.png"), url("/usr/local/share/wlogout/icons/hibernate.png")); +} + +#shutdown { + background-image: image(url("/usr/share/wlogout/icons/shutdown.png"), url("/usr/local/share/wlogout/icons/shutdown.png")); +} + +#reboot { + background-image: image(url("/usr/share/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png")); +} diff --git a/.config/wob/wob.ini b/.config/wob/wob.ini new file mode 120000 index 0000000..3e25c40 --- /dev/null +++ b/.config/wob/wob.ini @@ -0,0 +1 @@ +/home/henry/.config/wob/wob_horizontal.ini \ No newline at end of file diff --git a/.config/wob/wob_horizontal.ini b/.config/wob/wob_horizontal.ini new file mode 100644 index 0000000..8af030e --- /dev/null +++ b/.config/wob/wob_horizontal.ini @@ -0,0 +1,59 @@ +; WOB CONFIG +; ============================ +; This is a Dracula theme for wob. +; There include examples and descriptions of all the options available. +; Only modified options are uncommented. +; ============================ + +; `max` This value will be represented as fully filled bar. +;max = 100 +; `timeout` Timeout after which wob hides itself, in milliseconds. +;timeout = 1000 + +; `width` Width of wob, in pixels. +;width = 400 +; `height` Height of wob, in pixels. +;height = 50 +; `border_offset` Border offset, in pixels. +;border_offset = 4 +; `border_size` Border size, in pixels. +;border_size = 4 +; `bar_padding` Bar padding, in pixels. +;bar_padding = 4 +; `orientation` Orientation of the bar, one of horizontal and vertical. (only available after release 0.14.2 or in master branch) +; You probably want to set inverse *width* and *height* values for vertical orientation. +; This feature is implemented after the release 0.14.2 and will be available in the next release or you can build it from master branch. +;orientation = horizontal + +; `margin` Anchor margin, in pixels. Either as a single value or 4 values (top right bottom left). +; (using 4 values are only available after release 0.14.2 or in master branch) +margin = 50 +; `anchor` Anchor point, combination of top, left, right, bottom, center. +anchor = bottom center +; `overflow_mode` Overflow mode, one of wrap, and nowrap. +; *wrap*: wrap value so *max* + 20 will be displayed as 20 +; *nowrap* values > *max* will be displayed as just *max* +;overflow_mode = wrap +; `output_mode` Output mode, one of whitelist, all, focused. +; *whitelist*: show wob only on outputs defined in *output.\** sections of config file +; *all*: show wob on all available outputs +; *focused*: show wob on compositor default (focused) output +;output_mode = focused + +; `background_color` Background color, in RRGGBB[AA] format. +background_color = 282a36ff +; `bar_color` Bar color, in RRGGBB[AA] format. +bar_color = bd93f9ff +; `border_color` Border color, in RRGGBB[AA] format. +border_color = bd93f9ff + +; `overflow_background_color` Overflow background color, in RRGGBB[AA] format. +overflow_background_color = 282a36ff +; `overflow_bar_color` Overflow bar color, in RRGGBB[AA] format. +overflow_bar_color = ff79c6ff +; `overflow_border_color` Overflow border color, in RRGGBB[AA] format. +overflow_border_color = bd93f9ff + +[style.muted] +bar_color = 6272a4ff +overflow_bar_color = 6272a4ff diff --git a/.pacman.list b/.pacman.list new file mode 100644 index 0000000..8eb9f6f --- /dev/null +++ b/.pacman.list @@ -0,0 +1,235 @@ +1password +accountsservice +adobe-source-han-sans-cn-fonts +adobe-source-han-sans-jp-fonts +adobe-source-han-sans-kr-fonts +alsa-firmware +alsa-plugins +alsa-utils +awesome-terminal-fonts +base +base-devel +bash-completion +bemenu +bemenu-wayland +bind +bluez +bluez-hid2hci +bluez-libs +bluez-utils +btop +btrfs-assistant +btrfs-progs +cachyos-fish-config +cachyos-gaming-applications +cachyos-gaming-meta +cachyos-grub-theme +cachyos-hello +cachyos-hooks +cachyos-hyprland-settings +cachyos-kernel-manager +cachyos-keyring +cachyos-mirrorlist +cachyos-nord-gtk-theme-git +cachyos-packageinstaller +cachyos-rate-mirrors +cachyos-settings +cachyos-snapper-support +cachyos-v3-mirrorlist +cachyos-v4-mirrorlist +cachyos-wallpapers +capitaine-cursors +chwd +cpupower +cryptsetup +device-mapper +dhclient +diffutils +discord +dmidecode +dmraid +dnsmasq +dosfstools +duf +e2fsprogs +efibootmgr +efitools +egl-wayland +ethtool +exfatprogs +f2fs-tools +fastfetch +ffmpegthumbnailer +firefox +fsarchiver +git +glances +godot +gparted +grimblast-git +gslapper +gst-libav +gst-plugin-pipewire +gst-plugin-va +gst-plugins-bad +gst-plugins-ugly +haveged +hdparm +htop +hwdetect +hwinfo +hypridle +hyprland +hyprlock +hyprpaper +inetutils +intel-media-driver +intel-ucode +iptables-nft +iwd +jfsutils +kitty +kvantum +kvantum-theme-nordic-git +lazygit +less +lib32-mesa +lib32-nvidia-utils +lib32-opencl-nvidia +lib32-vulkan-intel +libdvdcss +libgsf +libopenraw +libva-nvidia-driver +libwnck3 +limine +limine-mkinitcpio-hook +limine-snapper-sync +linux-cachyos +linux-cachyos-headers +linux-cachyos-lts +linux-cachyos-lts-headers +linux-cachyos-lts-nvidia-open +linux-cachyos-nvidia-open +linux-firmware +logrotate +lsb-release +lsscsi +lvm2 +mako +man-db +man-pages +mdadm +meld +mesa-utils +mkinitcpio +modemmanager +mtools +mumble +nano +nano-syntax-highlighting +nautilus +netctl +networkmanager +networkmanager-openvpn +nfs-utils +nilfs-utils +noto-color-emoji-fontconfig +noto-fonts +noto-fonts-cjk +noto-fonts-emoji +nss-mdns +ntp +nvidia-prime +nvidia-settings +nvidia-utils +nwg-displays +nwg-look +obsidian +octopi +opencl-nvidia +opendesktop-fonts +openssh +os-prober +pacman-contrib +pamixer +paru +pavucontrol +perl +pipewire-alsa +pipewire-pulse +pkgfile +plocate +polkit-kde-agent +poppler-glib +power-profiles-daemon +pv +python +python-defusedxml +python-packaging +qt5ct +rebuild-detector +reflector +ripgrep +rofi +rofi-emoji +rsync +rtkit +s-nail +sddm +sg3_utils +slurp +smartmontools +snapper +sof-firmware +spotify-player +spotifyd +stow +sudo +swappy +swaybg +swaylock-effects-git +swaylock-fancy-git +switcheroo-control +swww +sysc-greet-hyprland +sysfsutils +texinfo +ttf-bitstream-vera +ttf-dejavu +ttf-liberation +ttf-meslo-nerd +ttf-opensans +ufw +unrar +unzip +upower +usb_modeswitch +usbutils +uwsm +vi +vlc-plugins-all +vulkan-intel +waybar +wget +which +wireless-regdb +wireplumber +wl-clipboard +wlogout +wob +wofi +wpa_supplicant +xdg-desktop-portal-hyprland +xdg-user-dirs +xf86-input-libinput +xfsprogs +xl2tpd +xorg-server +xorg-xdpyinfo +xorg-xinit +xorg-xinput +xorg-xkill +xorg-xrandr +xorg-xwayland +zed