dotfiles

My PC Dotfiles & Website
commit 4500ea39d07ed684e264318f14a1d81f458e0c3b
parent 89660c95a3e86ef21e3ff22c2e0e11521c2a0dee
Author: maydayv7 <maydayv7@gmail.com>
Date:   Fri, 24 May 2024 19:27:04 +0530

feat: Rework Hyprland Panel

+ Drop patched `nwg-dock`
+ Refactor Window minimize
+ Try (yet another) screen locking fix

Diffstat:

MREADME.md | 4++--
Mfiles/flake.nix | 14+++-----------
Rfiles/hyprland/nwg/drawer.css -> files/hyprland/drawer.css | 0
Mfiles/hyprland/kebihelp.json | 12++++++++++--
Dfiles/hyprland/nwg/dock.css | 32--------------------------------
Dfiles/hyprland/nwg/dropdown.svg | 50--------------------------------------------------
Mfiles/hyprland/pypr.toml | 8++++----
Mfiles/hyprland/waybar.css | 2+-
Mmodules/gui/desktop/hyprland/apps/bar.nix | 27+++++++++++++++++++++++++--
Mmodules/gui/desktop/hyprland/apps/default.nix | 31++++++-------------------------
Mmodules/gui/desktop/hyprland/apps/security.nix | 3++-
Mmodules/gui/desktop/hyprland/settings/keybindings.nix | 4+---
Apackages/hyprshellevents/default.nix | 36++++++++++++++++++++++++++++++++++++
Apackages/hyprshellevents/metadata.nix | 5+++++
Dpackages/nwg-dock/default.nix | 32--------------------------------
Dpackages/nwg-dock/metadata.nix | 8--------
Dpackages/nwg-dock/minimize.patch | 19-------------------
Mscripts/hyprutils.nix | 48++++++++++++++++++++++++++++++++----------------
18 files changed, 127 insertions(+), 208 deletions(-)

diff --git a/README.md b/README.md @@ -758,12 +758,12 @@ You can navigate to the `README`s present in the various directories to know mor <details> <summary><b>Known Limitations</b></summary> -- Home Configuration can't be decoupled from System +- Home Configuration isn't be decoupled from System - [Wine](./packages/wine) Applications have to be manually updated </details> -> Last Updated: **April** 2024 +> Last Updated: **May** 2024 If you like this project, consider leaving a [star](https://github.com/maydayv7/dotfiles) diff --git a/files/flake.nix b/files/flake.nix @@ -83,20 +83,12 @@ extension = ".json"; }; + # Application Drawer + drawer = readFile ./hyprland/drawer.css; + # Greeter Configuration greeter = readFile ./hyprland/greeter.conf; - # NWG Shell - nwg = - map.files { - directory = ./hyprland/nwg; - apply = readFile; - extension = ".css"; - } - // { - image = ./hyprland/nwg/dropdown.svg; - }; - # Pyprland pypr = readFile ./hyprland/pypr.toml; diff --git a/files/hyprland/nwg/drawer.css b/files/hyprland/drawer.css diff --git a/files/hyprland/kebihelp.json b/files/hyprland/kebihelp.json @@ -244,8 +244,12 @@ "label": "Show this page" }, { - "value": "$mod [SHIFT] A", - "label": "Application Drawer [Toggle top Panel]" + "value": "$mod A", + "label": "Application Drawer" + }, + { + "value": "$mod SHIFT A", + "label": "Toggle top Panel" }, { "value": "$mod SHIFT C", @@ -364,6 +368,10 @@ { "value": "Return or L'", "label": "Unminimize selected window" + }, + { + "value": "<ARROW>", + "label": "Focus window in desired direction" } ] } diff --git a/files/hyprland/nwg/dock.css b/files/hyprland/nwg/dock.css @@ -1,32 +0,0 @@ -/* nwg-dock Styling */ - -* { - border-radius: 10px; -} - -window { - background-color: transparent; -} - -#box { - padding: 0px; -} - -#active { - border-bottom: solid 1px; - border-color: rgba(255, 255, 255, 0.3); -} - -button, -image { - background: none; - border: none; -} - -button:hover { - background-color: rgba (255, 255, 255, 0.1); -} - -button:focus { - box-shadow: none; -} diff --git a/files/hyprland/nwg/dropdown.svg b/files/hyprland/nwg/dropdown.svg @@ -1,50 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - version="1.1" - id="svg1" - width="100" - height="100" - viewBox="0 0 500 500" - sodipodi:docname="grid.svg" - inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)" - inkscape:export-filename="grid.svg" - inkscape:export-xdpi="48" - inkscape:export-ydpi="48" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg"> - <defs - id="defs1" /> - <sodipodi:namedview - id="namedview1" - pagecolor="#505050" - bordercolor="#eeeeee" - borderopacity="1" - inkscape:showpageshadow="0" - inkscape:pageopacity="0" - inkscape:pagecheckerboard="0" - inkscape:deskcolor="#505050" - showgrid="false" - inkscape:zoom="1.616" - inkscape:cx="249.69059" - inkscape:cy="250" - inkscape:window-width="1906" - inkscape:window-height="1015" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="g1" /> - <g - inkscape:groupmode="layer" - inkscape:label="Image" - id="g1"> - <image - width="500" - height="500" - preserveAspectRatio="none" - xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ&#10;bWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp&#10;bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6&#10;eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEz&#10;NDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo&#10;dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw&#10;dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv&#10;IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS&#10;ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD&#10;cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNl&#10;SUQ9InhtcC5paWQ6OUZDMkJDOUUzODA3MTFFM0JGMERFNkYyRDkwQTcyN0QiIHhtcE1NOkRvY3Vt&#10;ZW50SUQ9InhtcC5kaWQ6OUZDMkJDOUYzODA3MTFFM0JGMERFNkYyRDkwQTcyN0QiPiA8eG1wTU06&#10;RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMzE5N0I4RDM4MDYxMUUzQkYw&#10;REU2RjJEOTBBNzI3RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMzE5N0I4RTM4MDYxMUUz&#10;QkYwREU2RjJEOTBBNzI3RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w&#10;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&#10;" - id="image1" /> - </g> -</svg> diff --git a/files/hyprland/pypr.toml b/files/hyprland/pypr.toml @@ -6,15 +6,15 @@ plugins = [ [scratchpads.term] animation = "fromTop" -command = "kitty --class yakuake" -class = "yakuake" +command = "kitty --class kitty-dropterm" +class = "kitty-dropterm" lazy = true size = "75% 60%" [scratchpads.clip] animation = "fromBottom" -command = "kitty --class clipse sh -c 'clipse -fc $PPID'" -class = "clipse" +command = "kitty --class kitty-clip sh -c 'clipse -fc $PPID'" +class = "kitty-clip" lazy = true size = "75% 65%" margin = 30 diff --git a/files/hyprland/waybar.css b/files/hyprland/waybar.css @@ -42,7 +42,7 @@ window#waybar { background-color: transparent; } -.modules-left #workspaces button.hosting-monitor { +.modules-left #workspaces button.hosting-monitor.visible { border: 2px solid @base04; } diff --git a/modules/gui/desktop/hyprland/apps/bar.nix b/modules/gui/desktop/hyprland/apps/bar.nix @@ -4,7 +4,9 @@ pkgs, files, ... -}: rec { +}: let + theme = import ../theme.nix pkgs; +in rec { ## Bar Configuration stylix.targets.waybar = { enable = true; @@ -58,6 +60,7 @@ "hyprland/window" ]; + modules-center = ["wlr/taskbar"]; modules-right = [ "group/menu" "bluetooth" @@ -99,11 +102,12 @@ "hyprland/workspaces" = { all-outputs = true; - show-special = false; + show-special = true; format = "{icon}"; on-scroll-up = "hyprctl dispatch workspace m+1"; on-scroll-down = "hyprctl dispatch workspace m-1"; persistent-workspaces."${sys.gui.display}" = 3; + ignore-workspaces = ["special:scratch_.*"]; format-icons = { default = ""; "1" = ""; @@ -117,6 +121,7 @@ "9" = ""; OVERVIEW = ""; special = ""; + "special:minimized" = ""; }; }; @@ -143,6 +148,24 @@ }; }; + "wlr/taskbar" = { + format = "{icon}"; + icon-size = 20; + all-outputs = false; + active-first = false; + icon-theme = theme.icons.name; + markup = true; + tooltip-format = "Name: <big><b>{name}</b></big> <i>{short_state}</i>\nTitle: <b>{title}</b>"; + on-click = "activate"; + on-click-middle = "fullscreen"; + on-click-right = "close"; + ignore-list = [ + "kitty-clip" + "kitty-dropterm" + "ulauncher" + ]; + }; + "group/menu" = { orientation = "horizontal"; modules = ["custom/dropdown" "keyboard-state" "tray"]; diff --git a/modules/gui/desktop/hyprland/apps/default.nix b/modules/gui/desktop/hyprland/apps/default.nix @@ -134,38 +134,23 @@ in { wayland.windowManager.hyprland.settings.exec-once = [ "dbus-update-activation-environment --systemd --all" + # Application Drawer + "nwg-drawer -r" + # Clipboard Manager "clipse -listen" # Desktop Icons "dicons" - # Application Drawer - "nwg-drawer -r" + # Minimized Windows + "hyprutils minimize" ]; # Utilities services.playerctld.enable = true; services.poweralertd.enable = true; - # Application Dock - systemd.user.services.nwg-dock = { - Unit.Description = "Application Dock"; - - Install = { - WantedBy = ["graphical-session.target"]; - Wants = ["graphical-session.target"]; - After = ["graphical-session.target"]; - }; - - Service = { - Type = "simple"; - ExecStart = "${getExe pkgs.custom.nwg-dock} -l 'overlay' -p 'top' -i 30 -w 9 -c 'hyprutils toggle minimized'"; - Restart = "on-failure"; - RestartSec = 1; - }; - }; - # Terminal programs.kitty = { enable = true; @@ -293,7 +278,7 @@ in { home.file = { # Application Drawer - ".config/nwg-drawer/drawer.css".text = hyprland.nwg.drawer; + ".config/nwg-drawer/drawer.css".text = hyprland.drawer; # Keybinds Viewer ".config/kebihelp.json".text = util.build.theme { @@ -302,10 +287,6 @@ in { file = hyprland.kebihelp; }; - # Application Dock - ".config/nwg-dock-hyprland/style.css".text = hyprland.nwg.dock; - ".local/share/nwg-dock-hyprland/images/grid.svg".source = hyprland.nwg.image; - # Browser ".mozilla/firefox/default/chrome/userChrome.css".text = '' #TabsToolbar { diff --git a/modules/gui/desktop/hyprland/apps/security.nix b/modules/gui/desktop/hyprland/apps/security.nix @@ -29,6 +29,7 @@ in { # Idle Daemon services.swayidle = { enable = true; + extraArgs = ["-w"]; systemdTarget = "hyprland-session.target"; events = let @@ -37,7 +38,7 @@ in { in [ { event = "before-sleep"; - command = lock (getExe locker); + command = lock "${getExe locker} -f"; } { event = "lock"; diff --git a/modules/gui/desktop/hyprland/settings/keybindings.nix b/modules/gui/desktop/hyprland/settings/keybindings.nix @@ -41,7 +41,7 @@ # Window Minimization "ALT, Q, movetoworkspacesilent, special:minimized" - "ALT SHIFT, Q, togglespecialworkspace, minimized" + "ALT SHIFT, Q, exec, hyprutils minimize show" # Cycle Workspaces "$mod, comma, split:workspace, m-1" @@ -149,9 +149,7 @@ submap = reset # Window Minimization - bind = ALT SHIFT, Q, submap, Minimized submap = Minimized - bind = , F4, killactive bind = , left, movefocus, l bind = , right, movefocus, r bind = , up, movefocus, u diff --git a/packages/hyprshellevents/default.nix b/packages/hyprshellevents/default.nix @@ -0,0 +1,36 @@ +{ + lib, + pkgs, + ... +}: +with pkgs; let + metadata = import ./metadata.nix; +in + stdenvNoCC.mkDerivation (final: { + pname = "hyprshellevents"; + version = metadata.rev; + sourceRoot = "${final.src.name}/shellevents"; + + src = fetchFromGitHub { + owner = "hyprwm"; + repo = "contrib"; + inherit (metadata) rev sha256; + }; + + buildInputs = [bash]; + makeFlags = ["PREFIX=$(out)"]; + nativeBuildInputs = [makeWrapper]; + postInstall = '' + wrapProgram $out/bin/shellevents --prefix PATH ':' \ + "${lib.makeBinPath [coreutils hyprland]}" + ''; + + meta = with lib; { + mainProgram = "shellevents"; + description = "Run shell scripts in response to Hyprland events"; + homepage = metadata.repo; + license = licenses.mit; + platforms = platforms.unix; + maintainers = ["maydayv7"]; + }; + }) diff --git a/packages/hyprshellevents/metadata.nix b/packages/hyprshellevents/metadata.nix @@ -0,0 +1,5 @@ +{ + repo = "https://github.com/hyprwm/contrib"; + rev = "33b38358559054d316eb605ccb733980dfa7dc63"; + sha256 = "sha256-y+LOXuSRMfkR2Vfwl5K2NVrszi1h5MJpML+msLnVS8U="; +} diff --git a/packages/nwg-dock/default.nix b/packages/nwg-dock/default.nix @@ -1,32 +0,0 @@ -{ - lib, - pkgs, - ... -}: -with pkgs; let - metadata = import ./metadata.nix; -in - unstable.buildGoModule rec { - pname = "nwg-dock-hyprland"; - version = metadata.rev; - - inherit (metadata) vendorHash; - src = fetchFromGitHub { - owner = "nwg-piotr"; - repo = pname; - inherit (metadata) rev sha256; - }; - - ldflags = ["-s" "-w"]; - patches = [./minimize.patch]; - buildInputs = [gtk-layer-shell]; - nativeBuildInputs = [pkg-config wrapGAppsHook]; - - meta = with lib; { - description = "Modified 'nwg-dock' for Hyprland"; - homepage = metadata.repo; - license = licenses.mit; - platforms = platforms.linux; - maintainers = ["maydayv7"]; - }; - } diff --git a/packages/nwg-dock/metadata.nix b/packages/nwg-dock/metadata.nix @@ -1,8 +0,0 @@ -{ - repo = "https://github.com/nwg-piotr/nwg-dock-hyprland"; - branch = "master"; - release = true; - rev = "v0.1.9"; - sha256 = "sha256-pzOdWv98tHZg6Xn58z5DlM1H0IOQ+ohfXEZRLZr8mz0="; - vendorHash = "sha256-bK3SpydIO943e7zti6yWQ+JqmdF4NkAAtelNBt4Q/+s="; -} diff --git a/packages/nwg-dock/minimize.patch b/packages/nwg-dock/minimize.patch @@ -1,19 +0,0 @@ -diff --git a/tools.go b/tools.go -index 6aae64c..9bd7612 100644 ---- a/tools.go -+++ b/tools.go -@@ -277,6 +277,14 @@ func clientMenuContext(class string, instances []client) gtk.Menu { - log.Debugf("%s -> %s", cmd, reply) - }) - -+ subitem, _ = gtk.MenuItemNewWithLabel("minimize") -+ submenu.Append(subitem) -+ subitem.Connect("activate", func() { -+ cmd := fmt.Sprintf("dispatch movetoworkspacesilent special:minimized,address:%s", a) -+ reply, _ := hyprctl(cmd) -+ log.Debugf("%s -> %s", cmd, reply) -+ }) -+ - subitem, _ = gtk.MenuItemNewWithLabel("fullscreen") - submenu.Append(subitem) - subitem.Connect("activate", func() { diff --git a/scripts/hyprutils.nix b/scripts/hyprutils.nix @@ -15,17 +15,28 @@ brightness [up,down] - Screen Brightness Controls volume [up,down,mute] - Volume Controls media [next,previous,toggle] - Media Controls + minimize [show] - Show Minimized windows zoom [in,out] - Screen Zoom toggle  fancy - Toggle Compositor Effects float - Toggle window floating in current workspace idle - Toggle Idle Daemon service media - Persist and toggle audio playing state - minimized - Show Minimized windows monitor - Toggle specified Monitor panel - Toggle top Panel shader - Toggle Compositor Shader ''; + + minimize = builtins.toFile "minimize.sh" '' + event_activespecial() { + case "$WORKSPACENAME" in + special:minimized*) + hyprctl dispatch submap reset + hyprctl dispatch submap Minimized + ;; + esac + } + ''; in recursiveUpdate { meta = { @@ -38,11 +49,11 @@ in } (pkgs.writeShellApplication { name = "hyprutils"; runtimeInputs = with pkgs; [ - custom.nwg-dock dunst gnome.zenity hyprshade hyprworld.hyprland + custom.hyprshellevents swayidle waybar @@ -52,6 +63,7 @@ in gnugrep libnotify playerctl + socat systemd wget ]; @@ -186,6 +198,24 @@ in *) error "Unexpected Option 'media $2'" "Try 'hyprutils help' for more information" ;; esac ;; + "minimize") + case "$2" in + "show") + if hyprctl workspaces | grep "special:minimized" + then + hyprctl dispatch workspace special:minimized + else + hyprctl notify 1 2000 0 "No minimized windows present" + fi + ;; + "") + info "Monitoring workspace 'special:minimized' activation..." + socat -u UNIX-CONNECT:/tmp/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock \ + EXEC:"shellevents ${minimize}",nofork + ;; + *) error "Unexpected Option 'minimize $2'" "Try 'hyprutils help' for more information" ;; + esac + ;; "zoom") ZOOM=$(hyprctl getoption misc:cursor_zoom_factor | grep float | awk '{print $2}') case "$2" in @@ -257,18 +287,6 @@ in playerctl pause -a fi ;; - "minimized") - if hyprctl workspaces | grep "special:minimized" - then - hyprctl --batch "\ - dispatch submap reset;\ - dispatch workspace special:minimized;\ - dispatch submap minimized" - exit - else - hyprctl notify 1 2000 0 "No minimized windows present" - fi - ;; "monitor") if hyprctl monitors | grep "$3" then @@ -281,10 +299,8 @@ in if systemctl --user is-active waybar then systemctl --user stop waybar - systemctl --user stop nwg-dock else systemctl --user start waybar - systemctl --user start nwg-dock fi ;; "shader")