diff options
12 files changed, 445 insertions, 0 deletions
diff --git a/home/rices/schrottkatze/eww.nix b/home/rices/schrottkatze/eww.nix new file mode 100644 index 0000000..599738a --- /dev/null +++ b/home/rices/schrottkatze/eww.nix @@ -0,0 +1,6 @@ +{...}: { + programs.eww = { + enable = true; + configDir = ./eww/configDir; + }; +} diff --git a/home/rices/schrottkatze/eww/configDir/bottomBar/bottomBar.yuck b/home/rices/schrottkatze/eww/configDir/bottomBar/bottomBar.yuck new file mode 100644 index 0000000..d955d31 --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/bottomBar/bottomBar.yuck @@ -0,0 +1,77 @@ +(include "bottomBar/workspaces.yuck") +(include "bottomBar/traveldings.yuck") + +(defwindow bottomBar + :monitor 0 + :stacking "fg" + :wm-ignore true + :exclusive true + :geometry (geometry + :width "100%" + :height "33px" + :anchor "bottom center") + (bottomBar)) + +(defwidget bottomBar [] + (overlay + :class "bottomBar" + (transform + :translate-y "1.5px" + (centerbox + (box + :halign "start" + (workspaceWidget) + ) + (box + :halign "center" + (traveldings) + ) + (box + :halign "end" + ; (label :text "${iceData.speed}km/h") + (mullvadThing) + ) + ) + ) + (box + :class "lesbianFlag" + :height 1 + ( flagEl :flipped true :color "#D52D00") + ( flagEl :flipped true :color "#EF7627") + ( flagEl :flipped true :color "#FF9A56") + ( flagEl :flipped true :color "#FFFFFF") + ( flagEl :flipped true :color "#D162A4") + ( flagEl :flipped true :color "#B55690") + ( flagEl :flipped true :color "#A30262") + ) + ) +) + +(deflisten mullvad + :initial "{\"state\":\"init\"}" + `mullvad status -j listen` +) + +(defwidget mullvadThing [] + (box + :class "container" + (button + :height 16 + :width 16 + :class "mullvad-state-${mullvad.state}" + ) + ) +) + +(defwidget iceTacho [] + (box + :class "iceTacho" + :tooltip "Tz${iceTachoData.tzn} (BR ${iceTachoData.br})" + (label :text "${iceTachoData.speed} km/h") + ) +) + +(deflisten iceTachoData + :initial "null" + { "~/.config/eww/scripts/iceTacho.nu" } +) diff --git a/home/rices/schrottkatze/eww/configDir/bottomBar/traveldings.yuck b/home/rices/schrottkatze/eww/configDir/bottomBar/traveldings.yuck new file mode 100644 index 0000000..62de26e --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/bottomBar/traveldings.yuck @@ -0,0 +1,37 @@ +(defwidget traveldings [] + (revealer + :class "traveldings" + :transition "crossfade" + :reveal { traveldings_data != "null" } + (traveldingsBarWidget) + ) +) + +(defwidget traveldingsBarWidget [] + (overlay + (box + :width 640 + (label + :halign "start" + :text "${traveldings_data.line} -> ${strlength(traveldings_data.arrival_station) > 24 ? "${substring(traveldings_data.arrival_station, 0, 24)}…" : traveldings_data.arrival_station}${traveldings_data.arrival_platform_data_available ? " (Gl. ${traveldings_data.arrival_platform_real})" : ""}" + ) + (label + :halign "end" + :text { traveldings_data.time_left >= 3600 ? formattime(traveldings_data.time_left, "noch %-Hh %-Mmin", "Etc/UTC") : formattime(traveldings_data.time_left, "noch %-Mmin", "Etc/UTC") } + ) + ) + (box + (progress + :class { traveldings_data.live ? "traveldings_live" : "traveldings_disconnected" } + :value {traveldings_data.progress * 100} + :orientation "horizontal" + ) + ) + ) +) + + +(deflisten traveldings_data + :initial "null" + "traveldings current" +) diff --git a/home/rices/schrottkatze/eww/configDir/bottomBar/workspaces.yuck b/home/rices/schrottkatze/eww/configDir/bottomBar/workspaces.yuck new file mode 100644 index 0000000..2709e1b --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/bottomBar/workspaces.yuck @@ -0,0 +1,18 @@ +(defwidget workspaceWidget [] + (box + :class "workspaces" + (for workspace in workspaces + (button + :style "border-bottom: 4px solid ${workspace.color}${workspace.active ? "; background-color: #3c3836" : ""}" + :class "${workspace.focused ? "focused" : ""}" + :onclick "niri msg action focus-workspace ${workspace.idx}" + (label :text "${workspace.icon ?: workspace.idx}") + ) + ) + ) +) + +(deflisten workspaces + :initial "[]" + "bar-ws-monitor" +) diff --git a/home/rices/schrottkatze/eww/configDir/eww.css b/home/rices/schrottkatze/eww/configDir/eww.css new file mode 100644 index 0000000..2ce2ac5 --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/eww.css @@ -0,0 +1,58 @@ +label { + font: 14pt "Departure Mono Nerd Font"; +} + +button { + border-radius: 0px; + padding: 0; +} + +.background { + background-color: #1d2021; +} + +.workspaces button { + border: 0px; + padding: 5px 4px 0 4px; +} + +.workspaces button.focused { + background-color: #504935; +} + +.traveldings progressbar trough { + border: none; + background-color: #3c3836; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.traveldings progressbar.traveldings_live progress { + background-color: #79740e; + border-bottom-left-radius: 0; +} + +.traveldings progressbar.traveldings_disconnected progress { + background-color: #cc241d; +} + + +.traveldingsWindow { + border-radius: 15px; +} + +.mullvad-state-connected { + background-color: #98971a +} + +.mullvad-state-connecting { + background-color: #d79921 +} + +.mullvad-state-disconnected { + background-color: #cc241d +} + +.mullvad-state-init { + background-color: #458588 +} diff --git a/home/rices/schrottkatze/eww/configDir/eww.yuck b/home/rices/schrottkatze/eww/configDir/eww.yuck new file mode 100644 index 0000000..f6f20f5 --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/eww.yuck @@ -0,0 +1,36 @@ +(include "topBar/topBar.yuck") +(include "bottomBar/bottomBar.yuck") + +(include "topBar/time.yuck") + +(defwindow streamUi + :monitor 0 + :stacking "fg" + :wm-ignore true + :exclusive true + :geometry (geometry + :width "640px" + :height "100%" + :anchor "center right") + (centerbox + :style "padding: 0 3px" + :orientation "vertical" + (label :text "hi") + (label :text "hi") + (centerbox + :valign "end" + (box + :halign "start" + (systray + :icon-size 18 + :spacing 3 + ) + ) + (box) + (box + :halign "end" + (time) + ) + ) + ) +) diff --git a/home/rices/schrottkatze/eww/configDir/scripts/bat.nu b/home/rices/schrottkatze/eww/configDir/scripts/bat.nu new file mode 100755 index 0000000..fd34c50 --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/scripts/bat.nu @@ -0,0 +1,78 @@ +#!/usr/bin/env nu + +const ICONS = [ + [ normal charging]; + [ ] + [ ] + [ ] + [ ] + [ ] + [ ] + [ ] + [ ] + [ ] + [ ] + [ ] +]; + +const DELAY = 2sec; + +def "main auto" [] { + loop { + let paths = ls "/sys/class/power_supply" + | each {|it| $it.name | path basename} + | filter {|it| $it starts-with "BAT"}; + + if ($paths | is-not-empty) { + let result = $paths + | each {|it| get_and_format $it} + | str join " | " + | prepend "| " + | str join; + + print $result + } else { + print "" + } + sleep $DELAY; + } +} + +def main [ path: string ] { + loop { + print (get_and_format $path) + sleep $DELAY; + } +} + +def get_and_format [ path: string ] { + let fract = get_bat_charge_fraction $path; + let is_charging = get_bat_charging_status $path; + let percent = ($fract * 100) | math round; + + return $"<span foreground=\"#d65d0e\">(get_bat_icon $fract $is_charging)</span> ($percent)<span foreground=\"#7c6f64\">%</span>"; +} + +def get_bat_charge_fraction [ + path: string +] { + let energy_full = open $"/sys/class/power_supply/($path)/energy_full" | into float; + let energy_now = open $"/sys/class/power_supply/($path)/energy_now" | into float; + + $energy_now / $energy_full +} + +def get_bat_charging_status [ + path: string +] { + let status = open $"/sys/class/power_supply/($path)/status"; + + $status like Charging +} + +def get_bat_icon [ + frac: float + is_charging = false +] { + $ICONS | get (($frac * 10) | math round) | get (if ($is_charging) { "charging" } else { "normal" }) +} diff --git a/home/rices/schrottkatze/eww/configDir/scripts/iceTacho.nu b/home/rices/schrottkatze/eww/configDir/scripts/iceTacho.nu new file mode 100755 index 0000000..5225dc2 --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/scripts/iceTacho.nu @@ -0,0 +1,38 @@ +#!/usr/bin/env nu + +const TABLE = { + 401: 280 + 402: 280 + 403: 330 + 406: 330 + 407: 320 + 408: 320 + 411: 230 + 415: 230 + 412: 265 + 605: 200 +}; + +def main [ ] { + loop { + if ((iw dev wlp4s0 link | lines | filter {|it| $it =~ "WIFIonICE" } | length) == 1) { + let iceData = http get https://iceportal.de/api1/rs/status; + let tzn = $iceData.tzn; + let br = $iceData.series; + let speed = $iceData.speed; + let speedfrac = $speed / ($TABLE | get $br); + + print ({ + tzn: $tzn, + br: $br, + speed: $speed, + frac: $speedfrac + } | to json -r); + + sleep 2sec; + } else { + print "null"; + sleep 5sec; + } + } +} diff --git a/home/rices/schrottkatze/eww/configDir/topBar/sysinfo.yuck b/home/rices/schrottkatze/eww/configDir/topBar/sysinfo.yuck new file mode 100644 index 0000000..c37838a --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/topBar/sysinfo.yuck @@ -0,0 +1,22 @@ +(deflisten bat + :initial "<span foreground=\"#cc241d\">BAT0 ERR</span>" + { "~/.config/eww/scripts/bat.nu auto"} +) + +(defwidget cpu [] + (box + :class "cpuIndicator" + (label + :markup "<span foreground=\"#d65d0e\"></span> ${strlength(round(EWW_CPU.avg, 0)) == 1 ? " ${round(EWW_CPU.avg, 0)}" : round(EWW_CPU.avg, 0)}<span foreground=\"#7c6f64\">%</span>" + ) + ) +) + +(defwidget mem [] + (box + :class "memIndicator" + (label + :markup "<span foreground=\"#d65d0e\"> </span> ${round(EWW_RAM.used_mem_perc, 0)}<span foreground=\"#7c6f64\">%</span>" + ) + ) +) diff --git a/home/rices/schrottkatze/eww/configDir/topBar/time.yuck b/home/rices/schrottkatze/eww/configDir/topBar/time.yuck new file mode 100644 index 0000000..ba22883 --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/topBar/time.yuck @@ -0,0 +1,10 @@ +(defwidget time [] + (label + :markup { + formattime( + EWW_TIME, + "<span foreground=\"#d65d0e\"></span> %Y<span foreground=\"#7c6f64\">-</span>%m<span foreground=\"#7c6f64\">-</span>%d <span foreground=\"#d65d0e\"></span> %H<span foreground=\"#7c6f64\">:</span>%M<span foreground=\"#7c6f64\">:</span>%S " + ) + } + ) +) diff --git a/home/rices/schrottkatze/eww/configDir/topBar/topBar.yuck b/home/rices/schrottkatze/eww/configDir/topBar/topBar.yuck new file mode 100644 index 0000000..4aee71f --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/topBar/topBar.yuck @@ -0,0 +1,55 @@ +(include "topBar/time.yuck") +(include "topBar/sysinfo.yuck") +(include "util.yuck") + +(defwindow topBar + :monitor 0 + :stacking "fg" + :wm-ignore true + :exclusive true + :geometry (geometry + :width "100%" + :height "33px" + :anchor "top center") + (topBar)) + +(defwidget topBar [] + (overlay + :class "topBar" + (transform + :translate-y "-1.5px" + (centerbox + (box + :halign "start" + :spacing 12 + :space-evenly false + (label :text " ") + (cpu) + (sep) + (mem) + (label :markup bat) + ) + (box + :halign "center" + (systray + :icon-size 18 + :spacing 3 + ) + ) + (box + :halign "end" + (time) + ) + ) + ) + (box + :class "transFlag" + :height 1 + ( flagEl :flipped false :color "#5BCEFA") + ( flagEl :flipped false :color "#F5A9B8") + ( flagEl :flipped false :color "#FFFFFF") + ( flagEl :flipped false :color "#F5A9B8") + ( flagEl :flipped false :color "#5BCEFA") + ) + ) +) diff --git a/home/rices/schrottkatze/eww/configDir/util.yuck b/home/rices/schrottkatze/eww/configDir/util.yuck new file mode 100644 index 0000000..3df84ab --- /dev/null +++ b/home/rices/schrottkatze/eww/configDir/util.yuck @@ -0,0 +1,10 @@ +(defwidget flagEl [color ?flipped] + (box + :style "border-${flipped ? "top" : "bottom"}: 3px solid ${color}" + :halign "fill" + ) +) + +(defwidget sep [] + (label :text "|") +) |
