commit 06c4331318d38e936051d45bd6f9f4e2cef18ccf
parent bc7968ae42989254dc16068ea4813d313ef50821
Author: Silas Brack <silasbrack@gmail.com>
Date: Wed, 20 May 2026 22:15:55 +0200
feat: dwl improvements
Diffstat:
2 files changed, 62 insertions(+), 25 deletions(-)
diff --git a/hosts/gaia/configuration.nix b/hosts/gaia/configuration.nix
@@ -74,12 +74,32 @@
};
services.displayManager.ly.enable = true;
- programs.dwl = {
- enable = true;
- package = (pkgs.dwl.override {
- configH = ./dwl_config.h;
- });
- };
+ programs.dwl =
+ let
+ dwl-autostart = pkgs.writeShellScript "dwl-autostart" ''
+ ${pkgs.wl-clipboard}/bin/wl-paste --type text --watch ${pkgs.cliphist}/bin/cliphist store &
+ ${pkgs.wl-clipboard}/bin/wl-paste --type image --watch ${pkgs.cliphist}/bin/cliphist store &
+ # add other startup bits here: bar, wallpaper, notification daemon, etc.
+ '';
+
+ dwl-wrapped = pkgs.symlinkJoin {
+ name = "dwl";
+ paths = [
+ (pkgs.dwl.override {
+ configH = ./dwl_config.h;
+ })
+ ];
+ nativeBuildInputs = [ pkgs.makeWrapper ];
+ postBuild = ''
+ wrapProgram $out/bin/dwl \
+ --add-flags "-s ${dwl-autostart}"
+ '';
+ };
+ in
+ {
+ enable = true;
+ package = dwl-wrapped;
+ };
services.pulseaudio.enable = false;
security.rtkit.enable = true;
@@ -109,7 +129,7 @@
subpixel.rgba = "rgb";
defaultFonts = {
sansSerif = [ "IBM Plex Sans" ];
- serif = [ "Merriweather" ];
+ serif = [ "Merriweather" ];
monospace = [ "JetBrains Mono" ];
};
confPackages = [
@@ -148,6 +168,7 @@
universal-ctags
#
wmenu
+ wtype
wl-clipboard
cliphist
grim
@@ -155,10 +176,12 @@
];
nixpkgs.config.allowUnsupportedSystem = true;
- nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
- # "claude-code"
- "spotify"
- ];
+ nixpkgs.config.allowUnfreePredicate =
+ pkg:
+ builtins.elem (lib.getName pkg) [
+ # "claude-code"
+ "spotify"
+ ];
users.users.silas = {
isNormalUser = true;
description = "Silas Brack";
@@ -171,7 +194,7 @@
"jackaudio"
];
openssh.authorizedKeys.keys = [
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDdP3Rvuv/pjQ/7akONRmId3zx7RE5Wqz+0V6eHy+KlE silasbrack@gmail.com"
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDdP3Rvuv/pjQ/7akONRmId3zx7RE5Wqz+0V6eHy+KlE silasbrack@gmail.com"
];
packages = with pkgs; [
# anki
@@ -358,14 +381,14 @@
regular6 = "005e8b";
regular7 = "dfd5cf";
- bright0 = "595959";
- bright1 = "d00000";
- bright2 = "008900";
- bright3 = "808000";
- bright4 = "0000ff";
- bright5 = "dd22dd";
- bright6 = "0000ff";
- bright7 = "9f9690";
+ bright0 = "595959";
+ bright1 = "d00000";
+ bright2 = "008900";
+ bright3 = "808000";
+ bright4 = "0000ff";
+ bright5 = "dd22dd";
+ bright6 = "0000ff";
+ bright7 = "9f9690";
};
};
};
@@ -385,9 +408,9 @@
programs.firefox = {
enable = true;
- package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {});
+ package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true; }) { });
preferences = {
- "privacy.resistFingerprinting" = true;
+ "privacy.resistFingerprinting" = true;
"browser.urlbar.quicksuggest.online.enabled" = false;
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
"browser.ml.chat.enabled" = false;
@@ -410,7 +433,13 @@
Default = "Kagi";
# Remove built-ins you don't want
- Remove = [ "Google" "Bing" "eBay" "DuckDuckGo" "Perplexity" ];
+ Remove = [
+ "Google"
+ "Bing"
+ "eBay"
+ "DuckDuckGo"
+ "Perplexity"
+ ];
# Add custom engines
Add = [
@@ -430,8 +459,10 @@
services.openssh.enable = true;
programs.ssh.knownHosts = {
- "git.fnarglebeast.com".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEOKImx9KgmG+/ggpuS2z/hXkWu3TgT/xK9fI18tPOI1";
- "github.com".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl";
+ "git.fnarglebeast.com".publicKey =
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEOKImx9KgmG+/ggpuS2z/hXkWu3TgT/xK9fI18tPOI1";
+ "github.com".publicKey =
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl";
};
services.local.wireguard-client = {
diff --git a/hosts/gaia/dwl_config.h b/hosts/gaia/dwl_config.h
@@ -115,6 +115,11 @@ static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TA
/* commands */
static const char *termcmd[] = { "foot", NULL };
static const char *menucmd[] = { "wmenu-run", NULL };
+static const char *clipcmd[] = {
+ "sh", "-c",
+ "cliphist list | wmenu | cliphist decode | wl-copy && wtype -M ctrl -M shift v",
+ NULL
+};
static const Key keys[] = {
/* Note that Shift changes certain key codes: 2 -> at, etc. */
@@ -152,6 +157,7 @@ static const Key keys[] = {
TAGKEYS( XKB_KEY_8, XKB_KEY_asterisk, 7),
TAGKEYS( XKB_KEY_9, XKB_KEY_parenleft, 8),
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Q, killclient, {0} },
+ { MODKEY, XKB_KEY_v, spawn, {.v = clipcmd} },
/* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */
{ WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} },