aboutsummaryrefslogtreecommitdiffstats
path: root/modules/desktop
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-11-08 21:32:55 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-11-08 21:32:55 +0530
commit159fbf8c5573d85a731d2582b52b3e8cb223618c (patch)
treede3d89b3b026121e8d3f597eddd4302e001953ab /modules/desktop
parent4b322dc7eb9339ec8297f05bd305f699755598e1 (diff)
downloadhome-manager-config-159fbf8c5573d85a731d2582b52b3e8cb223618c.tar.gz
home-manager-config-159fbf8c5573d85a731d2582b52b3e8cb223618c.zip
Added config for i3 window manager.
i3 configuration is not finished.
Diffstat (limited to 'modules/desktop')
-rw-r--r--modules/desktop/status-bar/polybar/bar/main.nix8
-rw-r--r--modules/desktop/status-bar/polybar/default.nix8
-rw-r--r--modules/desktop/status-bar/polybar/module/default.nix4
-rw-r--r--modules/desktop/status-bar/polybar/module/i3.nix23
-rw-r--r--modules/desktop/window-manager/default.nix2
-rw-r--r--modules/desktop/window-manager/i3/default.nix38
6 files changed, 79 insertions, 4 deletions
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;
+ }
+ ];
+ };
+ };
+}