Files
dotfiles/config/hypr/hyprland.conf
T
steveandgitadmin 02a5e0df28 init: new dotfile configuration
Remove all org files using a new script to more config over, The old org
file configuaration were great but required org. This new version only
requires the scripts that is included in the repo.

The configuration are all done but have not ported the theming system
yet.

Signed-off-by: Steve Beaulac <steve@sagacity.ca>
Change-Id: I14cd7fe058a71c8ba9d6d35397dc8d7e6a6a6964
2026-03-02 13:26:21 -05:00

489 lines
18 KiB
Plaintext

monitor = desc:Lenovo Group Limited 0x41A0, preferred, 0x0, 1.0
monitor = desc:LG Electronics LG HDR 4K 406NTZN74597, preferred, auto-left, 1.333333
monitor = desc:GWD ARZOPA 000000000000, preferred, auto-left, 1.0
monitor = desc:Proteon TYPE-C 8R33926O00QS, preferred, auto-right, 1.0
#monitor = desc:LG Electronics LG HDR WQHD 0x0006530C, 3440x1440@75.05, auto-up, 1.0
monitor = desc:LG Electronics LG HDR WQHD 0x0006530C, preferred, auto-up, 1.0
#monitor = desc:LG Electronics LG HDR WQHD 0x0006530C, preferred, 0x0, 1.0
#monitor = desc:Ancor Communications Inc ASUS MG28U 0x00009B77, 3840x2160@60.00, auto-left, 1.333333
monitor = desc:Ancor Communications Inc ASUS MG28U 0x00009B77, preferred, auto-left, 1.333333
monitor = desc:Stargate Technology TYPE-C, preferred, auto-right, 1.0
monitor = desc:BNQ BenQ EX3501R N4M05650019, preferred, auto-right, 1.0
monitor = desc:Dell Inc. DELL U3818DW 97F8P8AD0HEL, preferred, auto-left, 1.0
monitor = desc:Microstep MSI MAG342CQR DB6H252300057, preferred, auto-right, 1.0
monitor = desc:Ancor Communications Inc ASUS PB238 DCLMTF074371, preferred, auto, 1.0
monitor = eDP-1, highrr, 0x0, 1.0
monitor = desc:BNQ BenQ EX3203R 7CL00509019, preferred, auto, 1.0
monitor = desc:Lenovo Group Limited L15 U133R0A2, preferred, auto-left, 1.0
monitor = desc:Lenovo Group Limited M15 V30F2A15, preferred, auto-left, 1.0
$notifycmd = notify-send
$terminal = uwsm app -- ghostty
$browser = uwsm app -- firefox.desktop
$webapp = uwsm app -- chromium --new-window --ozone-platform=wayland --app
$music = uwsm app -- spotify.desktop
input {
kb_layout = us
kb_variant =
kb_model =
# kb_options = ctrl:nocaps
kb_options = caps:ctrl_modifier,compose:ralt
# kb_options = compose:ralt
follow_mouse = 1
repeat_rate = 40
repeat_delay = 600
touchpad {
natural_scroll = yes
disable_while_typing = true
clickfinger_behavior = true
scroll_factor = 0.7
}
scroll_method = 2
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
ecosystem {
no_update_news = true
}
general {
gaps_in = 0
gaps_out = 0
border_size = 2
allow_tearing = true
snap {
enabled = true
}
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
layout = dwindle
}
master {
allow_small_split = true
mfact = 0.50
new_status = master
}
dwindle {
pseudotile = yes
preserve_split = yes
smart_split = no
force_split = 2
# single_window_aspect_ratio = 1 1
}
decoration {
rounding = 3
active_opacity = 1.0
inactive_opacity = 1.0
dim_inactive = false
dim_special = 0.0
dim_strength = 0.2
shadow {
enabled = false
range = 2
render_power = 3
color = rgba(1a1a1aee)
}
blur {
enabled = false
size = 3
passes = 1
vibrancy = 0.1696
}
}
group {
groupbar {
enabled = false
}
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
focus_on_activate = true
mouse_move_enables_dpms = true
animate_manual_resizes = true
mouse_move_focuses_monitor = true
enable_swallow = true
enable_anr_dialog = false
force_default_wallpaper = true
vfr = true
}
xwayland {
force_zero_scaling = true
}
animations {
enabled = yes
#animation = borderangle, 1, 50, linear, loop
bezier = generic, 0.05, 0.9, 0.1, 1.08
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = windows, 1, 3, almostLinear
animation = windowsOut, 1, 3, quick
animation = windowsIn, 1, 3, quick
animation = border, 1, 10, generic
animation = fade, 1, 3, almostLinear
animation = workspaces, 1, 1, quick
animation = layers, 1, 3, quick
}
bindd = SUPER, return, Tmux Terminal, exec, $terminal -e tmux new -A -s main
bindd = SUPER, B, Browser, exec, $browser
bindd = SUPER, T, Activity, exec, $terminal -e btop
bindd = SUPER, S, Finder, exec, uwsm app -- rofi -show recursivebrowser
bindd = SUPER, I, System Status, exec, $notifycmd "$(~/.local/bin/sysinfo)"
bindd = SUPER, slash, Password, exec, ROFI_PASS_BACKEND=wtype ROFI_PASS_CLIPBOARD_BACKEND=wl-clipboard ~/.local/bin/rofi-pass
bindd = SUPER, SPACE, App Launcher, exec, uwsm app -- rofi -show drun
#bindd = SUPER ALT, SPACE, Search Launcher, exec, uwsm app -- rofi -show combi
bind = SUPER SHIFT, SPACE, exec, uwsm app -- ~/.local/bin/hyprland-fetch-client
bind = SUPER CONTROL, SPACE, exec, uwsm app -- ~/.local/bin/hyprland-focus-client
bind = SUPER CONTROL, return, exec, uwsm app -- ~/.local/bin/hyprland-tmux-session
bindd = SUPER CONTROL SHIFT ALT, V, Volume, exec, pavucontrol
bindd = SUPER CONTROL SHIFT ALT, B, Bluetooth, exec, uwsm app blueberry
bindd = SUPER CONTROL SHIFT ALT, semicolon, Update wallpaper, exec, ~/.local/bin/bing-wallpaper
bindd = SUPER CONTROL SHIFT ALT, A, ChatGPT, exec, $webapp="https://chatgpt.com"
bindd = SUPER CONTROL SHIFT ALT, C, Calendar, exec, $webapp="https://outlook.office.com/calendar/view/month"
bindd = SUPER CONTROL SHIFT ALT, E, Email, exec, $webapp="https://outlook.office.com/mail"
bindd = SUPER CONTROL SHIFT ALT, U, UWO Team, exec, $webapp="https://teams.microsoft.com/v2/"
bindd = SUPER CONTROL SHIFT ALT, Y, YouTube, exec, $webapp="https://youtube.com/"
bindd = SUPER CONTROL SHIFT ALT, W, WhatsApp, exec, $webapp="https://web.whatsapp.com/"
bindd = SUPER CONTROL SHIFT ALT, G, Google, exec, $webapp="https://www.gmail.com/"
bindd = SUPER CONTROL SHIFT ALT, M, Music, exec, $music
bindd = SUPER CONTROL SHIFT ALT, F, File manager, exec, uwsm app -- pcmanfm
bindd = SUPER, F, Force full screen, fullscreen, 0
bindd = SUPER CTRL, F, Tiled full screen, fullscreenstate, 0 2
bindd = SUPER ALT, F, Full width, fullscreen, 1
bindd = SUPER, W, Close active window, killactive,
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
bindd = SUPER, V, Toggle floating, togglefloating,
bindd = SUPER, X, Toggle split, togglesplit, # dwindle
bindd = SUPER, A, Bring active to top, alterzorder, top
bindd = SUPER, left, Move focus left, movefocus, l
bindd = SUPER, right, Move focus right, movefocus, r
bindd = SUPER, up, Move focus up, movefocus, u
bindd = SUPER, down, Move focus down, movefocus, d
# Move focus with mainMod + arrow keys
bind = SUPER, H, movefocus, l
bind = SUPER, L, movefocus, r
bind = SUPER, K, movefocus, u
bind = SUPER, J, movefocus, d
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l
bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r
bindd = SUPER SHIFT, up, Swap window up, swapwindow, u
bindd = SUPER SHIFT, down, Swap window down, swapwindow, d
# Move focus with mainMod + arrow keys
bind = SUPER SHIFT, H, swapwindow, l
bind = SUPER SHIFT, L, swapwindow, r
bind = SUPER SHIFT, K, swapwindow, u
bind = SUPER SHIFT, J, swapwindow, d
# Monitor and windows
bind = SUPER SHIFT, period, movewindow, mon:+1
bind = SUPER SHIFT, comma, movewindow, mon:-1
bind = SUPER CONTROL, period, movecurrentworkspacetomonitor, +1
bind = SUPER CONTROL, comma, movecurrentworkspacetomonitor, -1
bindd = SUPER, z, Focus on last, focuscurrentorlast
# Move focus with SUPER + arrow keys
bind = SUPER ALT, period, swapnext
bind = SUPER ALT, comma, swapnext, prev
# Cycle through applications on active workspace
bindd = ALT, Tab, Cycle to next window, cyclenext
bindd = ALT, Tab, Reveal active window on top, alterzorder, top
bind = SUPER ALT, Tab, focusworkspaceoncurrentmonitor, previous
# cycle monitors
bind = SUPER, Tab, focusmonitor, +1
bind = SUPER, Tab, exec, $notifycmd "$(~/.local/bin/active-workspace)"
# arrange split ratio
bind = SUPER, minus, splitratio, -0.2
bind = SUPER SHIFT, equal, splitratio, +0.2
bind = SUPER, equal, splitratio, exact 1.0
bind = SUPER, period, splitratio, exact 0.7
bind = SUPER, comma, splitratio, exact 1.30
bind = SUPER, M, layoutmsg, swapsplit
# bind = SUPER, M, layoutmsg, rollnext
# Change Workspace Mode
bind = SUPER SHIFT, X, workspaceopt, allfloat
bind = SUPER SHIFT, X, exec, $notifycmd "Toggled All Float Mode"
bind = SUPER SHIFT, Z, workspaceopt, allpseudo
bind = SUPER SHIFT, Z, exec, $notifycmd "Toggled All Pseudo Mode"
bind = SUPER, semicolon, togglespecialworkspace
bind = SUPER, semicolon, exec, $notifycmd "Toggled Special Workspace"
bind = SUPER SHIFT, semicolon, movetoworkspacesilent, special
bind = SUPER, C, centerwindow
bind = SUPER SHIFT CONTROL ALT, Z, submap,passthru
submap = passthru
bind = SUPER, Escape,submap,reset
submap = reset
bind = SUPER, Escape, exec, loginctl lock-session
bind = SUPER SHIFT, Escape, exec, systemctl suspend
bind = SUPER ALT, Escape, exec, uwsm stop,
bind = SUPER CTRL, Escape, exec, reboot
bind = SUPER SHIFT CTRL, Escape, exec, systemctl poweroff
bind = SUPER, Y, exec, makoctl dismiss
bind = SUPER, F10, exec, $notifycmd "System Menu"
bind = SUPER, F10, submap, wmmenu
submap = wmmenu
bind = , Q, exit,
bind = , S, exec, makoctl -a do-not-disturb
bind = , N, exec, makoctl -r do-not-disturb
bind = , M, exec, hyprland-toggle-monitor eDP-1
bind = , escape, exec, $notifycmd "Leaving System Menu"
bind = , escape, submap, reset
submap = reset
# window resize
bind = SUPER, F9, exec, $notifycmd "Window Menu"
bind = SUPER, F9, submap, resize
submap = resize
binde = , period, resizeactive, 10 10
binde = , comma, resizeactive, -10 -10
bind = , r, resizeactive, exact 50% 50%
bind = , s, resizeactive, exact 25% 25%
bind = , c, centerwindow, 0 10
bind = , p, pin
bind = , up, movewindow, u
bind = , down, movewindow, d
bind = , left, movewindow, l
bind = , right, movewindow, r
bind = , escape, exec, $notifycmd "Leaving Window Menu"
bind = , escape, submap, reset
submap = reset
# Switch workspaces with SUPER + [0-9]
bindd = SUPER CONTROL, code:10, Switch to workspace 1, workspace, 1
bindd = SUPER CONTROL, code:11, Switch to workspace 2, workspace, 2
bindd = SUPER CONTROL, code:12, Switch to workspace 3, workspace, 3
bindd = SUPER CONTROL, code:13, Switch to workspace 4, workspace, 4
bindd = SUPER CONTROL, code:14, Switch to workspace 5, workspace, 5
bindd = SUPER CONTROL, code:15, Switch to workspace 6, workspace, 6
bindd = SUPER CONTROL, code:16, Switch to workspace 7, workspace, 7
bindd = SUPER CONTROL, code:17, Switch to workspace 8, workspace, 8
bindd = SUPER CONTROL, code:18, Switch to workspace 9, workspace, 9
bindd = SUPER CONTROL, code:19, Switch to workspace 10, workspace, 10
# Switch workspaces with SUPER + [0-9]
bindd = SUPER, code:10, Switch to workspace 1, focusworkspaceoncurrentmonitor, 1
bindd = SUPER, code:11, Switch to workspace 2, focusworkspaceoncurrentmonitor, 2
bindd = SUPER, code:12, Switch to workspace 3, focusworkspaceoncurrentmonitor, 3
bindd = SUPER, code:13, Switch to workspace 4, focusworkspaceoncurrentmonitor, 4
bindd = SUPER, code:14, Switch to workspace 5, focusworkspaceoncurrentmonitor, 5
bindd = SUPER, code:15, Switch to workspace 6, focusworkspaceoncurrentmonitor, 6
bindd = SUPER, code:16, Switch to workspace 7, focusworkspaceoncurrentmonitor, 7
bindd = SUPER, code:17, Switch to workspace 8, focusworkspaceoncurrentmonitor, 8
bindd = SUPER, code:18, Switch to workspace 9, focusworkspaceoncurrentmonitor, 9
bindd = SUPER, code:19, Switch to workspace 10, focusworkspaceoncurrentmonitor, 10
# Move active window to a workspace with SUPER + SHIFT + [0-9]
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2
bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3
bindd = SUPER SHIFT, code:13, Move window to workspace 4, movetoworkspace, 4
bindd = SUPER SHIFT, code:14, Move window to workspace 5, movetoworkspace, 5
bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6
bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7
bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
# Screenshots
bind = , PRINT, exec, hyprshot -m region
bind = SHIFT, PRINT, exec, hyprshot -m window
bind = CTRL, PRINT, exec, hyprshot -m output
# Color picker
bind = SUPER, PRINT, exec, pkill hyprpicker || hyprpicker -a
# media controls
bindl = , XF86AudioMedia, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
bindl = , XF86AudioNext, exec, playerctl next
bindle = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindle = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindl = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindle = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindle = ,XF86MonBrightnessDown, exec,brightnessctl s 10%-
# Scroll through existing workspaces with SUPER + scroll
bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1
# Move/resize windows with SUPER + LMB/RMB and dragging
bindmd = SUPER, mouse:272, Move window, movewindow
bindmd = SUPER, mouse:273, Resize window, resizewindow
# Workspace rules
workspace = w[tv1], gapsout:0, gapsin:0
workspace = f[1], gapsout:0, gapsin:0
workspace = special:special, bordersize:3
windowrule = border_size 2, rounding 0, match:float 0, match:workspace w[tv1]
windowrule = border_size 2, rounding 0, match:float 0, match:workspace f[1]
# Define terminal tag to style them uniformly
windowrule = tag +terminal, match:class (Alacritty|kitty|com.mitchellh.ghostty)
windowrule = scroll_touchpad 1.5, match:class (Alacritty|kitty)
windowrule = scroll_touchpad 0.2, match:class com.mitchellh.ghostty
# Picture-in-picture overlays
windowrule = tag +pip, match:title (Picture.?in.?[Pp]icture)
windowrule = float on, pin on, size 600 338, keep_aspect_ratio on, border_size 0, opacity 1 1, move ((monitor_w*1)-window_w-40) ((monitor_h*0.04)), match:tag pip
windowrule = no_shadow on, match:float 0
# Floating windows
windowrule = float on, center on, size 800 600, match:tag floating-window
windowrule = tag +floating-window, match:class (blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors), match:title ^(Open.*Files?|Save.*Files?|Save.*As|All Files|Save)
# Browser types
windowrule = tag +chromium-based-browser, match:class ([cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable)
windowrule = tag +firefox-based-browser, match:class (Firefox|zen|librewolf)
# Force chromium-based browsers into a tile to deal with --app bug
windowrule = tile on, match:tag chromium-based-browser
# Some video sites should never have opacity applied to them
# windowrule = opacity 1.0 1.0, match:initial_title (youtube\.com_/|app\.zoom\.us_/wc/home)
# No transparency on media windows
# windowrule = opacity 1 1, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
# Only a subtle opacity change, but not for video sites
# windowrule = opacity 1 0.97, match:tag chromium-based-browser
# windowrule = opacity 1 0.97, match:tag firefox-based-browser
windowrule = float on, size 1024 480, match:class (org.pulseaudio.pavucontrol)
# telegram media viewer
windowrule = float on, match:title ^(Media viewer)$
layerrule = no_anim on, match:namespace rofi
layerrule = no_anim on, match:namespace walker
windowrule = stay_focused on, match:class (rofi)
windowrule = stay_focused on, match:class (walker)
windowrule = stay_focused on, match:class ^(pinentry-) # fix pinentry losing focus
windowrule = dim_around on, stay_focused on, match:class ^(gcr-prompter)$
# Remove 1px border around hyprshot screenshots
layerrule = no_anim on, match:namespace selection
# idle inhibit while watching videos
windowrule = idle_inhibit focus, match:class ^(mpv|.+exe)$
windowrule = idle_inhibit focus, match:class ^(firefox)$, match:title ^(.*YouTube.*)$
windowrule = idle_inhibit fullscreen, match:class ^(firefox)$
windowrule = pseudo on, match:workspace w[-99]
layerrule = blur on, ignore_alpha 0, match:namespace ^(gtk-layer-shell|anyrun)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrule = suppress_event maximize, match:class .*
# Fix some dragging issues with XWayland
windowrule = no_focus on, match:class ^$, match:title ^$, match:xwayland 1, match:float 1, match:fullscreen 0, match:pin 0
windowrule {
name = windowrule-28
no_focus = on
match:class = ^$
match:title = ^$
match:xwayland = 1
match:float = 1
match:fullscreen = 0
match:pin = 0
}
# Some default env vars.
# Cursor size
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
# Force all apps to use Wayland
env = GDK_BACKEND,wayland,x11,*
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_STYLE_OVERRIDE,kvantum
env = SDL_VIDEODRIVER,wayland
env = MOZ_ENABLE_WAYLAND,1
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
env = OZONE_PLATFORM,wayland
env = XDG_SESSION_TYPE,wayland
# Allow better support for screen sharing (Google Meet, Discord, etc)
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_DESKTOP,Hyprland
# Use XCompose file
env = XCOMPOSEFILE,~/.XCompose
# Make Chromium use XCompose and all Wayland
env = CHROMIUM_FLAGS,"--enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4"
# Make .desktop files available for wofi
env = XDG_DATA_DIRS,/usr/share:/usr/local/share:~/.local/share
# Source a file (multi-file configs)
source = ~/.local/share/themes/current/theme/hyprland.conf
exec-once = dbus-update-activation-environment --systemd --all
exec-once = systemctl --user start hyprpolkitagent
exec-once = hyprctl setcursor Pop 24
exec-once = uwsm app -- hypridle
exec-once = uwsm app -- mako
exec-once = uwsm app -- fcitx5
exec-once = uwsm app -- udiskie -a -n -T &
exec-once = uwsm app -- swww-daemon
exec-once = gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg
# exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)
exec-once = systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS LANG PATH