From 159fbf8c5573d85a731d2582b52b3e8cb223618c Mon Sep 17 00:00:00 2001 From: Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> Date: Fri, 8 Nov 2024 21:32:55 +0530 Subject: Added config for i3 window manager. i3 configuration is not finished. --- modules/desktop/status-bar/polybar/bar/main.nix | 8 +++-- modules/desktop/status-bar/polybar/default.nix | 8 ++++- .../desktop/status-bar/polybar/module/default.nix | 4 +++ modules/desktop/status-bar/polybar/module/i3.nix | 23 +++++++++++++ modules/desktop/window-manager/default.nix | 2 ++ modules/desktop/window-manager/i3/default.nix | 38 ++++++++++++++++++++++ 6 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 modules/desktop/status-bar/polybar/module/i3.nix create mode 100644 modules/desktop/window-manager/i3/default.nix (limited to 'modules/desktop') diff --git a/modules/desktop/status-bar/polybar/bar/main.nix b/modules/desktop/status-bar/polybar/bar/main.nix index 25cce91..a389b8c 100644 --- a/modules/desktop/status-bar/polybar/bar/main.nix +++ b/modules/desktop/status-bar/polybar/bar/main.nix @@ -36,9 +36,11 @@ in { font-2 = "${config.fonts.normal}:style=Light:pixelsize=${largerFontSize};2"; modules-left = - lib.mkIf - config.desktop.window-manager.bspwm.enable - "bspwm separator"; + if config.desktop.window-manager.bspwm.enable then + "bspwm separator" + else if config.desktop.window-manager.i3.enable then + "i3 separator" + else ""; modules-center = "xwindow"; modules-right = "separator memory cpu battery time date kernel-version"; } diff --git a/modules/desktop/status-bar/polybar/default.nix b/modules/desktop/status-bar/polybar/default.nix index 0ea66c7..76901f6 100644 --- a/modules/desktop/status-bar/polybar/default.nix +++ b/modules/desktop/status-bar/polybar/default.nix @@ -1,5 +1,10 @@ { config, lib, pkgs, ... }: +let + polybarPackage = pkgs.polybar.override { + i3Support = config.desktop.window-manager.i3.enable; + }; +in { options.desktop.status-bar.polybar = { enable = lib.mkEnableOption "Enables polybar."; @@ -12,7 +17,7 @@ MONITOR_WIDTH=$(xrandr | grep '*' | awk '{print $1}' | cut -d'x' -f1 | head -n1) OFFSET=${toString config.desktop.window-manager.gap} -POLYBAR_WIDTH=$((MONITOR_WIDTH - 2 * OFFSET)) POLYBAR_OFFSET=$OFFSET polybar main & +POLYBAR_WIDTH=$((MONITOR_WIDTH - 2 * OFFSET)) POLYBAR_OFFSET=$OFFSET ${polybarPackage}/bin/polybar main & ''); }; }; @@ -20,6 +25,7 @@ POLYBAR_WIDTH=$((MONITOR_WIDTH - 2 * OFFSET)) POLYBAR_OFFSET=$OFFSET polybar mai config = lib.mkIf config.desktop.status-bar.polybar.enable { services.polybar.enable = true; services.polybar.script = config.desktop.status-bar.polybar.command; + services.polybar.package = polybarPackage; services.polybar.config = lib.mkMerge [ (import ./bar { inherit config lib; }) (import ./module { inherit config lib; }) diff --git a/modules/desktop/status-bar/polybar/module/default.nix b/modules/desktop/status-bar/polybar/module/default.nix index 3444086..5507569 100644 --- a/modules/desktop/status-bar/polybar/module/default.nix +++ b/modules/desktop/status-bar/polybar/module/default.nix @@ -7,6 +7,10 @@ lib.mkIf config.desktop.window-manager.bspwm.enable (import ./bspwm.nix { inherit config; }); + "module/i3" = + lib.mkIf + config.desktop.window-manager.i3.enable + (import ./i3.nix { inherit config; }); "module/cpu" = import ./cpu.nix { inherit config; }; "module/memory" = import ./memory.nix { inherit config; }; "module/date" = import ./date.nix { inherit config; }; diff --git a/modules/desktop/status-bar/polybar/module/i3.nix b/modules/desktop/status-bar/polybar/module/i3.nix new file mode 100644 index 0000000..46595cd --- /dev/null +++ b/modules/desktop/status-bar/polybar/module/i3.nix @@ -0,0 +1,23 @@ +{ config }: + +with config.scheme.withHashtag; +{ + type = "internal/i3"; + + pin-workspaces = true; + + label-focused = "%index%"; + label-focused-underline = "${base0D}"; + label-focused-padding = 2; + + label-occupied = "%index%"; + label-occupied-padding = 2; + + label-urgent = "%index%"; + label-urgent-underline = "${base08}"; + label-urgent-padding = 2; + + label-empty = "%index%"; + label-empty-foreground = "${base03}"; + label-empty-padding = 2; +} diff --git a/modules/desktop/window-manager/default.nix b/modules/desktop/window-manager/default.nix index 5d0f38e..2f36bce 100644 --- a/modules/desktop/window-manager/default.nix +++ b/modules/desktop/window-manager/default.nix @@ -3,6 +3,7 @@ { imports = [ ./bspwm + ./i3 ./sxhkd ]; @@ -10,6 +11,7 @@ default = lib.mkOption { type = lib.types.enum [ "bspwm" + "i3" ]; description = "Default window manager."; }; diff --git a/modules/desktop/window-manager/i3/default.nix b/modules/desktop/window-manager/i3/default.nix new file mode 100644 index 0000000..369fe34 --- /dev/null +++ b/modules/desktop/window-manager/i3/default.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: + +{ + options.desktop.window-manager.i3 = { + enable = lib.mkEnableOption "Enables i3."; + }; + + config = lib.mkIf config.desktop.window-manager.i3.enable { + # Set i3 as the default window manager + desktop.window-manager.default = lib.mkDefault "i3"; + desktop.window-manager.command = + if config.desktop.window-manager.default == "i3" then + "${pkgs.i3}/bin/i3" + else lib.mkDefault ""; + + xsession.windowManager.i3.enable = true; + + xsession.windowManager.i3.config = { + modifier = "Mod4"; + gaps = { + inner = config.desktop.window-manager.gap; + }; + terminal = config.tools.terminal.command; + fonts = { + names = [ "FiraCode Nerd Font" ]; + size = 11.0; + }; + bars = [ + { + command = + lib.mkIf + config.desktop.status-bar.polybar.enable + config.desktop.status-bar.polybar.command; + } + ]; + }; + }; +} -- cgit v1.2.3