about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGriffin Smith <root@gws.fyi>2020-04-05T19·26-0400
committerGriffin Smith <root@gws.fyi>2020-04-05T19·26-0400
commita566e0208f2134e69e4550d1c05fc49d2b3c6efd (patch)
treefb94ff16e6a9d7b902e929c517686ec60288cb23
parent07d4cf66eb1ae4972764debfeb824c50fbdc6e21 (diff)
Swap caps+escape and alt+super
only on chupacabra laptop keyboard
-rw-r--r--home/machines/chupacabra.nix28
-rw-r--r--system/machines/bumblebee.nix2
-rw-r--r--system/modules/xserver.nix1
3 files changed, 28 insertions, 3 deletions
diff --git a/home/machines/chupacabra.nix b/home/machines/chupacabra.nix
index 714348e3f174..c0d1fce431fb 100644
--- a/home/machines/chupacabra.nix
+++ b/home/machines/chupacabra.nix
@@ -1,7 +1,31 @@
-{ ... }:
-{
+{ pkgs, ... }:
+let
+  laptopKeyboardId = "25";
+in {
   system.machine = {
     wirelessInterface = "wlp59s0";
     i3FontSize = 9;
   };
+
+  systemd.user.services.laptop-keyboard = {
+    Unit = {
+      Description = "Swap caps+escape and alt+super, but only on the built-in laptop keyboard";
+      After = [ "graphical-session-pre.target" ];
+      PartOf = [ "graphical-session.target" ];
+    };
+
+    Install = { WantedBy = [ "graphical-session.target" ]; };
+
+    Service = {
+      Type = "oneshot";
+      RemainAfterExit = true;
+      ExecStart = (
+        "${pkgs.xorg.setxkbmap}/bin/setxkbmap "
+          + "-device ${laptopKeyboardId} "
+          + "-option caps:swapescape "
+          + "-option compose:ralt "
+          + "-option altwin:swap_alt_win"
+      );
+    };
+  };
 }
diff --git a/system/machines/bumblebee.nix b/system/machines/bumblebee.nix
index a1cd3ffa143d..0fec21409255 100644
--- a/system/machines/bumblebee.nix
+++ b/system/machines/bumblebee.nix
@@ -18,4 +18,6 @@
     action = "hibernate";
     thresholdPercentage = 5;
   };
+
+  services.xserver.xkbOptions = "caps:swapescape";
 }
diff --git a/system/modules/xserver.nix b/system/modules/xserver.nix
index 52f04e2e6a69..2638f075249c 100644
--- a/system/modules/xserver.nix
+++ b/system/modules/xserver.nix
@@ -4,7 +4,6 @@
   services.xserver = {
     enable = true;
     layout = "us";
-    xkbOptions = "caps:swapescape";
 
     libinput.enable = true;