156 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   pkgs,
 | |
|   inputs,
 | |
|   system,
 | |
|   lib,
 | |
|   ...
 | |
| }:
 | |
| let
 | |
|   cliphist_sway = pkgs.writeShellScriptBin "cliphist_sway" ''
 | |
|     ${lib.getExe pkgs.cliphist} list | \
 | |
|     ${lib.getExe pkgs.wofi} --dmenu --insensitive | \
 | |
|     ${lib.getExe pkgs.cliphist} decode | \
 | |
|     ${pkgs.wl-clipboard}/bin/wl-copy
 | |
|   '';
 | |
|   screenshot_clip = pkgs.writeShellScriptBin "screenshot_clip" ''
 | |
|     GEOM="$(${lib.getExe pkgs.slurp} -d)"
 | |
|     ${lib.getExe pkgs.grim} -g "$GEOM" - | ${pkgs.wl-clipboard}/bin/wl-copy
 | |
|   '';
 | |
|   swaysw = inputs.swaysw.packages.${system}.swaysw;
 | |
|   term = "${pkgs.foot}/bin/footclient";
 | |
| in
 | |
| {
 | |
|   wayland.windowManager.sway = {
 | |
|     enable = true;
 | |
|     extraSessionCommands = "";
 | |
|     extraConfigEarly = '''';
 | |
| 
 | |
|     config = {
 | |
|       fonts = {
 | |
|         names = [ "JetBrainsMono" ];
 | |
|         style = "Bold Semi-Condensed";
 | |
|         size = 11.0;
 | |
|       };
 | |
| 
 | |
|       window.commands = [
 | |
|         {
 | |
|           command = "move scratchpad, resize set 1152 648";
 | |
|           criteria = {
 | |
|             app_id = "pulsemixer|python3|com.rtosta.zapzap|whatsapp-for-linux|com.viber";
 | |
|           };
 | |
|         }
 | |
|         {
 | |
|           command = "move scratchpad, resize set 1502 845";
 | |
|           criteria = {
 | |
|             app_id = "com.viber";
 | |
|           };
 | |
|         }
 | |
|         {
 | |
|           command = "floating enable";
 | |
|           criteria = {
 | |
|             app_id = "sws_cli";
 | |
|           };
 | |
|         }
 | |
|       ];
 | |
| 
 | |
|       modifier = "Mod4";
 | |
|       output = {
 | |
|         eDP-1 = {
 | |
|           /*
 | |
|             bg = "~/pic/wallpaper stretch";
 | |
|             scale = "1.4";
 | |
|           */
 | |
|         };
 | |
| 
 | |
|         HDMI-A-4 = {
 | |
|           res = "1920x1080";
 | |
|         };
 | |
|       };
 | |
| 
 | |
|       input = {
 | |
|         "type:keyboard" = {
 | |
|           repeat_delay = "150";
 | |
|         };
 | |
|         "type:keyboard" = {
 | |
|           repeat_rate = "70";
 | |
|         };
 | |
|         "type:touchpad" = {
 | |
|           tap = "enabled";
 | |
|         };
 | |
|       };
 | |
| 
 | |
|       bars = [
 | |
|         {
 | |
|           position = "top";
 | |
|           fonts = {
 | |
|             names = [
 | |
|               "Iosevka"
 | |
|               "FontAwesome"
 | |
|             ];
 | |
|             style = "Bold Semi-Condensed";
 | |
|             size = 12.0;
 | |
|           };
 | |
|           statusCommand = "${lib.getExe pkgs.i3status-rust} ~/.config/i3status-rust/config-top.toml";
 | |
|         }
 | |
|       ];
 | |
| 
 | |
|       keybindings = {
 | |
|         "Alt+Shift+q" = "kill";
 | |
|         "Alt+Shift+Return" = "exec ${term}";
 | |
|         "Alt+p" = "exec ${pkgs.bemenu}/bin/bemenu-run";
 | |
|         "Alt+c" = "exec ${pkgs.moreutils}/bin/lckdo cliphist_sway ${cliphist_sway}/bin/cliphist_sway";
 | |
|         "Print" = "exec ${pkgs.moreutils}/bin/lckdo screenshot_clip ${screenshot_clip}/bin/screenshot_clip";
 | |
| 
 | |
|         "Alt+Shift+space" = "floating toggle";
 | |
|         "Alt+space" = "focus mode_toggle";
 | |
| 
 | |
|         "Alt+m" = "layout toggle splith tabbed";
 | |
|         "Alt+t" = "split toggle";
 | |
|         "Alt+s" = "layout toggle split";
 | |
| 
 | |
|         "Alt+1" = "workspace 1";
 | |
|         "Alt+2" = "workspace 2";
 | |
|         "Alt+3" = "workspace 3";
 | |
|         "Alt+4" = "workspace 4";
 | |
|         "Alt+5" = "workspace 5";
 | |
|         "Alt+6" = "workspace 6";
 | |
|         "Alt+7" = "workspace 7";
 | |
|         "Alt+8" = "workspace 8";
 | |
|         "Alt+9" = "workspace 9";
 | |
|         "Alt+0" = "workspace 10";
 | |
| 
 | |
|         "Alt+Shift+1" = "move container to workspace 1";
 | |
|         "Alt+Shift+2" = "move container to workspace 2";
 | |
|         "Alt+Shift+3" = "move container to workspace 3";
 | |
|         "Alt+Shift+4" = "move container to workspace 4";
 | |
|         "Alt+Shift+5" = "move container to workspace 5";
 | |
|         "Alt+Shift+6" = "move container to workspace 6";
 | |
|         "Alt+Shift+7" = "move container to workspace 7";
 | |
|         "Alt+Shift+8" = "move container to workspace 8";
 | |
|         "Alt+Shift+9" = "move container to workspace 9";
 | |
|         "Alt+Shift+0" = "move container to workspace 10";
 | |
| 
 | |
|         "Alt+h" = "focus left";
 | |
|         "Alt+j" = "focus down";
 | |
|         "Alt+k" = "focus up";
 | |
|         "Alt+l" = "focus right";
 | |
|         "Alt+slash" = "exec ${pkgs.moreutils}/bin/lckdo swaysw ${swaysw}/bin/swaysw";
 | |
|         "Alt+Escape" = "workspace back_and_forth";
 | |
|         "Alt+f" = "fullscreen enable";
 | |
|         "Alt+bracketright" = "focus output right";
 | |
|         "Alt+bracketleft" = "focus output left";
 | |
| 
 | |
|         "Mod4+l" =
 | |
|           ''exec ${pkgs.sway}/bin/swaymsg [app_id="python3"] scratchpad show || exec ${term} -a python3 ${lib.getExe pkgs.python3}'';
 | |
|         "Mod4+j" =
 | |
|           "exec ${pkgs.sway}/bin/swaymsg [app_id=com.rtosta.zapzap] scratchpad show || exec ${lib.getExe pkgs.zapzap}";
 | |
|         "Mod4+h" =
 | |
|           "exec ${pkgs.sway}/bin/swaymsg [app_id=com.viber] scratchpad show || exec ${pkgs.viber}/bin/viber";
 | |
|         "Mod4+y" =
 | |
|           ''exec ${pkgs.sway}/bin/swaymsg [app_id="pulsemixer"] scratchpad show || exec ${term} -a pulsemixer ${lib.getExe pkgs.pulsemixer}'';
 | |
|         "Mod4+p" = "exec ${lib.getExe pkgs.tessen} -a copy";
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |