diff options
author | sinanmohd <sinan@sinanmohd.com> | 2024-06-03 13:47:51 +0530 |
---|---|---|
committer | sinanmohd <sinan@sinanmohd.com> | 2024-06-03 16:36:00 +0530 |
commit | 4311eaf183976752acdf5624ea68516cac6f0d94 (patch) | |
tree | a1448c41210ff6328a9408dd9a649b2be905eaba /home/wayland/modules/sway | |
parent | ede767c80ef9a88139219f686aa763031575091b (diff) |
home/wayland/sway: init
Diffstat (limited to 'home/wayland/modules/sway')
-rw-r--r-- | home/wayland/modules/sway/home.nix | 144 | ||||
-rw-r--r-- | home/wayland/modules/sway/i3status.nix | 35 | ||||
-rw-r--r-- | home/wayland/modules/sway/mako.nix | 9 | ||||
-rw-r--r-- | home/wayland/modules/sway/swaylock.nix | 14 |
4 files changed, 202 insertions, 0 deletions
diff --git a/home/wayland/modules/sway/home.nix b/home/wayland/modules/sway/home.nix new file mode 100644 index 0000000..eb2bf41 --- /dev/null +++ b/home/wayland/modules/sway/home.nix @@ -0,0 +1,144 @@ +{ config, pkgs, lib, ... }: let + mod = "mod4"; + left = "h"; + right = "l"; + down = "j"; + up = "k"; + + menu = "${pkgs.bemenu}/bin/bemenu-run --prompt ' '"; + term = lib.getExe config.programs.foot.package; + status = lib.getExe config.programs.i3status.package; + lock = lib.getExe config.programs.swaylock.package; + + nnn = lib.getExe pkgs.nnn; + wpctl = "${pkgs.wireplumber}/bin/wpctl"; + brightnessctl = lib.getExe pkgs.brightnessctl; + notification = lib.getExe config.services.mako.package; + firefox = lib.getExe config.programs.firefox.finalPackage; +in { + imports = [ + ./mako.nix + ./swaylock.nix + ./i3status.nix + ]; + + home.packages = [ + pkgs.nnn + pkgs.bemenu + pkgs.brightnessctl + ]; + + wayland.windowManager.sway = { + enable = true; + config = null; + + settings = { + bar = { + position = "top"; + font = "sans"; + status_command = status; + colors = { + background = "#000000"; + focused_workspace = "#000000 #000000 #ffba08"; + inactive_workspace = "#000000 #000000 #cde4e6"; + }; + }; + + bindgesture = { + "swipe:left" = "workspace next"; + "swipe:right" = "workspace prev"; + "swipe:down" = "exec ${lock}"; + }; + input = { + "type:touchpad" = { + dwt = "enabled"; + tap = "enabled"; + }; + "type:keyboard" = { + repeat_rate = 100; + repeat_delay = 250; + }; + }; + + bindsym = { + # sway + "${mod}+q" = "kill"; + "${mod}+shift+c" = "reload"; + "${mod}+tab" = "workspace back_and_forth"; + "${mod}+shift+e" = '' + exec swaynag -t warning -m 'Do you really want to exit sway?' \ + -B 'Yes, exit sway' 'swaymsg exit' + ''; + + # workspaces + "${mod}+1" = "workspace number 1"; + "${mod}+2" = "workspace number 2"; + "${mod}+3" = "workspace number 3"; + "${mod}+4" = "workspace number 4"; + "${mod}+5" = "workspace number 5"; + "${mod}+6" = "workspace number 6"; + "${mod}+7" = "workspace number 7"; + "${mod}+8" = "workspace number 8"; + "${mod}+9" = "workspace number 9"; + "${mod}+shift+1" = "move container to workspace number 1"; + "${mod}+shift+2" = "move container to workspace number 2"; + "${mod}+shift+3" = "move container to workspace number 3"; + "${mod}+shift+4" = "move container to workspace number 4"; + "${mod}+shift+5" = "move container to workspace number 5"; + "${mod}+shift+6" = "move container to workspace number 6"; + "${mod}+shift+7" = "move container to workspace number 7"; + "${mod}+shift+8" = "move container to workspace number 8"; + "${mod}+shift+9" = "move container to workspace number 9"; + "${mod}+c" = "splitv"; + "${mod}+v" = "splith"; + + # layout + "${mod}+${left}" = "focus left"; + "${mod}+${down}" = "focus down"; + "${mod}+${up}" = "focus up"; + "${mod}+${right}" = "focus right"; + "${mod}+shift+${left}" = "move left"; + "${mod}+shift+${right}" = "move right"; + "${mod}+shift+${down}" = "move down"; + "${mod}+shift+${up}" = "move up"; + "${mod}+f" = "fullscreen"; + "${mod}+s" = "layout stacking"; + "${mod}+t" = "layout tabbed"; + "${mod}+e" = "layout toggle split"; + "${mod}+shift+space" = "floating toggle"; + "${mod}+r" = "mode resize"; + + # scratchpad + "${mod}+shift+minus" = "move scratchpad"; + "${mod}+minus" = "scratchpad show"; + + # exec + "${mod}+return" = "exec ${term}"; + "${mod}+p" = "exec ${menu}"; + "${mod}+w" = "exec ${firefox}"; + "${mod}+n" = "exec ${term} -- ${nnn} -decC"; + + XF86MonBrightnessDown = "exec ${brightnessctl} set 1%-"; + XF86MonBrightnessUp = "exec ${brightnessctl} set 1%+"; + XF86AudioLowerVolume = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%-"; + XF86AudioRaiseVolume = "exec ${wpctl} set-volume --limit 1.5 @DEFAULT_AUDIO_SINK@ 5%+"; + XF86AudioMute = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle"; + XF86AudioMicMute = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; + }; + + mode.resize.bindsym = { + ${left} = "resize shrink width 10px"; + ${right} = "resize grow width 10px"; + ${down} = "resize grow height 10px"; + ${up} = "resize shrink height 10px"; + return = "mode default"; + }; + + gaps.inner = 10; + exec = notification; + default_border.pixel = 2; + floating_modifier = "${mod} normal"; + "client.focused" = "#4c7899 #285577 #ffffff #285577"; + }; + }; +} diff --git a/home/wayland/modules/sway/i3status.nix b/home/wayland/modules/sway/i3status.nix new file mode 100644 index 0000000..57b62a4 --- /dev/null +++ b/home/wayland/modules/sway/i3status.nix @@ -0,0 +1,35 @@ +{ ... }: { + programs.i3status = { + enable = true; + enableDefault = false; + + general = { + output_format = "i3bar"; + separator = ""; + interval = 5; + colors = false; + }; + + modules = { + "tztime local" = { + position = 30; + settings.format = " %a,%e %b %H:%M"; + }; + "volume master" = { + position = 20; + settings = { + format = " %volume"; + format_muted = " %volume"; + }; + }; + "memory" = { + position = 10; + settings.format = " %available"; + }; + "disk /" = { + position = 00; + settings.format = " %avail"; + }; + }; + }; +} diff --git a/home/wayland/modules/sway/mako.nix b/home/wayland/modules/sway/mako.nix new file mode 100644 index 0000000..4280fdf --- /dev/null +++ b/home/wayland/modules/sway/mako.nix @@ -0,0 +1,9 @@ +{ ... }: { + services.mako = { + enable = true; + defaultTimeout = 3000; + + borderSize = 2; + backgroundColor = "#000000"; + }; +} diff --git a/home/wayland/modules/sway/swaylock.nix b/home/wayland/modules/sway/swaylock.nix new file mode 100644 index 0000000..dcbe165 --- /dev/null +++ b/home/wayland/modules/sway/swaylock.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: { + programs.swaylock = { + enable = true; + package = pkgs.swaylock-effects; + + settings = { + clock = true; + timestr = "%H:%M"; + datestr = "%a,%e %b"; + indicator-idle-visible = true; + color = "404040"; + }; + }; +} |