summaryrefslogtreecommitdiff
path: root/home/wayland/modules/sway
diff options
context:
space:
mode:
authorsinanmohd <sinan@sinanmohd.com>2024-06-03 13:47:51 +0530
committersinanmohd <sinan@sinanmohd.com>2024-06-03 16:36:00 +0530
commit4311eaf183976752acdf5624ea68516cac6f0d94 (patch)
treea1448c41210ff6328a9408dd9a649b2be905eaba /home/wayland/modules/sway
parentede767c80ef9a88139219f686aa763031575091b (diff)
home/wayland/sway: init
Diffstat (limited to 'home/wayland/modules/sway')
-rw-r--r--home/wayland/modules/sway/home.nix144
-rw-r--r--home/wayland/modules/sway/i3status.nix35
-rw-r--r--home/wayland/modules/sway/mako.nix9
-rw-r--r--home/wayland/modules/sway/swaylock.nix14
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";
+ };
+ };
+}