dotfiles/lib/nixos/home-manager/modules/i3.nix

159 lines
4.1 KiB
Nix
Raw Normal View History

{
2024-02-13 21:33:32 +00:00
config,
inputs,
self,
username,
pkgs,
...
}: let
modifier = "Mod4";
in {
2023-11-14 20:20:07 +00:00
xsession.windowManager.i3 = {
enable = true;
config = {
assigns = {
2024-02-13 21:33:32 +00:00
"7" = [{class = "vlc";}];
"8" = [{class = "0ad";}];
2023-11-14 20:20:07 +00:00
"9" = [
2024-02-13 21:33:32 +00:00
{class = "Slack";}
{class = "discord";}
2023-11-14 20:20:07 +00:00
];
};
2024-02-19 23:38:00 +00:00
defaultWorkspace = "workspace number 1";
2024-01-31 18:25:21 +00:00
focus.followMouse = false;
2023-11-14 20:20:07 +00:00
modifier = modifier;
keybindings = inputs.nixpkgs.lib.mkOptionDefault {
2024-02-20 01:06:04 +00:00
"${modifier}+d" = "exec ${pkgs.rofi}/bin/rofi -show drun";
2024-01-31 18:24:47 +00:00
2024-02-25 01:10:48 +00:00
"${modifier}+Shift+b" = "exec ${pkgs.firefox}/bin/firefox";
2024-02-19 23:38:23 +00:00
"${modifier}+Shift+f" = "exec ${pkgs.xfce.thunar}/bin/thunar";
2023-11-16 19:11:50 +00:00
"${modifier}+Tab" = "workspace back_and_forth";
2023-11-21 23:16:17 +00:00
# Change focus.
"${modifier}+h" = "focus left";
"${modifier}+j" = "focus down";
"${modifier}+k" = "focus up";
"${modifier}+l" = "focus right";
# Move focused window.
"${modifier}+Shift+h" = "move left";
"${modifier}+Shift+j" = "move down";
"${modifier}+Shift+k" = "move up";
"${modifier}+Shift+l" = "move right";
"${modifier}+Shift+s" = "exec ${pkgs.flameshot}/bin/flameshot gui";
"${modifier}+Shift+p" = "exec ${pkgs.autorandr}/bin/autorandr --cycle";
"${modifier}+Shift+y" = "exec ${pkgs.copyq}/bin/copyq toggle";
2023-11-21 23:16:17 +00:00
"XF86AudioRaiseVolume" = "exec pamixer -ui 2 && pamixer --get-volume";
"XF86AudioLowerVolume" = "exec pamixer -ud 2 && pamixer --get-volume";
"XF86AudioMute" = "exec pamixer --toggle-mute && ( [ \"$(pamixer --get-mute)\" = \"true\" ] && echo 0";
"XF86MonBrightnessDown" = "exec brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p'";
"XF86MonBrightnessUp" = "exec brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p'";
2023-11-14 20:20:07 +00:00
};
terminal = "alacritty";
window = {
border = 0;
hideEdgeBorders = "none";
};
};
extraConfig = ''
set $laptop eDP-1
bindswitch --reload --locked lid:on output $laptop disable
bindswitch --reload --locked lid:off output $laptop enable
exec --no-startup-id ${pkgs.feh}/bin/feh --randomize --bg-scale /home/${username}/Pictures/Wallpaper/*;
2024-01-08 01:13:35 +00:00
2023-11-14 20:20:07 +00:00
default_border none
default_floating_border none
smart_borders on
smart_gaps on
2024-01-29 12:59:23 +00:00
#border backgr text indicator
client.focused #444444 #555555 #ffffff #dddddd
client.focused_inactive #222222 #333333 #888888 #292d2e
client.unfocused #222222 #111111 #888888 #292d2e
client.urgent #2f343a #900000 #ffffff #900000
2023-11-14 20:20:07 +00:00
'';
2024-01-29 12:59:23 +00:00
config = {
2024-02-13 21:33:32 +00:00
bars = [
{
position = "bottom";
statusCommand = "${pkgs.i3status}/bin/i3status";
colors = {
background = "#161616";
statusline = "#ffffff";
separator = "#333333";
focusedWorkspace = {
background = "#444444";
border = "#555555";
text = "#ffffff";
};
activeWorkspace = {
background = "#555555";
border = "#666666";
text = "#ffffff";
};
inactiveWorkspace = {
background = "#111111";
border = "#000000";
text = "#888888";
};
bindingMode = {
background = "#ff0000";
border = "#880000";
text = "#ffffff";
};
urgentWorkspace = {
background = "#ff0000";
border = "#880000";
text = "#ffffff";
};
2024-01-29 12:59:23 +00:00
};
2024-02-13 21:33:32 +00:00
}
];
2024-01-29 12:59:23 +00:00
2024-02-13 21:33:32 +00:00
fonts.names = ["GeistMono"];
2024-01-29 12:59:23 +00:00
gaps = {
smartBorders = "on";
smartGaps = true;
};
};
2023-11-14 20:20:07 +00:00
};
2023-12-15 11:13:27 +00:00
programs.i3status = {
enable = true;
general = {
colors = true;
color_bad = "#f7768e";
color_degraded = "#ff9e64";
color_good = "#c0caf5";
};
modules = {
cpu_temperature.enable = false;
ipv6.enable = false;
load.enable = false;
};
};
2023-11-14 20:20:07 +00:00
}