diff --git a/home-manager/desktop.nix b/home-manager/desktop.nix index 1aa044a..ab2b5a1 100644 --- a/home-manager/desktop.nix +++ b/home-manager/desktop.nix @@ -9,9 +9,6 @@ # niri wayland compositor ./progs/niri.nix - # statusbar - # ./progs/eww/eww.nix - # lockscreen ./progs/swaylock.nix @@ -29,5 +26,4 @@ # used by /etc/nixos logic to launch niri config.programs.niri.package ]; - } diff --git a/home-manager/progs/eww/config/eww.scss b/home-manager/progs/eww/config/eww.scss deleted file mode 100644 index 5f01ceb..0000000 --- a/home-manager/progs/eww/config/eww.scss +++ /dev/null @@ -1,109 +0,0 @@ -$background: #1e1e2e; -$pink: #f5c2e7; -$lavendar: #b4befe; -$red: #f38ba8; -$maroon: #eba0ac; -$peach: #fab387; -$yellow: #f9e2af; -$green: #a6e3a1; -$text: #cdd6f4; -$subtext: #a6adc8; -$surface: #585b70; - -* { - color: $text; - font-family: CaskaydiaCove Nerd Font Mono; - font-weight: 600; - font-size: 10pt; - padding: 0 1px; -} - -.red { - color: $red; -} - -.maroon { - color: $maroon; -} - -.peach { - color: $peach; -} - -.yellow { - color: $yellow; -} - -.green { - color: $green; -} - -.lavendar { - color: $lavendar; -} - -.symbol { - color: $lavendar; - font-size: 20px; -} - -.button { - * { - all: unset; - margin: 0 5px; - font-size: 14pt; - transition: color 0.2s ease-in-out; - } - - &:hover * { - color: $pink; - } -} - -.bluetooth * { - font-size: 10pt; - padding: 0 0.3em; -} - -.padded>*:not(:last-child) { - padding: 0 10px; - border-right: 1px solid $surface; -} - -.background { - border: 1px solid $pink; - background-color: $background; - border-radius: 12px; - opacity: 0.8; -} - -scale trough { - margin: 0 10px; - border: none; - background-color: #FFF; - min-height: 3px; - min-width: 100px; - - & slider { - box-shadow: none; - background-image: none; - border: none; - background-color: $pink; - min-width: 5pt; - min-height: 5pt; - margin: -5pt; - } - - & highlight { - border: none; - background-color: $lavendar; - } -} - -.clipboard { - color: $subtext; -} - -.time { - padding-right: 10px; -} \ No newline at end of file diff --git a/home-manager/progs/eww/config/eww.yuck b/home-manager/progs/eww/config/eww.yuck deleted file mode 100644 index 6ba5e8b..0000000 --- a/home-manager/progs/eww/config/eww.yuck +++ /dev/null @@ -1 +0,0 @@ -(include "./statusbar.yuck") diff --git a/home-manager/progs/eww/config/scripts/currentWindow.sh b/home-manager/progs/eww/config/scripts/currentWindow.sh deleted file mode 100755 index c57e8f0..0000000 --- a/home-manager/progs/eww/config/scripts/currentWindow.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -niri_data=$(niri msg --json focused-window) - -if [[ "$niri_data" == "null" ]]; then - exit 0 -fi - -name=$(echo "$niri_data" | jq -r '.["app_id"], .["title"]' | tr '\n' ' ' | sed 's/.$//') -proc_name=$(echo "$name" | head -c 55) - - -# TODO! fix this logic, add a '...' at the end -if [[ "$name" != "$proc_name" ]]; then - proc_name="$proc_name..." -fi - -echo "$proc_name" diff --git a/home-manager/progs/eww/config/scripts/currentWorkspace.sh b/home-manager/progs/eww/config/scripts/currentWorkspace.sh deleted file mode 100755 index 2ceab6c..0000000 --- a/home-manager/progs/eww/config/scripts/currentWorkspace.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env fish - -niri msg --json workspaces | jq -r '.[] | select(.is_focused == true) | .["id"]' diff --git a/home-manager/progs/eww/config/scripts/power_bat.rs b/home-manager/progs/eww/config/scripts/power_bat.rs deleted file mode 100755 index 77da27a..0000000 --- a/home-manager/progs/eww/config/scripts/power_bat.rs +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env rust-script - -use std::{fmt, fs::read_to_string, str::FromStr}; - -const BASE_PATH: &str = "/sys/class/power_supply/BAT1/"; -const CURRENT_NOW_PATH: &str = "current_now"; -const VOLTAGE_NOW_PATH: &str = "voltage_now"; -const STATUS_PATH: &str = "status"; -const FACTOR: f32 = 1e6_f32; - -#[derive(Debug)] -enum Status { - Charging, - Discharging, - NotCharging, -} - -impl FromStr for Status { - type Err = &'static str; - - fn from_str(input: &str) -> Result { - match input { - "Charging" => Ok(Status::Charging), - "Discharging" => Ok(Status::Discharging), - "Not charging" => Ok(Status::NotCharging), - _ => Err("unknown state"), - } - } -} - -impl fmt::Display for Status { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - fmt::Debug::fmt(self, f) - } -} - -fn fetch_and_trim_into>(path: &str) -> T { - let mut content = read_to_string(BASE_PATH.to_owned() + path).unwrap(); - content.pop(); - T::from_str(&content).unwrap() -} - -fn fetch_bat_info(path: &str) -> f32 { - let value: f32 = fetch_and_trim_into(path); - value / FACTOR -} - -fn main() { - let current_now: f32 = fetch_bat_info(CURRENT_NOW_PATH); - let voltage_now: f32 = fetch_bat_info(VOLTAGE_NOW_PATH); - let watts: f32 = current_now * voltage_now; - let status: Status = fetch_and_trim_into(STATUS_PATH); - - println!( - "voltage: {:.4}\ncurrent: {:.4}\nwatts: {:.4}\nstatus: {}", - voltage_now, current_now, watts, status - ); -} \ No newline at end of file diff --git a/home-manager/progs/eww/config/scripts/sound/getSink.sh b/home-manager/progs/eww/config/scripts/sound/getSink.sh deleted file mode 100755 index b27a089..0000000 --- a/home-manager/progs/eww/config/scripts/sound/getSink.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env sh -wpctl inspect @DEFAULT_SINK@ | grep -E "^ +\* node\.description" | cut -d' ' -f6- | tr -d '"' diff --git a/home-manager/progs/eww/config/scripts/sound/getVolume.sh b/home-manager/progs/eww/config/scripts/sound/getVolume.sh deleted file mode 100755 index 13c42de..0000000 --- a/home-manager/progs/eww/config/scripts/sound/getVolume.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -output=$(wpctl get-volume @DEFAULT_SINK@ | cut -d' ' -f2- | sed -E 's/\.//g' | sed 's/^0*//g') -count=$(echo "$output" | awk -F, '{print $1+0}') -muted=$(echo "$output" | cut -d'[' -f2 | cut -d ']' -f1) - -# if not muted, set to empty string -if [ "$muted" == "$count" ]; then - muted="" -fi - -color="green" -if ((count > 75)); then color="yellow"; fi -if ((count > 90)); then color="peach"; fi -if ((count > 100)); then color="maroon"; fi -if ((count > 110)); then color="red"; fi - -output="${count}%" -if [ "$muted" != "" ]; then - output="${output} [${muted}]" -fi - -echo "{\"count\":\"${output}\", \"color\":\"${color}\"}" diff --git a/home-manager/progs/eww/config/scripts/wifiInfo.zsh b/home-manager/progs/eww/config/scripts/wifiInfo.zsh deleted file mode 100755 index 4fa41e3..0000000 --- a/home-manager/progs/eww/config/scripts/wifiInfo.zsh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env zsh -export CHARSET=ASCII -case $1 in - name) - nmcli -f IN-USE,SSID d w | grep '*' | sed 's/[\* ]//g' | cat - exit 0;; - strength) - str=$(nmcli -f ACTIVE,BARS d w | grep 'yes' | tr -d ' yesno') - case ${str: 0:-1} in - '****') - icon="󰤨"; colour="green";; - '***') - icon="󰤥"; colour="yellow";; - '**') - icon="󰤢"; colour="peach";; - '*') - icon="󰤟"; colour="maroon";; - *) - icon="󰤯"; colour="red";; - esac - echo "{\"icon\":\"$icon\",\"colour\":\"$colour\"}" - exit 0;; -esac diff --git a/home-manager/progs/eww/config/statusbar.yuck b/home-manager/progs/eww/config/statusbar.yuck deleted file mode 100644 index d570301..0000000 --- a/home-manager/progs/eww/config/statusbar.yuck +++ /dev/null @@ -1,130 +0,0 @@ -(defwindow statusbar - :monitor 0 - :stacking "fg" - :exclusive true - :geometry (geometry - :y "0.5%" - :width "100%" - :height "24px" - :anchor "top center") - (statusbar)) - -(defwidget statusbar [] - (centerbox - (box :space-evenly false :halign 'start' :class 'padded' - (window-title)) - (time) - (box :space-evenly false :halign 'end' :class 'padded' - (brightness-ctl) - (brightness-ctl-opener) - (volume) - (battery) - (bluetooth) - (wifi)))) - -(defwidget cmd-slider [?symbol value command max color] - (box :space-evenly false - (label :text symbol :class "symbol") - (scale - :min 0 :max max - :value value - :round-digits 0 - :timeout "200ms" - :onchange command) - (label :text "${value}%" :class color))) - -(defpoll windowtitle :interval "1s" `scripts/currentWindow.sh`) - -(defwidget window-title [] - (label - :text {windowtitle == "" ? "" : "(${windowtitle})"})) - -(defwidget brightness-ctl [] - (box :visible brightnessctl-open - (cmd-slider :symbol "󰃠" :value brightness - :command `brightnessctl set {}%` - :max 101 :color { - brightness >= 80 ? "green" : - brightness >= 50 ? "yellow" : - brightness >= 30 ? "peach" : - brightness >= 10 ? "maroon" : "red" - }))) - - -(defpoll brightness :interval "1s" :run-while brightnessctl-open `brightnessctl -m | awk -F, '{print $4+0}'`) - - -(defvar brightnessctl-open false) -(defwidget brightness-ctl-opener [] - (eventbox :class "button" - (button - :onclick `${EWW_CMD} update brightnessctl-open=${!brightnessctl-open}` - "󰃠"))) - -(defwidget wifi [] - (eventbox - :class "button ${wifi-strength.colour}" - (label - :text {wifi-strength.icon} - :tooltip "Connected To: ${wifi-name}"))) - -(defpoll wifi-strength :interval "10s" `scripts/wifiInfo.zsh strength`) -(defpoll wifi-name :interval "1m" `scripts/wifiInfo.zsh name`) - -(defwidget bluetooth [] - (eventbox - :class "bluetooth button ${ bluetooth-name != "" ? "green" : "lavendar" }" - :onclick `blueman-manager &` - (label - :text "${bluetooth-name} 󰂯"))) - -; `FNR == 1 + head -c 30` so the name doesn't explode the screen -(defpoll bluetooth-name :interval "10s" `bluetoothctl devices Connected | awk '$1 == "Device" {print $0}' | cut -d' ' -f3-`) - -(defwidget time [] - (box - :space-evenly false - :class "time" - :tooltip {time.long} - (label :class "yellow" :text {time.hour}) - (label :text ":") - (label :class "yellow" :text {time.minute}))) - -(defpoll time :interval "1s" `date +'{"long":"%a %b %e %H:%M:%S %Z %Y","hour":"%H","minute":"%M"}'`) - -(defpoll powerstats :interval "2s" `power_bat`) - -(defwidget battery [] - (box :space-evenly false - :tooltip powerstats - (label - :text {EWW_BATTERY.BAT1.status == "Charging" ? "󰂄" : - EWW_BATTERY.BAT1.capacity >= 90 ? "󰁹" : - EWW_BATTERY.BAT1.capacity >= 80 ? "󰂂" : - EWW_BATTERY.BAT1.capacity >= 70 ? "󰂁" : - EWW_BATTERY.BAT1.capacity >= 60 ? "󰂀" : - EWW_BATTERY.BAT1.capacity >= 50 ? "󰁿" : - EWW_BATTERY.BAT1.capacity >= 40 ? "󰁾" : - EWW_BATTERY.BAT1.capacity >= 30 ? "󰁽" : - EWW_BATTERY.BAT1.capacity >= 20 ? "󰁼" : - EWW_BATTERY.BAT1.capacity >= 10 ? "󰁻" : "󰁺" - } - :class { - EWW_BATTERY.BAT1.capacity >= 80 ? "green" : - EWW_BATTERY.BAT1.capacity >= 50 ? "yellow" : - EWW_BATTERY.BAT1.capacity >= 30 ? "peach" : - EWW_BATTERY.BAT1.capacity >= 10 ? "maroon" : "red" - }) - (label :text "${EWW_BATTERY.BAT1.capacity}%" :class "yellow"))) - - -(defpoll volumevalue :interval "1s" `scripts/sound/getVolume.sh`) -(defpoll volumesink :interval "1s" `scripts/sound/getSink.sh`) - -(defwidget volume [] - (eventbox :tooltip volumesink - :onclick `pwvucontrol &` - (label :text "${volumevalue.count}" :class {volumevalue.color}))) - - -(defpoll currentworkspace :interval "1s" `scripts/currentWorkspace.sh`) diff --git a/home-manager/progs/eww/eww.nix b/home-manager/progs/eww/eww.nix deleted file mode 100644 index 62f8f2b..0000000 --- a/home-manager/progs/eww/eww.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -{ - home.packages = with pkgs; [ - zsh - bluez - brightnessctl - (callPackage ./power_bat.nix { }) - ]; - - programs.eww = { - enable = true; - configDir = ./config; - }; - - programs.niri.settings.spawn-at-startup = [ - { - command = [ - (lib.getExe config.programs.eww.package) - "-c" - "${config.programs.eww.configDir}" - "open" - "statusbar" - ]; - } - - # swaybg works on more than just sway (sets a wallpaper) - { - command = [ - (lib.getExe pkgs.swaybg) - "-i" - "${../wallpaper.png}" - ]; - } - ]; -} diff --git a/home-manager/progs/eww/power_bat.nix b/home-manager/progs/eww/power_bat.nix deleted file mode 100644 index ec9f886..0000000 --- a/home-manager/progs/eww/power_bat.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ pkgs, lib, ... }: -pkgs.writeShellScriptBin "power_bat" '' - exec ${lib.getExe pkgs.rust-script} ${./config/scripts/power_bat.rs} "$@" -''