From 20dc12f9462ff932c6df9f31d4f59e0fc598eb0a Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 15 Aug 2013 12:10:41 +0200 Subject: i3: Do workspace assignment based on machine. For example on dnyarri I only have the browser running on workspace 1 and the XMPP client is running on another machine. These names are now generated from a list of workspace names according to the respective machine name. Signed-off-by: aszlig --- cfgfiles/i3.conf | 60 ++++++++++++++++++++++++++++---------------------------- common.nix | 17 ++++++++++++++-- 2 files changed, 45 insertions(+), 32 deletions(-) diff --git a/cfgfiles/i3.conf b/cfgfiles/i3.conf index 836f4235..9f2d6728 100644 --- a/cfgfiles/i3.conf +++ b/cfgfiles/i3.conf @@ -70,28 +70,28 @@ bindsym $mod+a focus parent bindsym $mod+semicolon focus child # switch to workspace -bindsym $mod+1 workspace "1: xmpp" -bindsym $mod+2 workspace "2" -bindsym $mod+3 workspace "3: chromium" -bindsym $mod+4 workspace "4" -bindsym $mod+5 workspace "5" -bindsym $mod+6 workspace "6" -bindsym $mod+7 workspace "7" -bindsym $mod+8 workspace "8" -bindsym $mod+9 workspace "9" -bindsym $mod+0 workspace "10" +bindsym $mod+1 workspace "@ws1@" +bindsym $mod+2 workspace "@ws2@" +bindsym $mod+3 workspace "@ws3@" +bindsym $mod+4 workspace "@ws4@" +bindsym $mod+5 workspace "@ws5@" +bindsym $mod+6 workspace "@ws6@" +bindsym $mod+7 workspace "@ws7@" +bindsym $mod+8 workspace "@ws8@" +bindsym $mod+9 workspace "@ws9@" +bindsym $mod+0 workspace "@ws10@" # move focused container to workspace -bindsym $mod+Shift+exclam move workspace "1: xmpp" -bindsym $mod+Shift+at move workspace "2" -bindsym $mod+Shift+numbersign move workspace "3: chromium" -bindsym $mod+Shift+dollar move workspace "4" -bindsym $mod+Shift+percent move workspace "5" -bindsym $mod+Shift+asciicircum move workspace "6" -bindsym $mod+Shift+ampersand move workspace "7" -bindsym $mod+Shift+asterisk move workspace "8" -bindsym $mod+Shift+parenleft move workspace "9" -bindsym $mod+Shift+parenright move workspace "10" +bindsym $mod+Shift+exclam move workspace "@ws1@" +bindsym $mod+Shift+at move workspace "@ws2@" +bindsym $mod+Shift+numbersign move workspace "@ws3@" +bindsym $mod+Shift+dollar move workspace "@ws4@" +bindsym $mod+Shift+percent move workspace "@ws5@" +bindsym $mod+Shift+asciicircum move workspace "@ws6@" +bindsym $mod+Shift+ampersand move workspace "@ws7@" +bindsym $mod+Shift+asterisk move workspace "@ws8@" +bindsym $mod+Shift+parenleft move workspace "@ws9@" +bindsym $mod+Shift+parenright move workspace "@ws10@" # reload the configuration file bindsym $mod+Shift+L reload @@ -134,16 +134,16 @@ mode "resize" { bindsym $mod+r mode "resize" # workspace assignments -workspace "1: xmpp" output @leftHead@ -workspace "2" output @leftHead@ -workspace "3: chromium" output @leftHead@ -workspace "4" output @leftHead@ -workspace "5" output @leftHead@ -workspace "6" output @rightHead@ -workspace "7" output @rightHead@ -workspace "8" output @rightHead@ -workspace "9" output @rightHead@ -workspace "10" output @rightHead@ +workspace "@ws1@" output @leftHead@ +workspace "@ws2@" output @leftHead@ +workspace "@ws3@" output @leftHead@ +workspace "@ws4@" output @leftHead@ +workspace "@ws5@" output @leftHead@ +workspace "@ws6@" output @rightHead@ +workspace "@ws7@" output @rightHead@ +workspace "@ws8@" output @rightHead@ +workspace "@ws9@" output @rightHead@ +workspace "@ws10@" output @rightHead@ # default applications assign [class="^Tkabber$"] 1: tkabber diff --git a/common.nix b/common.nix index 36ffa716..03d45c11 100644 --- a/common.nix +++ b/common.nix @@ -111,7 +111,7 @@ default = "i3"; i3.enable = true; - i3.configFile = with pkgs.lib; pkgs.substituteAll { + i3.configFile = with pkgs.lib; pkgs.substituteAll ({ name = "i3.conf"; src = ./cfgfiles/i3.conf; @@ -135,7 +135,20 @@ use_spacer left TEXT ''; - }; + } // (let + wsConfig = if config.networking.hostName == "mmrnmhrm" + then [ "XMPP" null "chromium" null null + null null null null null ] + else [ "chromium" null null null null + null null null null null ]; + + mkWsName = num: name: let + mkPair = nameValuePair "ws${toString num}"; + in if name == null + then mkPair (toString num) + else mkPair "${toString num}: ${name}"; + + in listToAttrs (imap mkWsName wsConfig))); }; desktopManager.default = "none"; -- cgit 1.4.1