Преглед изворни кода

Reorganize homemanager and switch to wofi and style wofi like waybasr

Johan Rong пре 3 месеци
родитељ
комит
4abe7c9fd6

+ 38 - 0
home/features/application/bashrc.nix

@@ -0,0 +1,38 @@
+{ pkgs, lib, ... }:
+
+{
+home = {
+    file = {
+      bashrc = {
+        target = ".bashrc";
+        text = ''
+          current_git_branch() {
+            git branch 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
+          }
+          shlvl_prompt() {
+            (( SHLVL > 1 )) && printf '(%d)' "$SHLVL"
+          }
+          PS1='$(shlvl_prompt)(\[\033[01;94m\]\u\[\033[00;00m\]@\[\033[01;94m\]\h\[\033[00;00m\]:\[\033[01;34m\]\w\[\033[00m\])\[\033[01;32m\]$(current_git_branch)\[\033[00m\]$ '
+          nix-update() {
+            set -e
+
+            ORIG_CWD="$(pwd)"
+
+            sudo nix-channel --update
+            cd "$HOME/nix-dots"
+            nix flake update
+            nh os switch
+            flatpak update -y
+            sudo flatpak update -y
+            cd "$ORIG_CWD"
+          }
+          jclone() {
+            git clone https://github.com/johron/$1
+          }
+          XCOMPOSEFILE=$HOME/.XCompose
+          #eval "$(direnv hook bash)"
+        '';
+      };
+    };
+  };
+}

+ 0 - 20
home/features/application/breeze-dark.nix

@@ -1,20 +0,0 @@
-{ pkgs, lib, ... }:
-{
-  home.packages = with pkgs; [
-    kdePackages.breeze
-    kdePackages.breeze-gtk
-    kdePackages.breeze-icons
-  ];
-
-  gtk = {
-    enable = true;
-    theme = {
-      name = "Breeze-Dark";
-      package = pkgs.kdePackages.breeze-gtk;
-    };
-    iconTheme = {
-      name = "breeze-dark";
-      package = pkgs.kdePackages.breeze-icons;
-    };
-  };
-}

+ 0 - 76
home/features/application/files.nix

@@ -1,76 +0,0 @@
-{ pkgs, lib, ... }:
-{
-  home = {
-    file = {
-      bashrc = {
-        target = ".bashrc";
-        text = ''
-          current_git_branch() {
-            git branch 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
-          }
-          shlvl_prompt() {
-            (( SHLVL > 1 )) && printf '(%d)' "$SHLVL"
-          }
-          PS1='$(shlvl_prompt)(\[\033[01;94m\]\u\[\033[00;00m\]@\[\033[01;94m\]\h\[\033[00;00m\]:\[\033[01;34m\]\w\[\033[00m\])\[\033[01;32m\]$(current_git_branch)\[\033[00m\]$ '
-          nix-update() {
-            set -e
-
-            ORIG_CWD="$(pwd)"
-
-            sudo nix-channel --update
-            cd "$HOME/nix-dots"
-            nix flake update
-            nh os switch
-            flatpak update -y
-            sudo flatpak update -y
-            cd "$ORIG_CWD"
-          }
-          jclone() {
-            git clone https://github.com/johron/$1
-          }
-          XCOMPOSEFILE=$HOME/.XCompose
-          #eval "$(direnv hook bash)"
-        '';
-      };
-      kdeglobals = {
-        target = ".config/kdeglobals";
-        text = ''
-          [UiSettings]
-          ColorScheme=BreezeDark
-
-          [KDE]
-          ShowDeleteCommand=true
-
-          [KFileDialog Settings]
-          Allow Expansion=false
-          Automatically select filename extension=true
-          Breadcrumb Navigation=true
-          Decoration position=2
-          Show Full Path=false
-          Show Inline Previews=true
-          Show Preview=false
-          Show Speedbar=true
-          Show hidden files=false
-          Sort by=Name
-          Sort directories first=true
-          Sort hidden files last=false
-          Sort reversed=false
-          Speedbar Width=144
-          View Style=Simple
-
-          [PreviewSettings]
-          EnableRemoteFolderThumbnail=false
-          MaximumRemoteSize=0
-        '';
-      };
-      xcompose = {
-        target = ".XCompose";
-        text = ''
-          include "%L"
-
-          <Multi_key> <comma> : "̨" U0328
-        '';
-      };
-    };
-  };
-}

+ 0 - 26
home/features/application/rofi.nix

@@ -1,26 +0,0 @@
-{ pkgs, lib, ... }:
-
-let
-  rofiRepo = builtins.fetchTarball {
-    url = "https://github.com/johron/adi1090x-rofi/archive/refs/heads/master.tar.gz";
-    sha256 = "02svplixyy6i3x28qjj0hb7lp4xl42a93iz342vibjz8665ajjwb";
-  };
-in
-{
-  programs.rofi = {
-    enable = true;
-    package = pkgs.rofi;
-    theme = "launchers/type-4/style-5.rasi";
-  };
-
-  home = {
-    file = {
-      "/.config/rofi/launchers".source = "${rofiRepo}/files/launchers";
-      "/.config/rofi/applets".source   = "${rofiRepo}/files/applets";
-      "/.config/rofi/colors".source    = "${rofiRepo}/files/colors";
-      "/.config/rofi/images".source    = "${rofiRepo}/files/images";
-      "/.config/rofi/powermenu".source = "${rofiRepo}/files/powermenu";
-      "/.config/rofi/scripts".source   = "${rofiRepo}/files/scripts";
-    };
-  };
-}

+ 0 - 249
home/features/application/sway-mui/default.nix

@@ -1,249 +0,0 @@
-{ pkgs, lib, ... }:
-
-let
-  left = "j";
-  up = "k";
-  down = "l";
-  right = "oslash";
-  mod = "Mod1";
-  super = "Super";
-in
-{
-  imports = [
-    ./waybar.nix
-    ./scripts.nix
-  ];
-
-  home.packages = with pkgs; [
-    material-symbols
-  ];
-
-  wayland.windowManager.sway = {
-      enable = true;
-      checkConfig = true;
-      config = {
-        bars = [
-          {
-            command = "swaybar_command waybar";
-          }
-        ];
-        modes = {
-          resize = {
-            # Letters
-            ${left} = "resize shrink width 10 px or 10 ppt";
-            ${up} = "resize grow height 10 px or 10 ppt";
-            ${down} = "resize shrink height 10 px or 10 ppt";
-            ${right} = "resize grow width 10 px or 10 ppt";
-
-            # Arrow keys
-            "Left"  = "resize shrink width 10 px or 10 ppt";
-            "Down"  = "resize grow height 10 px or 10 ppt";
-            "Up"    = "resize shrink height 10 px or 10 ppt";
-            "Right" = "resize grow width 10 px or 10 ppt";
-
-            # Exit mode
-            "Escape" = "mode default";
-            "Return" = "mode default";
-          };
-          passthrough = { # Passthrough mode, disables all sway keybinds to let other apps use them, eg. use sway mod in other apps.
-            "${mod}+c" = "mode default";
-          };
-          futhark = {
-            "f" = "exec wtype ᚠ";
-            "u" = "exec wtype ᚢ";
-            "q" = "exec wtype ᚦ";
-            "a" = "exec wtype ᚨ";
-            "r" = "exec wtype ᚱ";
-            "k" = "exec wtype ᚲ";
-            "x" = "exec wtype ᚷ";
-            "v" = "exec wtype ᚹ";
-            "h" = "exec wtype ᚺ";
-            "n" = "exec wtype ᚾ";
-            "i" = "exec wtype ᛁ";
-            "j" = "exec wtype ᛃ";
-            "ae" = "exec wtype ᛇ";
-            "p" = "exec wtype ᛈ";
-            "z" = "exec wtype ᛉ";
-            "s" = "exec wtype ᛊ";
-            "t" = "exec wtype ᛏ";
-            "b" = "exec wtype ᛒ";
-            "e" = "exec wtype ᛖ";
-            "m" = "exec wtype ᛗ";
-            "l" = "exec wtype ᛚ";
-            "g" = "exec wtype ᛝ";
-            "d" = "exec wtype ᛞ";
-            "o" = "exec wtype ᛟ";
-            "Escape" = "mode default";
-          };
-        };
-        keybindings = {
-          "${mod}+Shift+r" = "reload";
-          "${mod}+Shift+q" = "kill";
-          "${mod}+d" = "exec rofi -show drun";
-          "${mod}+Return" = "exec alacritty";
-          "${super}+l" = "exec swaylock";
-          "${mod}+r" = "mode \"resize\"";
-
-          "${mod}+c" = "mode \"passthrough\"";
-          "${mod}+x" = "mode \"futhark\"";
-
-          "${mod}+Shift+e" = "exec /home/johron/.config/rofi/powermenu/type-1/powermenu.sh";
-
-          "${mod}+h" = "split h";
-          "${mod}+v" = "split v";
-          "${mod}+f" = "fullscreen toggle";
-          "${mod}+s" = "layout stacking";
-          "${mod}+t" = "layout tabbed";
-          "${mod}+e" = "layout toggle split";
-
-          "${mod}+Shift+space" = "floating toggle";
-          "${mod}+space" = "focus mode_toggle";
-          "${mod}+a" = "focus parent";
-
-          # Focus movement
-          "${mod}+${left}" = "focus left";
-          "${mod}+${down}" = "focus down";
-          "${mod}+${up}" = "focus up";
-          "${mod}+${right}" = "focus right";
-
-          # Focus movement (arrow keys)
-          "${mod}+Left" = "focus left";
-          "${mod}+Down" = "focus down";
-          "${mod}+Up" = "focus up";
-          "${mod}+Right" = "focus right";
-
-          # Move windows
-          "${mod}+Shift+${left}" = "move left";
-          "${mod}+Shift+${down}" = "move down";
-          "${mod}+Shift+${up}" = "move up";
-          "${mod}+Shift+${right}" = "move right";
-
-          # Move windows (arrow keys)
-          "${mod}+Shift+Left" = "move left";
-          "${mod}+Shift+Down" = "move down";
-          "${mod}+Shift+Up" = "move up";
-          "${mod}+Shift+Right" = "move right";
-
-          # Switch to workspace
-          "${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}+0" = "workspace number 10";
-
-          ## Switch to secondary workspace
-          "${super}+1" = "workspace number 11";
-          "${super}+2" = "workspace number 12";
-          "${super}+3" = "workspace number 13";
-          "${super}+4" = "workspace number 14";
-          "${super}+5" = "workspace number 15";
-          "${super}+6" = "workspace number 16";
-          "${super}+7" = "workspace number 17";
-          "${super}+8" = "workspace number 18";
-          "${super}+9" = "workspace number 19";
-          "${super}+0" = "workspace number 20";
-
-          # Move to workspace
-          "${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}+Shift+0" = "move container to workspace number 10";
-
-          ## Move to secondary workspace
-          "${super}+Shift+1" = "move container to workspace number 11";
-          "${super}+Shift+2" = "move container to workspace number 12";
-          "${super}+Shift+3" = "move container to workspace number 13";
-          "${super}+Shift+4" = "move container to workspace number 14";
-          "${super}+Shift+5" = "move container to workspace number 15";
-          "${super}+Shift+6" = "move container to workspace number 16";
-          "${super}+Shift+7" = "move container to workspace number 17";
-          "${super}+Shift+8" = "move container to workspace number 18";
-          "${super}+Shift+9" = "move container to workspace number 19";
-          "${super}+Shift+0" = "move container to workspace number 20";
-
-          # Multimedia
-          XF86AudioMute = "exec wpctl set-mute @DEFAULT_SINK@ toggle";
-          XF86AudioPlay = "exec playerctl play-pause";
-          XF86AudioPause = "exec playerctl pause";
-          XF86AudioNext = "exec playerctl next";
-          XF86AudioPrev = "exec playerctl previous";
-          XF86AudioRaiseVolume = "exec wpctl set-volume @DEFAULT_SINK@ 5%+";
-          XF86AudioLowerVolume = "exec wpctl set-volume @DEFAULT_SINK@ 5%-";
-
-          # Applications
-          "${super}+q" = "exec firefox";
-          "${super}+e" = "exec dolphin";
-          "${super}+s" = "exec spotify";
-          "${super}+d" = "exec discord";
-
-          "${super}+v" = "exec cliphist list | rofi -dmenu | cliphist decode | wl-copy";
-          "${super}+Shift+s" = "exec flameshot gui";
-          "${super}+Shift+c" = "exec hyprpicker --autocopy";
-
-          # Scripts
-          "${mod}+Control+a" = "exec $HOME/.config/waybar/mic-mute.sh";
-          "${mod}+Control+s" = "exec $HOME/.config/waybar/output-mute.sh";
-        };
-
-        window.commands = [
-          { command = "floating enable"; criteria.instance = "spotify"; }
-          #{ command = "floating enable"; criteria.class = "steam"; }
-        ];
-
-        input = {
-          "*" = {
-           xkb_layout = "no";
-           #xkb_variant = "cole";
-        };
-      };
-    };
-    extraConfig = ''
-      output DP-2 pos 0 0 mode 1920x1080@143.981Hz
-      output HDMI-A-1 mode 1920x1080@143.981Hz
-
-      workspace 1 output DP-2
-      workspace 2 output DP-2
-      workspace 3 output DP-2
-
-      workspace 11 output HDMI-A-1
-      workspace 12 output HDMI-A-1
-      workspace 13 output HDMI-A-1
-      workspace 14 output HDMI-A-1
-
-      exec wl-paste --watch cliphist store
-      exec flameshot
-
-      seat seat0 xcursor_theme Notwaita-Black 20
-
-      ## Bind Alt+Shift+e to show a Swaynag exit confirmation
-      #bindsym Mod1+Shift+e exec swaynag -t warning \
-      #  -m "Are you sure you want to exit Sway?" \
-      #  -b "Exit" "swaymsg exit" \
-      #  -b "Reboot" "reboot"
-
-      exec swaybg -i "$HOME/Pictures/Backgrounds/reef-1920x1080-2.png" -m fill
-
-      input * xkb_options compose:rctrl
-
-      exec_always {
-        systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
-        lxqt-policykit-agent
-        swayidle \
-          timeout 600 'swaylock -f' \
-          timeout 1200 'systemctl suspend' \
-          before-sleep 'swaylock -f'
-      }
-    '';
-  };
-}

+ 0 - 248
home/features/application/sway/default.nix

@@ -1,248 +0,0 @@
-{ pkgs, lib, ... }:
-
-let
-  left = "j";
-  up = "k";
-  down = "l";
-  right = "oslash";
-  mod = "Mod1";
-  super = "Super";
-in
-{
-  imports = [
-    ./waybar.nix
-  ];
-
-  home.packages = with pkgs; [
-    
-  ];
-
-  wayland.windowManager.sway = {
-      enable = true;
-      checkConfig = true;
-      config = {
-        bars = [
-          {
-            command = "swaybar_command waybar";
-          }
-        ];
-        modes = {
-          resize = {
-            # Letters
-            ${left} = "resize shrink width 10 px or 10 ppt";
-            ${up} = "resize grow height 10 px or 10 ppt";
-            ${down} = "resize shrink height 10 px or 10 ppt";
-            ${right} = "resize grow width 10 px or 10 ppt";
-
-            # Arrow keys
-            "Left"  = "resize shrink width 10 px or 10 ppt";
-            "Down"  = "resize grow height 10 px or 10 ppt";
-            "Up"    = "resize shrink height 10 px or 10 ppt";
-            "Right" = "resize grow width 10 px or 10 ppt";
-
-            # Exit mode
-            "Escape" = "mode default";
-            "Return" = "mode default";
-          };
-          passthrough = { # Passthrough mode, disables all sway keybinds to let other apps use them, eg. use sway mod in other apps.
-            "${mod}+c" = "mode default";
-          };
-          futhark = {
-            "f" = "exec wtype ᚠ";
-            "u" = "exec wtype ᚢ";
-            "q" = "exec wtype ᚦ";
-            "a" = "exec wtype ᚨ";
-            "r" = "exec wtype ᚱ";
-            "k" = "exec wtype ᚲ";
-            "x" = "exec wtype ᚷ";
-            "v" = "exec wtype ᚹ";
-            "h" = "exec wtype ᚺ";
-            "n" = "exec wtype ᚾ";
-            "i" = "exec wtype ᛁ";
-            "j" = "exec wtype ᛃ";
-            "ae" = "exec wtype ᛇ";
-            "p" = "exec wtype ᛈ";
-            "z" = "exec wtype ᛉ";
-            "s" = "exec wtype ᛊ";
-            "t" = "exec wtype ᛏ";
-            "b" = "exec wtype ᛒ";
-            "e" = "exec wtype ᛖ";
-            "m" = "exec wtype ᛗ";
-            "l" = "exec wtype ᛚ";
-            "g" = "exec wtype ᛝ";
-            "d" = "exec wtype ᛞ";
-            "o" = "exec wtype ᛟ";
-            "Escape" = "mode default";
-          };
-        };
-        keybindings = {
-          "${mod}+Shift+r" = "reload";
-          "${mod}+Shift+q" = "kill";
-          "${mod}+d" = "exec rofi -show drun";
-          "${mod}+Return" = "exec alacritty";
-          "${super}+l" = "exec swaylock";
-          "${mod}+r" = "mode \"resize\"";
-
-          "${mod}+c" = "mode \"passthrough\"";
-          "${mod}+x" = "mode \"futhark\"";
-
-          "${mod}+Shift+e" = "exec /home/johron/.config/rofi/powermenu/type-1/powermenu.sh";
-
-          "${mod}+h" = "split h";
-          "${mod}+v" = "split v";
-          "${mod}+f" = "fullscreen toggle";
-          "${mod}+s" = "layout stacking";
-          "${mod}+t" = "layout tabbed";
-          "${mod}+e" = "layout toggle split";
-
-          "${mod}+Shift+space" = "floating toggle";
-          "${mod}+space" = "focus mode_toggle";
-          "${mod}+a" = "focus parent";
-
-          # Focus movement
-          "${mod}+${left}" = "focus left";
-          "${mod}+${down}" = "focus down";
-          "${mod}+${up}" = "focus up";
-          "${mod}+${right}" = "focus right";
-
-          # Focus movement (arrow keys)
-          "${mod}+Left" = "focus left";
-          "${mod}+Down" = "focus down";
-          "${mod}+Up" = "focus up";
-          "${mod}+Right" = "focus right";
-
-          # Move windows
-          "${mod}+Shift+${left}" = "move left";
-          "${mod}+Shift+${down}" = "move down";
-          "${mod}+Shift+${up}" = "move up";
-          "${mod}+Shift+${right}" = "move right";
-
-          # Move windows (arrow keys)
-          "${mod}+Shift+Left" = "move left";
-          "${mod}+Shift+Down" = "move down";
-          "${mod}+Shift+Up" = "move up";
-          "${mod}+Shift+Right" = "move right";
-
-          # Switch to workspace
-          "${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}+0" = "workspace number 10";
-
-          ## Switch to secondary workspace
-          "${super}+1" = "workspace number 11";
-          "${super}+2" = "workspace number 12";
-          "${super}+3" = "workspace number 13";
-          "${super}+4" = "workspace number 14";
-          "${super}+5" = "workspace number 15";
-          "${super}+6" = "workspace number 16";
-          "${super}+7" = "workspace number 17";
-          "${super}+8" = "workspace number 18";
-          "${super}+9" = "workspace number 19";
-          "${super}+0" = "workspace number 20";
-
-          # Move to workspace
-          "${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}+Shift+0" = "move container to workspace number 10";
-
-          ## Move to secondary workspace
-          "${super}+Shift+1" = "move container to workspace number 11";
-          "${super}+Shift+2" = "move container to workspace number 12";
-          "${super}+Shift+3" = "move container to workspace number 13";
-          "${super}+Shift+4" = "move container to workspace number 14";
-          "${super}+Shift+5" = "move container to workspace number 15";
-          "${super}+Shift+6" = "move container to workspace number 16";
-          "${super}+Shift+7" = "move container to workspace number 17";
-          "${super}+Shift+8" = "move container to workspace number 18";
-          "${super}+Shift+9" = "move container to workspace number 19";
-          "${super}+Shift+0" = "move container to workspace number 20";
-
-          # Multimedia
-          XF86AudioMute = "exec wpctl set-mute @DEFAULT_SINK@ toggle";
-          XF86AudioPlay = "exec playerctl play-pause";
-          XF86AudioPause = "exec playerctl pause";
-          XF86AudioNext = "exec playerctl next";
-          XF86AudioPrev = "exec playerctl previous";
-          XF86AudioRaiseVolume = "exec wpctl set-volume @DEFAULT_SINK@ 5%+";
-          XF86AudioLowerVolume = "exec wpctl set-volume @DEFAULT_SINK@ 5%-";
-
-          # Applications
-          "${super}+q" = "exec firefox";
-          "${super}+e" = "exec dolphin";
-          "${super}+s" = "exec spotify";
-          "${super}+d" = "exec discord";
-
-          "${super}+v" = "exec cliphist list | rofi -dmenu | cliphist decode | wl-copy";
-          "${super}+Shift+s" = "exec flameshot gui";
-          "${super}+Shift+c" = "exec hyprpicker --autocopy";
-
-          # Scripts
-          "${mod}+Control+a" = "exec $HOME/.config/waybar/mic-mute.sh";
-          "${mod}+Control+s" = "exec $HOME/.config/waybar/output-mute.sh";
-        };
-
-        window.commands = [
-          { command = "floating enable"; criteria.instance = "spotify"; }
-          #{ command = "floating enable"; criteria.class = "steam"; }
-        ];
-
-        input = {
-          "*" = {
-           xkb_layout = "no";
-           #xkb_variant = "cole";
-        };
-      };
-    };
-    extraConfig = ''
-      output DP-2 pos 0 0 mode 1920x1080@143.981Hz
-      output HDMI-A-1 mode 1920x1080@143.981Hz
-
-      workspace 1 output DP-2
-      workspace 2 output DP-2
-      workspace 3 output DP-2
-
-      workspace 11 output HDMI-A-1
-      workspace 12 output HDMI-A-1
-      workspace 13 output HDMI-A-1
-      workspace 14 output HDMI-A-1
-
-      exec wl-paste --watch cliphist store
-      exec flameshot
-
-      seat seat0 xcursor_theme Notwaita-Black 20
-
-      ## Bind Alt+Shift+e to show a Swaynag exit confirmation
-      #bindsym Mod1+Shift+e exec swaynag -t warning \
-      #  -m "Are you sure you want to exit Sway?" \
-      #  -b "Exit" "swaymsg exit" \
-      #  -b "Reboot" "reboot"
-
-      exec swaybg -i "$HOME/Pictures/Backgrounds/reef-1920x1080-2.png" -m fill
-
-      input * xkb_options compose:rctrl
-
-      exec_always {
-        systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
-        lxqt-policykit-agent
-        swayidle \
-          timeout 600 'swaylock -f' \
-          timeout 1200 'systemctl suspend' \
-          before-sleep 'swaylock -f'
-      }
-    '';
-  };
-}

+ 0 - 132
home/features/application/sway/scripts.nix

@@ -1,132 +0,0 @@
-{ pkgs, lib, ... }:
-{
-  home = {
-    file = {
-      clock = {
-        target = ".config/waybar/clock.sh";
-        text = ''
-        # Generate the formatted date string
-        formatted_date=$(LC_TIME=nb_NO.UTF-8 date +"%H:%M %A, %b %d" | tr '[:upper:]' '[:lower:]' | sed 's/\.//g')
-
-        # Output as JSON for Waybar
-        printf '{"text": "%s"}\n' "$formatted_date"
-        '';
-        executable = true;
-      };
-      memory = {
-        target = ".config/waybar/memory.sh";
-        text = ''
-          free -m | awk '
-          /^Mem:/ {
-              current_gb = $3 / 1024;
-              total_gb = $2 / 1024;
-              printf "{\"text\": \"%.1fG/%.1fG\"}\n", current_gb, total_gb
-          }'
-        '';
-        executable = true;
-      };
-      volume = {
-        target = ".config/waybar/volume.sh";
-        text = ''
-          VOLUME_INFO=$(wpctl get-volume @DEFAULT_AUDIO_SINK@)
-          VOL_NUM=$(echo "$VOLUME_INFO" | awk '{print $2}')
-          VOL_PERC=$(awk -v n="$VOL_NUM" 'BEGIN {print int(n * 100)}')
-
-          if [[ "$VOLUME_INFO" == *"[MUTED]"* ]]; then
-              RESULT="M($VOL_PERC%)"
-          else
-              RESULT="$VOL_PERC%"
-          fi
-
-          echo "{\"text\": \"$RESULT\"}"
-        '';
-        executable = true;
-      };
-      mic = {
-        target = ".config/waybar/mic.sh";
-        text = ''
-          VOLUME_INFO=$(wpctl get-volume @DEFAULT_AUDIO_SOURCE@)
-          VOL_NUM=$(echo "$VOLUME_INFO" | awk '{print $2}')
-          VOL_PERC=$(awk -v n="$VOL_NUM" 'BEGIN {print int(n * 100)}')
-
-          if [[ "$VOLUME_INFO" == *"[MUTED]"* ]]; then
-              RESULT="M($VOL_PERC%)"
-          else
-              RESULT="$VOL_PERC%"
-          fi
-
-          echo "{\"text\": \"$RESULT\"}"
-        '';
-        executable = true;
-      };
-      net = {
-        target = ".config/waybar/net.sh";
-        executable = true;
-        text = ''
-          #!/usr/bin/env bash
-
-          # Get default network interface
-          DEVICE=$(ip route | awk '/default/ {print $5; exit}')
-
-          if [[ -n "$DEVICE" ]]; then
-              IP=$(ip -4 addr show "$DEVICE" | awk '/inet / {print $2}' | cut -d/ -f1 | head -n1)
-
-              RESULT="$DEVICE"
-          else
-              RESULT="Disconnected"
-          fi
-
-          echo "{\"text\": \"$RESULT\"}"
-        '';
-      };
-      mic-mute = {
-        target = ".config/waybar/mic-mute.sh";
-        text = ''
-          #!/usr/bin/env bash
-
-          # Toggle mute
-          amixer set 'Capture' toggle
-
-          # Check new state
-          if amixer get Capture | grep -q '\[off\]'; then
-            notify-send "Microphone Muted" "Your mic has been muted." -i microphone-sensitivity-muted-symbolic
-          else
-            notify-send "Microphone Unmuted" "Your mic is live." -i microphone-sensitivity-high-symbolic  
-          fi
-        '';
-        executable = true;
-      };
-      output-mute = {
-        target = ".config/waybar/output-mute.sh";
-        text = ''
-          #!/usr/bin/env bash
-
-          # Toggle mute
-          amixer set 'Master' toggle
-
-          # Check new state
-          if amixer get Master | grep -q '\[off\]'; then
-            notify-send "Master Muted" "You may no longer hear." -i audio-volume-muted-symbolic
-          else
-            notify-send "Master Unmuted" "You may hear now." -i audio-volume-high-symbolic  
-          fi
-        '';
-        executable = true;
-      };
-      #futhark-xkb = {
-      #  target = ".config/xkb/symbols/futhark";
-      #  text = ''
-      #    default partial alphanumeric_keys
-      #    xkb_symbols "basic" {
-#
-      #        name[Group1]= "Futhark";
-#
-      #        key <AD04> { [ U16A0 ] }; // f -> ᚠ
-#
-      #        include "no(basic)"
-      #    };
-      #  '';
-      #};
-    };
-  };
-}

+ 0 - 181
home/features/application/sway/waybar.nix

@@ -1,181 +0,0 @@
-{ pkgs, lib, ... }:
-{
-  imports = [
-    ./scripts.nix
-  ];
-
-  programs.waybar = {
-    enable = true;
-    settings = {
-      main = {
-        position = "bottom";
-        layer = "top";
-        exclusive = "false";
-        height = 30;
-        spacing = 5;
-        modules-left = [ "custom/block_start" "sway/workspaces" "mpris" "custom/block_stop" "sway/mode" ];
-        modules-center = [ "custom/block_start" "custom/clock" "custom/block_stop" ];
-        modules-right = [ "custom/block_start" "custom/net" "custom/slash" "custom/memory" "custom/slash" "custom/mic" "custom/volume" "custom/block_stop" "tray" ];
-
-        "mpris" = {
-          player = "spotify";
-          format = "<span color=\"#272727\">/</span> <span color=\"#ACA69E\">mus:</span> {artist} - {title}";
-          format-paused = "<span color=\"#272727\">/</span> <span color=\"#ACA69E\">mus:</span> {artist}";
-          max-length = 200;
-        };
-
-        "sway/workspaces" = {
-          format = "{icon}{name}";
-          on-click = "activate";
-          icon-size = 10;
-          sort-by-number = "true";
-          justify = "right";
-          "format-icons" = {
-            focused = "*";
-            urgent = "!";
-            default = "";
-          };
-        };
-
-        "custom/space" = {
-          format = " ";
-        };
-
-        "custom/slash" = {
-          format = "/ ";
-        };
-
-        "custom/block_start" = {
-          format = " [";
-        };
-
-        "custom/block_stop" = {
-          format = "] ";
-        };
-
-        "custom/clock" = {
-          format = "{}";
-          exec = "~/.config/waybar/clock.sh";
-          return-type = "json";
-          restart-interval = 1;
-        };
-
-        "battery" = {
-          bat = "BAT1";
-          interval = 60;
-          format = "{icon} {capacity}%";
-          format-icons = ["\uf244" "\uf243" "\uf242" "\uf241" "\uf240"];
-        };
-
-        "custom/volume" = {
-          format = "<span color=\"#ACA69E\">vol:</span> {} ";
-          exec = "~/.config/waybar/volume.sh";
-          return-type = "json";
-          restart-interval = 0;
-        };
-
-        "custom/mic" = {
-          format = "<span color=\"#ACA69E\">mic:</span> {} ";
-          exec = "~/.config/waybar/mic.sh";
-          return-type = "json";
-          restart-interval = 0;
-        };
-
-        "custom/net" = {
-          format = "<span color=\"#ACA69E\">net:</span> {} ";
-          exec = "~/.config/waybar/net.sh";
-          return-type = "json";
-          restart-interval = 0;
-        };
-
-        "custom/memory" = {
-          format = "<span color=\"#ACA69E\">mem:</span> {} ";
-          exec = "~/.config/waybar/memory.sh";
-          return-type = "json";
-          restart-interval = 1;
-        };
-
-        "custom/lang" = {
-          format = "<span color=\"#ACA69E\">key:</span> no";
-        };
-
-        "tray" = {
-          icon-size = 16;
-          spacing = 16;
-        };
-      };
-    };
-    style = ''
-      @define-color foreground #ACA69E;
-      @define-color foreground-inactive #ffffff;
-      @define-color background #101010;
-
-      * {
-        font-family: JetBrainsMono Nerd Font;
-        font-size: 12px;
-      }
-
-      #waybar {
-        color: #ffffff;
-        background-color: @background;
-      }
-
-      #workspaces {
-        background: transparent;
-      }
-
-      #custom-slash,
-      #custom-block_start,
-      #custom-block_stop {
-        color: #272727;
-      }
-
-      #workspaces button {
-        min-width: 20px;
-        padding: 0 0.6em;
-        margin: 0 0.2em;
-        color: @foreground-inactive;
-
-        background: transparent;
-        border: none;
-        border-bottom: 2px solid transparent;
-        border-radius: 0;
-        padding: 0px;
-        margin: 0 5px;
-      }
-
-      #workspaces button.active,
-      #workspaces button.focused {
-        color: #ACA69E;
-        /*border-bottom: 2px solid @foreground;*/
-      }
-
-      #workspaces button.empty {
-        color: #ACA69E;
-      }
-
-      #workspaces button.urgent {
-        color: #A64443;
-      }
-
-      #workspaces button:hover {
-        color: @foreground;
-      }
-
-      #mode {
-        color: #A64443;
-      }
-
-      #memory,
-      #wireplumber,
-      #battery,
-      #idle_inhibitor,
-      #language,
-      #network,
-      #bluetooth,
-      #tray {
-        padding-right: 1em
-      }
-    '';
-  };
-}

+ 20 - 0
home/features/desktop/sway/default.nix

@@ -0,0 +1,20 @@
+{ pkgs, lib, ... }:
+
+{
+  imports = [
+    ./sway.nix
+    ./scripts.nix
+
+    ./ui/wofi
+    ./ui/waybar
+    ./ui/rofi.nix
+    ./ui/mako.nix
+    
+    ./theming/notwaita.nix
+    ./theming/breeze-dark.nix
+  ];
+
+  home.packages = with pkgs; [
+    material-symbols
+  ];
+}

+ 1 - 1
home/features/application/sway-mui/scripts.nix → home/features/desktop/sway/scripts.nix

@@ -6,7 +6,7 @@
         target = ".config/waybar/clock.sh";
         target = ".config/waybar/clock.sh";
         text = ''
         text = ''
         # Generate the formatted date string
         # Generate the formatted date string
-        formatted_date=$(LC_TIME=nb_NO.UTF-8 date +"%H:%M %A, %b %d" | tr '[:upper:]' '[:lower:]' | sed 's/\.//g')
+        formatted_date=$(LC_TIME=nb_NO.UTF-8 date +"%H:%M %A, %d %b" | tr '[:upper:]' '[:lower:]' | sed 's/\.//g')
 
 
         # Output as JSON for Waybar
         # Output as JSON for Waybar
         printf '{"text": "%s"}\n' "$formatted_date"
         printf '{"text": "%s"}\n' "$formatted_date"

+ 264 - 0
home/features/desktop/sway/sway.nix

@@ -0,0 +1,264 @@
+{ pkgs, lib, ... }:
+
+let
+  left = "j";
+  up = "k";
+  down = "l";
+  right = "oslash";
+  mod = "Mod1";
+  super = "Super";
+in
+{
+  wayland.windowManager.sway = {
+    enable = true;
+    checkConfig = true;
+    config = {
+      bars = [
+        {
+          command = "swaybar_command waybar";
+        }
+      ];
+      modes = {
+        resize = {
+          # Letters
+          ${left} = "resize shrink width 10 px or 10 ppt";
+          ${up} = "resize grow height 10 px or 10 ppt";
+          ${down} = "resize shrink height 10 px or 10 ppt";
+          ${right} = "resize grow width 10 px or 10 ppt";
+
+          # Arrow keys
+          "Left"  = "resize shrink width 10 px or 10 ppt";
+          "Down"  = "resize grow height 10 px or 10 ppt";
+          "Up"    = "resize shrink height 10 px or 10 ppt";
+          "Right" = "resize grow width 10 px or 10 ppt";
+
+          # Exit mode
+          "Escape" = "mode default";
+          "Return" = "mode default";
+        };
+        passthrough = { # Passthrough mode, disables all sway keybinds to let other apps use them, eg. use sway mod in other apps.
+          "${mod}+c" = "mode default";
+        };
+        futhark = {
+          "f" = "exec wtype ᚠ";
+          "u" = "exec wtype ᚢ";
+          "q" = "exec wtype ᚦ";
+          "a" = "exec wtype ᚨ";
+          "r" = "exec wtype ᚱ";
+          "k" = "exec wtype ᚲ";
+          "x" = "exec wtype ᚷ";
+          "v" = "exec wtype ᚹ";
+          "h" = "exec wtype ᚺ";
+          "n" = "exec wtype ᚾ";
+          "i" = "exec wtype ᛁ";
+          "j" = "exec wtype ᛃ";
+          "ae" = "exec wtype ᛇ";
+          "p" = "exec wtype ᛈ";
+          "z" = "exec wtype ᛉ";
+          "s" = "exec wtype ᛊ";
+          "t" = "exec wtype ᛏ";
+          "b" = "exec wtype ᛒ";
+          "e" = "exec wtype ᛖ";
+          "m" = "exec wtype ᛗ";
+          "l" = "exec wtype ᛚ";
+          "g" = "exec wtype ᛝ";
+          "d" = "exec wtype ᛞ";
+          "o" = "exec wtype ᛟ";
+          "Escape" = "mode default";
+        };
+      };
+      keybindings = {
+        "${mod}+Shift+r" = "reload";
+        "${mod}+Shift+q" = "kill";
+        "${mod}+d" = "exec wofi --show drun";
+        "${mod}+Return" = "exec alacritty";
+        "${super}+l" = "exec swaylock";
+        "${mod}+r" = "mode \"resize\"";
+
+        "${mod}+c" = "mode \"passthrough\"";
+        "${mod}+x" = "mode \"futhark\"";
+
+        "${mod}+Shift+e" = "exec /home/johron/.config/rofi/powermenu/type-1/powermenu.sh";
+
+        "${mod}+h" = "split h";
+        "${mod}+v" = "split v";
+        "${mod}+f" = "fullscreen toggle";
+        "${mod}+s" = "layout stacking";
+        "${mod}+t" = "layout tabbed";
+        "${mod}+e" = "layout toggle split";
+
+        "${mod}+Shift+space" = "floating toggle";
+        "${mod}+space" = "focus mode_toggle";
+        "${mod}+a" = "focus parent";
+
+        # Focus movement
+        "${mod}+${left}" = "focus left";
+        "${mod}+${down}" = "focus down";
+        "${mod}+${up}" = "focus up";
+        "${mod}+${right}" = "focus right";
+
+        # Focus movement (arrow keys)
+        "${mod}+Left" = "focus left";
+        "${mod}+Down" = "focus down";
+        "${mod}+Up" = "focus up";
+        "${mod}+Right" = "focus right";
+
+        # Move windows
+        "${mod}+Shift+${left}" = "move left";
+        "${mod}+Shift+${down}" = "move down";
+        "${mod}+Shift+${up}" = "move up";
+        "${mod}+Shift+${right}" = "move right";
+
+        # Move windows (arrow keys)
+        "${mod}+Shift+Left" = "move left";
+        "${mod}+Shift+Down" = "move down";
+        "${mod}+Shift+Up" = "move up";
+        "${mod}+Shift+Right" = "move right";
+
+        # Switch to workspace
+        "${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}+0" = "workspace number 10";
+
+        ## Switch to secondary workspace
+        "${super}+1" = "workspace number 11";
+        "${super}+2" = "workspace number 12";
+        "${super}+3" = "workspace number 13";
+        "${super}+4" = "workspace number 14";
+        "${super}+5" = "workspace number 15";
+        "${super}+6" = "workspace number 16";
+        "${super}+7" = "workspace number 17";
+        "${super}+8" = "workspace number 18";
+        "${super}+9" = "workspace number 19";
+        "${super}+0" = "workspace number 20";
+
+        # Move to workspace
+        "${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}+Shift+0" = "move container to workspace number 10";
+
+        ## Move to secondary workspace
+        "${super}+Shift+1" = "move container to workspace number 11";
+        "${super}+Shift+2" = "move container to workspace number 12";
+        "${super}+Shift+3" = "move container to workspace number 13";
+        "${super}+Shift+4" = "move container to workspace number 14";
+        "${super}+Shift+5" = "move container to workspace number 15";
+        "${super}+Shift+6" = "move container to workspace number 16";
+        "${super}+Shift+7" = "move container to workspace number 17";
+        "${super}+Shift+8" = "move container to workspace number 18";
+        "${super}+Shift+9" = "move container to workspace number 19";
+        "${super}+Shift+0" = "move container to workspace number 20";
+
+        # Multimedia
+        XF86AudioMute = "exec wpctl set-mute @DEFAULT_SINK@ toggle";
+        XF86AudioPlay = "exec playerctl play-pause";
+        XF86AudioPause = "exec playerctl pause";
+        XF86AudioNext = "exec playerctl next";
+        XF86AudioPrev = "exec playerctl previous";
+        XF86AudioRaiseVolume = "exec wpctl set-volume @DEFAULT_SINK@ 5%+";
+        XF86AudioLowerVolume = "exec wpctl set-volume @DEFAULT_SINK@ 5%-";
+
+        # Applications
+        "${super}+q" = "exec firefox";
+        "${super}+e" = "exec dolphin";
+        "${super}+s" = "exec spotify";
+        "${super}+d" = "exec discord";
+
+        "${super}+v" = "exec cliphist list | rofi -dmenu | cliphist decode | wl-copy";
+        "${super}+Shift+s" = "exec flameshot gui";
+        "${super}+Shift+c" = "exec hyprpicker --autocopy";
+
+        # Scripts
+        "${mod}+Control+a" = "exec $HOME/.config/waybar/mic-mute.sh";
+        "${mod}+Control+s" = "exec $HOME/.config/waybar/output-mute.sh";
+      };
+
+      window.commands = [
+        { command = "floating enable"; criteria.instance = "spotify"; }
+        #{ command = "floating enable"; criteria.class = "steam"; }
+      ];
+
+      input = {
+        "*" = {
+          xkb_layout = "no";
+          #xkb_variant = "cole";
+        };
+      };
+
+      colors = {
+        focused = {
+          border = "#0A0101";
+          background = "#140202";
+          text = "#ffffff";
+          indicator = "#410303";
+          childBorder = "#140202";
+        };
+        unfocused = {
+          border = "#333333";
+          background = "#222222";
+          text = "#888888";
+          indicator = "#292929";
+          childBorder = "#222222";
+        };
+        focusedInactive = {
+          border = "#333333";
+          background = "#3b3b3b";
+          text = "#888888";
+          indicator = "#292929";
+          childBorder = "#222222";
+        };
+      };
+    };
+    extraConfig = ''
+      output DP-2 pos 0 0 mode 1920x1080@143.981Hz
+      output HDMI-A-1 mode 1920x1080@143.981Hz
+
+      workspace 1 output DP-2
+      workspace 2 output DP-2
+      workspace 3 output DP-2
+
+      workspace 11 output HDMI-A-1
+      workspace 12 output HDMI-A-1
+      workspace 13 output HDMI-A-1
+      workspace 14 output HDMI-A-1
+
+      exec wl-paste --watch cliphist store
+      exec flameshot
+
+      seat seat0 xcursor_theme Notwaita-Black 20
+
+      ## Bind Alt+Shift+e to show a Swaynag exit confirmation
+      #bindsym Mod1+Shift+e exec swaynag -t warning \
+      #  -m "Are you sure you want to exit Sway?" \
+      #  -b "Exit" "swaymsg exit" \
+      #  -b "Reboot" "reboot"
+
+      exec swaybg -i "$HOME/Pictures/Backgrounds/reef-1920x1080-2.png" -m fill
+
+      input * xkb_options compose:rctrl
+
+      exec_always {
+        systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
+        lxqt-policykit-agent
+        swayidle \
+          timeout 600 'swaylock -f' \
+          timeout 1200 'systemctl suspend' \
+          before-sleep 'swaylock -f'
+      }
+    '';
+  };
+}

+ 56 - 0
home/features/desktop/sway/theming/breeze-dark.nix

@@ -0,0 +1,56 @@
+{ pkgs, lib, ... }:
+{
+  home.packages = with pkgs; [
+    kdePackages.breeze
+    kdePackages.breeze-gtk
+    kdePackages.breeze-icons
+  ];
+
+  gtk = {
+    enable = true;
+    theme = {
+      name = "Breeze-Dark";
+      package = pkgs.kdePackages.breeze-gtk;
+    };
+    iconTheme = {
+      name = "breeze-dark";
+      package = pkgs.kdePackages.breeze-icons;
+    };
+  };
+
+  home = {
+    file = {
+      kdeglobals = {
+        target = ".config/kdeglobals";
+        text = ''
+          [UiSettings]
+          ColorScheme=BreezeDark
+
+          [KDE]
+          ShowDeleteCommand=true
+
+          [KFileDialog Settings]
+          Allow Expansion=false
+          Automatically select filename extension=true
+          Breadcrumb Navigation=true
+          Decoration position=2
+          Show Full Path=false
+          Show Inline Previews=true
+          Show Preview=false
+          Show Speedbar=true
+          Show hidden files=false
+          Sort by=Name
+          Sort directories first=true
+          Sort hidden files last=false
+          Sort reversed=false
+          Speedbar Width=144
+          View Style=Simple
+
+          [PreviewSettings]
+          EnableRemoteFolderThumbnail=false
+          MaximumRemoteSize=0
+        '';
+      };
+    };
+  };
+}

+ 0 - 0
home/features/application/notwaita.nix → home/features/desktop/sway/theming/notwaita.nix


+ 0 - 0
home/features/application/mako.nix → home/features/desktop/sway/ui/mako.nix


+ 4 - 113
home/features/application/sway-mui/waybar.nix → home/features/desktop/sway/ui/waybar/default.nix

@@ -1,5 +1,9 @@
 { pkgs, lib, ... }:
 { pkgs, lib, ... }:
 {
 {
+  imports = [
+    ./style.nix
+  ];
+  
   programs.waybar = {
   programs.waybar = {
     enable = true;
     enable = true;
     settings = {
     settings = {
@@ -106,118 +110,5 @@
         };
         };
       };
       };
     };
     };
-    style = ''
-      * {
-        border: none;
-        font-family: "JetBrainsMono Nerd Font", "Material Symbols Rounded";
-        font-size: 12px;
-        font-weight: 700;
-      }
-
-      window#waybar {
-        /*background: rgb(26,28,23);*/
-        background: rgb(10,1,1);
-        border-radius: 0px;
-      }
-
-      #custom-clock,
-      #tray,
-      #mpris,
-      #workspaces,
-      #workspace button {
-        background: rgb(16,2,2);
-
-        color: #e6e1e5;
-
-        min-width: 12px;
-        min-height: 12px;
-        padding: 0 6px;
-        margin: 2px 2px;
-        border-radius: 10px;
-
-        /*border: 1px solid rgba(255,255,255,0.08);*/
-        transition: all 0.2s ease;
-      }
-
-      #workspaces {
-        padding: 0;
-      }
-
-      #workspaces button label {
-        padding: 0;
-        margin: 0;
-      }
-
-      #workspaces button.active,
-      #workspaces button.focused {
-        background: rgba(57, 150, 181, 0.1);
-        color: white;
-      }
-
-      #workspaces button:hover {
-        background: rgba(255,255,255,0.08);
-      }
-
-      #mpris.playing {
-        background: rgba(57, 150, 181, 0.1);
-      }
-
-      #mpris.spotify.playing {
-        background: rgba(29,185,84,0.1);
-      }
-
-      #mpris.firefox.playing {
-        background: rgba(255,102,42,0.1);
-      }
-
-      #pulseaudio,
-      #network,
-      #bluetooth,
-      #battery,
-      #custom-taskmgr {
-        font-family: "Material Symbols Rounded";
-        background: rgb(16,2,2);
-        color: #e6e1e5;
-        font-weight: 600;
-
-        padding: 0 6px;
-        margin: 2px 0;
-        border-radius: 0;
-
-        /*border-top: 1px solid rgba(255,255,255,0.08);
-        border-bottom: 1px solid rgba(255,255,255,0.08);*/
-      }
-
-      #pulseaudio {
-        font-size: 18px;
-      }
-
-      #bluetooth,
-      #network {
-        font-size: 14px;
-      }
-
-      #custom-cap-left {
-        background: rgb(16,2,2);
-        margin: 2px 0 2px 2px;
-
-        border-radius: 12px 0 0 12px;
-        padding: 0 1px;
-
-        /*border: 1px solid rgba(255,255,255,0.08);
-        border-right: none;*/
-      }
-
-      #custom-cap-right {
-        background: rgb(16,2,2);
-        margin: 2px 2px 2px 0;
-
-        border-radius: 0 12px 12px 0;
-        padding: 0 3px;
-
-        /*border: 1px solid rgba(255,255,255,0.08);
-        border-left: none;*/
-      }
-    '';
   };
   };
 }
 }

+ 123 - 0
home/features/desktop/sway/ui/waybar/style.nix

@@ -0,0 +1,123 @@
+{ pkgs, lib, ... }:
+
+{
+  programs.waybar = {
+    style = ''
+      * {
+        border: none;
+        font-family: "JetBrainsMono Nerd Font", "Material Symbols Rounded";
+        font-size: 12px;
+        font-weight: 700;
+      }
+
+      window#waybar {
+        /*background: rgb(26,28,23);*/
+        background: rgb(10,1,1);
+        border-radius: 0px;
+      }
+
+      #custom-clock,
+      #tray,
+      #mpris,
+      #workspaces,
+      #workspace button {
+        background: rgb(20,2,2);
+
+        color: #e6e1e5;
+
+        min-width: 12px;
+        min-height: 12px;
+        padding: 0 6px;
+        margin: 2px 2px;
+        border-radius: 10px;
+
+        /*border: 1px solid rgba(255,255,255,0.08);*/
+        transition: all 0.2s ease;
+      }
+
+      #workspaces {
+        padding: 0;
+      }
+
+      #workspaces button label {
+        padding: 0;
+        margin: 0;
+      }
+
+      #workspaces button.active,
+      #workspaces button.focused {
+        background: rgba(57, 150, 181, 0.1);
+        color: white;
+      }
+
+      #workspaces button.urgent {
+        background: rgba(65, 3, 3, 0.9);
+      }
+
+      #workspaces button:hover {
+        background: rgba(255,255,255,0.08);
+      }
+
+      #mpris.playing {
+        background: rgba(57, 150, 181, 0.1);
+      }
+
+      #mpris.spotify.playing {
+        background: rgba(29,185,84,0.1);
+      }
+
+      #mpris.firefox.playing {
+        background: rgba(255,102,42,0.1);
+      }
+
+      #pulseaudio,
+      #network,
+      #bluetooth,
+      #battery,
+      #custom-taskmgr {
+        font-family: "Material Symbols Rounded";
+        background: rgb(20,2,2);
+        color: #e6e1e5;
+        font-weight: 600;
+
+        padding: 0 6px;
+        margin: 2px 0;
+        border-radius: 0;
+
+        /*border-top: 1px solid rgba(255,255,255,0.08);
+        border-bottom: 1px solid rgba(255,255,255,0.08);*/
+      }
+
+      #pulseaudio {
+        font-size: 18px;
+      }
+
+      #bluetooth,
+      #network {
+        font-size: 14px;
+      }
+
+      #custom-cap-left {
+        background: rgb(20,2,2);
+        margin: 2px 0 2px 2px;
+
+        border-radius: 12px 0 0 12px;
+        padding: 0 1px;
+
+        /*border: 1px solid rgba(255,255,255,0.08);
+        border-right: none;*/
+      }
+
+      #custom-cap-right {
+        background: rgb(20,2,2);
+        margin: 2px 2px 2px 0;
+
+        border-radius: 0 12px 12px 0;
+        padding: 0 3px;
+
+        /*border: 1px solid rgba(255,255,255,0.08);
+        border-left: none;*/
+      }
+    '';
+  };
+}

+ 22 - 0
home/features/desktop/sway/ui/wofi/default.nix

@@ -0,0 +1,22 @@
+{ pkgs, lib, ... }:
+
+{
+  imports = [
+    ./style.nix
+  ];
+
+  programs.wofi = {
+    enable = true;
+    settings = {
+      location = "center";
+      width = 600;
+      height = 350;
+      allow_images = true;
+      gtk_dark = true;
+      no_actions = true;
+      term = "alacritty";
+      prompt = "drun";
+      show = "drun";
+    };
+  };
+}

+ 84 - 0
home/features/desktop/sway/ui/wofi/style.nix

@@ -0,0 +1,84 @@
+{ pkgs, lib, ... }:
+
+{
+  programs.wofi = {
+    style = ''
+    * {
+      border: 0;
+      font-family: "JetBrainsMono Nerd Font", "Material Symbols Rounded";
+      font-size: 12px;
+      font-weight: 700;
+    }
+
+    window {
+      background-color: rgba(10,1,1,0.999);
+
+      border-radius: 12px;
+      margin: 0px;
+    }
+
+    #outer-box {
+      margin: 0px;
+      padding: 0px;
+      border: none;
+      background-color: transparent;
+    }
+
+    #input {
+      margin: 14px;
+      padding: 12px 16px;
+
+      color: #eeeeee;
+      font-weight: 600;
+
+      background: rgb(20,2,2);
+
+      border-radius: 12px;
+      box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03);
+    }
+
+    #scroll {
+      margin: 0px;
+      border: none;
+    }
+
+    #inner-box {
+      margin: 0px 10px 10px 10px;
+      border: none;
+      background-color: transparent;
+    }
+
+    #entry {
+      padding: 12px 14px;
+      margin: 4px 0px;
+
+      border-radius: 12px;
+
+      background-color: transparent;
+
+      transition: all 120ms ease;
+    }
+
+    #entry:selected {
+      background: rgb(25,2,2);
+    }
+
+    #text {
+      margin-left: 12px;
+      color: #eaeaea;
+    }
+
+    #text:selected {
+      color: #ffffff;
+    }
+
+    #img {
+      margin-right: 10px;
+    }
+
+    scrollbar {
+      opacity: 0;
+    }
+  '';
+  };
+}

+ 2 - 6
home/flavors/desktop/sway/default.nix

@@ -1,12 +1,8 @@
 { pkgs, lib, ... }:
 { pkgs, lib, ... }:
 {
 {
   imports = [
   imports = [
-    ../../../features/application/sway-mui
-    ../../../features/application/mako.nix
-    ../../../features/application/rofi.nix
-    ../../../features/application/files.nix
-    ../../../features/application/notwaita.nix
+    ../../../features/desktop/sway
+    ../../../features/application/bashrc.nix
     ../../../features/application/alacritty.nix
     ../../../features/application/alacritty.nix
-    ../../../features/application/breeze-dark.nix
   ];
   ];
 }
 }