summaryrefslogtreecommitdiff
path: root/modules/home-manager/personal/gui/x/i3
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home-manager/personal/gui/x/i3')
-rw-r--r--modules/home-manager/personal/gui/x/i3/bar/default.nix25
-rw-r--r--modules/home-manager/personal/gui/x/i3/default.nix70
-rw-r--r--modules/home-manager/personal/gui/x/i3/keybindings.nix36
-rw-r--r--modules/home-manager/personal/gui/x/i3/startup.nix35
4 files changed, 87 insertions, 79 deletions
diff --git a/modules/home-manager/personal/gui/x/i3/bar/default.nix b/modules/home-manager/personal/gui/x/i3/bar/default.nix
index a6d910f..132e850 100644
--- a/modules/home-manager/personal/gui/x/i3/bar/default.nix
+++ b/modules/home-manager/personal/gui/x/i3/bar/default.nix
@@ -3,26 +3,29 @@
lib,
pkgs,
...
-}: let
- statusPackage =
- pkgs.personal.barista.override {i3statusGo = ./i3status.go;};
-in {
+}:
+let
+ statusPackage = pkgs.personal.barista.override { i3statusGo = ./i3status.go; };
+in
+{
xsession.windowManager.i3.config.bars = [
- ({
+ (
+ {
statusCommand = "${statusPackage}/bin/i3status";
}
- // (config.lib.stylix.i3.targets.i3.exportedBarConfig or {colors.background = "#111111";})
+ // (config.lib.stylix.i3.targets.i3.exportedBarConfig or { colors.background = "#111111"; })
// {
fonts = {
- names = ["roboto"];
+ names = [ "roboto" ];
size = 11.0;
};
- })
+ }
+ )
];
- home.packages = with pkgs;
- lib.optionals
- (config.xsession.enable && config.xsession.windowManager.i3.enable) [
+ home.packages =
+ with pkgs;
+ lib.optionals (config.xsession.enable && config.xsession.windowManager.i3.enable) [
material-design-icons
roboto
];
diff --git a/modules/home-manager/personal/gui/x/i3/default.nix b/modules/home-manager/personal/gui/x/i3/default.nix
index 17019cb..483a0d4 100644
--- a/modules/home-manager/personal/gui/x/i3/default.nix
+++ b/modules/home-manager/personal/gui/x/i3/default.nix
@@ -3,18 +3,21 @@
lib,
pkgs,
...
-} @ extraArgs: let
+}@extraArgs:
+let
cfg = config.personal.x.i3;
-in {
- imports = [./bar ./keybindings.nix ./startup.nix];
+in
+{
+ imports = [
+ ./bar
+ ./keybindings.nix
+ ./startup.nix
+ ];
options.personal.x.i3 = {
- enable =
- lib.mkEnableOption "i3"
- // {
- default =
- extraArgs.osConfig.services.xserver.windowManager.i3.enable or false;
- };
+ enable = lib.mkEnableOption "i3" // {
+ default = extraArgs.osConfig.services.xserver.windowManager.i3.enable or false;
+ };
};
config = lib.mkIf cfg.enable {
@@ -24,27 +27,30 @@ in {
config = {
assigns =
- lib.optionalAttrs (config.personal.profiles.multimedia
- && (extraArgs.osConfig.programs.steam.enable or true)) {
- "8: multimedia" = [
- {class = "^Steam$";}
- {title = "Netflix";}
- {title = "MUBI";}
- {title = "Deezer";}
- ];
- }
- // lib.optionalAttrs config.personal.profiles.social {
- "9: social" =
- [{class = "^Mail$";} {class = "^thunderbird$";}]
- ++ lib.optionals config.personal.identities.personal [
- {class = "^signal$";}
- {class = "^Signal$";}
- {title = "^Signal";}
- ]
- ++ lib.optionals config.personal.identities.work [
- {class = "^zulip";}
- {class = "^Zulip";}
+ lib.optionalAttrs
+ (config.personal.profiles.multimedia && (extraArgs.osConfig.programs.steam.enable or true))
+ {
+ "8: multimedia" = [
+ { class = "^Steam$"; }
+ { title = "Netflix"; }
+ { title = "MUBI"; }
+ { title = "Deezer"; }
];
+ }
+ // lib.optionalAttrs config.personal.profiles.social {
+ "9: social" = [
+ { class = "^Mail$"; }
+ { class = "^thunderbird$"; }
+ ]
+ ++ lib.optionals config.personal.identities.personal [
+ { class = "^signal$"; }
+ { class = "^Signal$"; }
+ { title = "^Signal"; }
+ ]
+ ++ lib.optionals config.personal.identities.work [
+ { class = "^zulip"; }
+ { class = "^Zulip"; }
+ ];
}
// {
"10: passwords" = [
@@ -64,11 +70,7 @@ in {
floating = {
titlebar = lib.mkDefault false;
border = lib.mkDefault (
- if
- config.services.picom.enable
- && config.services.picom.shadow
- then 0
- else lib.mkOptionDefault
+ if config.services.picom.enable && config.services.picom.shadow then 0 else lib.mkOptionDefault
);
};
gaps = {
diff --git a/modules/home-manager/personal/gui/x/i3/keybindings.nix b/modules/home-manager/personal/gui/x/i3/keybindings.nix
index c15075f..d28e9fb 100644
--- a/modules/home-manager/personal/gui/x/i3/keybindings.nix
+++ b/modules/home-manager/personal/gui/x/i3/keybindings.nix
@@ -3,7 +3,8 @@
lib,
pkgs,
...
-}: let
+}:
+let
# i3 pretty-printing
exec = script: ''exec "${script}";'';
execRofiShow = modi: exec "${rofiShow} ${modi}";
@@ -19,13 +20,15 @@
rofiPulseSelect = "${pkgs.rofi-pulse-select}/bin/rofi-pulse-select";
rofiBluetooth = "${pkgs.rofi-bluetooth}/bin/rofi-bluetooth";
rofiPowerMenu = "${pkgs.rofi-power-menu}/bin/rofi-power-menu";
-in {
+in
+{
xsession.windowManager.i3.config = {
inherit modifier;
modes = lib.mkOptionDefault {
# launching apps
- launch = mkTempMode ({
+ launch = mkTempMode (
+ {
"e" = exec "emacsclient --create-frame";
"b" = exec "$BROWSER";
}
@@ -38,18 +41,19 @@ in {
"t" = execRofiShow "top";
"w" = execRofiShow "window";
"Escape" = "";
- });
+ }
+ );
};
- keybindings = lib.mkOptionDefault ({
+ keybindings = lib.mkOptionDefault (
+ {
"${modifier}+space" = "mode launch";
}
// lib.optionalAttrs config.programs.rofi.enable {
"${modifier}+F1" = exec "${rofiPulseSelect} sink";
"${modifier}+F4" = exec "${rofiPulseSelect} source";
"${modifier}+Print" = exec rofiBluetooth;
- "${modifier}+Delete" =
- exec "${rofiShow} menu -modi menu:${rofiPowerMenu}";
+ "${modifier}+Delete" = exec "${rofiShow} menu -modi menu:${rofiPowerMenu}";
"${modifier}+p" = "move workspace to output right";
}
// {
@@ -60,22 +64,18 @@ in {
# media keys
"XF86MonBrightnessUp" = exec "${brightnessctl} set 5%+";
"XF86MonBrightnessDown" = exec "${brightnessctl} set 5%-";
- "XF86AudioRaiseVolume" =
- exec "${volumectl} set-sink-volume @DEFAULT_SINK@ +5%";
- "XF86AudioLowerVolume" =
- exec "${volumectl} set-sink-volume @DEFAULT_SINK@ -5%";
+ "XF86AudioRaiseVolume" = exec "${volumectl} set-sink-volume @DEFAULT_SINK@ +5%";
+ "XF86AudioLowerVolume" = exec "${volumectl} set-sink-volume @DEFAULT_SINK@ -5%";
"XF86AudioMute" = "exec ${volumectl} set-sink-mute @DEFAULT_SINK@ toggle";
- "Shift+XF86AudioRaiseVolume" =
- exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ +5%";
- "Shift+XF86AudioLowerVolume" =
- exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ -5%";
- "XF86AudioMicMute" =
- exec "${volumectl} set-source-mute @DEFAULT_SOURCE@ toggle";
+ "Shift+XF86AudioRaiseVolume" = exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ +5%";
+ "Shift+XF86AudioLowerVolume" = exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ -5%";
+ "XF86AudioMicMute" = exec "${volumectl} set-source-mute @DEFAULT_SOURCE@ toggle";
"XF86KbdBrightnessUp" = ''
exec {brightnessctlKbd} set \
$(( $(${brightnessctlKbd} max) - $(${brightnessctlKbd} get) ))
'';
"Print" = exec screenshot;
- });
+ }
+ );
};
}
diff --git a/modules/home-manager/personal/gui/x/i3/startup.nix b/modules/home-manager/personal/gui/x/i3/startup.nix
index c42a542..223660a 100644
--- a/modules/home-manager/personal/gui/x/i3/startup.nix
+++ b/modules/home-manager/personal/gui/x/i3/startup.nix
@@ -2,24 +2,27 @@
config,
lib,
...
-}: {
- xsession.windowManager.i3.config.startup = let
- autostart = {
- command,
- always ? false,
- notification ? false,
- }: {
- inherit command always notification;
- };
- autostartIf = cond: args: lib.optional cond (autostart args);
- in
+}:
+{
+ xsession.windowManager.i3.config.startup =
+ let
+ autostart =
+ {
+ command,
+ always ? false,
+ notification ? false,
+ }:
+ {
+ inherit command always notification;
+ };
+ autostartIf = cond: args: lib.optional cond (autostart args);
+ in
[
- (autostart {command = "rfkill block bluetooth";})
- (autostart {command = "keepassxc";})
+ (autostart { command = "rfkill block bluetooth"; })
+ (autostart { command = "keepassxc"; })
]
- ++ autostartIf config.programs.thunderbird.enable {command = "thunderbird";}
- ++ autostartIf
- (config.personal.profiles.social && config.personal.identities.personal) {
+ ++ autostartIf config.programs.thunderbird.enable { command = "thunderbird"; }
+ ++ autostartIf (config.personal.profiles.social && config.personal.identities.personal) {
command = "signal-desktop";
}
++ autostartIf (with config.personal.identities; work && !personal) {