initial commit
This commit is contained in:
commit
90cff4f16a
59 changed files with 6855 additions and 0 deletions
100
Suckless/dwm/dwm.nix
Normal file
100
Suckless/dwm/dwm.nix
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
# dwm window manager configuration
|
||||
#
|
||||
# =============================================================================
|
||||
# Patch Development Notes
|
||||
# =============================================================================
|
||||
#
|
||||
# Base: dwm 6.6 (matches nixpkgs)
|
||||
# Clone: ~/NixOS/dwm
|
||||
#
|
||||
# Clean & Build Commands:
|
||||
# cd ~/NixOS/dwm
|
||||
# git reset --hard 6.6
|
||||
# rm -f config.h drw.o dwm dwm.o util.o
|
||||
# nix-shell -p xorg.libX11 xorg.libXft xorg.libXinerama xorg.libXcursor pkg-config gnumake gcc
|
||||
# make clean && make
|
||||
#
|
||||
# Generate patch after all patches applied:
|
||||
# git diff 6.6 > ~/NixOS/Suckless/dwm/dwm-lebowski.patch
|
||||
#
|
||||
# =============================================================================
|
||||
# Patches (apply in order):
|
||||
# =============================================================================
|
||||
#
|
||||
# 1. pertag - Per-tag layouts (applied separately, then tab)
|
||||
# 2. tab - Tabbed monocle bar
|
||||
# 3. fullgaps - Simple gaps between windows
|
||||
# 4. holdbar-modkey - Show bar while holding mod key
|
||||
# 5. hide_vacant_tags - Only show occupied tags
|
||||
# 6. bardwmlogo - DWM logo in bar
|
||||
# 7. cursorwarp - Cursor follows focus
|
||||
# 8. alwayscenter - Float windows spawn centered
|
||||
# 9. swapmonitors - Swap tagsets between monitors
|
||||
# 10. adjacenttag - Navigate tags with arrows (skipvacant)
|
||||
# 11. accessnthmonitor - Focus/send to specific monitor by number
|
||||
# 12. dwmfifo - Control dwm via named pipe
|
||||
# 13. xcursor - Use system Xcursor theme (Stylix)
|
||||
# 14. actualfullscreen
|
||||
#
|
||||
# Custom additions:
|
||||
# - def_layouts array for per-tag default layouts
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
appearance = import ./appearance.nix { inherit config lib; };
|
||||
tags = import ./tags.nix { inherit lib; };
|
||||
rules = import ./rules.nix { inherit lib; };
|
||||
layouts = import ./layouts.nix { inherit lib; };
|
||||
keybindings = import ./keybindings.nix { inherit lib; };
|
||||
api = import ./api.nix { inherit lib; };
|
||||
|
||||
configDefH = ''
|
||||
${appearance.config}
|
||||
|
||||
${tags.config}
|
||||
|
||||
${rules.config}
|
||||
|
||||
${layouts.config}
|
||||
|
||||
${keybindings.config}
|
||||
|
||||
${api.config}
|
||||
'';
|
||||
in
|
||||
{
|
||||
services.xserver.windowManager.dwm = {
|
||||
enable = true;
|
||||
package =
|
||||
(pkgs.dwm.override {
|
||||
conf = configDefH;
|
||||
}).overrideAttrs
|
||||
(old: {
|
||||
patches = [ ./dwm-lebowski.patch ];
|
||||
buildInputs = old.buildInputs ++ [ pkgs.xorg.libXcursor ];
|
||||
});
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
(pkgs.writeShellScriptBin "vieworspawn" ''
|
||||
mon=$1; tag=$2; class=$3; shift 3
|
||||
# Focus monitor if multi-monitor setup (0=secondary, 1=primary)
|
||||
if [[ $(${pkgs.autorandr}/bin/autorandr --detected) != "mobile" ]]; then
|
||||
[[ "$mon" == "0" ]] && echo "mon-sec" > /tmp/dwm.fifo || echo "mon-prim" > /tmp/dwm.fifo
|
||||
fi
|
||||
echo "view $tag" > /tmp/dwm.fifo
|
||||
sleep 0.02
|
||||
if ! ${pkgs.xdotool}/bin/xdotool search --class "$class" >/dev/null 2>&1; then
|
||||
exec "$@"
|
||||
fi
|
||||
'')
|
||||
];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue