summaryrefslogtreecommitdiff
path: root/users/kassouni/desktop/sway
diff options
context:
space:
mode:
Diffstat (limited to 'users/kassouni/desktop/sway')
-rw-r--r--users/kassouni/desktop/sway/default.nix8
-rw-r--r--users/kassouni/desktop/sway/fuzzel.nix37
-rw-r--r--users/kassouni/desktop/sway/sway.nix42
-rw-r--r--users/kassouni/desktop/sway/waybar.nix141
4 files changed, 228 insertions, 0 deletions
diff --git a/users/kassouni/desktop/sway/default.nix b/users/kassouni/desktop/sway/default.nix
new file mode 100644
index 0000000..947924a
--- /dev/null
+++ b/users/kassouni/desktop/sway/default.nix
@@ -0,0 +1,8 @@
+{...}: {
+ imports = [
+ ./waybar.nix
+ ./sway.nix
+ ./fuzzel.nix
+ ];
+}
+
diff --git a/users/kassouni/desktop/sway/fuzzel.nix b/users/kassouni/desktop/sway/fuzzel.nix
new file mode 100644
index 0000000..d6d294b
--- /dev/null
+++ b/users/kassouni/desktop/sway/fuzzel.nix
@@ -0,0 +1,37 @@
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}:
+let
+ inherit (config.colorScheme) ui editor common;
+
+ # fuzzel wants RRGGBBAA with no leading '#'.
+ rgba = c: lib.toLower (lib.removePrefix "#" c) + "ff";
+in
+{
+ programs.fuzzel = {
+ enable = true;
+ settings = {
+ main = {
+ font = lib.mkForce "${config.theme.font.family}:size=${toString config.theme.font.size}";
+ };
+
+ colors = {
+ background = rgba ui.bg;
+ text = rgba editor.fg;
+ match = rgba common.accent.tint;
+ selection = rgba ui.panel.bg;
+ selection-text = rgba editor.fg;
+ selection-match = rgba common.accent.tint;
+ border = rgba ui.line;
+ };
+
+ border = {
+ radius = 0;
+ };
+ };
+ };
+
+}
diff --git a/users/kassouni/desktop/sway/sway.nix b/users/kassouni/desktop/sway/sway.nix
new file mode 100644
index 0000000..2e73d5f
--- /dev/null
+++ b/users/kassouni/desktop/sway/sway.nix
@@ -0,0 +1,42 @@
+{
+ pkgs,
+ config,
+ ...
+}:
+{
+ programs.swaylock.enable = true;
+ wayland.windowManager.sway = {
+ enable = true;
+ wrapperFeatures.gtk = true; # Fixes common issues with GTK 3 apps
+
+ config = {
+ window.titlebar = false;
+ menu = "fuzzel";
+ modifier = "Mod4";
+ # Use kitty as default terminal
+ terminal = "ghostty";
+ };
+ extraConfig = let
+ incr = "5";
+ brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
+ in ''
+ # home-manager inlines these values instead of emitting `set` lines
+ output * scale 1.75
+ output * bg ${config.theme.desktop.wallpaper} fill
+ bindsym XF86MonBrightnessDown exec ${brightnessctl} set -e ${incr}%-
+ bindsym XF86MonBrightnessUp exec ${brightnessctl} set -e +${incr}%
+ bindsym XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_SINK@ ${incr}%+
+ bindsym XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_SINK@ ${incr}%-
+ input "type:keyboard" {
+ xkb_options caps:escape
+ }
+
+ input "type:touchpad" {
+ natural_scroll enabled
+ dwt disabled
+ }
+ '';
+
+ };
+}
+
diff --git a/users/kassouni/desktop/sway/waybar.nix b/users/kassouni/desktop/sway/waybar.nix
new file mode 100644
index 0000000..7cb37a0
--- /dev/null
+++ b/users/kassouni/desktop/sway/waybar.nix
@@ -0,0 +1,141 @@
+{ pkgs, inputs, config, ... }:
+let
+ inherit (config.colorScheme) ui editor common;
+in
+{
+ programs.waybar = {
+ enable = true;
+ settings = {
+ mainBar =
+ let
+ gap = 0;
+ in
+ {
+ layer = "top";
+ position = "top";
+
+ margin-top = gap;
+ margin-left = gap;
+ margin-right = gap;
+
+ modules-left = [ "sway/workspaces" ];
+ modules-center = [ ];
+ modules-right = [
+ "cpu"
+ "wireplumber"
+ "battery"
+ "clock"
+ ];
+
+ clock = {
+ format = "{:%a %b %d %I:%M:%S}";
+ interval = 1;
+ tooltip-format = "<tt>{calendar}</tt>";
+ };
+
+ cpu = {
+ format = " {usage}%";
+ };
+
+ battery = {
+ format = "{icon} {capacity}%";
+ format-icons = {
+ default = [
+ "󰂎"
+ "󰁺"
+ "󰁻"
+ "󰁼"
+ "󰁽"
+ "󰁾"
+ "󰁿"
+ "󰂀"
+ "󰂁"
+ "󰂂"
+ "󰁹"
+ ];
+
+ charging = [
+ "󰢜"
+ "󰂆"
+ "󰂇"
+ "󰂈"
+ "󰢝"
+ "󰂉"
+ "󰢞"
+ "󰂊"
+ "󰂋"
+ "󰂅"
+ ];
+ };
+
+
+ states = {
+ low = 20;
+ };
+ };
+
+ wireplumber = {
+ format = "󰋋 {volume}%";
+ format-muted = "󰟎 {volume}%";
+ on-click = "wpctl set-mute @DEFAULT_SINK@ toggle";
+ max-volume = 150;
+ scroll-step = 1;
+ };
+
+ };
+ };
+ style = ''
+ * {
+ /* waybar's css font-size is px, but theme.font.size is points like
+ ghostty and fuzzel take. 1pt = 4/3px. */
+ font-family: ${config.theme.font.family};
+ font-size: ${builtins.toString (config.theme.font.size * 4 / 3)}px;
+ }
+
+ window#waybar {
+ background: ${ui.bg};
+ color: ${editor.fg};
+ }
+
+ .module {
+ padding: 0px 15px 0px;
+ }
+
+ #workspaces button {
+ font-weight: normal;
+ color: ${ui.fg};
+ background: none;
+ border: none;
+ }
+
+ #workspaces button.focused {
+ color: ${common.accent.tint};
+ }
+
+ #workspaces button.urgent {
+ color: ${common.error};
+ }
+
+ #workspaces button:hover {
+ font-weight: bold;
+ color: ${editor.fg};
+ box-shadow: none;
+ text-shadow: inherit;
+ background: none;
+ transition: none;
+ }
+
+ /* matches the `states.low = 20` threshold on the battery module */
+ #battery.low {
+ color: ${common.error};
+ }
+ '';
+ };
+
+ wayland.windowManager.sway.config.bars = [
+ {
+ command = "waybar";
+ }
+ ];
+}
+