forked from fabian/nix
		
	configure sway (this is a huge rice)
This commit is contained in:
		
							parent
							
								
									4316165e9d
								
							
						
					
					
						commit
						5d1408254a
					
				
					 16 changed files with 381 additions and 799 deletions
				
			
		|  | @ -10,14 +10,6 @@ in { | ||||||
|   options.local.apps.firefox = { |   options.local.apps.firefox = { | ||||||
|     enable = mkEnableOption "firefox settings"; |     enable = mkEnableOption "firefox settings"; | ||||||
| 
 | 
 | ||||||
|     workspace = mkOption { |  | ||||||
|       type = types.nullOr types.str; |  | ||||||
|       default = null; |  | ||||||
|       description = '' |  | ||||||
|         i3 Workspace in which Firefox should open. If not set, Firefox will not open at startup |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     makeDefaultBrowser = mkOption { |     makeDefaultBrowser = mkOption { | ||||||
|       type = types.bool; |       type = types.bool; | ||||||
|       default = true; |       default = true; | ||||||
|  | @ -30,10 +22,6 @@ in { | ||||||
|   config = mkIf cfg.enable (mkMerge [ |   config = mkIf cfg.enable (mkMerge [ | ||||||
|     { |     { | ||||||
|       programs.firefox.enable = true; |       programs.firefox.enable = true; | ||||||
| 
 |  | ||||||
|       xsession.windowManager.i3.config.startup = optional (cfg.workspace != null) { |  | ||||||
|         command = "${lib.getExe pkgs.i3-gaps} 'workspace ${cfg.workspace}; exec ${lib.getExe pkgs.firefox}'"; |  | ||||||
|       }; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     (mkIf cfg.makeDefaultBrowser { |     (mkIf cfg.makeDefaultBrowser { | ||||||
|  |  | ||||||
|  | @ -1,32 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| with lib; let |  | ||||||
|   cfg = config.local.gui; |  | ||||||
| in { |  | ||||||
|   programs.autorandr = { |  | ||||||
|     profiles."default" = { |  | ||||||
|       fingerprint = |  | ||||||
|         mapAttrs |  | ||||||
|         (monitorId: monitor: monitor.fingerprint) |  | ||||||
|         cfg.monitors; |  | ||||||
| 
 |  | ||||||
|       config = |  | ||||||
|         mapAttrs ( |  | ||||||
|           monitorId: |  | ||||||
|             filterAttrs |  | ||||||
|             (k: v: |  | ||||||
|               !elem k [ |  | ||||||
|                 #list of options to exclude from this list |  | ||||||
|                 "fingerprint" |  | ||||||
|                 "initialI3Workspace" |  | ||||||
|                 "monitorId" |  | ||||||
|               ]) |  | ||||||
|         ) |  | ||||||
|         cfg.monitors; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -9,121 +9,66 @@ with lib; let | ||||||
|   monitorType = {setName}: ( |   monitorType = {setName}: ( | ||||||
|     types.submodule ({name ? null, ...}: { |     types.submodule ({name ? null, ...}: { | ||||||
|       options = { |       options = { | ||||||
|         monitorId = mkOption { |         width = mkOption { | ||||||
|           type = types.str; |           type = types.str; | ||||||
|           example = "DP-1"; |           default = "1920"; | ||||||
|           readOnly = true; |           example = "1920"; | ||||||
|           internal = true; |  | ||||||
|         }; |         }; | ||||||
|         primary = mkOption { |         height = mkOption { | ||||||
|           type = types.bool; |  | ||||||
|           default = false; |  | ||||||
|           description = "is primary monitor"; |  | ||||||
|           example = "true"; |  | ||||||
|         }; |  | ||||||
|         position = mkOption { |  | ||||||
|           type = types.str; |           type = types.str; | ||||||
|           example = "0x0"; |           default = "1080"; | ||||||
|         }; |           example = "1080"; | ||||||
|         mode = mkOption { |  | ||||||
|           type = types.str; |  | ||||||
|           description = "resolution"; |  | ||||||
|           default = "1920x1080"; |  | ||||||
|           example = "1920x1080"; |  | ||||||
|         }; |         }; | ||||||
|         rate = mkOption { |         rate = mkOption { | ||||||
|           type = types.str; |           type = types.str; | ||||||
|           description = "refresh rate"; |           description = "refresh rate"; | ||||||
|           example = "143.85"; |           example = "143.85"; | ||||||
|         }; |         }; | ||||||
|         rotate = mkOption { |         posX = mkOption { | ||||||
|           type = types.str; |           type = types.str; | ||||||
|           default = "normal"; |           description = "x axis position"; | ||||||
|           example = "left"; |           default = "0"; | ||||||
|  |           example = "0"; | ||||||
|         }; |         }; | ||||||
|         fingerprint = mkOption { |         posY = mkOption { | ||||||
|           type = types.str; |           type = types.str; | ||||||
|           example = "00ffffffffffff003669a03bd4040000231e0104a5341d783bd005ac5048a627125054bfcf00814081809500714f81c0b30001010101023a801871382d40582c450009252100001e0882805070384d400820f80c09252100001a000000fd003090b4b422010a202020202020000000fc004d53492047323443340a20202001a2020320f14d010304131f120211900e0f1d1e230907078301000065030c001000866f80a0703840403020350009252100001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e9"; |           description = "y axis position"; | ||||||
|  |           default = "0"; | ||||||
|  |           example = "0"; | ||||||
|         }; |         }; | ||||||
|         initialI3Workspace = mkOption { |  | ||||||
|           type = types.nullOr types.int; |  | ||||||
|           default = null; |  | ||||||
|           example = 1; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|       config = optionalAttrs setName { |  | ||||||
|         # make this better later |  | ||||||
|         monitorId = name; |  | ||||||
|       }; |       }; | ||||||
|     }) |     }) | ||||||
|   ); |   ); | ||||||
| in { | in { | ||||||
|   options.local.gui = { |   options.local.gui = { | ||||||
|     enable = mkEnableOption "GUI settings"; |     enable = mkEnableOption "GUI settings"; | ||||||
|     primaryMonitor = mkOption { |  | ||||||
|       type = monitorType {setName = false;}; |  | ||||||
|       readOnly = true; |  | ||||||
|       internal = true; |  | ||||||
|     }; |  | ||||||
|     monitors = mkOption { |     monitors = mkOption { | ||||||
|       type = types.attrsOf (monitorType {setName = true;}); |       type = types.attrsOf (monitorType {setName = true;}); | ||||||
|     }; |     }; | ||||||
|     displayBatteryLevel = mkOption { |  | ||||||
|       type = types.bool; |  | ||||||
|       default = false; |  | ||||||
|       description = "show battery level on polybar"; |  | ||||||
|       example = "true"; |  | ||||||
|     }; |  | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./autorandr.nix |  | ||||||
|     ./fonts.nix |     ./fonts.nix | ||||||
|     ./i3.nix |  | ||||||
|     ./polybar.nix |  | ||||||
|     ./startx.nix |  | ||||||
|     ./picom.nix |  | ||||||
|     ./theme.nix |     ./theme.nix | ||||||
|     ./sway.nix |     ./sway.nix | ||||||
|  |     ./waybar.nix | ||||||
|  |     ./wofi.nix | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   config = let |   config = mkIf cfg.enable { | ||||||
|     primaryMonitors = |     services = { | ||||||
|       filter (monitor: monitor.primary) |       mako.enable = true; | ||||||
|       (attrValues cfg.monitors); |     }; | ||||||
|   in |  | ||||||
|     mkIf cfg.enable { |  | ||||||
|       assertions = [ |  | ||||||
|         { |  | ||||||
|           assertion = length primaryMonitors == 1; |  | ||||||
|           message = "Exactly one (1) primary monitor is requiered."; |  | ||||||
|         } |  | ||||||
|       ]; |  | ||||||
| 
 | 
 | ||||||
|       local.gui.primaryMonitor = head primaryMonitors; |     xdg = { | ||||||
| 
 |       enable = true; | ||||||
|       xsession = { |       mimeApps = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         windowManager.i3.enable = true; |         defaultApplications = { | ||||||
|       }; |           "application/pdf" = with pkgs; ["qpdfview"]; | ||||||
| 
 |           "x-scheme-handler/file" = with pkgs; ["kitty"]; | ||||||
|       programs.autorandr.enable = true; |  | ||||||
|       services = { |  | ||||||
|         dunst.enable = true; |  | ||||||
|         betterlockscreen.enable = true; |  | ||||||
|         polybar.enable = true; |  | ||||||
|         picom.enable = true; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       xdg = { |  | ||||||
|         enable = true; |  | ||||||
|         mimeApps = { |  | ||||||
|           enable = true; |  | ||||||
|           defaultApplications = { |  | ||||||
|             "application/pdf" = with pkgs; ["qpdfview"]; |  | ||||||
|             "x-scheme-handler/file" = with pkgs; ["kitty"]; |  | ||||||
|           }; |  | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -4,9 +4,38 @@ | ||||||
|   pkgs, |   pkgs, | ||||||
|   ... |   ... | ||||||
| }: { | }: { | ||||||
|   fonts.fontconfig.enable = true; |   fonts.fontconfig = { | ||||||
|  |     enable = true; | ||||||
|  |     defaultFonts = { | ||||||
|  |       monospace = [ | ||||||
|  |         "JetBrains Mono" | ||||||
|  |         "Noto Sans Mono CJK SC" | ||||||
|  |         "Noto Sans Mono" | ||||||
|  |         "Noto Color Emoji" | ||||||
|  |       ]; | ||||||
|  |       sansSerif = [ | ||||||
|  |         "Noto Sans" | ||||||
|  |         "Noto Sans CJK SC" | ||||||
|  |         "Noto Color Emoji" | ||||||
|  |       ]; | ||||||
|  |       serif = [ | ||||||
|  |         "Noto Serif" | ||||||
|  |         "Noto Serif CJK SC" | ||||||
|  |         "Noto Color Emoji" | ||||||
|  |       ]; | ||||||
|  |       emoji = ["Noto Color Emoji"]; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
| 
 | 
 | ||||||
|  |   # this is probably not necessary since they are already installed in sys | ||||||
|  |   # with fonts.packages buy im too lazy to check | ||||||
|   home.packages = with pkgs; [ |   home.packages = with pkgs; [ | ||||||
|     jetbrains-mono |     jetbrains-mono | ||||||
|  |     noto-fonts | ||||||
|  |     noto-fonts-cjk-sans | ||||||
|  |     noto-fonts-emoji | ||||||
|  |     noto-fonts-extra | ||||||
|  |     nerd-fonts.fira-code | ||||||
|  |     nerd-fonts.droid-sans-mono | ||||||
|   ]; |   ]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,104 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| with lib; { |  | ||||||
|   xsession.windowManager.i3 = { |  | ||||||
|     package = pkgs.i3-gaps; |  | ||||||
| 
 |  | ||||||
|     config = let |  | ||||||
|       mod = "Mod4"; |  | ||||||
|     in { |  | ||||||
|       modifier = mod; |  | ||||||
| 
 |  | ||||||
|       fonts = { |  | ||||||
|         names = ["JetBrains Mono"]; |  | ||||||
|         style = "Regular"; |  | ||||||
|         size = 8.0; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       gaps = { |  | ||||||
|         inner = 10; |  | ||||||
|         outer = -10; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       window = { |  | ||||||
|         hideEdgeBorders = "both"; |  | ||||||
|         titlebar = false; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       workspaceLayout = "tabbed"; |  | ||||||
| 
 |  | ||||||
|       colors = { |  | ||||||
|         focused = { |  | ||||||
|           background = "#222222"; |  | ||||||
|           border = "#4c7899"; |  | ||||||
|           childBorder = "#222222"; |  | ||||||
|           indicator = "#292d2e"; |  | ||||||
|           text = "#888888"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       # mkOptionDefault hace que se ponga la config por default |  | ||||||
|       # y se sobreescriba las cosas que pongo acá |  | ||||||
|       # NO QUITARLO. ver man home-configuration.nix |  | ||||||
|       keybindings = mkOptionDefault { |  | ||||||
|         "${mod}+Return" = "exec ${lib.getExe pkgs.kitty} ${lib.getExe pkgs.tmux}"; |  | ||||||
|         "${mod}+Tab" = "focus right"; |  | ||||||
|         "${mod}+Shift+Tab" = "focus left"; |  | ||||||
|         "${mod}+Shift+s" = "exec ${lib.getExe pkgs.maim} -s -u | ${lib.getExe pkgs.xclip} -selection clipboard -t image/png -i"; |  | ||||||
|         "${mod}+Shift+w" = "move workspace to output right"; |  | ||||||
|         "${mod}+l" = "exec ${lib.getExe pkgs.betterlockscreen} -l"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       startup = [ |  | ||||||
|         { |  | ||||||
|           command = "${lib.getExe pkgs.xss-lock} --transfer-sleep-lock -- ${lib.getExe pkgs.i3lock} --nofork"; |  | ||||||
|           notification = false; |  | ||||||
|         } |  | ||||||
|         { |  | ||||||
|           command = "${lib.getExe pkgs.networkmanagerapplet}"; |  | ||||||
|           notification = false; |  | ||||||
|         } |  | ||||||
|         #todo: sería nice hostear esta imagen en el server y fetchearla si no existe |  | ||||||
|         { |  | ||||||
|           command = "${lib.getExe pkgs.feh} --bg-fill ${config.home.homeDirectory}/Pictures/wallpapers/jupiter.png"; |  | ||||||
|           notification = false; |  | ||||||
|           always = true; |  | ||||||
|         } |  | ||||||
|         { |  | ||||||
|           #todo: move this to telegram module |  | ||||||
|           command = "${lib.getExe pkgs.i3-gaps} 'workspace 2; exec ${lib.getExe pkgs.tdesktop}'"; |  | ||||||
|         } |  | ||||||
|         { |  | ||||||
|           command = "${lib.getExe pkgs.i3-gaps} 'workspace 2; exec ${lib.getExe pkgs.gajim}'"; |  | ||||||
|         } |  | ||||||
|         { |  | ||||||
|           command = "${pkgs.systemd}/bin/systemctl --user restart polybar.service"; |  | ||||||
|           notification = false; |  | ||||||
|           always = true; |  | ||||||
|         } |  | ||||||
|         { |  | ||||||
|           command = "${lib.getExe pkgs.autorandr} -c"; |  | ||||||
|           notification = false; |  | ||||||
|           always = true; |  | ||||||
|         } |  | ||||||
|       ]; |  | ||||||
| 
 |  | ||||||
|       workspaceOutputAssign = |  | ||||||
|         mapAttrsToList ( |  | ||||||
|           monitorId: v: |  | ||||||
|             { |  | ||||||
|               output = monitorId; |  | ||||||
|             } |  | ||||||
|             // optionalAttrs (v.initialI3Workspace != null) { |  | ||||||
|               workspace = toString v.initialI3Workspace; |  | ||||||
|             } |  | ||||||
|         ) |  | ||||||
|         config.local.gui.monitors; |  | ||||||
|       bars = []; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,41 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   lib, |  | ||||||
|   ... |  | ||||||
| }: { |  | ||||||
|   services.picom = { |  | ||||||
|     fade = true; |  | ||||||
|     fadeSteps = [0.1 0.1]; |  | ||||||
|     fadeDelta = 10; |  | ||||||
|     settings = { |  | ||||||
|       animations = [ |  | ||||||
|         { |  | ||||||
|           triggers = [ |  | ||||||
|             "open" |  | ||||||
|             "show" |  | ||||||
|           ]; |  | ||||||
| 
 |  | ||||||
|           preset = "appear"; |  | ||||||
|           duration = "1"; |  | ||||||
|         } |  | ||||||
|         { |  | ||||||
|           triggers = [ |  | ||||||
|             "close" |  | ||||||
|             "hide" |  | ||||||
|           ]; |  | ||||||
| 
 |  | ||||||
|           preset = "disappear"; |  | ||||||
|           duration = "1"; |  | ||||||
|         } |  | ||||||
|         { |  | ||||||
|           triggers = [ |  | ||||||
|             "geometry" |  | ||||||
|           ]; |  | ||||||
|           preset = "geometry-change"; |  | ||||||
|           duration = "1"; |  | ||||||
|         } |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,460 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| with lib; { |  | ||||||
|   services.polybar = { |  | ||||||
|     package = pkgs.polybarFull; |  | ||||||
|     script = '' |  | ||||||
|       # Terminate already running bar instances |  | ||||||
|       killall -q polybar |  | ||||||
| 
 |  | ||||||
|       # Wait until the processes have been shut down |  | ||||||
|       while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done |  | ||||||
| 
 |  | ||||||
|       # Launch Polybar, using default config location ~/.config/polybar/config |  | ||||||
|       polybar -r main & polybar -r secondary & |  | ||||||
|     ''; |  | ||||||
| 
 |  | ||||||
|     settings = { |  | ||||||
|       "colors" = { |  | ||||||
|         # background = "\${xrdb:color0:#222}"; |  | ||||||
|         background = "#AA000000"; |  | ||||||
|         background-alt = "#00000000"; |  | ||||||
|         # foreground = "\${xrdb:color7:#222}"; |  | ||||||
|         foreground = "#ffffff"; |  | ||||||
|         foreground-alt = "#ffffff"; |  | ||||||
|         primary = "#ffffff"; |  | ||||||
|         secondary = "#e60053"; |  | ||||||
|         alert = "#bd2c40"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "bar/main" = { |  | ||||||
|         monitor = config.local.gui.primaryMonitor.monitorId; |  | ||||||
|         width = "100%"; |  | ||||||
|         height = 30; |  | ||||||
|         offset-x = "0%"; |  | ||||||
|         offset-y = "0%"; |  | ||||||
|         radius = 0.0; |  | ||||||
|         fixed-center = false; |  | ||||||
| 
 |  | ||||||
|         background = "\${colors.background}"; |  | ||||||
|         foreground = "\${colors.foreground}"; |  | ||||||
| 
 |  | ||||||
|         line-size = 1; |  | ||||||
|         line-color = "#f0000000"; |  | ||||||
| 
 |  | ||||||
|         border-size = 0; |  | ||||||
|         border-color = "#00000000"; |  | ||||||
| 
 |  | ||||||
|         padding-left = 0; |  | ||||||
|         padding-right = 0; |  | ||||||
| 
 |  | ||||||
|         module-margin-left = 1; |  | ||||||
|         module-margin-right = 1; |  | ||||||
| 
 |  | ||||||
|         # font-0 = "fixed:pixelsize=10;1"; |  | ||||||
|         font-0 = "JetBrains Mono Light:size=10;0"; |  | ||||||
|         font-1 = "unifont:fontformat=truetype:size=8:antialias=false;0"; |  | ||||||
|         font-2 = "siji:pixelsize=10;1"; |  | ||||||
|         # font-2 = "FontAwesome5Free:style=Regular:size=10;4"; |  | ||||||
| 
 |  | ||||||
|         modules-left = "i3"; |  | ||||||
|         modules-center = "xwindow"; |  | ||||||
|         modules-right = "xkeyboard pulseaudio filesystem memory cpu temperature gputemperature nvmetemperature wlan eth date semanatec"; |  | ||||||
|         separator = "|"; |  | ||||||
| 
 |  | ||||||
|         tray-position = "right"; |  | ||||||
|         tray-padding = 2; |  | ||||||
| 
 |  | ||||||
|         # To allow other windows to be placed above the bar, or to avoid having the bar visible when in fullscreen mode, |  | ||||||
|         # you need to use the following two parameters. Note that it will tell the window manager to back off so no |  | ||||||
|         # area will be reserved, etc. |  | ||||||
|         # |  | ||||||
|         # wm-restack = "i3"; |  | ||||||
|         # override-redirect = true; |  | ||||||
| 
 |  | ||||||
|         cursor-click = "pointer"; |  | ||||||
|         cursor-scroll = "ns-resize"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "bar/secondary" = { |  | ||||||
|         monitor = head (attrNames (filterAttrs (monitorId: v: |  | ||||||
|           !v.primary) |  | ||||||
|         config.local.gui.monitors)); # this is bad. will fail if more than 2 monitors. this sets all monitors other than the primary one for this bar. |  | ||||||
|         "inherit" = "bar/main"; |  | ||||||
| 
 |  | ||||||
|         modules-left = "i3"; |  | ||||||
|         modules-center = "xwindow"; |  | ||||||
|         modules-right = "xkeyboard pulseaudio date"; |  | ||||||
|         tray-position = "none"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/xwindow" = { |  | ||||||
|         type = "internal/xwindow"; |  | ||||||
|         label = "%title:0:30:...%"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/xkeyboard" = { |  | ||||||
|         type = "internal/xkeyboard"; |  | ||||||
|         blacklist-0 = "num lock"; |  | ||||||
| 
 |  | ||||||
|         format-prefix = ""; |  | ||||||
|         format-prefix-foreground = "\${colors.foreground-alt}"; |  | ||||||
| 
 |  | ||||||
|         label-layout = "%layout%"; |  | ||||||
| 
 |  | ||||||
|         label-indicator-padding = 2; |  | ||||||
|         label-indicator-margin = 1; |  | ||||||
|         label-indicator-background = "\${colors.secondary}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/filesystem" = { |  | ||||||
|         type = "internal/fs"; |  | ||||||
|         interval = 10; |  | ||||||
| 
 |  | ||||||
|         mount-0 = "/"; |  | ||||||
| 
 |  | ||||||
|         label-mounted = "%{F#0a81f5}%mountpoint%%{F-}: %used%/%total%"; |  | ||||||
|         label-unmounted = ""; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/i3" = { |  | ||||||
|         type = "internal/i3"; |  | ||||||
|         format = "<label-state> <label-mode>"; |  | ||||||
|         index-sort = true; |  | ||||||
|         wrapping-scroll = false; |  | ||||||
| 
 |  | ||||||
|         # Only show workspaces on the same output as the bar |  | ||||||
|         # pin-workspaces = true |  | ||||||
| 
 |  | ||||||
|         label-mode-padding = 1; |  | ||||||
|         label-mode-foreground = "#000"; |  | ||||||
|         label-mode-background = "\${colors.primary}"; |  | ||||||
| 
 |  | ||||||
|         # focused = Active workspace on focused monitor |  | ||||||
|         label-focused = "%index%"; |  | ||||||
|         label-focused-background = "\${colors.background}"; |  | ||||||
|         label-focused-underline = "\${colors.primary}"; |  | ||||||
|         label-focused-padding = 1; |  | ||||||
| 
 |  | ||||||
|         # unfocused = Inactive workspace on any monitor |  | ||||||
|         label-unfocused = "%index%"; |  | ||||||
|         label-unfocused-padding = 1; |  | ||||||
| 
 |  | ||||||
|         # visible = Active workspace on unfocused monitor |  | ||||||
|         label-visible = "%index%"; |  | ||||||
|         label-visible-background = "\${self.label-focused-background}"; |  | ||||||
|         label-visible-underline = "\${self.label-focused-underline}"; |  | ||||||
|         label-visible-padding = "\${self.label-focused-padding}"; |  | ||||||
| 
 |  | ||||||
|         # urgent = Workspace with urgency hint set |  | ||||||
|         label-urgent = "%index%"; |  | ||||||
|         label-urgent-background = "\${colors.alert}"; |  | ||||||
|         label-urgent-padding = 1; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/xbacklight" = { |  | ||||||
|         type = "internal/xbacklight"; |  | ||||||
| 
 |  | ||||||
|         format = "<label> <bar>"; |  | ||||||
|         label = "BL"; |  | ||||||
| 
 |  | ||||||
|         bar-width = 10; |  | ||||||
|         bar-indicator = "|"; |  | ||||||
|         bar-indicator-foreground = "#fff"; |  | ||||||
|         bar-indicator-font = 2; |  | ||||||
|         bar-fill = "─"; |  | ||||||
|         bar-fill-font = 2; |  | ||||||
|         bar-fill-foreground = "#9f78e1"; |  | ||||||
|         bar-empty = "─"; |  | ||||||
|         bar-empty-font = 2; |  | ||||||
|         bar-empty-foreground = "\${colors.foreground-alt}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/backlight-acpi" = { |  | ||||||
|         "inherit" = "module/xbacklight"; |  | ||||||
|         type = "internal/backlight"; |  | ||||||
|         card = "intel_backlight"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/cpu" = { |  | ||||||
|         type = "internal/cpu"; |  | ||||||
|         interval = 2; |  | ||||||
|         format-prefix = "cpu "; |  | ||||||
|         format-prefix-foreground = "\${colors.foreground-alt}"; |  | ||||||
|         label = "%percentage:2%%"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/memory" = { |  | ||||||
|         type = "internal/memory"; |  | ||||||
|         interval = 2; |  | ||||||
|         format-prefix = "mem "; |  | ||||||
|         format-prefix-foreground = "\${colors.foreground-alt}"; |  | ||||||
|         label = "%percentage_used%%"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/wlan" = { |  | ||||||
|         type = "internal/network"; |  | ||||||
|         interface = "wlp7s0"; |  | ||||||
|         interval = 3.0; |  | ||||||
| 
 |  | ||||||
|         format-connected = "<ramp-signal> <label-connected>"; |  | ||||||
|         label-connected = "%essid%"; |  | ||||||
| 
 |  | ||||||
|         format-disconnected = ""; |  | ||||||
|         # format-disconnected = "<label-disconnected>"; |  | ||||||
|         # format-disconnected-underline = "\${self.format-connected-underline}"; |  | ||||||
|         # label-disconnected = "%ifname% disconnected"; |  | ||||||
|         # label-disconnected-foreground = "\${colors.foreground-alt}"; |  | ||||||
| 
 |  | ||||||
|         ramp-signal-0 = ""; |  | ||||||
|         ramp-signal-1 = ""; |  | ||||||
|         ramp-signal-2 = ""; |  | ||||||
|         ramp-signal-3 = ""; |  | ||||||
|         ramp-signal-4 = ""; |  | ||||||
|         ramp-signal-foreground = "\${colors.foreground-alt}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/eth" = { |  | ||||||
|         type = "internal/network"; |  | ||||||
|         interface = "enp8s0"; |  | ||||||
|         interval = 3.0; |  | ||||||
| 
 |  | ||||||
|         format-connected-prefix = ""; |  | ||||||
|         format-connected-prefix-foreground = "\${colors.foreground-alt}"; |  | ||||||
|         label-connected = "%local_ip%"; |  | ||||||
| 
 |  | ||||||
|         format-disconnected = ""; |  | ||||||
|         # format-disconnected = "<label-disconnected>"; |  | ||||||
|         # format-disconnected-underline = "\${self.format-connected-underline}"; |  | ||||||
|         # label-disconnected = "%ifname% disconnected"; |  | ||||||
|         # label-disconnected-foreground = "\${colors.foreground-alt}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/date" = { |  | ||||||
|         type = "internal/date"; |  | ||||||
|         interval = 1; |  | ||||||
| 
 |  | ||||||
|         date = " %d/%m/%Y"; |  | ||||||
|         date-alt = " %c"; |  | ||||||
| 
 |  | ||||||
|         time = "%H:%M"; |  | ||||||
|         time-alt = " [%s]"; |  | ||||||
| 
 |  | ||||||
|         format-prefix = ""; |  | ||||||
|         format-prefix-foreground = "\${colors.foreground-alt}"; |  | ||||||
| 
 |  | ||||||
|         label = "%date% %time%"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       #      "module/semanatec" = { |  | ||||||
|       #        type = "custom/script" |  | ||||||
|       #        exec = "/home/fabian/bin/semanatec/target/release/semanatec" |  | ||||||
|       #        interval = 3600 |  | ||||||
|       #        format-prefix = "" |  | ||||||
|       #      }; |  | ||||||
| 
 |  | ||||||
|       "module/pulseaudio" = { |  | ||||||
|         type = "internal/pulseaudio"; |  | ||||||
| 
 |  | ||||||
|         format-volume = "<label-volume>"; |  | ||||||
|         label-volume = "vol %percentage%%"; |  | ||||||
|         label-volume-foreground = "\${root.foreground}"; |  | ||||||
| 
 |  | ||||||
|         label-muted = "vol 0%"; |  | ||||||
|         label-muted-foreground = "\${root.foreground}"; |  | ||||||
| 
 |  | ||||||
|         bar-volume-width = 10; |  | ||||||
|         bar-volume-foreground-0 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-1 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-2 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-3 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-4 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-5 = "#f5a70a"; |  | ||||||
|         bar-volume-foreground-6 = "#ff5555"; |  | ||||||
|         bar-volume-gradient = false; |  | ||||||
|         bar-volume-indicator = "|"; |  | ||||||
|         bar-volume-indicator-font = 2; |  | ||||||
|         bar-volume-fill = "─"; |  | ||||||
|         bar-volume-fill-font = 2; |  | ||||||
|         bar-volume-empty = "─"; |  | ||||||
|         bar-volume-empty-font = 2; |  | ||||||
|         bar-volume-empty-foreground = "\${colors.foreground-alt}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/alsa" = { |  | ||||||
|         type = "internal/alsa"; |  | ||||||
| 
 |  | ||||||
|         format-volume = "<label-volume> <bar-volume>"; |  | ||||||
|         label-volume = "VOL"; |  | ||||||
|         label-volume-foreground = "\${root.foreground}"; |  | ||||||
| 
 |  | ||||||
|         format-muted-prefix = "vol "; |  | ||||||
|         format-muted-foreground = "\${colors.foreground-alt}"; |  | ||||||
|         label-muted = "sound muted"; |  | ||||||
| 
 |  | ||||||
|         bar-volume-width = 10; |  | ||||||
|         bar-volume-foreground-0 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-1 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-2 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-3 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-4 = "#55aa55"; |  | ||||||
|         bar-volume-foreground-5 = "#f5a70a"; |  | ||||||
|         bar-volume-foreground-6 = "#ff5555"; |  | ||||||
|         bar-volume-gradient = false; |  | ||||||
|         bar-volume-indicator = "|"; |  | ||||||
|         bar-volume-indicator-font = 2; |  | ||||||
|         bar-volume-fill = "─"; |  | ||||||
|         bar-volume-fill-font = 2; |  | ||||||
|         bar-volume-empty = "─"; |  | ||||||
|         bar-volume-empty-font = 2; |  | ||||||
|         bar-volume-empty-foreground = "\${colors.foreground-alt}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/battery" = { |  | ||||||
|         type = "internal/battery"; |  | ||||||
|         battery = "BAT0"; |  | ||||||
|         adapter = "ADP1"; |  | ||||||
|         full-at = 98; |  | ||||||
| 
 |  | ||||||
|         format-charging = "<animation-charging> <label-charging>"; |  | ||||||
|         format-charging-underline = "#ffb52a"; |  | ||||||
| 
 |  | ||||||
|         format-discharging = "<animation-discharging> <label-discharging>"; |  | ||||||
|         format-discharging-underline = "\${self.format-charging-underline}"; |  | ||||||
| 
 |  | ||||||
|         format-full-prefix = " "; |  | ||||||
|         format-full-prefix-foreground = "\${colors.foreground-alt}"; |  | ||||||
|         format-full-underline = "\${self.format-charging-underline}"; |  | ||||||
| 
 |  | ||||||
|         ramp-capacity-0 = ""; |  | ||||||
|         ramp-capacity-1 = ""; |  | ||||||
|         ramp-capacity-2 = ""; |  | ||||||
|         ramp-capacity-foreground = "\${colors.foreground-alt}"; |  | ||||||
| 
 |  | ||||||
|         animation-charging-0 = ""; |  | ||||||
|         animation-charging-1 = ""; |  | ||||||
|         animation-charging-2 = ""; |  | ||||||
|         animation-charging-foreground = "\${colors.foreground-alt}"; |  | ||||||
|         animation-charging-framerate = 750; |  | ||||||
| 
 |  | ||||||
|         animation-discharging-0 = ""; |  | ||||||
|         animation-discharging-1 = ""; |  | ||||||
|         animation-discharging-2 = ""; |  | ||||||
|         animation-discharging-foreground = "\${colors.foreground-alt}"; |  | ||||||
|         animation-discharging-framerate = 750; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/temperature" = { |  | ||||||
|         type = "internal/temperature"; |  | ||||||
|         warn-temperature = 60; |  | ||||||
|         hwmon-path = "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon1/temp2_input"; |  | ||||||
| 
 |  | ||||||
|         format = "<ramp> <label>"; |  | ||||||
|         format-warn = "<ramp> <label-warn>"; |  | ||||||
| 
 |  | ||||||
|         label = "cpu %temperature-c%"; |  | ||||||
|         label-warn = "cpu %temperature-c%"; |  | ||||||
|         label-warn-foreground = "\${colors.secondary}"; |  | ||||||
| 
 |  | ||||||
|         ramp-0 = ""; |  | ||||||
|         ramp-1 = ""; |  | ||||||
|         ramp-2 = ""; |  | ||||||
|         ramp-foreground = "\${colors.foreground-alt}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/gputemperature" = { |  | ||||||
|         type = "internal/temperature"; |  | ||||||
|         warn-temperature = 60; |  | ||||||
|         hwmon-path = "/sys/devices/pci0000:00/0000:00:03.1/0000:09:00.0/hwmon/hwmon3/temp1_input"; |  | ||||||
| 
 |  | ||||||
|         format = "<ramp> <label>"; |  | ||||||
|         format-warn = "<ramp> <label-warn>"; |  | ||||||
| 
 |  | ||||||
|         label = "gpu %temperature-c%"; |  | ||||||
|         label-warn = "gpu %temperature-c%"; |  | ||||||
|         label-warn-foreground = "\${colors.secondary}"; |  | ||||||
| 
 |  | ||||||
|         ramp-0 = ""; |  | ||||||
|         ramp-1 = ""; |  | ||||||
|         ramp-2 = ""; |  | ||||||
|         ramp-foreground = "\${colors.foreground-alt}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/nvmetemperature" = { |  | ||||||
|         type = "internal/temperature"; |  | ||||||
|         warn-temperature = 60; |  | ||||||
|         hwmon-path = "/sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/hwmon/hwmon0/temp1_input"; |  | ||||||
| 
 |  | ||||||
|         format = "<ramp> <label>"; |  | ||||||
|         format-warn = "<ramp> <label-warn>"; |  | ||||||
| 
 |  | ||||||
|         label = "M.2 %temperature-c%"; |  | ||||||
|         label-warn = "M.2 %temperature-c%"; |  | ||||||
|         label-warn-foreground = "\${colors.secondary}"; |  | ||||||
| 
 |  | ||||||
|         ramp-0 = ""; |  | ||||||
|         ramp-1 = ""; |  | ||||||
|         ramp-2 = ""; |  | ||||||
|         ramp-foreground = "\${colors.foreground-alt}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/powermenu" = { |  | ||||||
|         type = "custom/menu"; |  | ||||||
| 
 |  | ||||||
|         expand-right = true; |  | ||||||
| 
 |  | ||||||
|         format-spacing = 1; |  | ||||||
| 
 |  | ||||||
|         label-open = ""; |  | ||||||
|         label-open-foreground = "\${colors.secondary}"; |  | ||||||
|         label-close = " cancel"; |  | ||||||
|         label-close-foreground = "\${colors.secondary}"; |  | ||||||
|         label-separator = "|"; |  | ||||||
|         label-separator-foreground = "\${colors.foreground-alt}"; |  | ||||||
| 
 |  | ||||||
|         menu-0-0 = "reboot"; |  | ||||||
|         menu-0-0-exec = "menu-open-1"; |  | ||||||
|         menu-0-1 = "power off"; |  | ||||||
|         menu-0-1-exec = "menu-open-2"; |  | ||||||
| 
 |  | ||||||
|         menu-1-0 = "cancel"; |  | ||||||
|         menu-1-0-exec = "menu-open-0"; |  | ||||||
|         menu-1-1 = "reboot"; |  | ||||||
|         menu-1-1-exec = "sudo reboot"; |  | ||||||
| 
 |  | ||||||
|         menu-2-0 = "power off"; |  | ||||||
|         menu-2-0-exec = "sudo poweroff"; |  | ||||||
|         menu-2-1 = "cancel"; |  | ||||||
|         menu-2-1-exec = "menu-open-0"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "module/sink_changer" = { |  | ||||||
|         type = "custom/script"; |  | ||||||
|         exec = "/home/fabian/bin/polybar_scripts/info.sh"; |  | ||||||
|         label = "%output%"; |  | ||||||
|         click-left = "/home/fabian/bin/polybar_scripts/sink_changer.sh"; |  | ||||||
|         # format-prefix = " "; |  | ||||||
|         interval = "0"; |  | ||||||
|         # format-prefix-foreground = "${colors.foreground-alt}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "settings" = { |  | ||||||
|         screenchange-reload = true; |  | ||||||
|         # compositing-background = "xor"; |  | ||||||
|         # compositing-background = "screen"; |  | ||||||
|         # compositing-foreground = "source"; |  | ||||||
|         # compositing-border = "over"; |  | ||||||
|         # pseudo-transparency = false; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "global/wm" = { |  | ||||||
|         margin-top = 5; |  | ||||||
|         margin-bottom = 5; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| with lib; { |  | ||||||
|   config = mkIf config.local.gui.enable { |  | ||||||
|     home.file.".xinitrc".source = let |  | ||||||
|       content = '' |  | ||||||
|         exec ~/.xsession |  | ||||||
|       ''; |  | ||||||
|     in |  | ||||||
|       pkgs.writeShellScript "xinitrc" content; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -12,16 +12,9 @@ in { | ||||||
|       pkgs.wlr-randr |       pkgs.wlr-randr | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     programs = { |  | ||||||
|       waybar.enable = true; |  | ||||||
| 
 |  | ||||||
|       wofi.enable = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     services = { |     services = { | ||||||
|       swayidle = { |       swayidle = { | ||||||
|         enable = true; |         enable = true; | ||||||
| 
 |  | ||||||
|         timeouts = [ |         timeouts = [ | ||||||
|           { |           { | ||||||
|             timeout = 600; |             timeout = 600; | ||||||
|  | @ -42,13 +35,32 @@ in { | ||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|       config = { |       config = { | ||||||
|  |         output = | ||||||
|  |           lib.mapAttrs (k: v: { | ||||||
|  |             mode = "${toString v.width}x${toString v.height}@${v.rate}Hz"; | ||||||
|  |             pos = "${toString v.posX} ${toString v.posY}"; | ||||||
|  |           }) | ||||||
|  |           cfg.monitors; | ||||||
|  | 
 | ||||||
|         modifier = "Mod4"; |         modifier = "Mod4"; | ||||||
|         focus.followMouse = true; |         focus.followMouse = true; | ||||||
| 
 | 
 | ||||||
|  |         input = { | ||||||
|  |           "*" = { | ||||||
|  |             xkb_layout = "us"; | ||||||
|  |             xkb_variant = "altgr-intl"; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|         fonts = { |         fonts = { | ||||||
|           size = 11.0; |           names = ["JetBrains Mono"]; | ||||||
|           names = ["DejaVu Sans Mono"]; |           style = "Regular"; | ||||||
|           style = "Bold Semi-Condensed"; |           size = 8.0; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         gaps = { | ||||||
|  |           inner = 10; | ||||||
|  |           outer = -10; | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         bars = singleton { |         bars = singleton { | ||||||
|  | @ -56,6 +68,23 @@ in { | ||||||
|           position = "top"; |           position = "top"; | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|  |         window = { | ||||||
|  |           hideEdgeBorders = "both"; | ||||||
|  |           titlebar = false; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         workspaceLayout = "tabbed"; | ||||||
|  | 
 | ||||||
|  |         colors = { | ||||||
|  |           focused = { | ||||||
|  |             background = "#222222"; | ||||||
|  |             border = "#4c7899"; | ||||||
|  |             childBorder = "#222222"; | ||||||
|  |             indicator = "#292d2e"; | ||||||
|  |             text = "#888888"; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|         keybindings = let |         keybindings = let | ||||||
|           mod = config.wayland.windowManager.sway.config.modifier; |           mod = config.wayland.windowManager.sway.config.modifier; | ||||||
|           wofi = config.programs.wofi.package; |           wofi = config.programs.wofi.package; | ||||||
|  | @ -66,26 +95,30 @@ in { | ||||||
|             "${mod}+a" = "focus parent"; |             "${mod}+a" = "focus parent"; | ||||||
|             "${mod}+c" = "focus child"; |             "${mod}+c" = "focus child"; | ||||||
|             "${mod}+d" = "exec --no-startup-id ${getExe wofi} -S run"; |             "${mod}+d" = "exec --no-startup-id ${getExe wofi} -S run"; | ||||||
|             "${mod}+i" = "exec busctl --user call rs.wl-gammarelay / rs.wl.gammarelay ToggleInverted"; |             "${mod}+l" = "exec ${getExe pkgs.gtklock} -d"; | ||||||
|             "${mod}+o" = "exec ${getExe pkgs.gtklock} -d"; |  | ||||||
|             "${mod}+Return" = "exec ${lib.getExe pkgs.kitty} ${lib.getExe pkgs.tmux}"; |             "${mod}+Return" = "exec ${lib.getExe pkgs.kitty} ${lib.getExe pkgs.tmux}"; | ||||||
|             "${mod}+Shift+e" = "input * xkb_layout latam"; |             "${mod}+Shift+s" = "exec ${grimshot} copy area"; | ||||||
|             "${mod}+Shift+u" = "input * xkb_layout us"; |             "${mod}+Tab" = "focus right"; | ||||||
|             "${mod}+p" = "exec ${grimshot} copy active"; |             "${mod}+Shift+Tab" = "focus left"; | ||||||
|             "${mod}+Shift+p" = "exec ${grimshot} copy area"; |             "${mod}+Shift+w" = "move workspace to output right"; | ||||||
|             "${mod}+Ctrl+p" = "exec ${grimshot} copy window"; |  | ||||||
|           }; |           }; | ||||||
| 
 | 
 | ||||||
|         window.commands = [ |         startup = [ | ||||||
|           # (No) Title Bars |  | ||||||
|           { |           { | ||||||
|             command = "border pixel 5"; |             command = "${lib.getExe pkgs.sway} 'workspace 1; exec ${lib.getExe pkgs.firefox}'"; | ||||||
|             criteria.class = "^.*"; |  | ||||||
|           } |           } | ||||||
| 
 |  | ||||||
|           { |           { | ||||||
|             command = "floating enabled"; |             command = "${lib.getExe pkgs.sway} 'workspace 2; exec ${lib.getExe pkgs.tdesktop}'"; | ||||||
|             criteria.class = "floating"; |           } | ||||||
|  |           { | ||||||
|  |             command = "${lib.getExe pkgs.sway} 'workspace 2; exec ${lib.getExe pkgs.gajim}'"; | ||||||
|  |           } | ||||||
|  |           { | ||||||
|  |             command = "${lib.getExe pkgs.swaybg} -m fill -i ${config.home.homeDirectory}/Pictures/wallpapers/jupiter.png"; | ||||||
|  |             always = true; | ||||||
|  |           } | ||||||
|  |           { | ||||||
|  |             command = "${lib.getExe pkgs.networkmanagerapplet}"; | ||||||
|           } |           } | ||||||
|         ]; |         ]; | ||||||
|       }; |       }; | ||||||
|  |  | ||||||
							
								
								
									
										172
									
								
								home/modules/gui/waybar.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								home/modules/gui/waybar.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,172 @@ | ||||||
|  | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | with lib; let | ||||||
|  |   cfg = config.local.gui; | ||||||
|  | in { | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     programs.waybar = { | ||||||
|  |       enable = true; | ||||||
|  |       settings = { | ||||||
|  |         mainBar = { | ||||||
|  |           layer = "top"; | ||||||
|  |           position = "top"; | ||||||
|  |           height = 20; | ||||||
|  |           spacing = 0; | ||||||
|  | 
 | ||||||
|  |           modules-left = [ | ||||||
|  |             "sway/workspaces" | ||||||
|  |             "sway/mode" | ||||||
|  |           ]; | ||||||
|  |           modules-center = [ | ||||||
|  |             "clock" | ||||||
|  |           ]; | ||||||
|  | 
 | ||||||
|  |           modules-right = [ | ||||||
|  |             "cpu" | ||||||
|  |             "memory" | ||||||
|  |             "keyboard-state" | ||||||
|  |             "tray" | ||||||
|  |           ]; | ||||||
|  |           "keyboard-state" = { | ||||||
|  |             numlock = true; | ||||||
|  |             capslock = true; | ||||||
|  |           }; | ||||||
|  |           "tray" = { | ||||||
|  |             icon-size = 13; | ||||||
|  |             spacing = 8; | ||||||
|  |           }; | ||||||
|  |           "clock" = { | ||||||
|  |             interval = 60; | ||||||
|  |             format = "{:%A %B %d %Y %H:%M}"; | ||||||
|  |             tooltip = true; | ||||||
|  |             tooltip-format = "{}"; | ||||||
|  |           }; | ||||||
|  |           "cpu" = { | ||||||
|  |             format = "cpu {usage}%"; | ||||||
|  |             tooltip = false; | ||||||
|  |           }; | ||||||
|  |           "memory" = { | ||||||
|  |             format = "mem {percentage}%"; | ||||||
|  |             tooltip = true; | ||||||
|  |             tooltip-format = "{used}/{total}"; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |       style = '' | ||||||
|  |         * { | ||||||
|  |           font-family: "JetBrains Mono", monospace; | ||||||
|  |           font-size: 12px; | ||||||
|  |           font-weight: 500; | ||||||
|  |           border: none; | ||||||
|  |           box-shadow: none; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* Entire bar: fully transparent, no border */ | ||||||
|  |         window#waybar { | ||||||
|  |           background: transparent; | ||||||
|  |           color: #eaeaea; | ||||||
|  |           margin: 0; | ||||||
|  |           padding: 0; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* Optional: small edge breathing room (comment out if you want edge-to-edge) */ | ||||||
|  |         /* window#waybar { margin: 3px 6px 0 6px; } */ | ||||||
|  | 
 | ||||||
|  |         /* Module containers */ | ||||||
|  |         .modules-left, .modules-center, .modules-right { | ||||||
|  |           padding: 0; | ||||||
|  |           margin: 0 6px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* Subtle separators between modules (no boxes) */ | ||||||
|  |         .modules-left > widget:not(:first-child), | ||||||
|  |         .modules-center > widget:not(:first-child), | ||||||
|  |         .modules-right > widget:not(:first-child) { | ||||||
|  |           margin-left: 8px; | ||||||
|  |           padding-left: 8px; | ||||||
|  |           border-left: 1px solid rgba(255, 255, 255, 0.08); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* Tightest possible workspaces */ | ||||||
|  |         #workspaces { padding: 0; margin: 0; } | ||||||
|  |         #workspaces button { | ||||||
|  |           margin: 0; | ||||||
|  |           padding: 0 3px; | ||||||
|  |           min-width: 0; | ||||||
|  |           border-radius: 0; | ||||||
|  |           background: transparent; | ||||||
|  |           color: #cfcfcf; | ||||||
|  |         } | ||||||
|  |         #workspaces button:hover { | ||||||
|  |           background: rgba(255, 255, 255, 0.06); | ||||||
|  |         } | ||||||
|  |         #workspaces button.active, | ||||||
|  |         #workspaces button.focused { | ||||||
|  |           background: rgba(255, 255, 255, 0.10); | ||||||
|  |           color: #ffffff; | ||||||
|  |           border-bottom: 2px solid #ffffff; | ||||||
|  |         } | ||||||
|  |         #workspaces button.urgent { | ||||||
|  |           background: rgba(255, 80, 80, 0.25); | ||||||
|  |           border-bottom: 2px solid #ff5050; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* Focused window title: single line, no glow */ | ||||||
|  |         #window { | ||||||
|  |           padding: 0 6px; | ||||||
|  |           margin: 0; | ||||||
|  |           color: #dedede; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* Sway mode indicator: visible only when active, no bloat */ | ||||||
|  |         #mode { | ||||||
|  |           padding: 0 6px; | ||||||
|  |           margin: 0; | ||||||
|  |           background: rgba(255, 255, 255, 0.10); | ||||||
|  |           color: #ffffff; | ||||||
|  |           border-bottom: 2px solid #ffffff; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* Status modules — keep them flat and compact */ | ||||||
|  |         #clock, #battery, #network, #pulseaudio, #backlight, #cpu, #memory, #temperature, #tray { | ||||||
|  |           padding: 0 6px; | ||||||
|  |           margin: 0; | ||||||
|  |           background: transparent; | ||||||
|  |           color: #eaeaea; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* States (battery, network, audio) */ | ||||||
|  |         #battery.charging { color: #c9ffbf; } | ||||||
|  |         #battery.warning:not(.charging) { color: #ffd29a; } | ||||||
|  |         #battery.critical:not(.charging) { color: #ff9a9a; } | ||||||
|  | 
 | ||||||
|  |         #network.disconnected { color: #ffb4b4; } | ||||||
|  |         #pulseaudio.muted    { color: #9aa0a6; } | ||||||
|  | 
 | ||||||
|  |         /* Tray: compress icons */ | ||||||
|  |         #tray > .passive { opacity: 0.6; } | ||||||
|  |         #tray > .needs-attention { opacity: 1; } | ||||||
|  | 
 | ||||||
|  |         /* Tooltips: clean and readable */ | ||||||
|  |         tooltip { | ||||||
|  |           background: rgba(30, 30, 30, 0.95); | ||||||
|  |           border: 1px solid rgba(255, 255, 255, 0.08); | ||||||
|  |           color: #eaeaea; | ||||||
|  |           padding: 6px 8px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* Remove any leftover borders around everything */ | ||||||
|  |         #custom-*, #idle_inhibitor, #privacy, #bluetooth { | ||||||
|  |           border: none; | ||||||
|  |           background: transparent; | ||||||
|  |           margin: 0; | ||||||
|  |           padding: 0 6px; | ||||||
|  |         } | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										74
									
								
								home/modules/gui/wofi.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								home/modules/gui/wofi.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,74 @@ | ||||||
|  | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | with lib; let | ||||||
|  |   cfg = config.local.gui; | ||||||
|  | in { | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     programs = { | ||||||
|  |       wofi = { | ||||||
|  |         enable = true; | ||||||
|  |         settings = { | ||||||
|  |           prompt = ""; | ||||||
|  |           width = "25%"; | ||||||
|  |           height = "30%"; | ||||||
|  |         }; | ||||||
|  |         style = '' | ||||||
|  |           window { | ||||||
|  |             background-color: rgb(0, 0, 0); | ||||||
|  |             color: #eaeaea; | ||||||
|  |             font-family: monospace; | ||||||
|  |             font-size: 12px; | ||||||
|  |             border: none; | ||||||
|  |             border-radius: 0; | ||||||
|  |             padding: 0; | ||||||
|  |             width: 50%;   /* half screen width */ | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|  |           /* Search input */ | ||||||
|  |           #input { | ||||||
|  |             background-color: rgba(0, 0, 0, 0.5); | ||||||
|  |             color: #ffffff; | ||||||
|  |             padding: 4px 6px; | ||||||
|  |             border: none; | ||||||
|  |             border-radius: 0; | ||||||
|  |             margin: 0; | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|  |           /* Results list container */ | ||||||
|  |           #inner-box { | ||||||
|  |             background-color: transparent; | ||||||
|  |             margin: 0; | ||||||
|  |             padding: 0; | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|  |           /* Entries */ | ||||||
|  |           #entry { | ||||||
|  |             padding: 2px 6px; | ||||||
|  |             margin: 0; | ||||||
|  |             border-radius: 0; | ||||||
|  |             background-color: transparent; | ||||||
|  |             color: #cccccc; | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|  |           /* Text inside entries */ | ||||||
|  |           #text { | ||||||
|  |             padding: 0; | ||||||
|  |             margin: 0; | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|  |           /* Scrollbar */ | ||||||
|  |           scrollbar { | ||||||
|  |             background: transparent; | ||||||
|  |           } | ||||||
|  |           scrollbar slider { | ||||||
|  |             background: rgba(255, 255, 255, 0.15); | ||||||
|  |           } | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -43,10 +43,7 @@ | ||||||
|       gaming.enable = true; |       gaming.enable = true; | ||||||
|       yubikey.enable = true; |       yubikey.enable = true; | ||||||
|       defaultDesktopPack.enable = true; |       defaultDesktopPack.enable = true; | ||||||
|       firefox = { |       firefox.enable = true; | ||||||
|         enable = true; |  | ||||||
|         workspace = "1"; #make this an int later |  | ||||||
|       }; |  | ||||||
|       mapping.enable = true; |       mapping.enable = true; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | @ -54,19 +51,15 @@ | ||||||
|       enable = true; |       enable = true; | ||||||
|       monitors = { |       monitors = { | ||||||
|         DP-1 = { |         DP-1 = { | ||||||
|           primary = true; |           width = "1920"; | ||||||
|           position = "0x0"; |           height = "1080"; | ||||||
|           mode = "1920x1080"; |           rate = "59.94"; | ||||||
|           rate = "143.85"; |  | ||||||
|           fingerprint = "00ffffffffffff003669a03bd4040000231e0104a5341d783bd005ac5048a627125054bfcf00814081809500714f81c0b30001010101023a801871382d40582c450009252100001e0882805070384d400820f80c09252100001a000000fd003090b4b422010a202020202020000000fc004d53492047323443340a20202001a2020320f14d010304131f120211900e0f1d1e230907078301000065030c001000866f80a0703840403020350009252100001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e9"; |  | ||||||
|           initialI3Workspace = 1; |  | ||||||
|         }; |         }; | ||||||
|         DP-2 = { |         DP-2 = { | ||||||
|           position = "1920x0"; |           width = "1920"; | ||||||
|           mode = "1920x1080"; |           height = "1080"; | ||||||
|           rate = "59.94"; |           rate = "143.855"; | ||||||
|           fingerprint = "00ffffffffffff0009d1e77845540000061f0104a5351e783a0565a756529c270f5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff0039324d30303033323031510a20000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a20019b02031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d"; |           posX = "1920"; | ||||||
|           initialI3Workspace = 10; |  | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  | @ -77,10 +70,8 @@ | ||||||
|       darktable |       darktable | ||||||
|       (gajim.override { |       (gajim.override { | ||||||
|         enableSecrets = true; |         enableSecrets = true; | ||||||
|         # enableJingle = true; |  | ||||||
|         # enableSpelling = true; |  | ||||||
|         enableUPnP = true; |         enableUPnP = true; | ||||||
|         # enableAppIndicator = true; |         enableAppIndicator = true; | ||||||
|         enableE2E = true; |         enableE2E = true; | ||||||
|         enableRST = true; |         enableRST = true; | ||||||
|       }) |       }) | ||||||
|  |  | ||||||
|  | @ -48,12 +48,9 @@ | ||||||
|       enable = true; |       enable = true; | ||||||
|       monitors = { |       monitors = { | ||||||
|         eDP-1 = { |         eDP-1 = { | ||||||
|           primary = true; |           width = "1920"; | ||||||
|           position = "0x0"; |           height = "1080"; | ||||||
|           mode = "1920x1080"; |  | ||||||
|           rate = "60.00"; |           rate = "60.00"; | ||||||
|           fingerprint = "00ffffffffffff000dae0a1400000000291d0104a51f11780328659759548e271e505400000001010101010101010101010101010101363680a0703820403020a60035ad10000018000000fe004e3134304843412d4541450a20000000fe00434d4e0a202020202020202020000000fe004e3134304843412d4541450a200002"; |  | ||||||
|           initialI3Workspace = 1; |  | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  | @ -16,4 +16,14 @@ | ||||||
|     ./net.nix |     ./net.nix | ||||||
|     ./steam.nix |     ./steam.nix | ||||||
|   ]; |   ]; | ||||||
|  | 
 | ||||||
|  |   fonts.packages = with pkgs; [ | ||||||
|  |     jetbrains-mono | ||||||
|  |     noto-fonts | ||||||
|  |     noto-fonts-cjk-sans | ||||||
|  |     noto-fonts-emoji | ||||||
|  |     noto-fonts-extra | ||||||
|  |     nerd-fonts.fira-code | ||||||
|  |     nerd-fonts.droid-sans-mono | ||||||
|  |   ]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -25,8 +25,6 @@ in { | ||||||
|       enableSSHSupport = true; |       enableSSHSupport = true; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     programs.i3lock.u2fSupport = true; |  | ||||||
| 
 |  | ||||||
|     security.pam = { |     security.pam = { | ||||||
|       services = { |       services = { | ||||||
|         login.u2fAuth = true; |         login.u2fAuth = true; | ||||||
|  |  | ||||||
|  | @ -32,8 +32,6 @@ | ||||||
| 
 | 
 | ||||||
|   trivium.sway.enable = true; |   trivium.sway.enable = true; | ||||||
| 
 | 
 | ||||||
|   programs.i3lock.enable = true; |  | ||||||
| 
 |  | ||||||
|   networking = { |   networking = { | ||||||
|     hostName = "posixlycorrect"; |     hostName = "posixlycorrect"; | ||||||
|     networkmanager.enable = true; |     networkmanager.enable = true; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue