From fc5a0acaecf12c3fd487d89898720c910d8d6a68 Mon Sep 17 00:00:00 2001
From: Chris Cochrun <chris@cochrun.xyz>
Date: Thu, 8 Dec 2022 12:15:21 -0600
Subject: [PATCH]  a metric butt ton of updates that idk....

---
 README.org                       |  17 ++-
 eww/eww.scss                     | 198 +++++++++++++------------
 eww/eww.yuck                     | 240 ++++++++++++++-----------------
 eww/favicon.ico                  | Bin 0 -> 236606 bytes
 eww/notifications.yuck           |   6 +-
 eww/scripts/appname              |  37 +++++
 eww/scripts/bright               |   3 +
 eww/scripts/notifications        |  55 +++++++
 eww/scripts/pop                  |  26 ++--
 eww/scripts/wifi                 |  22 ++-
 eww/scripts/workspace            | 122 +++++++++-------
 eww/sidebar.yuck                 | 121 +++++-----------
 hypr/hyprland.conf               |  17 ++-
 scripts/getvol                   |   1 +
 scripts/window.sh                |   4 +-
 system/kaladin/configuration.nix |   5 +-
 system/syl/configuration.nix     |   5 +-
 user/home.nix                    |  12 +-
 18 files changed, 486 insertions(+), 405 deletions(-)
 create mode 100644 eww/favicon.ico
 create mode 100755 eww/scripts/appname
 create mode 100755 eww/scripts/bright
 create mode 100755 eww/scripts/notifications

diff --git a/README.org b/README.org
index d1e7a01..5cc435c 100644
--- a/README.org
+++ b/README.org
@@ -183,7 +183,7 @@ services.xserver = {
   displayManager = {
     startx.enable = true;
     sddm = {
-      enable = true;
+      enable = false;
     };
     session = [
       {
@@ -361,6 +361,7 @@ rsync
 jq
 ripgrep
 fd
+socat
 ffmpeg-full
 imagemagick
 libheif
@@ -420,6 +421,7 @@ libnotify
 rofi-wayland
 wofi
 waybar
+tridactyl-native
 eww-wayland
 wlrctl
 hyprpaper
@@ -605,6 +607,7 @@ services.emacs = {
       no-littering
       tree-sitter
       tree-sitter-langs
+      rustic
       evil
       evil-collection
       general
@@ -2272,6 +2275,8 @@ I also use home-manager for managing dotfiles. This means that everything is con
     };
   };
 
+  home.file.".mozilla/native-messaging-hosts".source = "/run/current-system/sw/lib/mozilla/native-messaging-hosts";
+
   home.file.".mozilla/firefox/nw77o6yc.default/chrome" = {
     source = ../firefox/chrome;
     recursive = true;
@@ -2296,9 +2301,7 @@ I also use home-manager for managing dotfiles. This means that everything is con
     source = ../fish/functions;
   };
 
-  home.file.".config/hypr" = {
-    source = ../hypr;
-  };
+  home.file.".config/hypr".source = config.lib.file.mkOutOfStoreSymlink ../hypr;
 
   home.file.".config/dunst" = {
     source = ../dunst;
@@ -2491,8 +2494,10 @@ I also use home-manager for managing dotfiles. This means that everything is con
         After = [ "graphical-session.target" ];
         # PartOf = [ "plasma-workspace.target" ];
       };
-
-      # Install = { WantedBy = [ "plasma-workspace.target" ]; };
+      Service = {
+        Environment = ["PATH=/etc/profiles/per-user/chris/bin"
+                       "WAYLAND_DISPLAY=wayland-1"];
+      };
     };
   };
 
diff --git a/eww/eww.scss b/eww/eww.scss
index 00dfe6e..044a56f 100644
--- a/eww/eww.scss
+++ b/eww/eww.scss
@@ -3,7 +3,7 @@ Created by saimoom **/
 *{
 	all: unset;
 	font-family: feather;
-	font-family: mononoki Nerd Font;
+	font-family: VictorMono Nerd Font;
 }
 
 $background: rgba(00, 00, 00, 0.7);
@@ -20,10 +20,31 @@ $purple:    #C574DD;
 $teal:      #79E6F3;
 $white:     #FDFDFD;
 
+$base00: #282a36;
+$base01: #34353e;
+$base02: #43454f;
+$base03: #78787e;
+$base04: #a5a5a9;
+$base05: #e2e4e5;
+$base06: #eff0eb;
+$base07: #f1f1f0;
+$base08: #ff5c57;
+$base09: #ff9f43;
+$base0A: #f3f99d;
+$base0B: #5af78e;
+$base0C: #9aedfe;
+$base0D: #57c7ff;
+$base0E: #ff6ac1;
+$base0F: #b2643c;
+$basetransparent: rgba(40, 42, 54, 0.0);
+$backtransparent: rgba(40, 42, 54, 0.7);
+
 /** General **/
 .bar_class {
-    background-color: $background;
+    background-color: $backtransparent;
     border-radius: 20px 20px 20px 20px;
+    box-shadow: 2px 2px 5px 5px #101010;
+    margin: 8px 18px 13px 18px;
 }
 .module {
     margin: 0px 0px 0px 0px;
@@ -31,9 +52,12 @@ $white:     #FDFDFD;
 }
 
 .side{
-    background-color: $background;
+    background-color: $backtransparent;
     border-width: 0px;
-    padding: 0px 30px 0px 30px;
+    padding: 30px 30px 0px 30px;
+    border-radius: 20px 20px 20px 20px;
+    box-shadow: 2px 2px 5px 5px #101010;
+    margin: 8px 18px 13px 18px;
 }
 
 .center_modules {
@@ -43,7 +67,7 @@ $white:     #FDFDFD;
 
 /** tooltip!! **/
 tooltip.background {
-    background-color: $background;
+    background-color: $backtransparent;
     font-size: 18;
     border-radius: 10px;
     color: $white;
@@ -57,34 +81,34 @@ tooltip label {
 /** Widgets **/
 
 .clock_time_class, .clock_minute_class {
-    font-size: 28;
+    font-size: 16;
 }
 .clock_date_class {
-    font-size: 24;
+    font-size: 16;
     margin: 0px 20px 0px -1px;
-    color: $red;
+    color: $base08;
 }
 .clock_time_class {
-    color: $white;
+    color: $base0B;
     font-weight: bold;
     margin: 0px 20px 0px 5px;
 }
 
 .notif_button {
-    font-size: 28;
-    margin: 0px 20px 0px 0px;
-    color: $white;
+    font-size: 18;
+    margin: 2px 20px 0px 0px;
+    color: $base05;
 }
 
 .membar {
-    color: $orange;
-    background-color: $widget-background;
-    border-radius: 10px;
+    color: $base0A;
+    background-color: $base01;
+    border-radius: 5px;
 }
 .batbar {
-    color: $purple;
+    color: $base0E;
     background-color: $widget-background;
-    border-radius: 10px;
+    border-radius: 5px;
 }
 .brightbar trough highlight {
     background-image: linear-gradient(to right, $orange 30%, #f2cdcd 50%, $orange 100% *50);
@@ -95,53 +119,54 @@ tooltip label {
     border-radius: 10px;
 }
 .volume_icon {
-    font-size: 22;
-    color: $blue;
-  margin: 0px 10px 0px 10px;
+    font-size: 18;
+    color: $base08;
+    margin: 0px 10px 0px 10px;
 }
 
 
 .module_essid {
     font-size: 18;
-    color: $blue;
-  margin: 0px 10px 0px 0px;
+    color: $base0C;
+    margin: 0px 10px 0px 0px;
 }
 .module-wif {
-    font-size: 22;
-    color: $blue;
-  margin: 0px 10px 0px 5px;
+    font-size: 18;
+    color: $base0C;
+    margin: 0px 10px 0px 10px;
 }
 
 .iconlauncher {
     color: $white;
-    font-size: 36px;
+    font-size: 10px;
     margin: 0px 10px 0px 15px;
 }
+
 .iconsearch {
     color: $white;
-    font-size: 24px;
+    font-size: 18px;
 }
 .iconmem {
-    color: $orange;
+    color: $base0A;
 }
 .iconbat {
-    color: $purple;
+    color: $base0B;
 }
 .iconbat, .iconmem {
     font-size: 15;
-    margin: 15px;
+    margin: 10px;
 }
 .bright_icon {
-    font-size: 22;
-    color: $orange;
-  margin: 0px 10px 0px 10px;
+    font-size: 18;
+    color: $base09;
+    margin: 0px 10px 0px 10px;
 }
 
 
 .separ {
-    color: $grey;
+    color: $base03;
     font-weight: bold;
-    font-size: 22px;
+    font-size: 24px;
     margin: 0px 8px 0px 8px;
   }
 
@@ -151,19 +176,20 @@ tooltip label {
 
 .mem_module {
     background-color: rgba(00, 00, 00, 0.0);
-	border-radius: 16px;
-  margin: 0px 10px 0px 3px;
+    border-radius: 16px;
+    margin: 0px 10px 0px 3px;
   }
+
 .bat_module {
     background-color: rgba(00, 00, 00, 0.0);
-	border-radius: 16px;
-  margin: 0px 10px 0px 10px;
+    border-radius: 16px;
+    margin: 0px 10px 0px 10px;
   }
 
 .works {
-    font-size: 28px;
+    font-size: 22px;
     font-weight: normal;
-    margin: 10px 0px 0px 10px;
+    margin: 2px 0px 0px 20px;
     background-color: rgba(00, 00, 00, 0.0);
 }
 
@@ -174,23 +200,23 @@ tooltip label {
 
 /* Unoccupied */
 .0 {
-    color: $grey;
+    color: $base03;
 }
 
 /* Occupied */
 .01, .02, .03, .04, .05, .06, .07, .08, .09 {
-    color: $white;
+    color: $base05;
 }
 
 /* Focused */
 .011, .022, .033, .044, .055, .066, .077, .088, .099{
-    color: $purple;
+    color: $base0D;
 }
 
 
 // Calendar
 .cal {
-    background-color: $background;
+    background-color: $backtransparent;
     font-family: mononoki Nerd Font;
     font-size: 18px;
     font-weight: normal;
@@ -287,43 +313,44 @@ color: $black;
 
 
 .app-name {
-	color: $blue;
-	font-size : 20px;
-	font-weight : bold;
-	margin : 10px 0px 0px 0px;
+    color: $base0D;
+    font-size : 14px;
+    font-weight : bold;
+    padding : 4px 0px 0px 0px;
 }
 
 .app-icon {
-	margin : 8px 10px 0px 0px;
+    margin : 6px 10px 0px 0px;
+
 }
 
 .app-button {
-	color: $blue;
-	font-size : 30px;
-	font-weight : bold;
-	margin : 0px 15px 0px 15px;
+    color: $base0D;
+    font-size : 20px;
+    font-weight : bold;
+    margin : 0px 15px 0px 15px;
 }
 
 .launcher-icon {
-	margin : 5px -5px 10px 15px;
+	margin : 9px 0px 10px 15px;
 }
 
 .audio-box {
     background-color: $background;
-	border-radius: 16px;
+    border-radius: 16px;
 }
 .speaker_icon {
-	background-size: cover;
+    background-size: cover;
     background-image: url('images/speaker.png');
-	background-position: center;
-	min-height: 70px;
-	min-width: 75px;
-	margin: 10px 20px 5px 20px;
-	border-radius: 12px;
+    background-position: center;
+    min-height: 70px;
+    min-width: 75px;
+    margin: 10px 20px 5px 20px;
+    border-radius: 12px;
 }
 
 .speaker_text {
-	color: $blue;
+	color: $base0D;
 	font-size : 26px;
 	font-weight : bold;
 	margin: 20px 0px 0px 0px;
@@ -441,7 +468,7 @@ font-family: JetBrainsMono Nerd Font Mono;
 }
 
 .label_temp {
-	color : $blue;
+	color : $base0D;
 	font-size : 35px;
 	font-weight : bold;
 	margin : 0px 0px 0px 0px;
@@ -450,13 +477,13 @@ font-family: JetBrainsMono Nerd Font Mono;
 }
 
 .label_stat {
-	color : $blue;
+	color : $base0D;
 	font-size : 38px;
 	font-weight : bold;
 }
 
 .label_quote {
-	color : $blue;
+	color : $base0D;
 	font-size : 18px;
   padding-bottom: 10px;
 	font-weight : normal;
@@ -467,10 +494,10 @@ font-family: JetBrainsMono Nerd Font Mono;
     background-color: $widget-background;
     padding: 33px 27px 27px 27px;
     border-radius: 12px;
-    color: $blue;
-	font-size : 18px;
-	font-style : italic;
-	font-family: Cartograph CF;
+    color: $base0D;
+    font-size : 12px;
+    font-style : italic;
+    font-family: Cartograph CF;
     box-shadow: 0px 0px 6px 6px rgb(0, 0, 0, .4);}
 
 .stats-box {
@@ -482,7 +509,7 @@ font-family: JetBrainsMono Nerd Font Mono;
 
 .stats-icon {
     font-size: 23px;
-    color: $blue;
+    color: $base0D;
     font-family: JetBrainsMono Nerd Font Mono;
 }
 
@@ -580,59 +607,54 @@ scale trough {
 }
 
 .notification {
-	all: unset;
-    background-color: $widget-background;
-	padding: 20px 25px 20px 17px;
+    all: unset;
+    background-color: $base00;
+    padding: 10px 15px 10px 7px;
     margin: 0px 15px 0px 15px;
-	border-radius: 12px;
+    border-radius: 12px;
     border-width: 2px;
     border-style: solid;
-    border-color: $red;}
+    border-color: $base09;}
 
 .notification-header {
-	all: unset;
-    background-color: $widget-background;
-	padding: 20px 25px 20px 17px;
+    all: unset;
+    background-color: $base00;
+    padding: 10px 15px 10px 7px;
     margin: 20px 15px 10px 15px;
-	border-radius: 12px;
+    border-radius: 12px;
     border-width: 2px;
     border-style: solid;
-    border-color: $green;}
+    border-color: $base0A;}
 
 .notification-icon {
     color: $white;
-    font-size: 36px;
-    margin: 0px 20px 0px 10px;
+    font-size: 16px;
+    margin: 0px 10px 0px 0px;
 }
 
 .notification-appname {
-    font-family: "Inter Nerd Font";
     font-size: 14px;
     font-weight: bold;
     color: $orange;
 }
 
 .notification-summary {
-    font-family: "Inter Nerd Font";
     font-size: 18px;
     font-weight: bold;
     color: $white;
 }
 
 .notification-body {
-    font-family: "Inter Nerd Font";
     font-size: 14px;
     color: $white;
 }
 
 .notification-label {
-    font-family: "Mononoki Nerd Font";
     font-size: 30px;
     color: $blue;
     margin: 0px 50px 0px 0px;
 }
 .notification-action {
-    font-family: "Mononoki Nerd Font";
     font-size: 36px;
     color: $white;
     margin: 0px 0px 0px 20px;
diff --git a/eww/eww.yuck b/eww/eww.yuck
index 39f3b37..00713e8 100644
--- a/eww/eww.yuck
+++ b/eww/eww.yuck
@@ -3,13 +3,13 @@
 (include "sidebar.yuck")
 (include "notifications.yuck")
 
-(defpoll clock_time :interval "5s" "date '+\%l\%M \%p'")
+(defpoll clock_time :interval "5s" "date '+\%l:\%M \%p'")
 (defpoll clock_date :interval "1h" "date '+%b %d, %Y'")
 (defpoll calendar_day :interval "2h" "date '+%d'")
 (defpoll calendar_year :interval "2h" "date '+%Y'")
-(defpoll volume_percent :interval "1s"  "scripts/sbvol --get")
-(defpoll mic_percent :interval "3s" "amixer -D pulse sget Capture | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%' | head -n 1")
-(defpoll brightness_percent :interval "5s" "light")
+(defpoll volume_percent :interval "1s"  "~/bin/getvol | cut -c 1-2")
+(defpoll mic_percent :interval "3s" "pamixer --get-volume --default-source")
+(defpoll brightness_percent :interval "5s" "scripts/bright")
 (defpoll COL_WLAN :interval "1m" "scripts/wifi --COL")
 (defpoll ESSID_WLAN :interval "1m" "scripts/wifi --ESSID")
 (defpoll WLAN_ICON :interval "1m" "scripts/wifi --ICON")
@@ -26,21 +26,6 @@
 
 ;; widgets
 
-(defwidget launcher []
-  (box 
-    :class "launcher_module"
-    :orientation "h"
-    (button
-        :onclick "rofi -no-lazy-grab -show drun -theme ~/.config/hypr/themes/neon/rofi/launcher.rasi &"
-        (image 
-          :class "launcher-icon"
-          :path "favicon.ico"
-          :image-width 36))
-    (button
-        :onclick "rofi -show filebrowser &"
-        :class "iconsearch" "")
-   ))
-
 (defwidget workspaces []
   (literal 
     :content workspace))
@@ -48,32 +33,32 @@
 (defwidget appnames []
   (eventbox
     :onhover "${EWW_CMD} update control_reveal=true"
-	  :onhoverlost "${EWW_CMD} update control_reveal=false"
+    :onhoverlost "${EWW_CMD} update control_reveal=false"
     (box
-	    :orientation "h"
-	    :space-evenly "false"
-	    :vexpand "false"
-	    :hexpand "false" 
-        (literal 
-            :content appname)
-	    (revealer
-	      :transition "slideright"
-		    :reveal control_reveal
-		    :duration "350ms"
-        (box
-            :vexpand "false"
-            :hexpand "false"
-            :orientation "h"
-            :space-evenly "false"
-            (button
-                :class "app-button"
-                :onclick "hyprctl dispatch togglefloating 1" "") 
-		  	    (button
-		  	        :class "app-button"
-		  	        :onclick "hyprctl dispatch fullscreen 1" "")
-		  	    (button
-		  	        :class "app-button"
-                :onclick "hyprctl dispatch killactive 1" ""))))))
+     :orientation "h"
+     :space-evenly "false"
+     :vexpand "false"
+     :hexpand "false" 
+     (literal 
+      :content appname)
+     (revealer
+      :transition "slideright"
+      :reveal control_reveal
+      :duration "250ms"
+      (box
+       :vexpand "false"
+       :hexpand "false"
+       :orientation "h"
+       :space-evenly "false"
+       (button
+        :class "app-button"
+        :onclick "hyprctl dispatch togglefloating 1" "") 
+       (button
+	:class "app-button"
+	:onclick "hyprctl dispatch fullscreen 1" "")
+       (button
+	:class "app-button"
+        :onclick "hyprctl dispatch killactive 1" ""))))))
 
 (defwidget bright []
   (eventbox
@@ -86,15 +71,15 @@
         :spacing "3" 
 	    (revealer 
 	        :transition "slideright"
-		    :reveal br_reveal
-			:duration "350ms"
+		:reveal br_reveal
+		:duration "250ms"
 	        (scale    :class "brightbar"
-			    :value brightness_percent
-			    :orientation "h"
-			    :tooltip "${brightness_percent}%"
-			    :max 100
-			    :min 0
-			    :onchange "light -S {}" ))
+			  :value brightness_percent
+			  :orientation "h"
+			  :tooltip "${brightness_percent}%"
+			  :max 100
+			  :min 0
+			  :onchange "brightnessctl s {}%" ))
         (label
             :text ""
             :class "bright_icon"
@@ -111,41 +96,40 @@
         :spacing "3" 
 	        (revealer 
 	            :transition "slideright"
-			    :reveal vol_reveal
-			    :duration "350ms"
+		    :reveal vol_reveal
+		    :duration "250ms"
 	            (scale  
-	                :class "volbar"
-			        :value volume_percent
-			        :orientation "h"
-			        :tooltip "${volume_percent}%"
-			        :max 100
-			        :min 0
-			        :onchange "amixer -D pulse sset Master {}%" ))
+	             :class "volbar"
+		     :value volume_percent
+		     :orientation "h"
+		     :tooltip "${volume_percent}%"
+		     :max 100
+		     :min 0
+		     :onchange "pamixer --set-volume {}" ))
 	        (button
-	            :onclick "scripts/pop audio_ctl"
-	            :class "volume_icon"
-	            "墳"))))
+	         :onclick "scripts/pop audio"
+	         :class "volume_icon"
+	         "墳"))))
 
 (defwidget wifi [] 
   (eventbox 
     :onhover "${EWW_CMD} update wifi_rev=true"
-	:onhoverlost "${EWW_CMD} update wifi_rev=false"
-	(box
-	    :vexpand "false"
-	    :hexpand "false"
-	    :space-evenly "false"
-	    (revealer 
-	        :transition "slideright"
-		    :reveal wifi_rev
-			:duration "350ms"
-	        (label
-	        :class "module_essid"
-			    :text ESSID_WLAN
-			  ))
-		(button
-		    :class "module-wif"
-		    :onclick "networkmanager_dmenu"
-		    WLAN_ICON))))
+    :onhoverlost "${EWW_CMD} update wifi_rev=false"
+    (box
+     :vexpand "false"
+     :hexpand "false"
+     :space-evenly "false"
+     (revealer 
+      :transition "slideright"
+      :reveal wifi_rev
+      :duration "250ms"
+      (label
+       :class "module_essid"
+       :text ESSID_WLAN))
+     (button
+      :class "module-wif"
+      :onclick "networkmanager_dmenu"
+      WLAN_ICON))))
 
 (defwidget bat []
 		(box
@@ -153,13 +137,13 @@
 		    :vexpand "false"
 		    :hexpand "false" 
         (circular-progress
-            :value {EWW_BATTERY["BAT0"].capacity}
+            :value {EWW_BATTERY["BAT1"].capacity}
             :class "batbar"
             :thickness 4
             (button 
                 :onclick "scripts/pop system"
                 :class "iconbat"
-                :tooltip "battery on ${EWW_BATTERY["BAT0"].capacity}%"
+                :tooltip "${EWW_BATTERY["BAT1"].capacity}% battery left"
                 " "))))
 
 (defwidget mem []
@@ -191,7 +175,7 @@
               :class "clock_time_class" )
           (revealer :transition "slideleft"
   		    :reveal time_rev
-  		    :duration "350ms"
+  		    :duration "250ms"
               (button 
                   :class "clock_date_class"
                   :onclick "scripts/pop calendar" clock_date)))))
@@ -202,7 +186,7 @@
     :space-evenly "false"
     :orientation "h"
     (button
-	    :onclick "if ${EWW_CMD} state | grep 'rightside: false' ; then ${EWW_CMD} update rightside=true ; else ${EWW_CMD} update rightside=false ; fi"
+     :onclick "if ${EWW_CMD} state | grep 'rightside: false' ; then ${EWW_CMD} update rightside=true ; else ${EWW_CMD} update rightside=false ; fi"
       (label
       :text ""))))
   
@@ -230,8 +214,6 @@
 		:space-evenly false  
     :halign "start"
 		:class "left_modules"
-    (launcher)
-    (sep)
     (workspaces)))
 (defwidget center []
 	(box 
@@ -242,20 +224,19 @@
     (appnames)))
 (defwidget right []
 	(box
-	  :orientation "h" 
-		:space-evenly false  
-    :halign "end"
-		:class "right_modules"
-    (bright)
-    (volume)
-    (wifi)
-    (sep)
-    (bat)
-    (mem)
-    (sep)
-    (clock_module)
-    (notif_button)
-))
+	 :orientation "h" 
+	 :space-evenly false  
+         :halign "end"
+	 :class "right_modules"
+         (bright)
+         (volume)
+         (wifi)
+         (sep)
+         (bat)
+         (mem)
+         (sep)
+         (clock_module)
+         (notif_button)))
 
 (defwidget bar_layout []
   (centerbox 
@@ -270,9 +251,9 @@
     :exclusive true
     :geometry (geometry 
         :x "15px"
-        :y "10px"
-        :width "98%"
-        :height "20px"
+        :y "3px"
+        :width "100%"
+        :height "0px"
         :anchor "bottom center")
     :stacking "fg"
     :windowtype "dock"
@@ -336,11 +317,11 @@
 	                :hexpand "false"
 	                (scale
 	                  :value volume_percent
-			              :orientation "h"
-			              :onchange "amixer -D pulse sset Master {}%" 
-                    :tooltip "volume on ${volume_percent}%"
-			              :max 100
-			              :min 0))))
+			  :orientation "h"
+			  :onchange "amixer -D pulse sset Master {}%" 
+                          :tooltip "volume on ${volume_percent}%"
+			  :max 100
+			  :min 0))))
         (label
             :text "_____________________________________"
             :class "audio_sep"
@@ -403,7 +384,7 @@
         :orientation "h"
         :space-evenly "false"
         (circular-progress
-            :value {EWW_BATTERY["BAT0"].capacity}
+            :value {EWW_BATTERY["BAT1"].capacity}
             :class "sys_bat"
             :thickness 9
             (label :text ""
@@ -423,12 +404,12 @@
                 :limit-width 9
                 :wrap false)
             (label 
-                :text "${EWW_BATTERY["BAT0"].capacity}%"
+                :text "${EWW_BATTERY["BAT1"].capacity}%"
                 :halign "start"
                 :class "sys_text_bat_sub"
                 :limit-width 22
                 :wrap false)
-            (label :text "${EWW_BATTERY["BAT0"].status}"
+            (label :text "${EWW_BATTERY["BAT1"].status}"
                 :halign "start"
                 :class "sys_text_bat_sub"
                 :limit-width 22
@@ -481,13 +462,12 @@
     :focusable "false"
     :screen 1
     :monitor 0
-	  :geometry 
-    (geometry
-      :x "20" 
-			:y "7%" 
-      :anchor "top right"
-			:width "290px" 
-			:height "120px")
+    :geometry (geometry
+               :x "20" 
+               :y "0" 
+               :anchor "bottom right"
+               :width "290px" 
+               :height "120px")
     (system))
 
 
@@ -498,19 +478,19 @@
 	    :class "cal"
 	    :orientation "v"
 	    (box
-	        :class "cal-in"
-	        (calendar
-			      :day calendar_day 
-			      :year calendar_year))))
+	     :class "cal-in"
+	     (calendar
+	      :day calendar_day 
+	      :year calendar_year))))
 (defwindow calendar
     :stacking "fg"
     :focusable "false"
     :screen 1
     :monitor 0
-	  :geometry (geometry
-    :x "20" 
-	  :y "7%" 
-    :anchor "top right"
-	  :width "270px" 
-	  :height "60px")
-(cal))
+    :geometry (geometry
+               :x "20" 
+               :y "0" 
+               :anchor "bottom right"
+	       :width "270px" 
+	       :height "60px")
+    (cal))
diff --git a/eww/favicon.ico b/eww/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..5fd2a00d454f8b919e6d1280df8069874f33c70c
GIT binary patch
literal 236606
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

literal 0
HcmV?d00001

diff --git a/eww/notifications.yuck b/eww/notifications.yuck
index 8feca7f..0395f1f 100644
--- a/eww/notifications.yuck
+++ b/eww/notifications.yuck
@@ -2,7 +2,7 @@
     :geometry (geometry :x "0px"
                         :y "0px"
                         :width "1px"
-                        :height "93%"
+                        :height "63%"
                         :anchor "bottom right")
     :stacking "fg"
     :monitor "0"
@@ -15,7 +15,7 @@
 		(revealer 
 		    :transition "slideleft"
 		    :reveal rightside 
-		    :duration "550ms"
+		    :duration "250ms"
 		(rightside))))
 (defvar rightside false)
 
@@ -53,7 +53,7 @@
         (scroll
             :vscroll "true"
             :hscroll "false"
-            :height 840
+            :height 740
             :width 200
             (literal
                 :content notifications)
diff --git a/eww/scripts/appname b/eww/scripts/appname
new file mode 100755
index 0000000..bb28cc8
--- /dev/null
+++ b/eww/scripts/appname
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+#define icons for workspaces 1-9
+#icontheme=$(geticons -U)
+icontheme=$(grep "gtk-icon-theme-name" "$HOME"/.config/gtk-3.0/settings.ini | cut --delimiter="=" -f 2)
+
+workspaces() {
+if [[ ${1:0:12} == "activewindow" ]]; then #set focused workspace
+    string=${1:14}
+    class="${string/,*/}"
+    export title=${string/,/, }
+    [[ $title == ", " ]] && unset title
+    export iconpath=$(geticons "$class" -s 16 -c 1 -t "$icontheme" | head -n 1)
+fi
+}
+
+module() {
+#output eww widget
+echo 	"(box \
+                :orientation \"h\" \
+                :halign \"start\" \
+                :space-evenly false \
+                (image \
+                    :class \"app-icon\" \
+                    :path \"$iconpath\" \
+                    :image-width \"18\") \
+                (label \
+                    :class \"app-name\" \
+                    :limit-width \"35\" \
+                    :text \"$title\" \
+                    :tooltip \"$title\"))"
+}
+
+socat -u UNIX-CONNECT:/tmp/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock - | while read -r event; do 
+workspaces "$event"
+module
+done
diff --git a/eww/scripts/bright b/eww/scripts/bright
new file mode 100755
index 0000000..d621dbb
--- /dev/null
+++ b/eww/scripts/bright
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+brightnessctl | rg Current | awk '{print $4}' | sed 's/(\(.*\)%)/\1/'
diff --git a/eww/scripts/notifications b/eww/scripts/notifications
new file mode 100755
index 0000000..1478a6c
--- /dev/null
+++ b/eww/scripts/notifications
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+
+tmp=/tmp/dunst-history.json
+
+notif() {
+export ids=($(dunstctl history | jq '.data[] | .[].id.data'))
+
+printf "\n (box \
+    :orientation \"v\" \
+    :space-evenly \"false\" \
+    :spacing \"20\" \
+    :halign \"start\" "
+
+for id in "${ids[@]}"; do
+    mapfile -t notif < <(jq -r ".data[] | .[] | select(.id.data == $id) | .appname.data, .icon_path.data, .summary.data, .body.data" "$tmp" | sed -r '/^\s*$/d' | sed -e 's/\%/ percent/g')
+    printf "(eventbox :onclick \"dunstctl history-pop $id && dunstctl action 0 && dunstctl close\" \
+    (box	\
+    :class \"notification\"	\
+    :orientation \"h\" \
+    :width 300 \
+    :space-evenly \"false\" \
+    (image \
+        :class \"notification-icon\" \
+        :path \"${notif[1]}\" \
+        :image-height 50 \
+        :image-width 100) \
+    (box \
+        :orientation \"v\" \
+        :space-evenly \"false\" \
+        :valign \"left\" \
+        :width 300 \
+        :spacing 10 \
+        (label \
+            :xalign 0 \
+            :wrap "true" \
+            :class \"notification-appname\" \
+            :text \"${notif[0]}\") \
+        (label \
+            :xalign 0 \
+            :wrap "true" \
+            :class \"notification-summary\" \
+            :text \"${notif[2]}\") \
+        (label \
+            :xalign 0 \
+            :wrap "true" \
+            :class \"notification-body\" \
+            :text \"${notif[3]}\"))))"
+done
+printf ") \n"
+}
+
+notif
+tail --follow $tmp 2> /dev/null | grep --line-buffered "aa{sv}" | while read -r; do
+notif
+done
diff --git a/eww/scripts/pop b/eww/scripts/pop
index aef82e8..4f7f352 100755
--- a/eww/scripts/pop
+++ b/eww/scripts/pop
@@ -1,20 +1,20 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 calendar() {
 LOCK_FILE="$HOME/.cache/eww-calendar.lock"
 EWW_BIN="$HOME/.local/bin/eww/eww"
 
 run() {
-    ${EWW_BIN} -c $HOME/.config/eww/bar open calendar
+    eww  open calendar
 }
 
 # Open widgets
 if [[ ! -f "$LOCK_FILE" ]]; then
-    ${EWW_BIN} -c $HOME/.config/eww/bar close system music_win audio_ctl
+    eww  close system music_win audio_ctl
     touch "$LOCK_FILE"
     run && echo "ok good!"
 else
-    ${EWW_BIN} -c $HOME/.config/eww/bar close calendar
+    eww  close calendar
     rm "$LOCK_FILE" && echo "closed"
 fi
 }
@@ -25,16 +25,16 @@ LOCK_FILE_MEM="$HOME/.cache/eww-system.lock"
 EWW_BIN="$HOME/.local/bin/eww/eww"
 
 run() {
-    ${EWW_BIN} -c $HOME/.config/eww/bar open system 
+    eww open system 
 }
 
 # Open widgets
 if [[ ! -f "$LOCK_FILE_MEM" ]]; then
-    ${EWW_BIN} -c $HOME/.config/eww/bar close calendar music_win audio_ctl
+    eww  close calendar music_win audio_ctl
     touch "$LOCK_FILE_MEM"
     run && echo "ok good!"
 else
-    ${EWW_BIN} -c $HOME/.config/eww/bar close system 
+    eww  close system 
     rm "$LOCK_FILE_MEM" && echo "closed"
 fi
 }
@@ -45,16 +45,16 @@ LOCK_FILE_SONG="$HOME/.cache/eww-song.lock"
 EWW_BIN="$HOME/.local/bin/eww/eww"
 
 run() {
-    ${EWW_BIN} -c $HOME/.config/eww/bar open music_win 
+    eww  open music_win 
 }
 
 # Open widgets
 if [[ ! -f "$LOCK_FILE_SONG" ]]; then
-    ${EWW_BIN} -c $HOME/.config/eww/bar close system calendar
+    eww  close system calendar
     touch "$LOCK_FILE_SONG"
     run && echo "ok good!"
 else
-    ${EWW_BIN} -c $HOME/.config/eww/bar close music_win
+    eww  close music_win
     rm "$LOCK_FILE_SONG" && echo "closed"
 fi
 }
@@ -66,16 +66,16 @@ LOCK_FILE_AUDIO="$HOME/.cache/eww-audio.lock"
 EWW_BIN="$HOME/.local/bin/eww/eww"
 
 run() {
-    ${EWW_BIN} -c $HOME/.config/eww/bar open audio_ctl 
+    eww  open audio_ctl 
 }
 
 # Open widgets
 if [[ ! -f "$LOCK_FILE_AUDIO" ]]; then
-    ${EWW_BIN} -c $HOME/.config/eww/bar close system calendar music
+    eww  close system calendar music
     touch "$LOCK_FILE_AUDIO"
     run && echo "ok good!"
 else
-    ${EWW_BIN} -c $HOME/.config/eww/bar close audio_ctl
+    eww  close audio_ctl
     rm "$LOCK_FILE_AUDIO" && echo "closed"
 fi
 }
diff --git a/eww/scripts/wifi b/eww/scripts/wifi
index 5d7cc59..f44045a 100755
--- a/eww/scripts/wifi
+++ b/eww/scripts/wifi
@@ -1,26 +1,22 @@
-#!/bin/bash
+#!/bin/sh
 
 status=$(nmcli g | grep -oE "disconnected")
-essid=$(nmcli c | grep wlp2s0 | awk '{print ($1)}')
+essid=$(nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d: -f2)
 
 if [ $status ] ; then
-    icon=""
+    icon="睊"
     text=""
     col="#575268"
 
 else
-    icon=""
+    icon=""
     text="${essid}"
     col="#a1bdce"
 fi
 
 
-
-if [[ "$1" == "--COL" ]]; then
-    echo $col	
-elif [[ "$1" == "--ESSID" ]]; then
-	echo $text
-elif [[ "$1" == "--ICON" ]]; then
-	echo $icon
-fi
-
+case $1 in
+	--COL) echo $col;;
+	--ESSID) echo $text;;
+	--ICON) echo $icon;;
+esac
diff --git a/eww/scripts/workspace b/eww/scripts/workspace
index f202ef1..40a2578 100755
--- a/eww/scripts/workspace
+++ b/eww/scripts/workspace
@@ -1,56 +1,72 @@
-#!/bin/sh
-workspaces() {
+#!/usr/bin/env bash
 
-ws1="1"
-ws2="2"
-ws3="3"
-ws4="4"
-ws5="5"
-ws6="6"
+#define icons for workspaces 1-9
+ic=(0     輸  " " " " )
 
-# Unoccupied
-un="0"
-
-# check if Occupied
-o1=$(bspc query -D -d .occupied --names | grep "$ws1" )
-o2=$(bspc query -D -d .occupied --names | grep "$ws2" )
-o3=$(bspc query -D -d .occupied --names | grep "$ws3" )
-o4=$(bspc query -D -d .occupied --names | grep "$ws4" )
-o5=$(bspc query -D -d .occupied --names | grep "$ws5" )
-o6=$(bspc query -D -d .occupied --names | grep "$ws6" )
-
-# check if Focused
-f1=$(bspc query -D -d focused --names | grep "$ws1" )
-f2=$(bspc query -D -d focused --names | grep "$ws2" )
-f3=$(bspc query -D -d focused --names | grep "$ws3" )
-f4=$(bspc query -D -d focused --names | grep "$ws4" )
-f5=$(bspc query -D -d focused --names | grep "$ws5" )
-f6=$(bspc query -D -d focused --names | grep "$ws6" )
-
-ic_1=""
-ic_2=""
-ic_3=""
-ic_4=""
-ic_5=""
-ic_6=""
-if [ $f1 ]; then
-    ic_1=""
-elif [ $f2 ]; then
-    ic_2=""
-elif [ $f3 ]; then
-    ic_3=""
-elif [ $f4 ]; then
-    ic_4=""
-elif [ $f5 ]; then
-    ic_5=""
-elif [ $f6 ]; then
-    ic_6=""
-fi
-
-echo 	"(box	:class \"works\"	:orientation \"h\" :spacing 5 :space-evenly \"false\" (button :onclick \"bspc desktop -f $ws1\"	:class	\"$un$o1$f1\"	\"$ic_1\") (button :onclick \"bspc desktop -f $ws2\"	:class \"$un$o2$f2\"	 \"$ic_2\") (button :onclick \"bspc desktop -f $ws3\"	:class \"$un$o3$f3\" \"$ic_3\") (button :onclick \"bspc desktop -f $ws4\"	:class \"$un$o4$f4\"	\"$ic_4\") (button :onclick \"bspc desktop -f $ws5\"	:class \"$un$o5$f5\" \"$ic_5\")  (button :onclick \"bspc desktop -f $ws6\"	:class \"$un$o6$f6\" \"$ic_6\"))"
-
-}
-workspaces
-bspc subscribe desktop node_transfer | while read -r _ ; do
-workspaces
+#initial check for occupied workspaces
+for num in $(hyprctl workspaces | grep ID | awk '{print $3}'); do 
+  export o"$num"="$num"
+done
+ 
+#initial check for focused workspace
+for num in $(hyprctl monitors | grep -B 4 "focused: yes" | awk 'NR==1{print $3}'); do 
+  export f"$num"="$num"
+  export fnum=f"$num"
+  export mon=$(hyprctl monitors | grep -B 2 "\($num\)" | awk 'NR==1{print $2}')
+done
+
+workspaces() {
+if [[ ${1:0:9} == "workspace" ]] && [[ ${1:11} != "special" ]]; then #set focused workspace
+  unset -v "$fnum" 
+  num=${1:11}
+  export f"$num"="$num"
+  export fnum=f"$num"
+
+elif [[ ${1:0:10} == "focusedmon" ]]; then #set focused workspace following monitor focus change
+  unset -v "$fnum"
+  string=${1:12}
+  num=${string##*,}
+  export mon=${string/,*/}
+  export f"$num"="$num"
+  export fnum=f"$num"
+
+elif [[ ${1:0:13} == "moveworkspace" ]] && [[ ${1##*,} == "$mon" ]]; then #Set focused workspace following swapactiveworkspace
+  unset -v "$fnum"
+  string=${1:15}
+  num=${string/,*/}
+  export f"$num"="$num"
+  export fnum=f"$num"
+
+elif [[ ${1:0:15} == "createworkspace" ]]; then #set Occupied workspace
+  num=${1:17}
+  export o"$num"="$num"
+  export onum=o"$num"
+
+elif [[ ${1:0:16} == "destroyworkspace" ]]; then #unset unoccupied workspace
+  num=${1:18}
+  unset -v o"$num"
+fi
+}
+module() {
+#output eww widget
+echo 	"(eventbox :onscroll \"echo {} | sed -e 's/up/-1/g' -e 's/down/+1/g' | xargs hyprctl dispatch workspace\" \
+          (box	:class \"works\"	:orientation \"h\" :spacing 5 :space-evenly \"false\" :valign \"center\"	\
+              (button :onclick \"hyprctl dispatch exec \'~/.config/hypr/themes/neon/scripts/workspace 1\'\" :onrightclick \"hyprctl dispatch workspace 1 && $HOME/.config/hypr/themes/neon/scripts/default_app\" :class \"0$o1$f1\" \"${ic[1]}\") \
+              (button :onclick \"hyprctl dispatch exec \'~/.config/hypr/themes/neon/scripts/workspace 2\'\" :onrightclick \"hyprctl dispatch workspace 2 && $HOME/.config/hypr/themes/neon/scripts/default_app\" :class \"0$o2$f2\" \"${ic[2]}\") \
+              (button :onclick \"hyprctl dispatch exec \'~/.config/hypr/themes/neon/scripts/workspace 3\'\" :onrightclick \"hyprctl dispatch workspace 3 && $HOME/.config/hypr/themes/neon/scripts/default_app\" :class \"0$o3$f3\" \"${ic[3]}\") \
+              (button :onclick \"hyprctl dispatch exec \'~/.config/hypr/themes/neon/scripts/workspace 4\'\" :onrightclick \"hyprctl dispatch workspace 4 && $HOME/.config/hypr/themes/neon/scripts/default_app\" :class \"0$o4$f4\" \"${ic[4]}\") \
+              (button :onclick \"hyprctl dispatch exec \'~/.config/hypr/themes/neon/scripts/workspace 5\'\" :onrightclick \"hyprctl dispatch workspace 5 && $HOME/.config/hypr/themes/neon/scripts/default_app\" :class \"0$o5$f5\" \"${ic[5]}\") \
+              (button :onclick \"hyprctl dispatch exec \'~/.config/hypr/themes/neon/scripts/workspace 6\'\" :onrightclick \"hyprctl dispatch workspace 6 && $HOME/.config/hypr/themes/neon/scripts/default_app\" :class \"0$o6$f6\" \"${ic[6]}\") \
+              (button :onclick \"hyprctl dispatch exec \'~/.config/hypr/themes/neon/scripts/workspace 7\'\" :onrightclick \"hyprctl dispatch workspace 7 && $HOME/.config/hypr/themes/neon/scripts/default_app\" :class \"0$o7$f7\" \"${ic[7]}\") \
+              (button :onclick \"hyprctl dispatch exec \'~/.config/hypr/themes/neon/scripts/workspace 8\'\" :onrightclick \"hyprctl dispatch workspace 8 && $HOME/.config/hypr/themes/neon/scripts/default_app\" :class \"0$o8$f8\" \"${ic[8]}\") \
+              (button :onclick \"hyprctl dispatch exec \'~/.config/hypr/themes/neon/scripts/workspace 9\'\" :onrightclick \"hyprctl dispatch workspace 9 && $HOME/.config/hypr/themes/neon/scripts/default_app\" :class \"0$o9$f9\" \"${ic[9]}\") \
+          )\
+        )"
+}
+
+module
+
+socat -u UNIX-CONNECT:/tmp/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock - | while read -r event; do 
+workspaces "$event"
+module
 done
diff --git a/eww/sidebar.yuck b/eww/sidebar.yuck
index 658c264..2ad3cac 100644
--- a/eww/sidebar.yuck
+++ b/eww/sidebar.yuck
@@ -1,8 +1,8 @@
 (defwindow sidebar
     :geometry (geometry :x "0px"
-                        :y "0px"
+                        :y "10px"
                         :width "1px"
-                        :height "1024"
+                        :height "724"
                         :anchor "bottom left")
     :stacking "fg"
     :monitor "0"
@@ -10,14 +10,16 @@
 
 (defwidget sidebar [] 
 	(eventbox 
-	    :halign "start" 
-	    :onhover "${EWW_CMD} update side=true"
-	    :onhoverlost "${EWW_CMD} update side=false"
-		(revealer 
-		    :transition "slideright"
-		    :reveal side 
-		    :duration "550ms"
-		(side))))
+         :class "side_class"
+	 :halign "start" 
+	 :onhover "${EWW_CMD} update side=true"
+	 :onhoverlost "${EWW_CMD} update side=false"
+	 (revealer 
+	  :transition "slideright"
+	  :reveal side 
+	  :duration "250ms"
+	  (side))))
+
 (defvar side false)
 
 ;; background
@@ -30,7 +32,6 @@
             :halign "start"
             (fetch)
             (top)
-            (music-side)
             (system-side)
             (tray))
 )
@@ -41,53 +42,9 @@
         :space-evenly "false" 
         :spacing "30" 
         :halign "center"
-    (date)
-    (weather))
+    (date))
 )
 
-;;  Music Widgets
-(defwidget music-side [] 
-	 (box 	
-	    :class "music-player"
-		:orientation "h" 
-		:space-evenly "false"
-		:spacing 15   
-		:halign "center"
-        :valign "start"
-        :hexpand "true"
-        :width ""
-	    (box 	
-	        :class "album_art" 
-		 	:style "background-image: url('${art}');")
-	    (box 	
-	        :orientation "v" 
-		 	:space-evenly "false"
-		 	:valign "center"
-			:halign "center"
-		 	:spacing 10 
- 	        (label  
- 	            :class "song"
-		 	    :limit-width 15
-		 	    :text title)
-	        (label  
-	            :class "artist"
-		 	    :limit-width 15
-		 	    :text artist) 
-	        (box
-	            :orientation "h"  
-		 	    :space-evenly "false"
-			    :valign "center"
-			    :halign "center"
-			    :spacing 25
-			    (button :class "btn_prev" :onclick "scripts/music previous" "玲")
-			    (button :class "btn_play" :onclick "scripts/music toggle" playpause)
-			    (button :class "btn_next" :onclick "scripts/music next" "怜")))))
-
-(defpoll art		:interval "1s"  "scripts/music coverloc")
-(defpoll title		:interval "1s"  "scripts/music title")
-(defpoll artist		:interval "1s"  "scripts/music artist")
-(defpoll playpause	:interval "1s"  "scripts/music statusicon")
-
 ;; weather
 (defwidget weather [] 
 		(box 
@@ -187,22 +144,22 @@
 			    :value {(EWW_DISK["/"].used / EWW_DISK["/"].total) * 100} 
 			    :class "scale" 
 			    :width 280))
-		(box 
-		    :class "stats" 
-		    :hexpand "false" 
-		    :vexpand "false" 
-		    :space-evenly "false"
-			(label 
-			    :tooltip "${gpu}%" 
-			    :class "stats-icon" 
-			    :text "調")
-			(scale 
-			    :min 0 
-			    :max 101 
-			    :active false 
-			    :value gpu 
-			    :class "scale" 
-			    :width 280))
+		;; (box 
+		;;     :class "stats" 
+		;;     :hexpand "false" 
+		;;     :vexpand "false" 
+		;;     :space-evenly "false"
+		;; 	(label 
+		;; 	    :tooltip "${gpu}%" 
+		;; 	    :class "stats-icon" 
+		;; 	    :text "調")
+		;; 	(scale 
+		;; 	    :min 0 
+		;; 	    :max 101 
+		;; 	    :active false 
+		;; 	    :value gpu 
+		;; 	    :class "scale" 
+		;; 	    :width 280))
 		(box 
 		    :class "stats" 
 		    :hexpand "false" 
@@ -220,7 +177,7 @@
 			    :value volume_percent
 			    :class "scale" 
 			    :width 280 
-			    :onchange "amixer sset Master {}%")
+			    :onchange "pamixer --set-volume {}")
 			)))
 
     (deflisten gpu "scripts/gpu")
@@ -237,17 +194,17 @@
 	        :class "poweroff" 
 	        :halign "center"  
 			:tooltip "Shut Down" 
-	        :onclick "kitty poweroff &" "⏻")
+	        :onclick "alacritty poweroff &" "⏻")
 	    (button 
 	        :class "reboot" 
 	        :halign "center"  
 			:tooltip "Reboot" 
-	        :onclick "kitty reboot &" "")
+	        :onclick "alacritty reboot &" "")
 	    (button 
 	        :class "firmware" 
 	        :halign "center"  
 			:tooltip "Reboot to EFI" 
-	        :onclick "kitty systemctl reboot --firmware &" "拉")
+	        :onclick "alacritty systemctl reboot --firmware &" "拉")
 	    (button 
 	        :class "exit" 
 	        :halign "center"  
@@ -257,9 +214,9 @@
 	        :class "restart" 
 	        :halign "center"  
 			:tooltip "edit Config" 
-	        :onclick "footclient nvim ~/.config/hypr/hyprland.conf &" "")))
+	        :onclick "emacsclient ~/.config/hypr/hyprland.conf &" "")))
 
-(defpoll uptime :interval "1m" "uptime -p | sed -e 's/up //;s/ hours,/h/;s/ minutes/m/'")
+(defpoll uptime :interval "1m" "uptime | awk '{print $3}' | sed 's/,//;s/\(.*\):\(.*\)/\1 h \2 m/")
 (defpoll packages :interval "5m" `pacman -Q | wc -l`)
 (defpoll kernal :interval "5m" `uname -r`) 
 (defpoll name :interval "5m" `whoami`)  
@@ -286,10 +243,10 @@
                     :class "uptime" 
                     :halign "start"
                     :text " : ${uptime}")
-                (label 
-                    :class "packages" 
-                    :halign "start"
-                    :text " : ${packages}")
+                ;; (label 
+                ;;     :class "packages" 
+                ;;     :halign "start"
+                ;;     :text " : ${packages}")
                 (label 
                     :class "kernal" 
                     :halign "start"
diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf
index 832a831..ff985d0 100644
--- a/hypr/hyprland.conf
+++ b/hypr/hyprland.conf
@@ -89,19 +89,16 @@ misc:disable_autoreload = true
 
 # example window rules
 # for windows named/classed as abc and xyz
-#windowrule=move 69 420,abc
-#windowrule=size 420 69,abc
-#windowrule=tile,xyz
-#windowrule=float,abc
-#windowrule=pseudo,abc
 windowrule=opaque,firefox
 windowrule=float,dolphin
+windowrule=float,mpv
 windowrule=size 90% 76%,mpv
 windowrule=center,mpv
 windowrule=float,pulsemixer
-windowrule=workspace special,mpv
 windowrule=workspace 1,firefox
 windowrule=workspace 2,emacs
+windowrule=float,btop
+windowrule=size 60% 60%,btop
 
 # example binds
 bind=SUPER,RETURN,exec,alacritty
@@ -110,10 +107,13 @@ bind=SUPERSHIFT,Q,exit,
 bind=SUPERSHIFT,D,exec,dolphin
 bind=SUPERSHIFT,F,togglefloating,
 bindr=SUPER,Super_L,exec,/home/chris/bin/launcher.sh
-bindr=SUPERALT,Alt_L,exec,/home/chris/bin/windows.sh
+bindr=ALT,Alt_L,exec,/home/chris/bin/window.sh
+bind=SUPER,w,exec,/home/chris/bin/window.sh
 bind=SUPER,E,exec,/home/chris/bin/emacslof
+bind=SUPER,d,exec,emacsclient -c -e '(dired-jump)'
 bind=SUPER,B,exec,/home/chris/bin/fflof
 bind=SUPER,A,exec,alacritty --class pulsemixer -e pulsemixer
+bind=SUPERCTRL,/,exec,alacritty --class btop -e btop
 
 bind=SUPER,P,exec,/home/chris/bin/rbw.sh
 bind=SUPER,M,fullscreen,1
@@ -168,6 +168,9 @@ binde=, XF86AudioMute, exec, pamixer -t
 binde=, XF86MonBrightnessUp, exec, brightnessctl s +10%
 binde=, XF86MonBrightnessDown, exec, brightnessctl s 10%-
 
+bind=SUPERCTRL,b,exec,eww.sh
+bind=SUPERALT,n,exec,eww update rightside=true
+
 bindm=SUPER,mouse:272,movewindow
 bindm=SUPER,mouse:273,resizewindow
 
diff --git a/scripts/getvol b/scripts/getvol
index e1d5718..85493ed 100755
--- a/scripts/getvol
+++ b/scripts/getvol
@@ -1,4 +1,5 @@
 #!/bin/sh
 
 echo $(pamixer --get-volume-human) >> /tmp/vol
+echo $(pamixer --get-volume-human)
 
diff --git a/scripts/window.sh b/scripts/window.sh
index 355b629..f465423 100755
--- a/scripts/window.sh
+++ b/scripts/window.sh
@@ -4,8 +4,6 @@ list_windows() (
     wlrctl window list
 )
 
-window=$(list_windows | rofi -sync -dmenu -p "select window..." -theme ~/.config/rofi/launchers-git/laptop-rbw.rasi | awk '{print $1}' | sed 's/://')
-
-echo $window
+window=$(list_windows | rofi -i -sync -dmenu -p " " -theme ~/.config/rofi/launchers-git/laptop-rbw.rasi | awk '{print $1}' | sed 's/://')
 
 wlrctl window focus $window
diff --git a/system/kaladin/configuration.nix b/system/kaladin/configuration.nix
index e936b8b..cb3a93a 100644
--- a/system/kaladin/configuration.nix
+++ b/system/kaladin/configuration.nix
@@ -95,7 +95,7 @@
     displayManager = {
       startx.enable = true;
       sddm = {
-        enable = true;
+        enable = false;
       };
       session = [
         {
@@ -242,6 +242,7 @@
     jq
     ripgrep
     fd
+    socat
     ffmpeg-full
     imagemagick
     libheif
@@ -296,6 +297,7 @@
     rofi-wayland
     wofi
     waybar
+    tridactyl-native
     eww-wayland
     wlrctl
     hyprpaper
@@ -462,6 +464,7 @@
         no-littering
         tree-sitter
         tree-sitter-langs
+        rustic
         evil
         evil-collection
         general
diff --git a/system/syl/configuration.nix b/system/syl/configuration.nix
index 772af97..089b950 100644
--- a/system/syl/configuration.nix
+++ b/system/syl/configuration.nix
@@ -88,7 +88,7 @@
     displayManager = {
       startx.enable = true;
       sddm = {
-        enable = true;
+        enable = false;
       };
       session = [
         {
@@ -261,6 +261,7 @@
     jq
     ripgrep
     fd
+    socat
     ffmpeg-full
     imagemagick
     libheif
@@ -315,6 +316,7 @@
     rofi-wayland
     wofi
     waybar
+    tridactyl-native
     eww-wayland
     wlrctl
     hyprpaper
@@ -448,6 +450,7 @@
         no-littering
         tree-sitter
         tree-sitter-langs
+        rustic
         evil
         evil-collection
         general
diff --git a/user/home.nix b/user/home.nix
index 05740da..214e833 100644
--- a/user/home.nix
+++ b/user/home.nix
@@ -316,6 +316,8 @@
     };
   };
 
+  home.file.".mozilla/native-messaging-hosts".source = "/run/current-system/sw/lib/mozilla/native-messaging-hosts";
+
   home.file.".mozilla/firefox/nw77o6yc.default/chrome" = {
     source = ../firefox/chrome;
     recursive = true;
@@ -340,9 +342,7 @@
     source = ../fish/functions;
   };
 
-  home.file.".config/hypr" = {
-    source = ../hypr;
-  };
+  home.file.".config/hypr".source = config.lib.file.mkOutOfStoreSymlink ../hypr;
 
   home.file.".config/dunst" = {
     source = ../dunst;
@@ -535,8 +535,10 @@
         After = [ "graphical-session.target" ];
         # PartOf = [ "plasma-workspace.target" ];
       };
-
-      # Install = { WantedBy = [ "plasma-workspace.target" ]; };
+      Service = {
+        Environment = ["PATH=/etc/profiles/per-user/chris/bin"
+                       "WAYLAND_DISPLAY=wayland-1"];
+      };
     };
   };