From 9d9ed0f04b5c90d168cfa5046da6200aa708df4e Mon Sep 17 00:00:00 2001 From: GarandPLG Date: Wed, 7 Jan 2026 19:49:21 +0100 Subject: [PATCH] Add Teams, disable Ferdium, refactor Hyprland MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable teams-for-linux and disable ferdium in system modules; add both to core packages. Simplify Hyprland configuration by using direct settings for animations, window rules, env, exec‑once and hypridle. Remove unused Microsoft Teams PWA entry. --- hosts/Garand-Desktop/home-modules.nix | 8 - hosts/Garand-Desktop/system-modules.nix | 4 +- hosts/Garand-Laptop/home-modules.nix | 8 - hosts/Garand-Laptop/system-modules.nix | 2 + hosts/default/home-modules.nix | 8 - hosts/default/system-modules.nix | 2 + modules/core/packages/packages.nix | 2 + modules/home/hyprland/animations-def.nix | 36 ++-- modules/home/hyprland/animations-dynamic.nix | 41 ++--- modules/home/hyprland/animations-end4.nix | 65 ++++--- modules/home/hyprland/animations-moving.nix | 39 ++--- modules/home/hyprland/env.nix | 64 ++++--- modules/home/hyprland/exec-once.nix | 30 ++-- modules/home/hyprland/hypridle.nix | 38 ++-- modules/home/hyprland/hyprland.nix | 12 +- modules/home/hyprland/windowrules.nix | 173 +++++++++---------- modules/home/xdg/desktop-entries.nix | 9 +- 17 files changed, 243 insertions(+), 298 deletions(-) diff --git a/hosts/Garand-Desktop/home-modules.nix b/hosts/Garand-Desktop/home-modules.nix index 9a1ab9b..d806f93 100644 --- a/hosts/Garand-Desktop/home-modules.nix +++ b/hosts/Garand-Desktop/home-modules.nix @@ -3,7 +3,6 @@ _: { Development editors and IDEs */ vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode - zed-editor = { enable = true; # Zed Editor: a modern, high‑performance code editor remote-server.enable = true; # Remote Server: enable remote editing capabilities @@ -13,27 +12,21 @@ _: { Web browsers */ librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork - ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork /* System utilities */ btop.enable = true; # Btop: a resource monitor for the terminal - cava.enable = false; # Cava: terminal audio visualizer - fastfetch.enable = true; # Fastfetch: a fast system information tool - peaclock.enable = true; # Peaclock: Clock, timer, and stopwatch for the terminal /* Communication and synchronization */ kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop - nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server - vesktop.enable = true; # Vesktop: a community‑driven Discord client /* @@ -68,7 +61,6 @@ _: { chatgpt.enable = true; # ChatGPT: a large language model claude.enable = true; # Claude: a large language model glance.enable = true; # Glance: my home server dashboard - microsoftTeams.enable = true; # Microsoft Teams: a collaboration tool }; }; } diff --git a/hosts/Garand-Desktop/system-modules.nix b/hosts/Garand-Desktop/system-modules.nix index 186a04f..19514d8 100644 --- a/hosts/Garand-Desktop/system-modules.nix +++ b/hosts/Garand-Desktop/system-modules.nix @@ -55,6 +55,8 @@ _: { slack.enable = true; # Slack: team communication and collaboration tool tutanota.enable = true; # Tutanota: secure email client signal.enable = true; # Signal: secure messaging app + teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux + ferdium.enable = false; # Ferdium: All your services in one place built by the community /* Productivity / Knowledge Management @@ -79,7 +81,7 @@ _: { */ eddieAirVPN.enable = true; # Eddie AirVPN: VPN client galculator.enable = false; # Galculator: simple calculator - gedit.enable = false; # Gedit: GNOME text editor + gedit.enable = true; # Gedit: GNOME text editor winboat.enable = false; # Winboat: Windows remote desktop via RDP adb.enable = false; # ADB: Android SDK platform tools }; diff --git a/hosts/Garand-Laptop/home-modules.nix b/hosts/Garand-Laptop/home-modules.nix index 9a1ab9b..d806f93 100644 --- a/hosts/Garand-Laptop/home-modules.nix +++ b/hosts/Garand-Laptop/home-modules.nix @@ -3,7 +3,6 @@ _: { Development editors and IDEs */ vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode - zed-editor = { enable = true; # Zed Editor: a modern, high‑performance code editor remote-server.enable = true; # Remote Server: enable remote editing capabilities @@ -13,27 +12,21 @@ _: { Web browsers */ librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork - ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork /* System utilities */ btop.enable = true; # Btop: a resource monitor for the terminal - cava.enable = false; # Cava: terminal audio visualizer - fastfetch.enable = true; # Fastfetch: a fast system information tool - peaclock.enable = true; # Peaclock: Clock, timer, and stopwatch for the terminal /* Communication and synchronization */ kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop - nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server - vesktop.enable = true; # Vesktop: a community‑driven Discord client /* @@ -68,7 +61,6 @@ _: { chatgpt.enable = true; # ChatGPT: a large language model claude.enable = true; # Claude: a large language model glance.enable = true; # Glance: my home server dashboard - microsoftTeams.enable = true; # Microsoft Teams: a collaboration tool }; }; } diff --git a/hosts/Garand-Laptop/system-modules.nix b/hosts/Garand-Laptop/system-modules.nix index 3a73197..7d3795f 100644 --- a/hosts/Garand-Laptop/system-modules.nix +++ b/hosts/Garand-Laptop/system-modules.nix @@ -55,6 +55,8 @@ _: { slack.enable = true; # Slack: team communication and collaboration tool tutanota.enable = true; # Tutanota: secure email client signal.enable = true; # Signal: secure messaging app + teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux + ferdium.enable = false; # Ferdium: All your services in one place built by the community /* Productivity / Knowledge Management diff --git a/hosts/default/home-modules.nix b/hosts/default/home-modules.nix index 9a1ab9b..d806f93 100644 --- a/hosts/default/home-modules.nix +++ b/hosts/default/home-modules.nix @@ -3,7 +3,6 @@ _: { Development editors and IDEs */ vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode - zed-editor = { enable = true; # Zed Editor: a modern, high‑performance code editor remote-server.enable = true; # Remote Server: enable remote editing capabilities @@ -13,27 +12,21 @@ _: { Web browsers */ librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork - ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork /* System utilities */ btop.enable = true; # Btop: a resource monitor for the terminal - cava.enable = false; # Cava: terminal audio visualizer - fastfetch.enable = true; # Fastfetch: a fast system information tool - peaclock.enable = true; # Peaclock: Clock, timer, and stopwatch for the terminal /* Communication and synchronization */ kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop - nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server - vesktop.enable = true; # Vesktop: a community‑driven Discord client /* @@ -68,7 +61,6 @@ _: { chatgpt.enable = true; # ChatGPT: a large language model claude.enable = true; # Claude: a large language model glance.enable = true; # Glance: my home server dashboard - microsoftTeams.enable = true; # Microsoft Teams: a collaboration tool }; }; } diff --git a/hosts/default/system-modules.nix b/hosts/default/system-modules.nix index 3a73197..7d3795f 100644 --- a/hosts/default/system-modules.nix +++ b/hosts/default/system-modules.nix @@ -55,6 +55,8 @@ _: { slack.enable = true; # Slack: team communication and collaboration tool tutanota.enable = true; # Tutanota: secure email client signal.enable = true; # Signal: secure messaging app + teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux + ferdium.enable = false; # Ferdium: All your services in one place built by the community /* Productivity / Knowledge Management diff --git a/modules/core/packages/packages.nix b/modules/core/packages/packages.nix index b51045c..bc703f9 100644 --- a/modules/core/packages/packages.nix +++ b/modules/core/packages/packages.nix @@ -47,6 +47,8 @@ bottles = bottles; heroic = heroic; adb = android-tools; + teams = teams-for-linux; + ferdium = ferdium; }; in { imports = builtins.attrValues (builtins.mapAttrs mkPackage packages); diff --git a/modules/home/hyprland/animations-def.nix b/modules/home/hyprland/animations-def.nix index 01fd2da..f15dd3d 100644 --- a/modules/home/hyprland/animations-def.nix +++ b/modules/home/hyprland/animations-def.nix @@ -1,22 +1,20 @@ _: { - wayland.windowManager.hyprland.settings = { - animations = { - enabled = true; - bezier = [ - "wind, -1.05, 0.9, 0.1, 1.05" - "winIn, -1.1, 1.1, 0.1, 1.1" - "winOut, -1.3, -0.3, 0, 1" - "liner, 0, 1, 1, 1" - ]; - animation = [ - "windows, 0, 6, wind, slide" - "windowsIn, 0, 6, winIn, slide" - "windowsOut, 0, 5, winOut, slide" - "windowsMove, 0, 5, wind, slide" - "border, 0, 1, liner" - "fade, 0, 10, default" - "workspaces, 0, 5, wind" - ]; - }; + wayland.windowManager.hyprland.settings.animations = { + enabled = true; + bezier = [ + "wind, -1.05, 0.9, 0.1, 1.05" + "winIn, -1.1, 1.1, 0.1, 1.1" + "winOut, -1.3, -0.3, 0, 1" + "liner, 0, 1, 1, 1" + ]; + animation = [ + "windows, 0, 6, wind, slide" + "windowsIn, 0, 6, winIn, slide" + "windowsOut, 0, 5, winOut, slide" + "windowsMove, 0, 5, wind, slide" + "border, 0, 1, liner" + "fade, 0, 10, default" + "workspaces, 0, 5, wind" + ]; }; } diff --git a/modules/home/hyprland/animations-dynamic.nix b/modules/home/hyprland/animations-dynamic.nix index b637a21..64bb7dc 100644 --- a/modules/home/hyprland/animations-dynamic.nix +++ b/modules/home/hyprland/animations-dynamic.nix @@ -1,25 +1,22 @@ _: { - wayland.windowManager.hyprland.settings = { - # name "Dynamic" - # credit https://github.com/mylinuxforwork/dotfiles - animations = { - enabled = true; - bezier = [ - "wind, 0.05, 0.9, 0.1, 1.05" - "winIn, 0.1, 1.1, 0.1, 1.1" - "winOut, 0.3, -0.3, 0, 1" - "liner, 1, 1, 1, 1" - ]; - animation = [ - "windows, 1, 6, wind, slide" - "windowsIn, 1, 6, winIn, slide" - "windowsOut, 1, 5, winOut, slide" - "windowsMove, 1, 5, wind, slide" - "border, 1, 1, liner" - "borderangle, 1, 30, liner, loop" - "fade, 1, 10, default" - "workspaces, 1, 5, wind" - ]; - }; + # name "Dynamic" + wayland.windowManager.hyprland.settings.animations = { + enabled = true; + bezier = [ + "wind, 0.05, 0.9, 0.1, 1.05" + "winIn, 0.1, 1.1, 0.1, 1.1" + "winOut, 0.3, -0.3, 0, 1" + "liner, 1, 1, 1, 1" + ]; + animation = [ + "windows, 1, 6, wind, slide" + "windowsIn, 1, 6, winIn, slide" + "windowsOut, 1, 5, winOut, slide" + "windowsMove, 1, 5, wind, slide" + "border, 1, 1, liner" + "borderangle, 1, 30, liner, loop" + "fade, 1, 10, default" + "workspaces, 1, 5, wind" + ]; }; } diff --git a/modules/home/hyprland/animations-end4.nix b/modules/home/hyprland/animations-end4.nix index aee2df4..a1365b2 100644 --- a/modules/home/hyprland/animations-end4.nix +++ b/modules/home/hyprland/animations-end4.nix @@ -1,37 +1,34 @@ _: { - wayland.windowManager.hyprland.settings = { - # Name: END-4 - # Credit: END-4 project https://github.com/end-4/dots-hyprland - animations = { - enabled = true; - bezier = [ - "linear, 0, 0, 1, 1" - "md3_standard, 0.2, 0, 0, 1" - "md3_decel, 0.05, 0.7, 0.1, 1" - "md3_accel, 0.3, 0, 0.8, 0.15" - "overshot, 0.05, 0.9, 0.1, 1.1" - "crazyshot, 0.1, 1.5, 0.76, 0.92 " - "hyprnostretch, 0.05, 0.9, 0.1, 1.0" - "menu_decel, 0.1, 1, 0, 1" - "menu_accel, 0.38, 0.04, 1, 0.07" - "easeInOutCirc, 0.85, 0, 0.15, 1" - "easeOutCirc, 0, 0.55, 0.45, 1" - "easeOutExpo, 0.16, 1, 0.3, 1" - "softAcDecel, 0.26, 0.26, 0.15, 1" - "md2, 0.4, 0, 0.2, 1 # use with .2s duration" - ]; - animation = [ - "windows, 1, 3, md3_decel, popin 60%" - "windowsIn, 1, 3, md3_decel, popin 60%" - "windowsOut, 1, 3, md3_accel, popin 60%" - "border, 1, 10, default" - "fade, 1, 3, md3_decel" - "layersIn, 1, 3, menu_decel, slide" - "layersOut, 1, 1.6, menu_accel" - "fadeLayersIn, 1, 2, menu_decel" - "fadeLayersOut, 1, 4.5, menu_accel" - "workspaces, 1, 7, menu_decel, slide" - ]; - }; + # Name: END-4 + wayland.windowManager.hyprland.settings.animations = { + enabled = true; + bezier = [ + "linear, 0, 0, 1, 1" + "md3_standard, 0.2, 0, 0, 1" + "md3_decel, 0.05, 0.7, 0.1, 1" + "md3_accel, 0.3, 0, 0.8, 0.15" + "overshot, 0.05, 0.9, 0.1, 1.1" + "crazyshot, 0.1, 1.5, 0.76, 0.92 " + "hyprnostretch, 0.05, 0.9, 0.1, 1.0" + "menu_decel, 0.1, 1, 0, 1" + "menu_accel, 0.38, 0.04, 1, 0.07" + "easeInOutCirc, 0.85, 0, 0.15, 1" + "easeOutCirc, 0, 0.55, 0.45, 1" + "easeOutExpo, 0.16, 1, 0.3, 1" + "softAcDecel, 0.26, 0.26, 0.15, 1" + "md2, 0.4, 0, 0.2, 1 # use with .2s duration" + ]; + animation = [ + "windows, 1, 3, md3_decel, popin 60%" + "windowsIn, 1, 3, md3_decel, popin 60%" + "windowsOut, 1, 3, md3_accel, popin 60%" + "border, 1, 10, default" + "fade, 1, 3, md3_decel" + "layersIn, 1, 3, menu_decel, slide" + "layersOut, 1, 1.6, menu_accel" + "fadeLayersIn, 1, 2, menu_decel" + "fadeLayersOut, 1, 4.5, menu_accel" + "workspaces, 1, 7, menu_decel, slide" + ]; }; } diff --git a/modules/home/hyprland/animations-moving.nix b/modules/home/hyprland/animations-moving.nix index 64eff70..0b25c03 100644 --- a/modules/home/hyprland/animations-moving.nix +++ b/modules/home/hyprland/animations-moving.nix @@ -1,24 +1,21 @@ _: { - wayland.windowManager.hyprland.settings = { - # name "moving" - # credit https://github.com/mylinuxforwork/dotfiles - animations = { - enabled = true; - bezier = [ - "overshot, 0.05, 0.9, 0.1, 1.05" - "smoothOut, 0.5, 0, 0.99, 0.99" - "smoothIn, 0.5, -0.5, 0.68, 1.5" - ]; - animation = [ - "windows, 1, 5, overshot, slide" - "windowsOut, 1, 3, smoothOut" - "windowsIn, 1, 3, smoothOut" - "windowsMove, 1, 4, smoothIn, slide" - "border, 1, 5, default" - "fade, 1, 5, smoothIn" - "fadeDim, 1, 5, smoothIn" - "workspaces, 1, 6, default" - ]; - }; + # name "moving" + wayland.windowManager.hyprland.settings.animations = { + enabled = true; + bezier = [ + "overshot, 0.05, 0.9, 0.1, 1.05" + "smoothOut, 0.5, 0, 0.99, 0.99" + "smoothIn, 0.5, -0.5, 0.68, 1.5" + ]; + animation = [ + "windows, 1, 5, overshot, slide" + "windowsOut, 1, 3, smoothOut" + "windowsIn, 1, 3, smoothOut" + "windowsMove, 1, 4, smoothIn, slide" + "border, 1, 5, default" + "fade, 1, 5, smoothIn" + "fadeDim, 1, 5, smoothIn" + "workspaces, 1, 6, default" + ]; }; } diff --git a/modules/home/hyprland/env.nix b/modules/home/hyprland/env.nix index bc5d3c9..e848f36 100644 --- a/modules/home/hyprland/env.nix +++ b/modules/home/hyprland/env.nix @@ -1,36 +1,32 @@ _: { - wayland.windowManager.hyprland = { - settings = { - env = [ - "NIXOS_OZONE_WL, 1" - "NIXPKGS_ALLOW_UNFREE, 1" - "XDG_CURRENT_DESKTOP, Hyprland" - "XDG_SESSION_TYPE, wayland" - "XDG_SESSION_DESKTOP, Hyprland" - "GDK_BACKEND, wayland, x11" - "CLUTTER_BACKEND, wayland" - "QT_QPA_PLATFORM=wayland;xcb" - "QT_WAYLAND_DISABLE_WINDOWDECORATION, 1" - "QT_AUTO_SCREEN_SCALE_FACTOR, 1" - "SDL_VIDEODRIVER, x11" - "MOZ_ENABLE_WAYLAND, 1" - # This is to make electron apps start in wayland - "ELECTRON_OZONE_PLATFORM_HINT,wayland" - # Disabling this by default as it can result in inop cfg - # Added card2 in case this gets enabled. For better coverage - # This is mostly needed by Hybrid laptops. - # but if you have multiple discrete GPUs this will set order - #"AQ_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1:/dev/card2" - "GDK_SCALE,1" - "QT_SCALE_FACTOR,1" - "EDITOR,nano" - # Set terminal and xdg_terminal_emulator to kitty - # To provent yazi from starting xterm when run from rofi menu - # You can set to your preferred terminal if you you like - # ToDo: Pull default terminal from config - "TERMINAL,kitty" - "XDG_TERMINAL_EMULATOR,kitty" - ]; - }; - }; + wayland.windowManager.hyprland.settings.env = [ + "NIXOS_OZONE_WL, 1" + "NIXPKGS_ALLOW_UNFREE, 1" + "XDG_CURRENT_DESKTOP, Hyprland" + "XDG_SESSION_TYPE, wayland" + "XDG_SESSION_DESKTOP, Hyprland" + "GDK_BACKEND, wayland, x11" + "CLUTTER_BACKEND, wayland" + "QT_QPA_PLATFORM=wayland;xcb" + "QT_WAYLAND_DISABLE_WINDOWDECORATION, 1" + "QT_AUTO_SCREEN_SCALE_FACTOR, 1" + "SDL_VIDEODRIVER, x11" + "MOZ_ENABLE_WAYLAND, 1" + # This is to make electron apps start in wayland + "ELECTRON_OZONE_PLATFORM_HINT,wayland" + # Disabling this by default as it can result in inop cfg + # Added card2 in case this gets enabled. For better coverage + # This is mostly needed by Hybrid laptops. + # but if you have multiple discrete GPUs this will set order + #"AQ_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1:/dev/card2" + "GDK_SCALE,1" + "QT_SCALE_FACTOR,1" + "EDITOR,nano" + # Set terminal and xdg_terminal_emulator to kitty + # To provent yazi from starting xterm when run from rofi menu + # You can set to your preferred terminal if you you like + # ToDo: Pull default terminal from config + "TERMINAL,kitty" + "XDG_TERMINAL_EMULATOR,kitty" + ]; } diff --git a/modules/home/hyprland/exec-once.nix b/modules/home/hyprland/exec-once.nix index 9395ba3..b6e12f7 100644 --- a/modules/home/hyprland/exec-once.nix +++ b/modules/home/hyprland/exec-once.nix @@ -4,21 +4,19 @@ stylixImage ; in { - wayland.windowManager.hyprland.settings = { - exec-once = [ - "wl-paste --type text --watch cliphist store" # Saves text - "wl-paste --type image --watch cliphist store" # Saves images - "dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" - "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" - "systemctl --user start hyprpolkitagent" + wayland.windowManager.hyprland.settings.exec-once = [ + "wl-paste --type text --watch cliphist store" # Saves text + "wl-paste --type image --watch cliphist store" # Saves images + "dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + "systemctl --user start hyprpolkitagent" - "killall -q swww;sleep .5 && swww-daemon" - "killall -q waybar;sleep .5 && waybar" - "killall -q swaync;sleep .5 && swaync" - "#wallsetter &" - "pypr &" - "nm-applet --indicator" - "sleep 1.0 && swww img ${stylixImage}" - ]; - }; + "killall -q swww;sleep .5 && swww-daemon" + "killall -q waybar;sleep .5 && waybar" + "killall -q swaync;sleep .5 && swaync" + "#wallsetter &" + "pypr &" + "nm-applet --indicator" + "sleep 1.0 && swww img ${stylixImage}" + ]; } diff --git a/modules/home/hyprland/hypridle.nix b/modules/home/hyprland/hypridle.nix index 8af73cb..e1036b0 100644 --- a/modules/home/hyprland/hypridle.nix +++ b/modules/home/hyprland/hypridle.nix @@ -1,25 +1,23 @@ _: { - 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"; - } - ]; + 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"; + } + ]; }; }; } diff --git a/modules/home/hyprland/hyprland.nix b/modules/home/hyprland/hyprland.nix index dbac00a..4bc4939 100644 --- a/modules/home/hyprland/hyprland.nix +++ b/modules/home/hyprland/hyprland.nix @@ -26,9 +26,7 @@ in { enableXdgAutostart = true; variables = ["--all"]; }; - xwayland = { - enable = true; - }; + xwayland.enable = true; settings = { input = { kb_layout = "${keyboardLayout}"; @@ -131,9 +129,7 @@ in { direct_scanout = 0; }; - debug = { - full_cm_proto = true; - }; + debug.full_cm_proto = true; master = { new_status = "master"; @@ -142,9 +138,7 @@ in { }; # Ensure Xwayland windows render at integer scale; compositor scales them - xwayland = { - force_zero_scaling = true; - }; + xwayland.force_zero_scaling = true; }; extraConfig = " diff --git a/modules/home/hyprland/windowrules.nix b/modules/home/hyprland/windowrules.nix index ecbde18..760c421 100644 --- a/modules/home/hyprland/windowrules.nix +++ b/modules/home/hyprland/windowrules.nix @@ -1,101 +1,94 @@ _: { - wayland.windowManager.hyprland = { - settings = { - windowrule = [ - # XWayland specific rules - #"noblur, xwayland:1" # Helps prevent odd borders/shadows for xwayland apps - # downside it can impact other xwayland apps - # This rule is a template for a more targeted approach - "noblur, class:^(\bresolve\b)$, xwayland:1" # Window rule for just resolve + wayland.windowManager.hyprland.settings.windowrule = [ + # XWayland specific rules + #"noblur, xwayland:1" # Helps prevent odd borders/shadows for xwayland apps + # downside it can impact other xwayland apps + # This rule is a template for a more targeted approach + "no_blur on, match:class resolve, match:xwayland 1" # Window rule for just resolve - # Application tags - "tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$" - "tag +terminal, class:^(com.mitchellh.ghostty|org.wezfurlong.wezterm|Alacritty|kitty|kitty-dropterm)$" - "tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$" - "tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr)$" - "tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$" - "tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$" - "tag +projects, class:^(codium|codium-url-handler|VSCodium)$" - "tag +projects, class:^(VSCode|code-url-handler)$" - "tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$" - "tag +im, class:^([Ff]erdium)$" - "tag +im, class:^([Ww]hatsapp-for-linux)$" - "tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$" - "tag +im, class:^(teams-for-linux)$" - "tag +games, class:^(gamescope)$" - "tag +games, class:^(steam_app_\d+)$" - "tag +gamestore, class:^([Ss]team)$" - "tag +gamestore, title:^([Ll]utris)$" - "tag +gamestore, class:^(com.heroicgameslauncher.hgl)$" - "tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$" - "tag +settings, class:^([Rr]ofi)$" - "tag +settings, class:^(file-roller|org.gnome.FileRoller)$" - "tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$" - "tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$" - "tag +settings, class:^(nwg-look|qt5ct|qt6ct|[Yy]ad)$" - "tag +settings, class:(xdg-desktop-portal-gtk)" - "tag +settings, class:(.blueman-manager-wrapped)" - "tag +settings, class:(nwg-displays)" + # Application tags + "tag +file-manager, match:class [Tt]hunar|org\.gnome\.Nautilus|[Pp]cmanfm-qt" + "tag +terminal, match:class com\.mitchellh\.ghostty|org\.wezfurlong\.wezterm|Alacritty|kitty|kitty-dropterm" + "tag +browser, match:class [Ff]irefox|org\.mozilla\.firefox|[Ff]irefox-esr" + "tag +browser, match:class [Ll]ibrewolf|io\.gitlab\.librewolf-community" + "tag +browser, match:class [Gg]oogle-chrome(-beta|-dev|-unstable)?|[Cc]hromium-browser(-beta|-dev|-unstable)?" + "tag +projects, match:class VSCode|code|code-url-handler|codium|codium-url-handler|VSCodium|VSCodium-url-handler" + "tag +projects, match:class dev\.zed\.Zed" + "tag +im, match:class [Dd]iscord|[Ww]ebCord|[Vv]esktop" + "tag +im, match:class [Ff]erdium" + "tag +im, match:class [Ss]ignal" + "tag +im, match:class [Ss]lack" + "tag +im, match:class [Tt]eams-for-linux" + "tag +games, match:class gamescope" + "tag +games, match:class ?:steam_app_\d+" + "tag +games, match:class tf_linux64" + "tag +gamestore, match:class [Ss]team" + "tag +gamestore, match:title [Ll]utris" + "tag +gamestore, match:class com\.heroicgameslauncher\.hgl" + "tag +settings, match:class gnome-disks|wihotspot(-gui)?" + "tag +settings, match:class [Rr]ofi" + "tag +settings, match:class file-roller|org\.gnome\.FileRoller" + "tag +settings, match:class nm-applet|nm-connection-editor|blueman-manager" + "tag +settings, match:class pavucontrol|org\.pulseaudio\.pavucontrol|com\.saivert\.pwvucontrol" + "tag +settings, match:class nwg-look|qt5ct|qt6ct|[Yy]ad" + "tag +settings, match:class xdg-desktop-portal-gtk" + "tag +settings, match:class ?:blueman-manager-wrapped" + "tag +settings, match:class nwg-displays" - # Position and movement rules - "move 72% 7%,title:^(Picture-in-Picture)$" - "center, class:^([Ff]erdium)$" - "center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$" - "center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)" - "center, title:^(Authentication Required)$" + # Position and movement rules + "move 72% 7%, match:title Picture-in-Picture" + "center on, match:class pavucontrol|org\.pulseaudio\.pavucontrol|com\.saivert\.pwvucontrol" + "center on, match:class [Tt]hunar, match:title negative:.*[Tt]hunar.*" + "center on, match:title Authentication Required" - # Idle inhibit rules - "idleinhibit fullscreen, class:^(*)$" - "idleinhibit fullscreen, title:^(*)$" - "idleinhibit fullscreen, fullscreen:1" + # Idle inhibit rules + "idle_inhibit fullscreen, match:class .*" + "idle_inhibit fullscreen, match:title .*" + "idle_inhibit fullscreen, match:fullscreen 1" - # Float rules - "float, class:^([Ww]aypaper)$" - "float, tag:settings*" - "float, class:^([Ff]erdium)$" - "float, title:^(Picture-in-Picture)$" - "float, class:^(mpv)$" - "float, title:^(Authentication Required)$" - "float, title:^(War in Tunnels)$" - "float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)" - "float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher)" - "float, class:^([Ss]team)$, title:negative:^([Ss]team)$" - "float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)" - "float, class:^(galculator)$" - "float, initialTitle:(Add Folder to Workspace)" - "float, initialTitle:(Open Files)" - "float, initialTitle:(wants to save)" + # Float rules + "float on, match:class [Ww]aypaper" + "float on, match:tag settings*" + "float on, match:title Picture-in-Picture" + "float on, match:class mpv" + "float on, match:title Authentication Required" + "float on, match:title War in Tunnels" + "float on, match:class codium|codium-url-handler|VSCodium, match:title negative:.*(?:codium|VSCodium).*" + "float on, match:class com\.heroicgameslauncher\.hgl, match:title negative Heroic Games Launcher" + "float on, match:class [Ss]team, match:title negative:[Ss]team" + "float on, match:class [Tt]hunar, match:title negative:.*[Tt]hunar.*" + "float on, match:class galculator" + "float on, match:initial_title Add Folder to Workspace" + "float on, match:initial_title Open Files" + "float on, match:initial_title wants to save" - # Size rules - "size 70% 60%, initialTitle:(Open Files)" - "size 70% 60%, initialTitle:(Add Folder to Workspace)" - "size 70% 70%, tag:settings*" - "size 60% 70%, class:^([Ff]erdium)$" - "size 70% 70%, class:^(mpv)$" + # Size rules + "size 70% 60%, match:initial_title Open Files" + "size 70% 60%, match:initial_title Add Folder to Workspace" + "size 70% 70%, match:tag settings*" + "size 70% 70%, match:class mpv" - # Tile rules - "tile, class:^(affinity.exe)$" - "tile, class:^(dev.zed.Zed)$" + # Tile rules + "tile on, match:class affinity\.exe" + "tile on, match:class dev\.zed\.Zed" - # Opacity rules - "opacity 1.0 1.0, tag:browser*" - "opacity 0.9 0.8, tag:projects*" - "opacity 0.94 0.86, tag:im*" - "opacity 0.9 0.8, tag:file-manager*" - "opacity 0.8 0.7, tag:terminal*" - "opacity 0.8 0.7, tag:settings*" - "opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$" - "opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui" - "opacity 0.95 0.75, title:^(Picture-in-Picture)$" + # Opacity rules + "opacity 1.0 1.0, match:tag browser*" + "opacity 0.9 0.8, match:tag projects*" + "opacity 0.94 0.86, match:tag im*" + "opacity 0.9 0.8, match:tag file-manager*" + "opacity 0.8 0.7, match:tag terminal*" + "opacity 0.8 0.7, match:tag settings*" + "opacity 0.8 0.7, match:class gedit|org\.gnome\.TextEditor|mousepad" + "opacity 0.9 0.8, match:class seahorse # gnome-keyring gui" + "opacity 0.95 0.75, match:title Picture-in-Picture" - # Picture-in-Picture specific rules - "pin, title:^(Picture-in-Picture)$" - "keepaspectratio, title:^(Picture-in-Picture)$" + # Picture-in-Picture specific rules + "pin on, match:title Picture-in-Picture" + "keep_aspect_ratio on, match:title Picture-in-Picture" - # Games specific rules - "noblur, tag:games*" - "fullscreen, tag:games*" - ]; - }; - }; + # Games specific rules + "no_blur on, match:tag games*" + "fullscreen on, match:tag games*" + ]; } diff --git a/modules/home/xdg/desktop-entries.nix b/modules/home/xdg/desktop-entries.nix index a9ee96f..099a7bc 100644 --- a/modules/home/xdg/desktop-entries.nix +++ b/modules/home/xdg/desktop-entries.nix @@ -62,19 +62,12 @@ iconUrl = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/glance.png"; iconSha = "sha256-xyFlmPpt+DABoGX5oBqj/aQVdxtmNflat9Jb2BE7SOY="; } - { - name = "microsoftTeams"; - displayName = "Microsoft Teams"; - url = "https://teams.microsoft.com/v2/"; - iconUrl = "https://i.pinimg.com/236x/e6/b6/28/e6b628706696320cd0ede93f7053abd8.jpg"; - iconSha = "sha256-bZVmoWHeG8rycS8lj7LQaxFggXINjUx/7NWKPVhPTFw="; - } ]; in { options.xdgDesktopEntries = { enable = lib.mkEnableOption "PWA Apps"; entries = builtins.listToAttrs ( - builtins.map (app: { + map (app: { name = app.name; value = { enable = lib.mkEnableOption "Enable ${app.displayName} PWA";