diff --git a/modules/home/wayland/apps/eww/bar/eww.yuck b/modules/home/wayland/apps/eww/bar/eww.yuck index 2fd52d5..81f7b7a 100644 --- a/modules/home/wayland/apps/eww/bar/eww.yuck +++ b/modules/home/wayland/apps/eww/bar/eww.yuck @@ -48,7 +48,7 @@ (defwindow bar - :monitor 1 + :monitor 0 :geometry (geometry :x "0%" :y "0%" diff --git a/modules/home/wayland/apps/eww/bar/modules/clock.yuck b/modules/home/wayland/apps/eww/bar/modules/clock.yuck index a6453df..c983729 100644 --- a/modules/home/wayland/apps/eww/bar/modules/clock.yuck +++ b/modules/home/wayland/apps/eww/bar/modules/clock.yuck @@ -5,8 +5,8 @@ (eventbox :onhover "${EWW_CMD} update date_rev=true" :onhoverlost "${EWW_CMD} update date_rev=false" - :onclick "(sleep 0.1 && ${EWW_CMD} open --toggle calendar)" - :onrightclick "(sleep 0.1 && ${EWW_CMD} open --toggle powermenu)" + :onclick "(sleep 0.1 && eww-open-on-current-screen calendar --toggle)" + :onrightclick "(sleep 0.1 && eww-open-on-current-screen powermenu --toggle)" (box :class "datetime" (overlay @@ -39,4 +39,4 @@ (defpoll hour :interval "15s" "date '+%H'") (defpoll minute :interval "15s" "date '+%M'") (defpoll day :interval "15s" "date '+%d'") -(defpoll month :interval "15s" "date '+%m'") \ No newline at end of file +(defpoll month :interval "15s" "date '+%m'") diff --git a/modules/home/wayland/apps/eww/bar/modules/sys.yuck b/modules/home/wayland/apps/eww/bar/modules/sys.yuck index ae7e782..348c8af 100644 --- a/modules/home/wayland/apps/eww/bar/modules/sys.yuck +++ b/modules/home/wayland/apps/eww/bar/modules/sys.yuck @@ -7,7 +7,7 @@ (defwidget sys-mod [] (module (eventbox - :onclick "(sleep 0.1 && ${EWW_CMD} open --toggle sys)" + :onclick "(sleep 0.1 && eww-open-on-current-screen sys --toggle)" (box :orientation "v" (circular-progress diff --git a/modules/home/wayland/apps/eww/bar/windows/calendar.yuck b/modules/home/wayland/apps/eww/bar/windows/calendar.yuck index df3e4a4..76db8d9 100755 --- a/modules/home/wayland/apps/eww/bar/windows/calendar.yuck +++ b/modules/home/wayland/apps/eww/bar/windows/calendar.yuck @@ -1,9 +1,9 @@ (defwindow calendar - :monitor 1 + :monitor 0 :geometry (geometry :x "0%" :y "0%" :anchor "bottom right" :width "0px" :height "0px") - (window (calendar))) \ No newline at end of file + (window (calendar))) diff --git a/modules/home/wayland/apps/eww/bar/windows/powermenu.yuck b/modules/home/wayland/apps/eww/bar/windows/powermenu.yuck index 1373c1d..998d754 100644 --- a/modules/home/wayland/apps/eww/bar/windows/powermenu.yuck +++ b/modules/home/wayland/apps/eww/bar/windows/powermenu.yuck @@ -34,7 +34,7 @@ ) (defwindow powermenu - :monitor 1 + :monitor 0 :stacking "overlay" :geometry (geometry :anchor "center" @@ -42,4 +42,4 @@ :height "120%") :namespace "eww-blur" (powermenu) -) \ No newline at end of file +) diff --git a/modules/home/wayland/apps/eww/bar/windows/radio.yuck b/modules/home/wayland/apps/eww/bar/windows/radio.yuck index 7579b4f..1bd471f 100644 --- a/modules/home/wayland/apps/eww/bar/windows/radio.yuck +++ b/modules/home/wayland/apps/eww/bar/windows/radio.yuck @@ -2,7 +2,7 @@ (defvar radio_rev false) (defwindow radio - :monitor 1 + :monitor 0 :geometry (geometry :x "0%" :y "0%" @@ -100,7 +100,7 @@ (box :orientation "v" (button - :onclick "(sleep 0.1 && ${EWW_CMD} open --toggle --no-daemonize radio)" + :onclick "(sleep 0.1 && eww-open-on-current-screen radio --toggle --no-daemonize)" (label :show-truncated false :class "icon-text" @@ -108,4 +108,4 @@ ) ) ) -) \ No newline at end of file +) diff --git a/modules/home/wayland/apps/eww/bar/windows/sys.yuck b/modules/home/wayland/apps/eww/bar/windows/sys.yuck index 2835261..b759d40 100644 --- a/modules/home/wayland/apps/eww/bar/windows/sys.yuck +++ b/modules/home/wayland/apps/eww/bar/windows/sys.yuck @@ -129,7 +129,7 @@ ) (defwindow sys - :monitor 1 + :monitor 0 :stacking "overlay" :geometry (geometry :x "0%" @@ -137,4 +137,4 @@ :anchor "bottom right" :width "0px" :height "0px") - (window (sys-win))) \ No newline at end of file + (window (sys-win))) diff --git a/modules/home/wayland/apps/eww/default.nix b/modules/home/wayland/apps/eww/default.nix index 0367b47..6ab479f 100755 --- a/modules/home/wayland/apps/eww/default.nix +++ b/modules/home/wayland/apps/eww/default.nix @@ -1,7 +1,21 @@ -{ lib, config, pkgs, ... }: { +{ lib, config, pkgs, ... }: +let + openOnCurrentScreen = pkgs.writeShellScriptBin "eww-open-on-current-screen" '' + window="$1" + shift + + screen="$(hyprctl monitors -j | ${lib.getExe pkgs.jq} -r '.[] | select(.focused == true) | .name' | head -n1)" + + if [ -n "$screen" ]; then + exec ${lib.getExe pkgs.eww} open "$window" --screen "$screen" "$@" + fi + + exec ${lib.getExe pkgs.eww} open "$window" "$@" + ''; +in { config = lib.mkIf (config.usercfg.wm == "Wayland") { - home.packages = with pkgs; [ eww jq jaq custom.amdgpu_top ]; + home.packages = with pkgs; [ eww jq jaq custom.amdgpu_top openOnCurrentScreen ]; xdg.configFile."eww" = { source = lib.cleanSourceWith { diff --git a/modules/home/wayland/apps/kanshi/default.nix b/modules/home/wayland/apps/kanshi/default.nix index 84a020c..3223150 100644 --- a/modules/home/wayland/apps/kanshi/default.nix +++ b/modules/home/wayland/apps/kanshi/default.nix @@ -1,4 +1,12 @@ -{ config, lib, ... }: { +{ config, lib, pkgs, ... }: +let + restartEwwBar = monitor: pkgs.writeShellScript "restart-eww-bar-after-kanshi-${toString monitor}" '' + + sleep 1 + ${lib.getExe pkgs.eww} close bar || true + ${lib.getExe pkgs.eww} open bar --screen ${toString monitor} + ''; +in { config = lib.mkIf (config.usercfg.wm == "Wayland") { services.kanshi = { @@ -7,6 +15,7 @@ settings = [ { profile.name = "tower_0"; + profile.exec = [ "${restartEwwBar 1}" ]; profile.outputs = [ { criteria = "AOC 24E1W1 GNSKCHA086899"; @@ -28,6 +37,7 @@ } { profile.name = "tower_1"; + profile.exec = [ "${restartEwwBar 1}" ]; profile.outputs = [ { criteria = "AOC 24E1W1 GNSKCHA086899"; @@ -57,6 +67,7 @@ } { profile.name = "laptop_0"; + profile.exec = [ "${restartEwwBar 0}" ]; profile.outputs = [{ criteria = "LG Display 0x060A Unknown"; mode = "1920x1080@60.020"; @@ -67,6 +78,7 @@ } { profile.name = "laptop_1"; + profile.exec = [ "${restartEwwBar 1}" ]; profile.outputs = [ { criteria = "CEX CX133 0x00000001"; @@ -86,6 +98,7 @@ } { profile.name = "laptop_2"; + profile.exec = [ "${restartEwwBar 1}" ]; profile.outputs = [ { criteria = "AOC 16G3 1DDP7HA000348"; diff --git a/modules/home/wayland/apps/waybar/default.nix b/modules/home/wayland/apps/waybar/default.nix index 0b3ec1c..5faa43f 100644 --- a/modules/home/wayland/apps/waybar/default.nix +++ b/modules/home/wayland/apps/waybar/default.nix @@ -232,7 +232,7 @@ in { "custom/powermenu" = { "format" = "{icon}"; "format-icons" = [ "󰐥" ]; - "on-click" = "eww open powermenu"; + "on-click" = "eww-open-on-current-screen powermenu"; "tooltip" = false; }; "tray" = { diff --git a/modules/home/wayland/hyprland/config.nix b/modules/home/wayland/hyprland/config.nix old mode 100755 new mode 100644 index b1928aa..9220f3c --- a/modules/home/wayland/hyprland/config.nix +++ b/modules/home/wayland/hyprland/config.nix @@ -1,231 +1,333 @@ -{ lib, config, pkgs, ... }: { - config = lib.mkIf (config.usercfg.wm == "Wayland") { +{ lib, config, pkgs, ... }: let + lua = lib.generators.mkLuaInline; + bind = keys: dispatcher: { _args = [ keys dispatcher ]; }; + bindOpts = keys: dispatcher: opts: { _args = [ keys dispatcher opts ]; }; + + dsp = { + exec = cmd: lua ''hl.dsp.exec_cmd("${cmd}")''; + close = lua "hl.dsp.window.close()"; + exit = lua "hl.dsp.exit()"; + float = lua ''hl.dsp.window.float({ action = "toggle" })''; + fullscreen = lua "hl.dsp.window.fullscreen()"; + pseudo = lua "hl.dsp.window.pseudo()"; + layout = msg: lua ''hl.dsp.layout("${msg}")''; + focus = dir: lua ''hl.dsp.focus({ direction = "${dir}" })''; + swap = dir: lua ''hl.dsp.window.swap({ direction = "${dir}" })''; + toggleSpecial = name: lua ''hl.dsp.workspace.toggle_special("${name}")''; + moveToSpecial = name: lua ''hl.dsp.window.move({ workspace = "special:${name}" })''; + focusWorkspace = ws: lua ''hl.dsp.focus({ workspace = "${toString ws}" })''; + moveToWorkspace = ws: lua ''hl.dsp.window.move({ workspace = "${toString ws}", follow = false})''; + drag = lua "hl.dsp.window.drag()"; + resize = lua "hl.dsp.window.resize()"; + }; + + + startupScript = pkgs.writeShellScriptBin "hyprland-start" '' + eww-open-on-bar-screen bar & + dunst & + awww-daemon & + + sleep 2 + keepassxc & + firefox & + jellyfin-mpv-shim & + easyeffects --gapplication-service & + + sleep 2 + nextcloud & + # telegram-desktop & + # discord & + ''; +in { + config = lib.mkIf (config.usercfg.wm == "Wayland") { wayland.windowManager.hyprland = { enable = true; xwayland.enable = true; - extraConfig = '' - monitor=,preferred,auto,auto - env=bitdepth,10 - input { - kb_layout = us, ru - kb_variant = intl, phonetic - kb_options = grp:ctrls_toggle + configType = "lua"; + settings = { + on = { + _args = [ + "hyprland.start" + (lua '' + function() + hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP") + hl.exec_cmd("${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1") + hl.exec_cmd("wl-paste --type text --watch cliphist store") + hl.exec_cmd("wl-paste --type image --watch cliphist store") + hl.exec_cmd("swayidle -w timeout 600 'swaylock' before-sleep 'swaylock'") + hl.exec_cmd("${startupScript}/bin/start") + hl.exec_cmd("[workspace special:magic silent] kitty --title flying_kitty") + end'') + ]; + }; - follow_mouse = 1 + monitor = [{ + output = ""; + mode = "preferred"; + position = "auto"; + scale = "auto"; + bitdepth = 10; + }]; + #Fullscreen HDR is possible without the hdr cm setting if "render:cm_auto_hdr" is enabled. - sensitivity = 0 - - touchpad { - natural_scroll=no - disable_while_typing=true - scroll_factor=1 - disable_while_typing=0 - tap-to-click=0 + config = { + input = { + kb_layout = "us"; + kb_variant = "intl";#, phonetic"; + kb_options = "grp:alt_shift_toggle"; + follow_mouse = 1; + sensitivity = 0; + + touchpad = { + natural_scroll = false; + scroll_factor = 1; + disable_while_typing = false; + tap_to_click = false; + }; + }; + + misc = { + force_default_wallpaper = -1; + disable_hyprland_logo = true; + animate_mouse_windowdragging = false; + animate_manual_resizes = false; + vrr = 1; + }; + general = { + gaps_in = config.colorScheme.palette.gaps-window; + gaps_out = config.colorScheme.palette.gaps-screen; + border_size = lib.toInt config.colorScheme.palette.border-width; + col = { + active_border = "rgb(${config.colorScheme.palette.base04})"; + inactive_border = "rgb(${config.colorScheme.palette.base03})"; + }; + layout = "dwindle"; + }; + + decoration = { + rounding = lib.toInt config.colorScheme.palette.border-radius; + inactive_opacity = 1.0; + active_opacity = 1.0; + fullscreen_opacity = 1.0; + + blur = { + enabled = true; + size = 2; + passes = 1; + new_optimizations = true; + }; + }; + + dwindle = { + #pseudotile = true; + preserve_split = true; + }; + animations = { + enabled = true; + }; + + master = { + new_status = "master"; + }; + }; + + curve = [{ + _args = [ + "customcurve" + { + type = "bezier"; + points = lua "{ {0.0, 0.9}, {0.1, 1.0} }"; } - } - - misc { - disable_hyprland_logo=true - animate_mouse_windowdragging=false - animate_manual_resizes=false - - vrr=1 - } - - general { - gaps_in = ${config.colorScheme.palette.gaps-window} - gaps_out = ${config.colorScheme.palette.gaps-screen} - border_size = ${config.colorScheme.palette.border-width} - - col.active_border = rgb(${config.colorScheme.palette.base04}) - col.inactive_border = rgb(${config.colorScheme.palette.base03}) - - layout = dwindle - } - - decoration { - rounding = ${config.colorScheme.palette.border-radius} - - blur { - enabled = true - size = 2 - passes = 1 - new_optimizations = true + ]; + }]; + + animation = [ + { leaf = "windows"; enabled = true; speed = 4; bezier = "customcurve"; } + { leaf = "windowsOut"; enabled = true; speed = 4; bezier = "customcurve"; style = "popin 80%"; } + { leaf = "border"; enabled = true; speed = 10; bezier = "customcurve"; } + { leaf = "borderangle"; enabled = true; speed = 1; bezier = "customcurve"; } + { leaf = "fade"; enabled = true; speed = 4; bezier = "customcurve"; } + { leaf = "workspaces"; enabled = true; speed = 4; bezier = "customcurve"; } + ]; + + + gesture = { + fingers = 3; + direction = "vertical"; + action = "workspace"; + }; + + window_rule = [ + { match.title = "noshadow"; float= false;} + { + match.title = "^(flying_kitty)$"; + float = true; + center = true; + size = "1100 600"; + move = "{0 600}"; + animation = "slide"; + } + { match.title = "^(Volume Control)$"; float = true; } + { match.title = "^(Picture-in-Picture)$"; float = true; } + { match.title = "^(Steam)$"; float = true; } + # --- Chat & Workspace Assignments --- + { match.class = "^(org.telegram.desktop)$"; workspace = "2 silent"; } + { match.class = "^(discord)$"; workspace = "2 silent"; } + { match.class = "^(org.keepassxc.KeePassXC)$"; workspace = "8 silent"; } + { match.title = "^(Nextcloud)$"; workspace = "8 silent"; } + { match.class = "^(org.telegram.desktop)$"; match.title = "^(Media viewer)$"; float = true; center = true; } + { + match.class = "^(Tk)$"; + match.title = "^(Server Configuration)$"; + workspace = "8 silent"; } - #multisample_edges = true + # --- KeePassXC Dialogs --- + { + match.class = "^(org.keepassxc.KeePassXC)$"; + match.title = "^(KeePassXC - Access Request)$"; + float = true; + pin = true; + } + { + match.class = "^(org.keepassxc.KeePassXC)$"; + match.title = "^(Unlock Database - KeePassXC)$"; + float = true; + pin = true; + } + # --- Generic System / File Dialogs --- + { match.title = "^(Open)$"; float = true; } + { match.title = "^(Choose Files)$"; float = true; } + { match.title = "^(Save As)$"; float = true; } + { match.title = "^(Confirm to replace files)$"; float = true; } + { match.title = "^(File Operation Progress)$"; float = true; } - #opactity - inactive_opacity = 1.0 - active_opacity = 1.0 - fullscreen_opacity = 1.0 - - # shadow - # drop_shadow = no - # shadow_range = 60 - # shadow_offset = 0 5 - # shadow_render_power = 4 - #col.shadow = rgba(00000099) - } - - animations { - enabled = true - bezier = customcurve, 0.0, 0.9, 0.1, 1.0 + # --- Firefox Window Rules --- + { + match.class = "^(firefox)$"; + match.title = "^(Picture-in-Picture)$"; + float = true; + pin = true; + suppress_event = "fullscreen"; + } + { + match.class = "^(firefox)$"; + match.title = "^(Firefox — Sharing Indicator)$"; + float = true; + suppress_event = "fullscreen"; + } + { + match.class = "^(firefox)$"; + match.title = "^(Extension:.* Mozilla Firefox)$"; + float = true; + suppress_event = "fullscreen"; + } - animation = windows, 1, 4, customcurve - animation = windowsOut, 1, 4, customcurve, popin 50% - animation = border, 1, 10, customcurve - animation = borderangle, 0, 1, customcurve - animation = fade, 1, 4, customcurve - animation = workspaces, 1, 4, customcurve - } - - dwindle { - pseudotile = yes - preserve_split = yes - } + # --- Telegram Media Viewer --- + { + match.class = "^(org.telegram.desktop)$"; + match.title = "^(Media viewer)$"; + float = true; + center = true; + } - master { - new_status = master - } + # --- Idle Inhibition --- + { match.class = "^(.*)$"; idle_inhibit = "fullscreen"; } + { match.class = "^(steam_app_.*)$"; idle_inhibit = "focus"; } + { match.class = "^(mpv)$"; idle_inhibit = "focus"; } - gesture = 3, vertical, workspace - - exec-once = eww open bar - #exec-once = waybar - exec-once = dunst + ]; - exec-once = swww init + # windowrule = [ "noshadow, floating:0" ]; - exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP - exec-once = /nix/store/$(ls -la /nix/store | grep 'polkit-gnome' | grep '4096' | awk '{print $9}' | sed -n '$p')/libexec/polkit-gnome-authentication-agent-1 & + # windowrulev2 = [ + # "workspace 2 silent, class:^(org.telegram.desktop)$" + # "workspace 2 silent, class:^(discord)$" + # "workspace 8 silent, class:^(org.keepassxc.KeePassXC)$" + # "workspace 8 silent, title:^(Nextcloud)$" + # "workspace 8 silent, class:^(Tk)$,title:^(Server Configuration)$" + # "float,class:^(org.keepassxc.KeePassXC)$,title:^(KeePassXC - Access Request)$" + # "pin,class:^(org.keepassxc.KeePassXC)$,title:^(KeePassXC - Access Request)$" + # "float,class:^(org.keepassxc.KeePassXC)$,title:^(Unlock Database - KeePassXC)$" + # "pin,class:^(org.keepassxc.KeePassXC)$,title:^(Unlock Database - KeePassXC)$" + # "float,title:^(Open)$" + # "float,title:^(Choose Files)$" + # "float,title:^(Save As)$" + # "float,title:^(Confirm to replace files)$" + # "float,title:^(File Operation Progress)$" + # "float,class:^(firefox)$,title:^(Picture-in-Picture)$" + # "pin,class:^(firefox)$,title:^(Picture-in-Picture)$" + # "suppressevent fullscreen,class:^(firefox)$,title:^(Picture-in-Picture)$" + # "float,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$" + # "suppressevent fullscreen,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$" + # "float,class:^(firefox)$,title:^(Extension:.* Mozilla Firefox)$" + # "suppressevent fullscreen,class:^(firefox)$,title:^(Extension:.* Mozilla Firefox)$" + # "float,class:^(org.telegram.desktop)$,title:^(Media viewer)$" + # "center,class:^(org.telegram.desktop)$,title:^(Media viewer)$" + # "idleinhibit fullscreen, class:^(.*)" + # "idleinhibit focus, class:^(steam_app_.*)$" + # "idleinhibit focus, class:^(mpv)$" + # ]; - exec-once = wl-paste --type text --watch cliphist store #Stores only text data - exec-once = wl-paste --type image --watch cliphist store #Stores only image data + layer_rule = [ { + match.namespace = "^eww%-blur$"; + blur = true; + ignore_alpha = 0.5; + }]; - exec-once = swayidle -w timeout 600 'swaylock' before-sleep 'swaylock' + bind = [ + (bind "SUPER + RETURN" (dsp.exec "kitty")) + (bind "SUPER + SHIFT + RETURN" (dsp.toggleSpecial "magic")) + (bind "SUPER + SHIFT + S" (dsp.moveToSpecial "magic")) + (bind "SUPER + Q" dsp.close) + (bind "SUPER + T" dsp.float) + (bind "SUPER + F" dsp.fullscreen) + (bind "SUPER + P" dsp.pseudo) + (bind "SUPER + J" (dsp.layout "togglesplit")) + (bind "SUPER + D" (dsp.exec "wofi -modi --show drun")) + (bind "SUPER + SHIFT + D" (dsp.exec "~/.config/hypr/themes/apatheia/eww/launch_bar")) + (bind "SUPER + V" (dsp.exec "cliphist list | wofi -dmenu | cliphist decode | wl-copy")) + (bind "PRINT" (dsp.exec "hyprshot -m region --raw | satty --filename - --early-exit --action-on-enter save-to-clipboard --copy-command 'wl-copy'")) + (bind "SUPER + L" (dsp.exec "swaylock")) + (bind "SUPER + left" (dsp.focus "left")) + (bind "SUPER + right" (dsp.focus "right")) + (bind "SUPER + up" (dsp.focus "up")) + (bind "SUPER + down" (dsp.focus "down")) + (bind "SUPER + mouse_down" (dsp.focusWorkspace "e+1")) + (bind "SUPER + mouse_up" (dsp.focusWorkspace "e-1")) - - #windowrules - windowrule = noshadow, floating:0 - - windowrule = float, title:^(flying_kitty)$ - windowrule = size 1100 600, title:^(flying_kitty)$ - windowrule = move center, title:^(flying_kitty)$ - windowrule = animation slide, title:^(flying_kitty)$ - windowrule = float, title:^(Volume Control)$ - windowrule = float, title:^(Picture-in-Picture)$ - windowrule = float, title:^(Steam)$ - - windowrulev2 = workspace 2 silent, class:^(org.telegram.desktop)$ - windowrulev2 = workspace 2 silent, class:^(discord)$ - - windowrulev2 = workspace 8 silent, class:^(org.keepassxc.KeePassXC)$ - windowrulev2 = workspace 8 silent, title:^(Nextcloud)$ - windowrulev2 = workspace 8 silent, class:^(Tk)$,title:^(Server Configuration)$ - - #SPECIAL FLOATERS - windowrulev2 = float,class:^(org.keepassxc.KeePassXC)$,title:^(KeePassXC - Access Request)$ - windowrulev2 = pin,class:^(org.keepassxc.KeePassXC)$,title:^(KeePassXC - Access Request)$ - windowrulev2 = float,class:^(org.keepassxc.KeePassXC)$,title:^(Unlock Database - KeePassXC)$ - windowrulev2 = pin,class:^(org.keepassxc.KeePassXC)$,title:^(Unlock Database - KeePassXC)$ - windowrulev2 = float,title:^(Open)$ - windowrulev2 = float,title:^(Choose Files)$ - windowrulev2 = float,title:^(Save As)$ - windowrulev2 = float,title:^(Confirm to replace files)$ - windowrulev2 = float,title:^(File Operation Progress)$ - windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$ - windowrulev2 = pin,class:^(firefox)$,title:^(Picture-in-Picture)$ - windowrulev2 = suppressevent fullscreen,class:^(firefox)$,title:^(Picture-in-Picture)$ - windowrulev2 = float,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$ - windowrulev2 = suppressevent fullscreen,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$ - windowrulev2 = float,class:^(firefox)$,title:^(Extension:.* Mozilla Firefox)$ - windowrulev2 = suppressevent fullscreen,class:^(firefox)$,title:^(Extension:.* Mozilla Firefox)$ - windowrulev2 = float,class:^(org.telegram.desktop)$,title:^(Media viewer)$ - windowrulev2 = center,class:^(org.telegram.desktop)$,title:^(Media viewer)$ - - #SPECIAL NO SLEEP - windowrulev2 = idleinhibit fullscreen, class:^(.*) - windowrulev2 = idleinhibit focus, class:^(steam_app_.*)$ - windowrulev2 = idleinhibit focus, class:^(mpv)$ - - layerrule = blur,^(eww-blur) - - #binds - bind = SUPER, RETURN, exec, kitty - - bind = SUPER_SHIFT, RETURN,togglespecialworkspace, - # bind = SUPER_SHIFT, RETURN, exec, kitty --title flying_kitty --single-instance - bind = SUPER, Q, killactive, - bind = SUPER, T, togglefloating, - bind = SUPER, F, fullscreen, - - bind = SUPER, D, exec, wofi -modi --show drun - bind = SUPER SHIFT,D,exec, ~/.config/hypr/themes/apatheia/eww/launch_bar - - bind = SUPER, V, exec, cliphist list | wofi -dmenu | cliphist decode | wl-copy - bind = , PRINT, exec, hyprshot -m region --raw | satty --filename - --early-exit --action-on-enter save-to-clipboard --copy-command 'wl-copy' - - bind = SUPER, L, exec, swaylock - - bind = SUPER, left, movefocus, l - bind = SUPER, right, movefocus, r - bind = SUPER, up, movefocus, u - bind = SUPER, down, movefocus, d - - bind = SUPER, 1, workspace, 1 - bind = SUPER, 2, workspace, 2 - bind = SUPER, 3, workspace, 3 - bind = SUPER, 4, workspace, 4 - bind = SUPER, 5, workspace, 5 - bind = SUPER, 6, workspace, 6 - bind = SUPER, 7, workspace, 7 - bind = SUPER, 8, workspace, 8 - bind = SUPER, 9, workspace, 9 - bind = SUPER, 0, workspace, 10 - - bind = SUPER SHIFT, 1, movetoworkspacesilent, 1 - bind = SUPER SHIFT, 2, movetoworkspacesilent, 2 - bind = SUPER SHIFT, 3, movetoworkspacesilent, 3 - bind = SUPER SHIFT, 4, movetoworkspacesilent, 4 - bind = SUPER SHIFT, 5, movetoworkspacesilent, 5 - bind = SUPER SHIFT, 6, movetoworkspacesilent, 6 - bind = SUPER SHIFT, 7, movetoworkspacesilent, 7 - bind = SUPER SHIFT, 8, movetoworkspacesilent, 8 - bind = SUPER SHIFT, 9, movetoworkspacesilent, 9 - bind = SUPER SHIFT, 0, movetoworkspacesilent, 10 - - bind = SUPER, mouse_down, workspace, e+1 - bind = SUPER, mouse_up, workspace, e-1 - - bindm = SUPER, mouse:272, movewindow - bindm = SUPER, mouse:273, resizewindow - bind = , XF86AudioPlay, exec, playerctl play-pause - bind = , XF86AudioPrev, exec, playerctl previous - bind = , XF86AudioNext, exec, playerctl next - bind = , XF86AudioRaiseVolume, exec, amixer -q sset 'Master' 5%+ - bind = , XF86AudioLowerVolume, exec, amixer -q sset 'Master' 5%- - bind = , XF86AudioMute, exec, amixer -q sset 'Master' toggle - bind = , XF86MonBrightnessUp, exec, brightnessctl s 5%+ - bind = , XF86MonBrightnessDown, exec, brightnessctl s 5%- - - exec-once = [workspace special silent] kitty --title flying_kitty - exec-once = sh ~/.config/startup.sh - ''; + (bind "SUPER + 1" (dsp.focusWorkspace 1)) + (bind "SUPER + SHIFT + 1" (dsp.moveToWorkspace 1)) + (bind "SUPER + 2" (dsp.focusWorkspace 2)) + (bind "SUPER + SHIFT + 2" (dsp.moveToWorkspace 2)) + (bind "SUPER + 3" (dsp.focusWorkspace 3)) + (bind "SUPER + SHIFT + 3" (dsp.moveToWorkspace 3)) + (bind "SUPER + 4" (dsp.focusWorkspace 4)) + (bind "SUPER + SHIFT + 4" (dsp.moveToWorkspace 4)) + (bind "SUPER + 5" (dsp.focusWorkspace 5)) + (bind "SUPER + SHIFT + 5" (dsp.moveToWorkspace 5)) + (bind "SUPER + 6" (dsp.focusWorkspace 6)) + (bind "SUPER + SHIFT + 6" (dsp.moveToWorkspace 6)) + (bind "SUPER + 7" (dsp.focusWorkspace 7)) + (bind "SUPER + SHIFT + 7" (dsp.moveToWorkspace 7)) + (bind "SUPER + 8" (dsp.focusWorkspace 8)) + (bind "SUPER + SHIFT + 8" (dsp.moveToWorkspace 8)) + (bind "SUPER + 9" (dsp.focusWorkspace 9)) + (bind "SUPER + SHIFT + 9" (dsp.moveToWorkspace 9)) + (bind "SUPER + 0" (dsp.focusWorkspace 0)) + (bind "SUPER + SHIFT + 0" (dsp.moveToWorkspace 0)) + (bind "XF86AudioPlay" (dsp.exec "playerctl play-pause")) + (bind "XF86AudioPrev" (dsp.exec "playerctl previous")) + (bind "XF86AudioNext" (dsp.exec "playerctl next")) + (bindOpts "XF86AudioRaiseVolume" (dsp.exec "amixer -q sset 'Master' 5%+") { locked = true; repeating = true; }) + (bindOpts "XF86AudioLowerVolume" (dsp.exec "amixer -q sset 'Master' 5%-") { locked = true; repeating = true; }) + (bindOpts "XF86AudioMute" (dsp.exec "amixer -q sset 'Master' toggle") { locked = true; }) + (bindOpts "XF86MonBrightnessUp" (dsp.exec "brightnessctl s 5%+") { locked = true; repeating = true; }) + (bindOpts "XF86MonBrightnessDown" (dsp.exec "brightnessctl s 5%-") { locked = true; repeating = true; }) + (bindOpts "SUPER + mouse:272" dsp.drag { mouse = true; }) + (bindOpts "SUPER + mouse:273" dsp.resize { mouse = true; }) + ]; + }; }; - - xdg.configFile."startup.sh".text = '' - #!/bin/sh - sleep 2 - keepassxc & - firefox & - jellyfin-mpv-shim & - easyeffects --gapplication-service & - - sleep 2 - nextcloud & - #telegram-desktop& - #discord& - ''; }; } diff --git a/modules/nixos/gui/greet/default.nix b/modules/nixos/gui/greet/default.nix index 92a341f..b92ed9a 100644 --- a/modules/nixos/gui/greet/default.nix +++ b/modules/nixos/gui/greet/default.nix @@ -5,7 +5,7 @@ enable = true; settings = rec { initial_session = { - command = "zsh"; + command = "start-hyprland"; user = "${config.syscfg.defaultUser}"; }; default_session = initial_session;