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 = master } 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, layoutmsg, mfact exact 0.3 bind = SUPER SHIFT, equal, layoutmsg, mfact exact 0.7 bind = SUPER, equal, layoutmsg, mfact exact 0.5 bind = SUPER, period, layoutmsg, cyclenext bind = SUPER, period, layoutmsg, move +col bind = SUPER, comma, layoutmsg, cycleprev bind = SUPER, comma, layoutmsg, move -col bind = SUPER, M, layoutmsg, swapwithmaster #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 = $HOME/.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 -- awww-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