home-manager/i3.nix

314 lines
13 KiB
Nix

{ pkgs, ... }: {
imports = [
./firefox.nix
./polybar.nix
./gnome-terminal.nix
./monitor_configs.nix
];
home.file = {
".config/IJHack/QtPass.conf".source = ./assets/QtPass.conf;
"fixbluetooth" = {
executable = true;
source = ./assets/resetbluetooth.sh;
};
};
# Dell Precision Nonsense
home.packages = with pkgs; [
alsa-utils
];
home.file."precision/fixmicrophone" = {
executable = true;
text = ''
# https://github.com/NixOS/nixpkgs/issues/294170
sudo ln -s /run/current-system/sw/bin/rm /bin
sudo ln -s /run/current-system/sw/bin/mkdir /bin
# https://discourse.nixos.org/t/dell-xps-13-9320-microphone-not-working/40932/3
sudo alsactl init
systemctl --user restart pipewire
'';
};
programs.browserpass.enable = true;
programs.chromium = {
enable = true;
extensions = [
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # UBlock Origin
{ id = "dbepggeogbaibhgnhhndojpepiihcmeb"; } # Vimium
{ id = "naepdomgkenhinolocfifgehidddafch"; } # Browserpass
];
};
# picom --vsync --experimental-backend
xsession.windowManager.i3 = {
enable = true;
config.bars = [];
extraConfig = ''
################################################################################
set $mod Mod4
# Font for window titles.
font pango:monospace 8
# Bar
exec_always --no-startup-id systemctl --user restart polybar
# Background
#exec_always --no-startup-id feh --bg-scale $HOME/Archive/Multimedia/Pictures/Firewatch\ Wallpapers/3\ -\ NAQ0dTR.png
#exec_always --no-startup-id feh --bg-scale $HOME/Archive/Multimedia/Pictures/Other\ Wallpapers/EMwduGkh_o.png
#exec_always --no-startup-id feh --bg-scale $HOME/Archive/Multimedia/Pictures/Other\ Wallpapers/1345403996113.jpg
#exec_always --no-startup-id feh --bg-scale $HOME/tmp/backgrounds/dcrhoj0-e922ac66-5611-43af-a35e-e5068ab642c3.png
#exec_always --no-startup-id feh --bg-scale $HOME/Archive/Multimedia/Pictures/Wallpapers/ae4xtKY.jpg
################################################################################
# Hardware Control
# Desk Lights
bindsym $mod+Shift+d exec curl -X POST https://homeassistant.mlaga97.space/api/webhook/--caDGWR8KXLTM3yZ6Y01XPe6
bindsym $mod+Shift+w exec curl -X POST https://homeassistant.mlaga97.space/api/webhook/-tbHkUPb8aLVcFaOQcXbBdIJb
bindsym $mod+Shift+o exec curl -X POST https://homeassistant.mlaga97.space/api/webhook/-fmYa59UtZaMXythyEsda_ulo
# Network Manager
exec nm-applet
# Allow gnome apps to prompt for password
exec --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &
# Various gnome-settings-daemon helpers
exec --no-startup-id /usr/libexec/gsd-backlight-helper &
#exec --no-startup-id /usr/libexec/gsd-usb-protection &
#exec --no-startup-id /usr/libexec/gsd-sound &
#exec --no-startup-id /usr/libexec/gsd-disk-utility-notify &
#exec --no-startup-id /usr/libexec/gsd-power &
#exec --no-startup-id /usr/libexec/gsd-screensaver-proxy &
#exec --no-startup-id /usr/libexec/gsd-wacom &
#exec --no-startup-id /usr/libexec/gsd-xsettings &
#exec --no-startup-id /usr/libexec/gsd-printer &
#exec --no-startup-id /usr/libexec/gsd-sharing &
#exec --no-startup-id /usr/libexec/gsd-color &
#exec --no-startup-id /usr/libexec/gsd-wwan &
#exec --no-startup-id /usr/libexec/gsd-datetime &
#exec --no-startup-id /usr/libexec/gsd-wacom-oled-helper &
#exec --no-startup-id /usr/libexec/gsd-keyboard &
#exec --no-startup-id /usr/libexec/gsd-smartcard &
#exec --no-startup-id /usr/libexec/gsd-a11y-settings &
#exec --no-startup-id /usr/libexec/gsd-media-keys &
#exec --no-startup-id /usr/libexec/gsd-rfkill &
#exec --no-startup-id /usr/libexec/gsd-housekeeping &
#exec --no-startup-id /usr/libexec/gsd-print-notifications &
# Screen Brightness Controls
bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5%
bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%-
# Monitor Layout Controls
bindsym $mod+Control+d exec arandr
# Pulse Audio Controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 1 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 1 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 1 toggle # mute sound
# Sound Device Control
bindsym $mod+Control+a exec pavucontrol
bindsym $mod+Control+b exec blueman-manager
# Fast calculator
bindsym $mod+c exec rofi -theme solarized -font "ubuntu mono 16" -show calc -modi "calc:qalc +u8 -nocurrencies"
################################################################################
# Session Management
# Reload Config
bindsym $mod+Shift+c reload
# Restart i3 In Place
bindsym $mod+Shift+r restart
# Lock Screen
#exec --no-startup-id xidlehook --not-when-fullscreen --not-when-audio --timer normal 30 ~/Applications/lock_then_off.sh
#bindsym $mod+Control+Mod1+Shift+l exec ~/Applications/lock_then_off.sh
bindsym $mod+Control+Mod1+Shift+l exec i3lock
# Logout
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
# Shutdown
bindsym $mod+Ctrl+Mod1+Shift+p exec "i3-nagbar -t warning -m 'Really Shutdown?' -b 'Yes' 'systemctl poweroff -i'"
################################################################################
# toggle fullscreen
bindsym $mod+f fullscreen toggle
# Picture-in-Picture
bindsym $mod+p exec "i3-msg 'floating toggle; sticky toggle; resize shrink width 10000px; resize grow width 200px; resize shrink height 10000px; resize grow height 250px; move position 6950px 1750px;'"
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+t layout tabbed
bindsym $mod+e layout toggle split
# toggle floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# resize mode
mode "resize" {
#bindsym j resize shrink width 10 px or 10 ppt
#bindsym k resize grow height 10 px or 10 ppt
#bindsym l resize shrink height 10 px or 10 ppt
#bindsym semicolon resize grow width 10 px or 10 ppt
bindsym h resize shrink width 10 px or 10 ppt
bindsym j resize grow height 10 px or 10 ppt
bindsym k resize shrink height 10 px or 10 ppt
bindsym l resize grow width 10 px or 10 ppt
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Control+[ mode "default"
}
bindsym $mod+r mode "resize"
################################################################################
# Terminal
bindsym $mod+Return exec i3-sensible-terminal
# Exit Current Window
bindsym $mod+Shift+q kill
# Run a Program
#bindsym $mod+d exec dmenu_run
bindsym $mod+d exec rofi -combi-modi run#window#ssh -theme solarized -font "ubuntu mono 10" -show combi
# Cycle Through Windows
#bindsym $mod+j focus left
#bindsym $mod+k focus down
#bindsym $mod+l focus up
#bindsym $mod+semicolon focus right
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# Move Current Window
#bindsym $mod+Shift+j move left
#bindsym $mod+Shift+k move down
#bindsym $mod+Shift+l move up
#bindsym $mod+Shift+semicolon move right
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# Horizontal Split
# bindsym $mod+h split h
bindsym $mod+b split h
# Vertical Split
bindsym $mod+v split v
# switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
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+Ctrl+1 workspace 11
bindsym $mod+Ctrl+2 workspace 12
bindsym $mod+Ctrl+3 workspace 13
bindsym $mod+Ctrl+4 workspace 14
bindsym $mod+Ctrl+5 workspace 15
bindsym $mod+Ctrl+6 workspace 16
bindsym $mod+Ctrl+7 workspace 17
bindsym $mod+Ctrl+8 workspace 18
bindsym $mod+Ctrl+9 workspace 19
bindsym $mod+Ctrl+0 workspace 20
bindsym $mod+mod1+Ctrl+1 workspace 21
bindsym $mod+mod1+Ctrl+2 workspace 22
bindsym $mod+mod1+Ctrl+3 workspace 23
bindsym $mod+mod1+Ctrl+4 workspace 24
bindsym $mod+mod1+Ctrl+5 workspace 25
bindsym $mod+mod1+Ctrl+6 workspace 26
bindsym $mod+mod1+Ctrl+7 workspace 27
bindsym $mod+mod1+Ctrl+8 workspace 28
bindsym $mod+mod1+Ctrl+9 workspace 29
bindsym $mod+mod1+Ctrl+0 workspace 30
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
bindsym $mod+Ctrl+Shift+1 move container to workspace 11
bindsym $mod+Ctrl+Shift+2 move container to workspace 12
bindsym $mod+Ctrl+Shift+3 move container to workspace 13
bindsym $mod+Ctrl+Shift+4 move container to workspace 14
bindsym $mod+Ctrl+Shift+5 move container to workspace 15
bindsym $mod+Ctrl+Shift+6 move container to workspace 16
bindsym $mod+Ctrl+Shift+7 move container to workspace 17
bindsym $mod+Ctrl+Shift+8 move container to workspace 18
bindsym $mod+Ctrl+Shift+9 move container to workspace 19
bindsym $mod+Ctrl+Shift+0 move container to workspace 20
bindsym $mod+mod1+Ctrl+Shift+1 move container to workspace 21
bindsym $mod+mod1+Ctrl+Shift+2 move container to workspace 22
bindsym $mod+mod1+Ctrl+Shift+3 move container to workspace 23
bindsym $mod+mod1+Ctrl+Shift+4 move container to workspace 24
bindsym $mod+mod1+Ctrl+Shift+5 move container to workspace 25
bindsym $mod+mod1+Ctrl+Shift+6 move container to workspace 26
bindsym $mod+mod1+Ctrl+Shift+7 move container to workspace 27
bindsym $mod+mod1+Ctrl+Shift+8 move container to workspace 28
bindsym $mod+mod1+Ctrl+Shift+9 move container to workspace 29
bindsym $mod+mod1+Ctrl+Shift+0 move container to workspace 30
################################################################################
# Other
# Workspace Movement
#bindsym $mod+Control+Shift+j move workspace to output left
#bindsym $mod+Control+Shift+semicolon move workspace to output right
bindsym $mod+Control+Shift+h move workspace to output left
bindsym $mod+Control+Shift+l move workspace to output right
# Cycle Through Workspaces
#bindsym $mod+Ctrl+j focus workspace prevonoutput
#bindsym $mod+Ctrl+semicolon focus workspace nextonoutput
bindsym $mod+Ctrl+h focus workspace prevonoutput
bindsym $mod+Ctrl+l focus workspace nextonoutput
# Custom Workspace Names
bindsym $mod+Control+r exec i3-input -F 'rename workspace to "%s"' -P 'Rename workspace to: '
bindsym $mod+Control+s exec i3-input -F 'workspace "%s"' -P 'Switch to workspace: '
bindsym $mod+Control+Shift+s exec i3-input -F 'move container to workspace "%s"' -P 'Move to workspace: '
# Move Windows through cycle
bindsym $mod+Ctrl+Shift+Left move container to workspace prevonoutput
bindsym $mod+Ctrl+Shift+Right move container to workspace nextonoutput
'';
};
}