eww: remove
All checks were successful
Build / build (push) Successful in 1m13s
All checks were successful
Build / build (push) Successful in 1m13s
This commit is contained in:
@@ -9,9 +9,6 @@
|
|||||||
# niri wayland compositor
|
# niri wayland compositor
|
||||||
./progs/niri.nix
|
./progs/niri.nix
|
||||||
|
|
||||||
# statusbar
|
|
||||||
# ./progs/eww/eww.nix
|
|
||||||
|
|
||||||
# lockscreen
|
# lockscreen
|
||||||
./progs/swaylock.nix
|
./progs/swaylock.nix
|
||||||
|
|
||||||
@@ -29,5 +26,4 @@
|
|||||||
# used by /etc/nixos logic to launch niri
|
# used by /etc/nixos logic to launch niri
|
||||||
config.programs.niri.package
|
config.programs.niri.package
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
(include "./statusbar.yuck")
|
|
||||||
@@ -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"
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env fish
|
|
||||||
|
|
||||||
niri msg --json workspaces | jq -r '.[] | select(.is_focused == true) | .["id"]'
|
|
||||||
@@ -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<Status, Self::Err> {
|
|
||||||
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<T: FromStr<Err = impl fmt::Debug>>(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
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
wpctl inspect @DEFAULT_SINK@ | grep -E "^ +\* node\.description" | cut -d' ' -f6- | tr -d '"'
|
|
||||||
@@ -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}\"}"
|
|
||||||
@@ -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
|
|
||||||
@@ -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`)
|
|
||||||
@@ -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}"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{ pkgs, lib, ... }:
|
|
||||||
pkgs.writeShellScriptBin "power_bat" ''
|
|
||||||
exec ${lib.getExe pkgs.rust-script} ${./config/scripts/power_bat.rs} "$@"
|
|
||||||
''
|
|
||||||
Reference in New Issue
Block a user