Initial commit

This commit is contained in:
2 * r + 2 * t 2025-01-18 16:00:19 +11:00
commit 6dc3c4b3c2
14 changed files with 579 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/hyprland/ignore.conf

86
hyprland.conf Normal file
View file

@ -0,0 +1,86 @@
monitor = , preferred, auto, 1
input {
kb_layout = us
numlock_by_default = false
repeat_delay = 250
repeat_rate = 35
focus_on_close = 1
touchpad {
natural_scroll = yes
disable_while_typing = true
scroll_factor = 0.3
}
}
binds {
scroll_event_delay = 0
}
gestures {
workspace_swipe = true
workspace_swipe_distance = 700
workspace_swipe_fingers = 4
workspace_swipe_cancel_ratio = 0.15
workspace_swipe_min_speed_to_force = 5
workspace_swipe_direction_lock = true
workspace_swipe_direction_lock_threshold = 10
workspace_swipe_create_new = true
}
general {
# Gaps and border
gaps_in = 0
gaps_out = 0
gaps_workspaces = 0
border_size = 0
layout = dwindle
allow_tearing = false # Allows `immediate` window rule to work
}
dwindle {
preserve_split = true
smart_split = false
smart_resizing = true
}
misc {
vfr = true
vrr = 1
animate_manual_resizes = false
animate_mouse_windowdragging = false
disable_hyprland_logo = true
force_default_wallpaper = 0
new_window_takes_over_fullscreen = 2
allow_session_lock_restore = true
middle_click_paste = false
focus_on_activate = true
mouse_move_enables_dpms = true
key_press_enables_dpms = true
}
debug {
error_position = 1
}
$hypr = ~/.config/hypr/hyprland
# Other configs
source = $hypr/animations.conf
source = $hypr/decoration.conf
source = $hypr/execs.conf
source = $hypr/rules.conf
source = $hypr/keybinds.conf
source = $hypr/colours.conf
# Stuff to not put in git
exec = test -f $hypr/ignore.conf || touch $hypr/ignore.conf
source = $hypr/ignore.conf

25
hyprland/animations.conf Normal file
View file

@ -0,0 +1,25 @@
animations {
enabled = true
# Animation curves
bezier = linear, 0, 0, 1, 1
bezier = tinyshot, 0.05, 0.9, 0.1, 1.05
bezier = workSwitch, 0.1, 1, 0, 1
bezier = specialWorkSwitch, 0.05, 0.7, 0.1, 1
# Animation configs
animation = layersIn, 1, 3, tinyshot, slide 85%
animation = layersOut, 1, 3, tinyshot, slide 85%
animation = windowsIn, 1, 7, tinyshot, slide
animation = windowsOut, 1, 7, default, popin 80%
animation = workspaces, 1, 8.5, workSwitch, slide
animation = specialWorkspace, 1, 4, specialWorkSwitch, slidefadevert 15%
animation = fadeDim, 1, 3, linear
animation = border, 1, 3, linear
animation = fade, 1, 7, default
animation = fadeLayersIn, 1, 2, linear
}

9
hyprland/colours.conf Normal file
View file

@ -0,0 +1,9 @@
exec = ~/.config/hypr/scripts/gen-scheme.fish hyprland
source = ~/.config/hypr/hyprland/scheme.conf
general {
col.active_border = rgba($peachd5)
col.inactive_border = rgba($surface0d5)
}
windowrulev2 = bordercolor rgba($lavendere2), pinned:1

27
hyprland/decoration.conf Normal file
View file

@ -0,0 +1,27 @@
decoration {
rounding = 0
blur {
enabled = false
xray = true
special = false
ignore_opacity = true # Allows opacity blurring
new_optimizations = true
size = 10
passes = 4
popups = true
}
shadow {
enabled = true
ignore_window = true
range = 20
offset = 0 2
render_power = 4
color = rgba(0000002A)
}
# Dim
dim_inactive = true
dim_strength = 0.15
}

27
hyprland/execs.conf Normal file
View file

@ -0,0 +1,27 @@
# Core components (authentication, lock screen)
exec-once = gnome-keyring-daemon --start --components=secrets
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# Shell
exec-once = uwsm app -- caelestia shell
# Clipboard history
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
# Cursors
exec-once = hyprctl setcursor sweet-cursors 24
exec-once = gsettings set org.gnome.desktop.interface cursor-theme 'sweet-cursors'
# Location provider and night light
exec-once = /usr/lib/geoclue-2.0/demos/agent
exec-once = sleep 1 && gammastep
# Idle inhibit when audio playing
exec-once = sway-audio-idle-inhibit --ignore-source-outputs cava
# Forward bluetooth media commands to MPRIS
exec-once = mpris-proxy
# Resize and move picture in picture windows
exec-once = caelestia pip -d

168
hyprland/keybinds.conf Normal file
View file

@ -0,0 +1,168 @@
# Go to workspace #
bind = Super, 1, exec, caelestia workspace-action workspace 1
bind = Super, 2, exec, caelestia workspace-action workspace 2
bind = Super, 3, exec, caelestia workspace-action workspace 3
bind = Super, 4, exec, caelestia workspace-action workspace 4
bind = Super, 5, exec, caelestia workspace-action workspace 5
bind = Super, 6, exec, caelestia workspace-action workspace 6
bind = Super, 7, exec, caelestia workspace-action workspace 7
bind = Super, 8, exec, caelestia workspace-action workspace 8
bind = Super, 9, exec, caelestia workspace-action workspace 9
bind = Super, 0, exec, caelestia workspace-action workspace 10
# Go to workspace group #
bind = Ctrl+Super, 1, exec, caelestia workspace-action workspacegroup 1
bind = Ctrl+Super, 2, exec, caelestia workspace-action workspacegroup 2
bind = Ctrl+Super, 3, exec, caelestia workspace-action workspacegroup 3
bind = Ctrl+Super, 4, exec, caelestia workspace-action workspacegroup 4
bind = Ctrl+Super, 5, exec, caelestia workspace-action workspacegroup 5
bind = Ctrl+Super, 6, exec, caelestia workspace-action workspacegroup 6
bind = Ctrl+Super, 7, exec, caelestia workspace-action workspacegroup 7
bind = Ctrl+Super, 8, exec, caelestia workspace-action workspacegroup 8
bind = Ctrl+Super, 9, exec, caelestia workspace-action workspacegroup 9
bind = Ctrl+Super, 0, exec, caelestia workspace-action workspacegroup 10
# Go to workspace -1/+1
bind = Super, mouse_down, workspace, -1
bind = Super, mouse_up, workspace, +1
binde = Ctrl+Super, left, workspace, -1
binde = Super, Page_Up, workspace, -1
binde = Ctrl+Super, right, workspace, +1
binde = Super, Page_Down, workspace, +1
# Go to workspace group -1/+1
bind = Ctrl+Super, mouse_down, workspace, -10
bind = Ctrl+Super, mouse_up, workspace, +10
# Toggle special workspace
bind = Super, S, exec, caelestia toggle specialws
# Move window to workspace #
bind = Super+Alt, 1, exec, caelestia workspace-action movetoworkspace 1
bind = Super+Alt, 2, exec, caelestia workspace-action movetoworkspace 2
bind = Super+Alt, 3, exec, caelestia workspace-action movetoworkspace 3
bind = Super+Alt, 4, exec, caelestia workspace-action movetoworkspace 4
bind = Super+Alt, 5, exec, caelestia workspace-action movetoworkspace 5
bind = Super+Alt, 6, exec, caelestia workspace-action movetoworkspace 6
bind = Super+Alt, 7, exec, caelestia workspace-action movetoworkspace 7
bind = Super+Alt, 8, exec, caelestia workspace-action movetoworkspace 8
bind = Super+Alt, 9, exec, caelestia workspace-action movetoworkspace 9
bind = Super+Alt, 0, exec, caelestia workspace-action movetoworkspace 10
# Move window to workspace group #
bind = Ctrl+Super+Alt, 1, exec, caelestia workspace-action movetoworkspacegroup 1
bind = Ctrl+Super+Alt, 2, exec, caelestia workspace-action movetoworkspacegroup 2
bind = Ctrl+Super+Alt, 3, exec, caelestia workspace-action movetoworkspacegroup 3
bind = Ctrl+Super+Alt, 4, exec, caelestia workspace-action movetoworkspacegroup 4
bind = Ctrl+Super+Alt, 5, exec, caelestia workspace-action movetoworkspacegroup 5
bind = Ctrl+Super+Alt, 6, exec, caelestia workspace-action movetoworkspacegroup 6
bind = Ctrl+Super+Alt, 7, exec, caelestia workspace-action movetoworkspacegroup 7
bind = Ctrl+Super+Alt, 8, exec, caelestia workspace-action movetoworkspacegroup 8
bind = Ctrl+Super+Alt, 9, exec, caelestia workspace-action movetoworkspacegroup 9
bind = Ctrl+Super+Alt, 0, exec, caelestia workspace-action movetoworkspacegroup 10
# Move window to workspace -1/+1
binde = Super+Alt, Page_Up, movetoworkspace, -1
binde = Super+Alt, Page_Down, movetoworkspace, +1
bind = Super+Alt, mouse_down, movetoworkspace, -1
bind = Super+Alt, mouse_up, movetoworkspace, +1
binde = Ctrl+Super+Shift, right, movetoworkspace, +1
binde = Ctrl+Super+Shift, left, movetoworkspace, -1
# Move window to/from special workspace
bind = Ctrl+Super+Shift, up, movetoworkspace, special:special
bind = Ctrl+Super+Shift, down, movetoworkspace, e+0
bind = Super+Alt, S, movetoworkspace, special:special
# Window actions
bind = Super, left, movefocus, l
bind = Super, right, movefocus, r
bind = Super, up, movefocus, u
bind = Super, down, movefocus, d
bind = Super+Shift, left, movewindow, l
bind = Super+Shift, right, movewindow, r
bind = Super+Shift, up, movewindow, u
bind = Super+Shift, down, movewindow, d
binde = Super, Minus, splitratio, -0.1
binde = Super, Equal, splitratio, 0.1
bindm = Super, mouse:272, movewindow
bindm = Super, Z, movewindow
bindm = Super, mouse:273, resizewindow
bindm = Super, X, resizewindow
bind = Ctrl+Super, Backslash, centerwindow, 1
bind = Ctrl+Super+Alt, Backslash, centerwindow, 1
bind = Ctrl+Super+Alt, Backslash, resizeactive, exact 55% 70%
bind = Super+Alt, Backslash, exec, caelestia pip # Move window to picture-in-picture mode
bind = Super, P, pin
bind = Super, F, fullscreen, 0
bind = Super+Alt, F, fullscreen, 1 # Fullscreen with borders
bind = Super+Alt, Space, togglefloating,
bind = Super, Q, killactive,
# Special workspace toggles
bind = Ctrl+Shift, Escape, exec, caelestia toggle sysmon
bind = Super, M, exec, caelestia toggle music
bind = Super, D, exec, caelestia toggle communication
# Apps
bind = Super, T, exec, uwsm app -- foot
bind = Super, W, exec, uwsm app -- firefox
bind = Super, C, exec, uwsm app -- codium
bind = Super, G, exec, uwsm app -- github-desktop
bind = Super, E, exec, uwsm app -- thunar
bind = Super+Alt, E, exec, uwsm app -- nemo
bind = Ctrl+Alt, Escape, exec, uwsm app -- qps
bind = Ctrl+Alt, V, exec, uwsm app -- pavucontrol
bind = Ctrl+Super, Slash, exec, pkill fuzzel || fuzzel --launch-prefix='uwsm app -- ' # Secondary app launcher
# Shell keybinds
bindr = Ctrl+Super, R, exec, caelestia shell reload css
bindr = Ctrl+Super+Shift, R, exec, caelestia shell quit; uwsm app -- caelestia shell
bindr = Ctrl+Super+Alt, R, exec, hyprctl reload; caelestia shell quit; uwsm app -- caelestia shell
bindir = Super, Super_L, exec, caelestia shell -t launcher
# Utilities
bindl = , Print, exec, caelestia screenshot # Full screen capture > clipboard
bind = Super+Shift, S, exec, grimblast --freeze save area - | uwsm app -- swappy -f - # Capture region (freeze)
bind = Super+Shift+Alt, S, exec, grimblast save area - | uwsm app -- swappy -f - # Capture region
bind = Super+Alt, R, exec, caelestia record -Hs # Record screen with sound
bind = Ctrl+Alt, R, exec, caelestia record -H # Record screen
bind = Super+Shift+Alt, R, exec, caelestia record -Hr # Record region
bind = Super+Shift, C, exec, hyprpicker -a # Colour picker
# Media
bindl = Ctrl+Super, Space, exec, caelestia shell media play pause
bindl = , XF86AudioPlay, exec, caelestia shell media play pause
bindl = , XF86AudioPause, exec, caelestia shell media play pause
bindl = Ctrl+Super, Equal, exec, caelestia shell media next
bindl = , XF86AudioNext, exec, caelestia shell media next
bindl = Ctrl+Super, Minus, exec, caelestia shell media previous
bindl = , XF86AudioPrev, exec, caelestia shell media previous
bindl = , XF86AudioStop, exec, caelestia shell media stop
# Volume
bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindl = Super+Shift, M, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindle = , XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindle = , XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
# Brightness
bindle = , XF86MonBrightnessUp, exec, caelestia shell brightness 10%+
bindle = , XF86MonBrightnessDown, exec, caelestia shell brightness 10%-
# Power
bind = Ctrl+Alt, Delete, exec, pkill wlogout || wlogout -p layer-shell
bind = Ctrl+Shift+Alt+Super, Delete, exec, systemctl poweroff
# Lock indicators
bindlni = , Caps_Lock, exec, caelestia shell show lock-caps
bindlnri = , Caps_Lock, exec, caelestia shell show lock-caps
bindlni = , Num_Lock, exec, caelestia shell show lock-num
bindlnri = , Num_Lock, exec, caelestia shell show lock-num
# Lock screen
bind = Super, L, exec, loginctl lock-session
bind = Super+Shift, L, exec, loginctl lock-session
bindl = Super+Shift, L, exec, sleep 0.1 && systemctl suspend-then-hibernate
# Clipboard and emoji picker
bind = Super, V, exec, pkill fuzzel || caelestia clipboard
bind = Super+Alt, V, exec, pkill fuzzel || caelestia clipboard-delete
bind = Super, Period, exec, pkill fuzzel || caelestia emoji-picker
bindl = Ctrl+Shift+Alt, V, exec, sleep 0.5s && ydotool type -d 1 "$(cliphist list | head -1 | cliphist decode)" # Alternate paste
# Testing
bind = Super+Alt, f12, exec, notify-send -u low -i dialog-information-symbolic 'Test notification' "Here's a really long message to test truncation and wrapping\nYou can middle click or flick this notification to dismiss it!" -a 'Shell' -A "Test1=I got it!" -A "Test2=Another action"

74
hyprland/rules.conf Normal file
View file

@ -0,0 +1,74 @@
# ######## Window rules ########
windowrulev2 = opacity 0.95 override, floating:0 # Applies transparency to tiled windows
windowrulev2 = noshadow, floating:0 # No shadow for tiled windows
windowrulev2 = center 1, floating:1, xwayland:0 # Center all floating windows (not xwayland cause popups)
windowrulev2 = bordersize 1, floating:1
# Float
windowrule = float, guifetch # FlafyDev/guifetch
windowrule = float, yad
windowrule = float, zenity
windowrule = float, wev # for wev key thingy input window
windowrule = float, org\.gnome\.FileRoller
windowrule = float, file-roller # WHY IS THERE TWOOOOOOOOOOOOOOOO
windowrule = float, blueman-manager
windowrule = float, com\.github\.GradienceTeam\.Gradience
windowrule = float, feh
windowrule = float, imv
windowrule = float, system-config-printer
# Float, resize and center
windowrulev2 = float, class:foot, title:nmtui
windowrulev2 = size 60% 70%, class:foot, title:nmtui
windowrulev2 = center 1, class:foot, title:nmtui
windowrule = float, org\.gnome\.Settings
windowrule = size 70% 80%, org\.gnome\.Settings
windowrule = center 1, org\.gnome\.Settings
windowrule = float, org\.pulseaudio\.pavucontrol|yad-icon-browser
windowrule = size 60% 70%, org\.pulseaudio\.pavucontrol|yad-icon-browser
windowrule = center 1, org\.pulseaudio\.pavucontrol|yad-icon-browser
# Special workspaces
windowrule = workspace special:sysmon, btop
windowrule = workspace special:music, feishin|Spotify
windowrulev2 = workspace special:music, initialTitle:Spotify( Free)? # Spotify wayland, it has no class for some reason
windowrule = workspace special:communication, vesktop|whatsapp
# Dialogs
windowrule = float, title:(Select|Open)( a)? (File|Folder)(s)?
windowrule = float, title:File (Operation|Upload)( Progress)?
windowrule = float, title:Export Image as PNG
windowrule = float, title:GIMP Crash Debug
windowrule = float, title:Save As
windowrule = float, title:Library
# Picture in picture (resize and move done via script)
windowrule = move 100%-w-2% 100%-w-3%, title:Picture(-| )in(-| )[Pp]icture # Initial move so window doesn't shoot across the screen from the center
windowrule = keepaspectratio, title:Picture(-| )in(-| )[Pp]icture
windowrule = float, title:Picture(-| )in(-| )[Pp]icture
windowrule = pin, title:Picture(-| )in(-| )[Pp]icture
# Steam
windowrulev2 = rounding 10, title:, class:steam
windowrulev2 = float, title:Friends List, class:steam
windowrule = immediate, steam_app_[0-9]+ # Allow tearing for steam games
windowrule = idleinhibit always, steam_app_[0-9]+ # Always idle inhibit when playing a steam game
# ATLauncher console
windowrulev2 = float, class:com-atlauncher-App, title:ATLauncher Console
# Ugh xwayland popups
windowrulev2 = nodim, xwayland:1, title:win[0-9]+
windowrulev2 = noshadow, xwayland:1, title:win[0-9]+
windowrulev2 = rounding 10, xwayland:1, title:win[0-9]+
# ######## Workspace rules ########
workspace = s[true], gapsout:10, bordersize:1
# ######## Layer rules ########
layerrule = animation fade, hyprpicker # Colour picker out animation
layerrule = animation fade, logout_dialog # wlogout
# Shell
layerrule = animation popin 80%, caelestia-launcher
layerrule = animation fade, caelestia-lock-(caps|num)

26
hyprland/scheme.conf Normal file
View file

@ -0,0 +1,26 @@
$rosewater = f4dbd6
$flamingo = f0c6c6
$pink = f5bde6
$mauve = c6a0f6
$red = ed8796
$maroon = ee99a0
$peach = f5a97f
$yellow = eed49f
$green = a6da95
$teal = 8bd5ca
$sky = 91d7e3
$sapphire = 7dc4e4
$blue = 8aadf4
$lavender = b7bdf8
$text = cad3f5
$subtext1 = b8c0e0
$subtext0 = a5adcb
$overlay2 = 939ab7
$overlay1 = 8087a2
$overlay0 = 6e738d
$surface2 = 5b6078
$surface1 = 494d64
$surface0 = 363a4f
$base = 24273a
$mantle = 1e2030
$crust = 181926

View file

@ -0,0 +1,26 @@
$rosewater = f2d5cf
$flamingo = eebebe
$pink = f4b8e4
$mauve = ca9ee6
$red = e78284
$maroon = ea999c
$peach = ef9f76
$yellow = e5c890
$green = a6d189
$teal = 81c8be
$sky = 99d1db
$sapphire = 85c1dc
$blue = 8caaee
$lavender = babbf1
$text = c6d0f5
$subtext1 = b5bfe2
$subtext0 = a5adce
$overlay2 = 949cbb
$overlay1 = 838ba7
$overlay0 = 737994
$surface2 = 626880
$surface1 = 51576d
$surface0 = 414559
$base = 303446
$mantle = 292c3c
$crust = 232634

View file

@ -0,0 +1,26 @@
$rosewater = dc8a78
$flamingo = dd7878
$pink = ea76cb
$mauve = 8839ef
$red = d20f39
$maroon = e64553
$peach = fe640b
$yellow = df8e1d
$green = 40a02b
$teal = 179299
$sky = 04a5e5
$sapphire = 209fb5
$blue = 1e66f5
$lavender = 7287fd
$text = 4c4f69
$subtext1 = 5c5f77
$subtext0 = 6c6f85
$overlay2 = 7c7f93
$overlay1 = 8c8fa1
$overlay0 = 9ca0b0
$surface2 = acb0be
$surface1 = bcc0cc
$surface0 = ccd0da
$base = eff1f5
$mantle = e6e9ef
$crust = dce0e8

View file

@ -0,0 +1,26 @@
$rosewater = f4dbd6
$flamingo = f0c6c6
$pink = f5bde6
$mauve = c6a0f6
$red = ed8796
$maroon = ee99a0
$peach = f5a97f
$yellow = eed49f
$green = a6da95
$teal = 8bd5ca
$sky = 91d7e3
$sapphire = 7dc4e4
$blue = 8aadf4
$lavender = b7bdf8
$text = cad3f5
$subtext1 = b8c0e0
$subtext0 = a5adcb
$overlay2 = 939ab7
$overlay1 = 8087a2
$overlay0 = 6e738d
$surface2 = 5b6078
$surface1 = 494d64
$surface0 = 363a4f
$base = 24273a
$mantle = 1e2030
$crust = 181926

View file

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

32
scripts/gen-scheme.fish Executable file
View file

@ -0,0 +1,32 @@
#!/bin/fish
set -q XDG_CACHE_HOME && set cache $XDG_CACHE_HOME/caelestia || set cache ~/.cache/caelestia
set scheme_path $cache/scheme/current.txt
set lock_file $cache/locks/hypr-gen-scheme.lock
set hypr ~/.config/hypr
set default mocha
set program $argv[1]
function update-scheme -a scheme
cp $hypr/scheme/$program/$scheme.conf $hypr/$program/scheme.conf
end
if test -f $scheme_path
if test -f $lock_file
set -l scheme (cat $scheme_path)
test -f $hypr/scheme/$program/$scheme.conf && update-scheme $scheme || update-scheme $default
else
# Lock so only 1 monitor
mkdir -p (dirname $lock_file)
touch $lock_file
trap "rm $lock_file" SIGINT
# Monitor file for changes
tail -f $scheme_path | while read line
test -f $hypr/scheme/$program/$line.conf && update-scheme $line
end
end
else
update-scheme $default
end