diff --git a/user/app/browser/qutebrowser.nix b/user/app/browser/qutebrowser.nix index 645542f..cf19f13 100644 --- a/user/app/browser/qutebrowser.nix +++ b/user/app/browser/qutebrowser.nix @@ -123,6 +123,7 @@ in programs.qutebrowser.enable = true; programs.qutebrowser.extraConfig = '' +config.set('qt.args',['ignore-gpu-blacklist','enable-gpu-rasterization','enable-native-gpu-memory-buffers','num-raster-threads=4']) config.load_autoconfig(False) base00 = "#''+config.lib.stylix.colors.base00+''" diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 83a0395..9e5e890 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -43,10 +43,10 @@ exec-once = GOMAXPROCS=1 syncthing --no-browser exec-once = protonmail-bridge --noninteractive exec-once = waybar + exec-once = nwg-dock-hyprland -r -f -x -i 64 -nolauncher -a start -ml 8 -mr 8 -mb 8 && nwg-dock-hyprland exec-once = emacs --daemon exec-once = hypridle - exec-once = hyprdim -d 450 -s 0.25 -D 0.25 -p exec-once = obs-notification-mute-daemon exec = ~/.swaybg-stylix @@ -110,6 +110,7 @@ bind=SUPERSHIFT,T,exec,screenshot-ocr bind=CTRLALT,Delete,exec,hyprctl kill bind=SUPERSHIFT,K,exec,hyprctl kill + bind=SUPER,SUPER_L,exec,nwg-dock-hyprland bind = SUPER,R,pass,^(com\.obsproject\.Studio)$ bind = SUPERSHIFT,R,pass,^(com\.obsproject\.Studio)$ @@ -247,6 +248,9 @@ blurls = waybar layerrule = blur,launcher # fuzzel blurls = launcher # fuzzel + layerrule = blur,gtk-layer-shell + layerrule = xray,gtk-layer-shell + blurls = gtk-layer-shell bind=SUPER,code:21,exec,pypr zoom bind=SUPER,code:21,exec,hyprctl reload @@ -316,6 +320,9 @@ feh killall polkit_gnome + (nwg-dock-hyprland.overrideAttrs (oldAttrs: { + patches = ./patches/noactiveclients.patch; + })) libva-utils gsettings-desktop-schemas (pyprland.overrideAttrs (oldAttrs: { @@ -326,6 +333,27 @@ hash = "sha256-S1bIIazrBWyjF8tOcIk0AwwWq9gbpTKNsjr9iYA5lKk="; }; })) + (hyprnome.override (oldAttrs: { + rustPlatform = oldAttrs.rustPlatform // { + buildRustPackage = args: oldAttrs.rustPlatform.buildRustPackage (args // { + pname = "hyprnome"; + version = "unstable-2024-05-06"; + src = fetchFromGitHub { + owner = "donovanglover"; + repo = "hyprnome"; + rev = "f185e6dbd7cfcb3ecc11471fab7d2be374bd5b28"; + hash = "sha256-tmko/bnGdYOMTIGljJ6T8d76NPLkHAfae6P6G2Aa2Qo="; + }; + cargoDeps = oldAttrs.cargoDeps.overrideAttrs (oldAttrs: rec { + name = "${pname}-vendor.tar.gz"; + inherit src; + outputHash = "sha256-cQwAGNKTfJTnXDI3IMJQ2583NEIZE7GScW7TsgnKrKs="; + }); + cargoHash = "sha256-cQwAGNKTfJTnXDI3IMJQ2583NEIZE7GScW7TsgnKrKs="; + }); + }; + }) + ) gnome.zenity wlr-randr wtype @@ -335,8 +363,6 @@ hyprpicker hypridle hyprlock - hyprnome - hyprdim swaybg fnott fuzzel @@ -381,10 +407,8 @@ if pgrep -x .obs-wrapped > /dev/null; then pkill -STOP fnott; - #emacsclient --eval "(org-yaap-mode 0)"; else pkill -CONT fnott; - #emacsclient --eval "(if (not org-yaap-mode) (org-yaap-mode 1))"; fi sleep 10; done @@ -394,7 +418,70 @@ if pgrep -x nixos-rebuild > /dev/null || pgrep -x home-manager > /dev/null || pgrep -x kdenlive > /dev/null || pgrep -x FL64.exe > /dev/null || pgrep -x blender > /dev/null || pgrep -x flatpak > /dev/null; then echo "Shouldn't suspend"; sleep 10; else echo "Should suspend"; systemctl suspend; fi '') + (pkgs.makeDesktopItem { + name = "emacsclientnewframe"; + desktopName = "Emacs Client New Frame"; + exec = "emacsclient -c -a emacs"; + terminal = false; + icon = "emacs"; + type = "Application"; + }) ]; + home.file.".config/nwg-dock-hyprland/style.css".text = '' + window { + background: rgba(''+config.lib.stylix.colors.base00-rgb-r+'',''+config.lib.stylix.colors.base00-rgb-g+'',''+config.lib.stylix.colors.base00-rgb-b+'',0.0); + border-radius: 20px; + padding: 4px; + margin-left: 4px; + margin-right: 4px; + border-style: none; + } + + #box { + /* Define attributes of the box surrounding icons here */ + padding: 10px; + background: rgba(''+config.lib.stylix.colors.base00-rgb-r+'',''+config.lib.stylix.colors.base00-rgb-g+'',''+config.lib.stylix.colors.base00-rgb-b+'',0.55); + border-radius: 20px; + padding: 4px; + margin-left: 4px; + margin-right: 4px; + border-style: none; + } + button { + border-radius: 10px; + padding: 4px; + margin-left: 4px; + margin-right: 4px; + background: rgba(''+config.lib.stylix.colors.base03-rgb-r+'',''+config.lib.stylix.colors.base03-rgb-g+'',''+config.lib.stylix.colors.base03-rgb-b+'',0.55); + color: #''+config.lib.stylix.colors.base07+''; + font-size: 12px + } + + button:hover { + background: rgba(''+config.lib.stylix.colors.base04-rgb-r+'',''+config.lib.stylix.colors.base04-rgb-g+'',''+config.lib.stylix.colors.base04-rgb-b+'',0.55); + } + + ''; + home.file.".config/nwg-dock-pinned".text = '' + Alacritty + emacsclientnewframe + qutebrowser + brave-browser + librewolf + writer + impress + calc + draw + krita + pinta + xournalpp + obs + kdenlive + blender + openscad + Cura + virt-manager + ''; home.file.".config/hypr/hypridle.conf".text = '' general { lock_cmd = pgrep hyprlock || hyprlock diff --git a/user/wm/hyprland/patches/noactiveclients.patch b/user/wm/hyprland/patches/noactiveclients.patch new file mode 100644 index 0000000..8f8c458 --- /dev/null +++ b/user/wm/hyprland/patches/noactiveclients.patch @@ -0,0 +1,51 @@ +diff --git a/main.go b/main.go +index 0c980c9..4e6dfbf 100644 +--- a/main.go ++++ b/main.go +@@ -103,11 +103,6 @@ func buildMainBox(vbox *gtk.Box) { + allItems = append(allItems, cntPin) + } + } +- for _, cntTask := range clients { +- if !isIn(allItems, cntTask.Class) && !strings.Contains(*launcherCmd, cntTask.Class) && cntTask.Class != "" { +- allItems = append(allItems, cntTask.Class) +- } +- } + + divider := 1 + if len(allItems) > 0 { +@@ -155,34 +150,6 @@ func buildMainBox(vbox *gtk.Box) { + } + + alreadyAdded = nil +- for _, t := range clients { +- // For some time after killing a client, it's still being returned by 'j/clients', however w/o the Class value. +- // Let's filter the ghosts out. +- if !inPinned(t.Class) && t.Class != "" { +- instances := taskInstances(t.Class) +- if len(instances) == 1 { +- button := taskButton(t, instances) +- mainBox.PackStart(button, false, false, 0) +- if t.Class == activeClient.Class && !*autohide { +- button.SetProperty("name", "active") +- } else { +- button.SetProperty("name", "") +- } +- } else if !isIn(alreadyAdded, t.Class) { +- button := taskButton(t, instances) +- mainBox.PackStart(button, false, false, 0) +- if t.Class == activeClient.Class && !*autohide { +- button.SetProperty("name", "active") +- } else { +- button.SetProperty("name", "") +- } +- alreadyAdded = append(alreadyAdded, t.Class) +- clientMenu(t.Class, instances) +- } else { +- continue +- } +- } +- } + + if !*noLauncher && *launcherCmd != "" { + button, _ := gtk.ButtonNew()