From 435db3fa61f8e862393bb52264f8c502a19ac641 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 4 Jul 2025 16:17:17 +0200 Subject: [PATCH] feat: update hm config for work laptop --- dotfiles/hypr/config/animations.conf | 20 ++++ dotfiles/hypr/config/autostart.conf | 23 ++++ dotfiles/hypr/config/colors.conf | 13 +++ dotfiles/hypr/config/decorations.conf | 33 ++++++ dotfiles/hypr/config/defaults.conf | 11 ++ dotfiles/hypr/config/environment.conf | 15 +++ dotfiles/hypr/config/input.conf | 16 +++ dotfiles/hypr/config/keybinds.conf | 153 ++++++++++++++++++++++++++ dotfiles/hypr/config/monitor.conf | 16 +++ dotfiles/hypr/config/variables.conf | 80 ++++++++++++++ dotfiles/hypr/config/windowrules.conf | 62 +++++++++++ dotfiles/hypr/hyprland.conf | 22 ++++ dotfiles/hypr/scripts/screenshot | 3 + dotfiles/hypr/scripts/screenshot_area | 3 + dotfiles/hypr/scripts/screenshot_full | 3 + flake.lock | 20 +--- flake.nix | 10 +- hosts/work/home.nix | 150 +++++++++++++------------ 18 files changed, 564 insertions(+), 89 deletions(-) create mode 100644 dotfiles/hypr/config/animations.conf create mode 100644 dotfiles/hypr/config/autostart.conf create mode 100644 dotfiles/hypr/config/colors.conf create mode 100644 dotfiles/hypr/config/decorations.conf create mode 100644 dotfiles/hypr/config/defaults.conf create mode 100644 dotfiles/hypr/config/environment.conf create mode 100644 dotfiles/hypr/config/input.conf create mode 100644 dotfiles/hypr/config/keybinds.conf create mode 100644 dotfiles/hypr/config/monitor.conf create mode 100644 dotfiles/hypr/config/variables.conf create mode 100644 dotfiles/hypr/config/windowrules.conf create mode 100644 dotfiles/hypr/hyprland.conf create mode 100755 dotfiles/hypr/scripts/screenshot create mode 100755 dotfiles/hypr/scripts/screenshot_area create mode 100755 dotfiles/hypr/scripts/screenshot_full diff --git a/dotfiles/hypr/config/animations.conf b/dotfiles/hypr/config/animations.conf new file mode 100644 index 0000000..6e928f0 --- /dev/null +++ b/dotfiles/hypr/config/animations.conf @@ -0,0 +1,20 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Animations Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +# https://wiki.hyprland.org/0.45.0/Configuring/Animations/ + +animations { + enabled = yes, please :) + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.1 + bezier = winOut, 0.3, -0.3, 0, 1 + bezier = liner, 1, 1, 1, 1 + animation = windows, 1, 6, wind, slide + animation = windowsIn, 1, 6, winIn, slide + animation = windowsOut, 1, 5, winOut, slide + animation = windowsMove, 1, 5, wind, slide + animation = border, 1, 1, liner + animation = fade, 1, 10, default + animation = workspaces, 1, 5, wind +} diff --git a/dotfiles/hypr/config/autostart.conf b/dotfiles/hypr/config/autostart.conf new file mode 100644 index 0000000..611ea3a --- /dev/null +++ b/dotfiles/hypr/config/autostart.conf @@ -0,0 +1,23 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Autostart Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +source = ~/.config/hypr/config/defaults.conf + +# Autostart wiki https://wiki.hyprland.org/0.45.0/Configuring/Keywords/#executing # + +exec-once = swaybg -o \* -i /usr/share/wallpapers/cachyos-wallpapers/Skyscraper.png -m fill +exec-once = waybar & +exec-once = fcitx5 -d & +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 & + +# ## 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/dotfiles/hypr/config/colors.conf b/dotfiles/hypr/config/colors.conf new file mode 100644 index 0000000..5f3a3ef --- /dev/null +++ b/dotfiles/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/dotfiles/hypr/config/decorations.conf b/dotfiles/hypr/config/decorations.conf new file mode 100644 index 0000000..57bd6e4 --- /dev/null +++ b/dotfiles/hypr/config/decorations.conf @@ -0,0 +1,33 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Decorations Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +source = ~/.config/hypr/config/colors.conf + +# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#decoration + +decoration { + active_opacity = 1 + inactive_opacity = 0.9 + rounding = 8 + + # https://wiki.hyprland.org/0.45.0/Configuring/Variables/#blur + blur { + enabled = true + size = 15 + passes = 2 # more passes = more resource intensive. + xray = true + new_optimizations = on + ignore_opacity = off + vibrancy = 0.1696 + } + + # https://wiki.hyprland.org/0.45.0/Configuring/Variables/#shadow + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + +} diff --git a/dotfiles/hypr/config/defaults.conf b/dotfiles/hypr/config/defaults.conf new file mode 100644 index 0000000..4cc346c --- /dev/null +++ b/dotfiles/hypr/config/defaults.conf @@ -0,0 +1,11 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Defaults Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +$filemanager = thunar +$applauncher = rofi -show combi -modi window,run,combi -combi-modi window,run +$terminal = /usr/bin/kitty +$idlehandler = swayidle -w timeout 300 'swaylock -f -c 000000' before-sleep 'swaylock -f -c 000000' +$capturing = grim -g "$(slurp)" - | swappy -f - + + diff --git a/dotfiles/hypr/config/environment.conf b/dotfiles/hypr/config/environment.conf new file mode 100644 index 0000000..4396885 --- /dev/null +++ b/dotfiles/hypr/config/environment.conf @@ -0,0 +1,15 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Enviroment Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +envd = HYPRCURSOR_SIZE,24 +envd = XCURSOR_SIZE,24 +envd = QT_CURSOR_SIZE,24 +envd = XDG_CURRENT_DESKTOP, Hyprland +envd = XDG_SESSION_TYPE, Hyprland +envd = XDG_SESSION_DESKTOP, Hyprland +envd = GDK_BACKEND, wayland, x11 +envd = CLUTTER_BACKEND, wayland +envd = QT_QPA_PLATFORM=wayland;xcb +envd = MOZ_ENABLE_WAYLAND, 1 + diff --git a/dotfiles/hypr/config/input.conf b/dotfiles/hypr/config/input.conf new file mode 100644 index 0000000..57946d5 --- /dev/null +++ b/dotfiles/hypr/config/input.conf @@ -0,0 +1,16 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Input Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +# Input wiki https://wiki.hyprland.org/0.45.0/Configuring/Variables/#input + +input { + kb_layout = us,us_intl + kb_variant = + kb_model = + kb_options = grp:win_space_toggle + kb_rules = + + follow_mouse = 2 # 0|1|2|3 + float_switch_override_focus = 2 +} diff --git a/dotfiles/hypr/config/keybinds.conf b/dotfiles/hypr/config/keybinds.conf new file mode 100644 index 0000000..ecfbe03 --- /dev/null +++ b/dotfiles/hypr/config/keybinds.conf @@ -0,0 +1,153 @@ + +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Keybinds ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +source = ~/.config/hypr/config/defaults.conf + +# https://wiki.hyprland.org/Configuring/Binds/ +bindd = $mainMod, RETURN, Opens your preferred terminal emulator ($terminal), exec, $terminal +bindd = $mainMod, E, Opens your preferred filemanager ($filemanager), exec, $filemanager +bindd = $mainMod, A, Screen capture selection, exec, $capturing +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, R, 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 curren window split mode, togglesplit, # dwindle + +# ======= 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 ======= + +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 SHIFT, P, Runs the calculator application, exec, gnome-calculator +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/dotfiles/hypr/config/monitor.conf b/dotfiles/hypr/config/monitor.conf new file mode 100644 index 0000000..d1eff56 --- /dev/null +++ b/dotfiles/hypr/config/monitor.conf @@ -0,0 +1,16 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Monitor Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +# Monitor wiki https://wiki.hyprland.org/0.45.0/Configuring/Monitors/ + +monitor = , preferred, auto, 1 + + +# If you need to scale things like steam etc, please uncomment these lines. +# Adjust GDK_SCALE accordingly to your liking. +#xwayland { +# force_zero_scaling = true # Unscale XWayland +#} + +#env = GDK_SCALE, 1.25 # GDK Scaling Factor diff --git a/dotfiles/hypr/config/variables.conf b/dotfiles/hypr/config/variables.conf new file mode 100644 index 0000000..4be5726 --- /dev/null +++ b/dotfiles/hypr/config/variables.conf @@ -0,0 +1,80 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Variables Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +source = ~/.config/hypr/config/colors.conf + +# Variables wiki https://wiki.hyprland.org/0.45.0/Configuring/Variables/ # +# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#general +general { + + gaps_in = 6 + gaps_out = 8 + border_size = 2 + col.active_border = $cachylgreen + col.inactive_border = $cachymblue + layout = dwindle # master|dwindle + + # https://wiki.hyprland.org/0.45.0/Configuring/Variables/#snap + snap { + enabled = true + } + +} + +# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#gestures +gestures { + workspace_swipe = true + workspace_swipe_fingers = 4 + workspace_swipe_distance = 250 + workspace_swipe_min_speed_to_force = 15 + workspace_swipe_create_new = false +} + +# https://wiki.hyprland.org/0.45.0/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/0.45.0/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/0.45.0/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 = ^(cachy-browser|firefox|nautilus|nemo|thunar|btrfs-assistant.)$ + focus_on_activate = true + vrr = 2 +} + +# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#render +render { + direct_scanout = true +} + +# See https://wiki.hyprland.org/0.45.0/Configuring/Dwindle-Layout/ for more +dwindle { + special_scale_factor = 0.8 + pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true +} + +# See https://wiki.hyprland.org/0.45.0/Configuring/Master-Layout/ for more +master { + new_status = master + special_scale_factor = 0.8 +} diff --git a/dotfiles/hypr/config/windowrules.conf b/dotfiles/hypr/config/windowrules.conf new file mode 100644 index 0000000..d8f8973 --- /dev/null +++ b/dotfiles/hypr/config/windowrules.conf @@ -0,0 +1,62 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ Windowrules Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +# Windows Rules https://wiki.hyprland.org/0.45.0/Configuring/Window-Rules/ # + +# Float Necessary Windows +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/0.45.0/Configuring/Workspace-Rules/ # +# workspace = 1, default:true, monitor:$priMon +# workspace = 6, default:true, monitor:$secMon +# Workspace selectors https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/#workspace-selectors +# workspace = r[1-5], monitor:$priMon +# workspace = r[6-10], 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/0.45.0/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/dotfiles/hypr/hyprland.conf b/dotfiles/hypr/hyprland.conf new file mode 100644 index 0000000..3a45025 --- /dev/null +++ b/dotfiles/hypr/hyprland.conf @@ -0,0 +1,22 @@ +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ CachyOS Hyprland Configuration ┃ +# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +$mainMod = SUPER + +# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +# ┃ 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/monitor.conf +source = ~/.config/hypr/config/variables.conf +source = ~/.config/hypr/config/windowrules.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 diff --git a/dotfiles/hypr/scripts/screenshot b/dotfiles/hypr/scripts/screenshot new file mode 100755 index 0000000..ecc11b9 --- /dev/null +++ b/dotfiles/hypr/scripts/screenshot @@ -0,0 +1,3 @@ +#!/usr/bin/bash +grim -g "$(slurp)" - | wl-copy -t image/png +notify-send "Screenshot copied to clipboard" diff --git a/dotfiles/hypr/scripts/screenshot_area b/dotfiles/hypr/scripts/screenshot_area new file mode 100755 index 0000000..52218e2 --- /dev/null +++ b/dotfiles/hypr/scripts/screenshot_area @@ -0,0 +1,3 @@ +#!/usr/bin/bash +grimblast copy area || exit +notify-send "Screenshot copied to clipboard" diff --git a/dotfiles/hypr/scripts/screenshot_full b/dotfiles/hypr/scripts/screenshot_full new file mode 100755 index 0000000..0608891 --- /dev/null +++ b/dotfiles/hypr/scripts/screenshot_full @@ -0,0 +1,3 @@ +#!/usr/bin/bash +grimblast copy output || exit +notify-send "Screenshot copied to clipboard" diff --git a/flake.lock b/flake.lock index 9aec836..cec7ea9 100644 --- a/flake.lock +++ b/flake.lock @@ -531,22 +531,6 @@ "type": "github" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1745234285, - "narHash": "sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c11863f1e964833214b767f4a369c6e6a7aba141", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nur": { "inputs": { "flake-parts": "flake-parts_2", @@ -592,7 +576,9 @@ "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_4", + "nixpkgs": [ + "nixpkgs" + ], "nur": "nur", "systems": "systems_2", "tinted-foot": "tinted-foot", diff --git a/flake.nix b/flake.nix index bfb1375..581e31b 100644 --- a/flake.nix +++ b/flake.nix @@ -9,7 +9,10 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; - stylix.url = "github:danth/stylix"; + stylix = { + url = "github:danth/stylix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; disko = { "url" = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; @@ -22,6 +25,7 @@ nixpkgs, determinate, disko, + stylix, flake-utils, ... }@inputs: @@ -46,7 +50,7 @@ ./modules/nixos/gaming.nix ./modules/nixos/window-manager.nix ./hosts/home/configuration.nix - inputs.stylix.nixosModules.stylix + stylix.nixosModules.stylix inputs.home-manager.nixosModules.default ]; }; @@ -58,7 +62,7 @@ ./modules/nixos/fonts.nix ./modules/nixos/window-manager.nix disko.nixosModules.disko - inputs.stylix.nixosModules.stylix + stylix.nixosModules.stylix inputs.home-manager.nixosModules.default ./hosts/work/configuration.nix ./hosts/work/hardware-configuration.nix diff --git a/hosts/work/home.nix b/hosts/work/home.nix index 49f0273..648571a 100644 --- a/hosts/work/home.nix +++ b/hosts/work/home.nix @@ -1,91 +1,103 @@ { - config, pkgs, - lib, - outputs, ... }: { - home.username = "xmorel"; - home.homeDirectory = "/home/xmorel"; - imports = [ - ../../modules/home-manager/dotfiles.nix - ../../modules/home-manager/helix.nix - ../../modules/home-manager/waybar.nix - ../../modules/home-manager/shell.nix ../../modules/home-manager/kitty.nix ]; - - myHome.dotfiles.enable = true; - myHome.helix.enable = true; - myHome.waybar.enable = true; - myHome.kitty.enable = true; - myHome.shell.enable = true; - - gtk = { - iconTheme = { - name = "Papirus-Dark"; - package = pkgs.papirus-icon-theme; - }; - gtk3.extraConfig = { - gtk-application-prefer-dark-theme = 1; - }; - gtk4.extraConfig = { - gtk-application-prefer-dark-theme = 1; - }; + myHome = { + kitty.enable = true; }; - qt = { - enable = true; - style.name = "adwaita-dark"; - platformTheme.name = "gtk3"; - }; - services = { - hypridle = { - enable = true; - settings = { - general = { - after_sleep_cmd = "hyprctl dispatch dpms on"; - ignore_dbus_inhibit = false; - lock_cmd = "hyprlock"; - }; - listener = [ - { - timeout = 900; - on-timeout = "hyprlock"; - } - { - timeout = 1200; - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - ]; - }; + home = { + username = "xmorel"; + homeDirectory = "/home/xmorel/"; + sessionVariables = { + FLAKE = "/home/xmorel/nixos/"; }; + packages = with pkgs; [ + lazyjj + tree + slack + xfce.thunar + xfce.thunar-archive-plugin + xfce.thunar-volman + ]; + file.".config/nvim" = { + source = ../../dotfiles/nvim; + recursive = true; + }; + file.".config/hypr" = { + source = ../../dotfiles/hypr; + recursive = true; + }; + shell.enableFishIntegration = true; + }; + + nix = { + package = pkgs.nix; + settings = { + auto-optimise-store = true; + experimental-features = ["nix-command" "flakes"]; + trusted-users = [ + "root" "xmorel" + ]; + }; + gc = { + automatic = true; + }; + extraOptions = '' + extra-substituters = https://devenv.cachix.org + extra-trusted-public-keys = devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw= + ''; }; programs = { - firefox.enable = true; - gh.enable = true; + awscli.enable = true; + bat = { + enable = true; + extraPackages = with pkgs.bat-extras; [ batman ]; + }; btop = { enable = true; - settings = { - vim_keys = true; - }; + settings.vim_keys = true; }; - home-manager.enable = true; - hyprlock = { + direnv.enable = true; + eza = { enable = true; - settings = { - general = { - disable_loading_bar = true; - grace = 10; - hide_cursor = true; - no_fade_in = false; - }; - }; + extraOptions = ["--group-directories-first"]; + git = true; + icons = "auto"; }; + fish = { + enable = true; + shellAliases = { + ls = "eza"; + cat = "bat"; + ll = "eza -lh"; + l = "eza -lh"; + la = "eza -lah"; + man = "batman"; + }; + interactiveShellInit = + '' + source /usr/share/cachyos-fish-config/cachyos-config.fish + fish_vi_key_bindings + ''; + }; + fzf.enable = true; + gh.enable = true; + gpg.enable = true; + home-manager.enable = true; + jujutsu.enable = true; + lazygit.enable = true; + nh.enable = true; + nix-your-shell.enable = true; + password-store.enable = true; + ripgrep.enable = true; + starship.enable = true; + yazi.enable = true; }; home.stateVersion = "23.11";