From 2138b4624eae088a81852f50b3a8f50fc0431a10 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Fri, 29 Nov 2024 18:51:52 +0100 Subject: refactor(modules/legacy/conf/yambar): Move to `by-name` and modernize --- modules/by-name/ya/yambar/config/config.yml | 42 +++ modules/by-name/ya/yambar/module.nix | 65 ++++ modules/by-name/ya/yambar/scripts/disk.sh | 21 ++ modules/by-name/ya/yambar/scripts/mpd_song_name.sh | 21 ++ modules/by-name/ya/yambar/scripts/network.sh | 47 +++ modules/by-name/ya/yambar/scripts/sound-volume.sh | 20 ++ modules/by-name/ya/yambar/settings/default.nix | 370 +++++++++++++++++++++ modules/home.legacy/conf/default.nix | 1 - modules/home.legacy/conf/yambar/config/config.yml | 243 -------------- modules/home.legacy/conf/yambar/config/laptop.yml | 243 -------------- modules/home.legacy/conf/yambar/default.nix | 50 --- modules/home.legacy/conf/yambar/scripts/disk.sh | 21 -- .../conf/yambar/scripts/mpd_song_name.sh | 21 -- modules/home.legacy/conf/yambar/scripts/network.sh | 47 --- .../conf/yambar/scripts/sound-volume.sh | 20 -- 15 files changed, 586 insertions(+), 646 deletions(-) create mode 100644 modules/by-name/ya/yambar/config/config.yml create mode 100644 modules/by-name/ya/yambar/module.nix create mode 100755 modules/by-name/ya/yambar/scripts/disk.sh create mode 100755 modules/by-name/ya/yambar/scripts/mpd_song_name.sh create mode 100755 modules/by-name/ya/yambar/scripts/network.sh create mode 100755 modules/by-name/ya/yambar/scripts/sound-volume.sh create mode 100644 modules/by-name/ya/yambar/settings/default.nix delete mode 100644 modules/home.legacy/conf/yambar/config/config.yml delete mode 100644 modules/home.legacy/conf/yambar/config/laptop.yml delete mode 100644 modules/home.legacy/conf/yambar/default.nix delete mode 100755 modules/home.legacy/conf/yambar/scripts/disk.sh delete mode 100755 modules/home.legacy/conf/yambar/scripts/mpd_song_name.sh delete mode 100755 modules/home.legacy/conf/yambar/scripts/network.sh delete mode 100755 modules/home.legacy/conf/yambar/scripts/sound-volume.sh (limited to 'modules') diff --git a/modules/by-name/ya/yambar/config/config.yml b/modules/by-name/ya/yambar/config/config.yml new file mode 100644 index 00000000..442135aa --- /dev/null +++ b/modules/by-name/ya/yambar/config/config.yml @@ -0,0 +1,42 @@ +--- +# Config file for yambar +# Note that this may be version-dependent, this file is written for v1.8.0 + +bar: + right: + # - network: + # name: wlp5s0 + # poll-interval: 10 + # content: + # map: + # on-click: /bin/sh -c "nmtui" + # conditions: + # ~carrier: {empty: {}} + # carrier: + # string: {text: "  {ssid} ", deco: *combutil} + # - network: + # name: enp4s0 + # content: + # map: + # on-click: /bin/sh -c "nmtui" + # conditions: + # ~carrier: + # string: {text: "  Eth failed ", deco: *combutil} + # carrier: {empty: {}} + # - script: # Grade average + # path: grade_average_script + # content: + # string: + # text: "  {grade} " + # deco: *combmem + # - script: # tray + # path: /home/dt/.config/yambar/scripts/yambar-tray + # content: + # empty: {} + # - script: + # path: /home/dt/.config/yambar/scripts/yambar-tray-width + # poll-interval: 10 + # content: + # string: + # text: "{padding}" + # deco: *combmem diff --git a/modules/by-name/ya/yambar/module.nix b/modules/by-name/ya/yambar/module.nix new file mode 100644 index 00000000..2f6ea22f --- /dev/null +++ b/modules/by-name/ya/yambar/module.nix @@ -0,0 +1,65 @@ +{ + config, + sysLib, + pkgs, + lib, + ... +}: let + cfg = config.soispha.programs.yambar; + + makeScript = { + name, + dependencies, + ... + }: + sysLib.writeShellScript { + inherit name; + src = ./scripts/${name}.sh; + dependencies = dependencies ++ (builtins.attrValues {inherit (pkgs) dash;}); + } + + "/bin/${name}"; +in { + options.soispha.programs.yambar = { + enable = lib.mkEnableOption "yambar"; + + laptop = lib.mkEnableOption "laptop specific settings"; + backlight = lib.mkOption { + type = lib.types.str; + example = "intel_backlight"; + description = "Which backlight to query for the screen brightness"; + }; + }; + + config = lib.mkIf cfg.enable { + home-manager.users.soispha = { + programs.yambar = { + enable = true; + settings = import ./settings { + inherit lib; + inherit (cfg) laptop; + laptopBacklightName = cfg.backlight; + scripts = { + mpd_song_name_script = makeScript { + dependencies = [pkgs.mpc]; + name = "mpd_song_name"; + }; + + volume_script = makeScript { + dependencies = with pkgs; [pulseaudio gawk coreutils]; + name = "sound-volume"; + }; + + cpu_script = "${lib.getExe pkgs.yambar-modules} cpu"; + + memory_script = "${lib.getExe pkgs.yambar-modules} memory"; + + disk_script = makeScript { + dependencies = with pkgs; [gawk btrfs-progs coreutils]; + name = "disk"; + }; + }; + }; + }; + }; + }; +} diff --git a/modules/by-name/ya/yambar/scripts/disk.sh b/modules/by-name/ya/yambar/scripts/disk.sh new file mode 100755 index 00000000..a5547a74 --- /dev/null +++ b/modules/by-name/ya/yambar/scripts/disk.sh @@ -0,0 +1,21 @@ +#! /usr/bin/env dash + +# shellcheck source=/dev/null +SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH + +# Main loop +while true; do + # vars + used_space=$(btrfs filesystem usage /srv 2>/dev/null | awk '{if ( /Used:/ ) { print $2 } } ' | head -n1) + all_space=$(btrfs filesystem usage /srv 2>/dev/null | awk '{if ( /Device size:/ ) { print $3 } } ' | head -n1 | tr -d "GiB") + + # Check space available (4) and percentage used (5) + spaceperc=$(echo "$(echo "$used_space" | tr -d "GiB")" "$all_space" | awk '{div=$1/$2;div *= 100; printf"%2d%%\n",div }') + + echo "diskspace|string|$used_space" + echo "diskperc|string|$spaceperc" + echo "" + sleep 1 +done + +# vim: ft=sh diff --git a/modules/by-name/ya/yambar/scripts/mpd_song_name.sh b/modules/by-name/ya/yambar/scripts/mpd_song_name.sh new file mode 100755 index 00000000..7d294781 --- /dev/null +++ b/modules/by-name/ya/yambar/scripts/mpd_song_name.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env dash + +# shellcheck source=/dev/null +SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH + +while true; do + state="$(mpc status '%state%')" + + if [ "$state" = "playing" ]; then + song="$(mpc --format '[[%artist% - ]%title%]|[%file%]' current)" + echo "playing|bool|true" + echo "song|string|$song :: $(mpc status "%currenttime%/%totaltime%")" + else + echo "playing|bool|false" + fi + echo "" # commit + + sleep 2 +done + +# vim: ft=sh diff --git a/modules/by-name/ya/yambar/scripts/network.sh b/modules/by-name/ya/yambar/scripts/network.sh new file mode 100755 index 00000000..adfc93df --- /dev/null +++ b/modules/by-name/ya/yambar/scripts/network.sh @@ -0,0 +1,47 @@ +#! /usr/bin/env dash + +# shellcheck source=/dev/null +SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH + +retest=120 +retest_if_con_fails=10 +backend=nmcli + +case "$backend" in +"nmcli") # Test for connectivity with nmcli + while true; do + connection_status=$(nmcli networking connectivity) + if [ "$connection_status" = "full" ]; then + echo "internet|string|Connected" + echo "" + sleep $retest + else + echo "internet|string|Disconnected" + echo "" + sleep $retest_if_con_fails + fi + done + ;; +"ping") # Test for connectivity with ping + ip_address='8.8.8.8' + ping_number=3 + + while true; do + + ping_result=$(mktmp) + ping $ip_address -c $ping_number -q | awk 'BEGIN {FS="/"} END {print $5}' >"$ping_result" + + if [ "$(wc -l <"$ping_result")" -eq 0 ]; then + echo "med|string|No connection" + echo "" + sleep $retest_if_con_fails + else + echo "med|string|$(cat "$ping_result") ms" + echo "" + sleep $retest + fi + done + ;; +esac + +# vim: ft=sh diff --git a/modules/by-name/ya/yambar/scripts/sound-volume.sh b/modules/by-name/ya/yambar/scripts/sound-volume.sh new file mode 100755 index 00000000..8a98daf7 --- /dev/null +++ b/modules/by-name/ya/yambar/scripts/sound-volume.sh @@ -0,0 +1,20 @@ +#! /usr/bin/env dash + +# shellcheck source=/dev/null +SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH + +while true; do + volume="$(pactl get-sink-volume 0 | awk 'BEGIN { FS="/" } {gsub("%","",$2); gsub(" ","",$2)} {printf $2}')" + + if [ "$volume" -eq 0 ]; then + echo "muted|bool|true" + else + echo "volume|string|$volume" + echo "muted|bool|false" + fi + echo "" + + sleep 3 +done + +# vim: ft=sh diff --git a/modules/by-name/ya/yambar/settings/default.nix b/modules/by-name/ya/yambar/settings/default.nix new file mode 100644 index 00000000..041ac88e --- /dev/null +++ b/modules/by-name/ya/yambar/settings/default.nix @@ -0,0 +1,370 @@ +# TODO: This should not do something depending on whether the host is a laptop or not. It +# should instead match on monitor-width or scale factor. <2024-11-29> +{ + lib, + laptop ? false, + laptopBacklightName ? null, + scripts, +}: let + mkUnderline = color: { + underline = { + inherit color; + size = "3"; + }; + }; + + shellExec = cmd: ''sh -c "${cmd}"''; + + values = { + foreground = { + blue = "99d1dbff"; + focus = "e78284ff"; + green = "a6e3a1dd"; + lavendar = "b4befedd"; + mauve = "cba6f7dd"; + none = "0"; + normal = "c6ceefff"; + peach = "fab387dd"; + sapphire = "74c7ecdd"; + teal = "94e2d5dd"; + }; + font = { + main = "Source Code Pro:pixelsize=${ + if laptop + then "22" + else "26" + }"; + aws = "Font Awesome 5 Free:style=solid:pixelsize=${ + if laptop + then "20" + else "23" + }"; + }; + background = { + normal = "303446ff"; + tag = "585b70ff"; + tag2 = "45475aff"; + urgent = "e78284ff"; + }; + backgroundBlock = { + normal = {background = {color = values.background.normal;};}; + urgent = {background = {color = values.background.urgent;};}; + }; + underline = { + battery = mkUnderline values.foreground.sapphire; + clock = mkUnderline values.foreground.teal; + focused = mkUnderline values.foreground.focus; + resources = mkUnderline values.foreground.green; + title = mkUnderline values.background.tag; + urgent = mkUnderline values.foreground.blue; + utils = mkUnderline values.foreground.peach; + weather = mkUnderline values.foreground.lavendar; + }; + combination = { + battery.stack = [ + values.backgroundBlock.normal + values.underline.battery + ]; + clock.stack = [ + values.backgroundBlock.normal + values.underline.clock + ]; + resources.stack = [ + values.backgroundBlock.normal + values.underline.resources + ]; + utils.stack = [ + values.backgroundBlock.normal + values.underline.utils + ]; + weather.stack = [ + values.backgroundBlock.normal + values.underline.weather + ]; + }; + }; +in { + bar = { + background = values.foreground.none; + foreground = values.foreground.normal; + + font = values.font.main; + height = + if laptop + then "25" + else "45"; + margin = + if laptop + then "5" + else "10"; + location = "top"; + layer = "bottom"; + spacing = "0"; + + border = { + margin = "0"; + top-margin = "10"; + }; + + left = [ + { + river = let + tag_base_setting = { + map = let + normal = { + string = { + margin = "10"; + text = "{id}"; + }; + }; + in { + default = normal; + conditions = { + "state == focused" = { + string = { + deco = { + stack = [ + {background = {color = values.background.tag;};} + values.underline.focused + ]; + }; + margin = "10"; + text = "{id}"; + }; + }; + "state == invisible" = { + map = { + conditions = { + occupied = { + string = { + deco = {background = {color = values.background.tag2;};}; + margin = "10"; + text = "{id}"; + }; + }; + "~occupied" = normal; + }; + }; + }; + "state == unfocused" = { + string = { + deco = {background = {color = values.background.tag2;};}; + margin = "10"; + text = "{id}"; + }; + }; + "state == urgent" = { + string = { + deco = { + stack = [ + {background = {color = values.background.urgent;};} + values.underline.urgent + ]; + }; + margin = "10"; + text = "{id}"; + }; + }; + }; + }; + }; + in { + content = { + map = { + conditions = { + "id == 1" = tag_base_setting; + "id == 2" = tag_base_setting; + "id == 3" = tag_base_setting; + "id == 4" = tag_base_setting; + "id == 5" = tag_base_setting; + "id == 6" = tag_base_setting; + "id == 7" = tag_base_setting; + "id == 8" = tag_base_setting; + "id == 9" = tag_base_setting; + }; + on-click = { + left = shellExec "riverctl set-focused-tags $((1 << ({id} - 1)))"; + middle = shellExec "riverctl toggle-view-tags $((1 << ({id} -1)))"; + right = shellExec "riverctl toggle-focused-tags $((1 << ({id} -1)))"; + }; + }; + }; + title = { + map = { + conditions = {"title == \"\"" = {string = {text = "";};};}; + default = { + string = { + max = "35"; + deco = values.underline.title; + left-margin = "12"; + right-margin = "12"; + text = "{title}"; + }; + }; + }; + }; + }; + } + ]; + + center = [ + { + clock = { + date-format = "%d/%m/%y (%a)"; + time-format = "%H:%M:%S %Z"; + foreground = values.foreground.blue; + content = { + string = { + deco = values.combination.clock; + text = " {date} {time} "; + }; + }; + }; + } + ]; + + right = + [ + { + script = { + path = scripts.mpd_song_name_script; + content.map.conditions = { + playing = { + string = { + deco = values.combination.weather; + text = "{song} "; + }; + }; + "~playing" = { + string = { + deco = values.combination.weather; + text = ""; + }; + }; + }; + }; + } + { + script = { + path = scripts.volume_script; + content.map = { + on-click = shellExec "pavucontrol"; + conditions = { + muted = { + string = { + deco = values.backgroundBlock.urgent; + text = " 󰝟 "; + }; + }; + "~muted" = { + string = { + deco = values.combination.utils; + text = "  {volume}% "; + }; + }; + }; + }; + }; + } + { + script = { + path = scripts.cpu_script; + content.string = { + deco = values.combination.resources; + text = "  {cpu}% "; + }; + }; + } + { + script = { + path = scripts.memory_script; + content.map.conditions = { + swapstate = { + string = { + deco = values.combination.resources; + text = "  {memperc}%({swapperc}%) "; + }; + }; + "~swapstate" = { + string = { + deco = values.combination.resources; + text = "  {memperc}% "; + }; + }; + }; + }; + } + { + script = { + path = scripts.disk_script; + content.string = { + deco = values.combination.resources; + text = " 󰋊 {diskspace}({diskperc})"; + }; + }; + } + ] + ++ lib.optionals laptop [ + { + backlight = { + name = laptopBacklightName; + content.string = { + text = "  {percent}% "; + deco = values.combination.utils; + }; + }; + } + { + battery = { + name = "BAT0"; + poll-interval = "300"; + content.list.items = [ + { + ramp = { + tag = "capacity"; + items = let + stack = [ + values.backgroundBlock.normal + values.underline.battery + ]; + in [ + { + string = { + text = "  {capacity}%({estimate}) "; + deco = + values.backgroundBlock.urgent; + }; + } + { + string = { + text = "  {capacity}%({estimate}) "; + deco.stack = stack; + }; + } + { + string = { + text = "  {capacity}%({estimate}) "; + deco.stack = stack; + }; + } + { + string = { + text = "  {capacity}%({estimate}) "; + deco.stack = stack; + }; + } + { + string = { + text = "  {capacity}%({estimate}) "; + deco.stack = stack; + }; + } + ]; + }; + } + ]; + }; + } + ]; + }; +} diff --git a/modules/home.legacy/conf/default.nix b/modules/home.legacy/conf/default.nix index 9d6d00ed..ac343349 100644 --- a/modules/home.legacy/conf/default.nix +++ b/modules/home.legacy/conf/default.nix @@ -34,7 +34,6 @@ ./timewarrior ./tridactyl ./xdg - ./yambar ./yt ./ytcc ]; diff --git a/modules/home.legacy/conf/yambar/config/config.yml b/modules/home.legacy/conf/yambar/config/config.yml deleted file mode 100644 index 3d9f0687..00000000 --- a/modules/home.legacy/conf/yambar/config/config.yml +++ /dev/null @@ -1,243 +0,0 @@ ---- -# Config file for yambar -# Note that this may be version-dependent, this file is written for v1.8.0 - - -# Font anchors -font-main: &fontmain Source Code Pro:pixelsize=26 -font-aws: &awesome Font Awesome 5 Free:style=solid:pixelsize=23 - -# Color anchors -fg-none: &fgnone 00000000 -fg-1: &fg1 c6ceefff -fg-blue: &fgblue 99d1dbff -fg-sapphire: &fgsapp 74c7ecdd -fg-green: &fggreen a6e3a1dd -fg-peach: &fgpeach fab387dd -fg-mauve: &fgmauve cba6f7dd -fg-teal: &fgteal 94e2d5dd -fg-lavendar: &fglav b4befedd -fg-focus: &fgfocus e78284ff -bg-1: &bg1 303446ff -bg-tag: &bgtag 585b70ff -bg-tag2: &bgtag2 45475aff -bg-urgent: &bgurgent e78284ff - -# Background blocks -background-block: &bgcblock {background: {color: *bg1 }} -background-block-urgent: &bgcurg {background: {color: *bgurgent }} - -# Underlines -underline-focused: &line {underline: { size: 3, color: *fgfocus}} -underline-urgent: &lineurgent {underline: { size: 3, color: *fgblue}} -underline-utils: &lineutil {underline: { size: 3, color: *fgpeach}} -underline-resources: &linemem {underline: { size: 3, color: *fggreen}} -underline-battery: &linebat {underline: { size: 3, color: *fgsapp}} -underline-clock: &lineclock {underline: { size: 3, color: *fgteal}} -underline-weather: &linewea {underline: { size: 3, color: *fglav}} -underline-title: &linetitle {underline: { size: 3, color: *bgtag}} - -# Combined decorations -combination-utils: &combutil {stack: [ <<: *bgcblock, <<: *lineutil]} -combination-resources: &combmem {stack: [ <<: *bgcblock, <<: *linemem]} -combination-battery: &combbat {stack: [ <<: *bgcblock, <<: *linebat]} -combination-clock: &combclock {stack: [ <<: *bgcblock, <<: *lineclock]} -combination-weather: &combwea {stack: [ <<: *bgcblock, <<: *linewea]} - - -### Main - -bar: - location: top - height: 45 - layer: bottom - spacing: 0 - margin: 10 - border: {margin: 0, top-margin: 10} - foreground: *fg1 - background: *fgnone - font: *fontmain - - ### Left, river tags - left: - - river: - anchors: - - id: &name { text: "{id}" } - - string: &focus { stack: [ {background: {color: *bg1}} ] } - - string: &normal { string: { <<: *name, margin: 10 } } - - string: - &occupied { string: { <<: *name, deco: {background: {color: *bgtag2}}, margin: 10 } } - - string: &urgent { string: { <<: *name, deco: {stack: [background: {color: *bgurgent}, <<: *lineurgent]}, margin: 10 } } - - string: &focused { string: { <<: *name, deco: {stack: [background: {color: *bgtag}, <<: *line]}, margin: 10 } } - - string: &unfocused { string: { <<: *name, deco: {background: {color: *bgtag2}}, margin: 10 } } - - base: &river_base - default: *normal - conditions: - state == focused: *focused - state == unfocused: *unfocused - state == urgent: *urgent - state == invisible: - map: - conditions: - occupied: *occupied - ~occupied: *normal - content: - map: - on-click: - left: sh -c "riverctl set-focused-tags $((1 << ({id} - 1)))" - right: sh -c "riverctl toggle-focused-tags $((1 << ({id} -1)))" - middle: sh -c "riverctl toggle-view-tags $((1 << ({id} -1)))" - conditions: - id == 1: { map: { <<: *river_base } } - id == 2: { map: { <<: *river_base } } - id == 3: { map: { <<: *river_base } } - id == 4: { map: { <<: *river_base } } - id == 5: { map: { <<: *river_base } } - id == 6: { map: { <<: *river_base } } - id == 7: { map: { <<: *river_base } } - id == 8: { map: { <<: *river_base } } - id == 9: { map: { <<: *river_base } } - title: - map: - default: - { - string: - { - text: "{title}", - left-margin: 12, - right-margin: 12, - # max: 35, - deco: *linetitle - }, - } - conditions: - title == "": { string: { text: "" } } - - ### Center, clock & weather gadget - center: - - clock: - time-format: "%H:%M:%S %Z" - date-format: "%d/%m/%y (%a)" - foreground: *fgblue - content: - string: - text: " {date} {time} " - deco: *combclock - - ### Right, system tray - right: - #- network: - # name: wlp5s0 - # poll-interval: 10 - # content: - # map: - # on-click: /bin/sh -c "nmtui" - # conditions: - # ~carrier: {empty: {}} - # carrier: - # string: {text: "  {ssid} ", deco: *combutil} - #- network: - # name: enp4s0 - # content: - # map: - # on-click: /bin/sh -c "nmtui" - # conditions: - # ~carrier: - # string: {text: "  Eth failed ", deco: *combutil} - # carrier: {empty: {}} - - - script: # mpd song name - path: @mpd_song_name_script@ - content: - map: - conditions: - playing: - string: {text: "{song} ", deco: *combwea} - ~playing: - string: {text: "", deco: *combwea} - - script: # Sound volume - path: @volume_script@ - content: - map: - on-click: /bin/sh -c "pavucontrol" - conditions: - muted: - string: - text: " 󰝟 " - deco: *bgcurg - ~muted: - string: {text: "  {volume}% ", deco: *combutil} - - # - script: # Grade average - # path: @grade_average_script@ - # content: - # string: - # text: "  {grade} " - # deco: *combmem - - #- backlight: - # name: intel_backlight - # content: - # - string: {text: "  {percent}% ", deco: *combutil} - - - script: # CPU - path: @cpu_script@ - content: - string: - text: "  {cpu}% " - deco: *combmem - - - script: # Memory info - path: @memory_script@ - content: - map: - conditions: - swapstate: - string: - text: "  {memperc}%({swapperc}%) " - deco: *combmem - ~swapstate: - string: - text: "  {memperc}% " - deco: *combmem - - script: # Disk space - path: @disk_script@ - content: - string: - text: " 󰋊 {diskspace}({diskperc})" - deco: *combmem - #- battery: - # name: BAT0 - # poll-interval: 30 - # content: - # list: - # items: - # - ramp: - # tag: capacity - # items: - # - string: - # text: "  {capacity}%({estimate}) " - # deco: *bgcurg - # - string: - # text: "  {capacity}%({estimate}) " - # deco: {stack: [ <<: *bgcblock, <<: *linebat]} - # - string: - # text: "  {capacity}%({estimate}) " - # deco: {stack: [ <<: *bgcblock, <<: *linebat]} - # - string: - # text: "  {capacity}%({estimate}) " - # deco: {stack: [ <<: *bgcblock, <<: *linebat]} - # - string: - # text: "  {capacity}%({estimate}) " - # deco: {stack: [ <<: *bgcblock, <<: *linebat]} - #- script: # tray - # path: /home/dt/.config/yambar/scripts/yambar-tray - # content: - # empty: {} - #- script: - # path: /home/dt/.config/yambar/scripts/yambar-tray-width - # poll-interval: 10 - # content: - # string: - # text: "{padding}" - # deco: *combmem diff --git a/modules/home.legacy/conf/yambar/config/laptop.yml b/modules/home.legacy/conf/yambar/config/laptop.yml deleted file mode 100644 index 8de2f508..00000000 --- a/modules/home.legacy/conf/yambar/config/laptop.yml +++ /dev/null @@ -1,243 +0,0 @@ ---- -# Config file for yambar -# Note that this may be version-dependent, this file is written for v1.8.0 - - -# Font anchors -font-main: &fontmain Source Code Pro:pixelsize=22 -font-aws: &awesome Font Awesome 5 Free:style=solid:pixelsize=20 - -# Color anchors -fg-none: &fgnone 00000000 -fg-1: &fg1 c6ceefff -fg-blue: &fgblue 99d1dbff -fg-sapphire: &fgsapp 74c7ecdd -fg-green: &fggreen a6e3a1dd -fg-peach: &fgpeach fab387dd -fg-mauve: &fgmauve cba6f7dd -fg-teal: &fgteal 94e2d5dd -fg-lavendar: &fglav b4befedd -fg-focus: &fgfocus e78284ff -bg-1: &bg1 303446ff -bg-tag: &bgtag 585b70ff -bg-tag2: &bgtag2 45475aff -bg-urgent: &bgurgent e78284ff - -# Background blocks -background-block: &bgcblock {background: {color: *bg1 }} -background-block-urgent: &bgcurg {background: {color: *bgurgent }} - -# Underlines -underline-focused: &line {underline: { size: 3, color: *fgfocus}} -underline-urgent: &lineurgent {underline: { size: 3, color: *fgblue}} -underline-utils: &lineutil {underline: { size: 3, color: *fgpeach}} -underline-resources: &linemem {underline: { size: 3, color: *fggreen}} -underline-battery: &linebat {underline: { size: 3, color: *fgsapp}} -underline-clock: &lineclock {underline: { size: 3, color: *fgteal}} -underline-weather: &linewea {underline: { size: 3, color: *fglav}} -underline-title: &linetitle {underline: { size: 3, color: *bgtag}} - -# Combined decorations -combination-utils: &combutil {stack: [ <<: *bgcblock, <<: *lineutil]} -combination-resources: &combmem {stack: [ <<: *bgcblock, <<: *linemem]} -combination-battery: &combbat {stack: [ <<: *bgcblock, <<: *linebat]} -combination-clock: &combclock {stack: [ <<: *bgcblock, <<: *lineclock]} -combination-weather: &combwea {stack: [ <<: *bgcblock, <<: *linewea]} - - -### Main - -bar: - location: top - height: 25 - layer: bottom - spacing: 0 - margin: 10 - border: {margin: 0, top-margin: 5} - foreground: *fg1 - background: *fgnone - font: *fontmain - - ### Left, river tags - left: - - river: - anchors: - - id: &name { text: "{id}" } - - string: &focus { stack: [ {background: {color: *bg1}} ] } - - string: &normal { string: { <<: *name, margin: 10 } } - - string: - &occupied { string: { <<: *name, deco: {background: {color: *bgtag2}}, margin: 10 } } - - string: &urgent { string: { <<: *name, deco: {stack: [background: {color: *bgurgent}, <<: *lineurgent]}, margin: 10 } } - - string: &focused { string: { <<: *name, deco: {stack: [background: {color: *bgtag}, <<: *line]}, margin: 10 } } - - string: &unfocused { string: { <<: *name, deco: {background: {color: *bgtag2}}, margin: 10 } } - - base: &river_base - default: *normal - conditions: - state == focused: *focused - state == unfocused: *unfocused - state == urgent: *urgent - state == invisible: - map: - conditions: - occupied: *occupied - ~occupied: *normal - content: - map: - on-click: - left: sh -c "riverctl set-focused-tags $((1 << ({id} - 1)))" - right: sh -c "riverctl toggle-focused-tags $((1 << ({id} -1)))" - middle: sh -c "riverctl toggle-view-tags $((1 << ({id} -1)))" - conditions: - id == 1: { map: { <<: *river_base } } - id == 2: { map: { <<: *river_base } } - id == 3: { map: { <<: *river_base } } - id == 4: { map: { <<: *river_base } } - id == 5: { map: { <<: *river_base } } - id == 6: { map: { <<: *river_base } } - id == 7: { map: { <<: *river_base } } - id == 8: { map: { <<: *river_base } } - id == 9: { map: { <<: *river_base } } - title: - map: - default: - { - string: - { - text: "{title}", - left-margin: 12, - right-margin: 12, - # max: 35, - deco: *linetitle - }, - } - conditions: - title == "": { string: { text: "" } } - - ### Center, clock & weather gadget - center: - - clock: - time-format: "%H:%M:%S %Z" - date-format: "%d/%m/%y (%a)" - foreground: *fgblue - content: - string: - text: " {date} {time} " - deco: *combclock - - ### Right, system tray - right: - #- network: - # name: wlp5s0 - # poll-interval: 10 - # content: - # map: - # on-click: /bin/sh -c "nmtui" - # conditions: - # ~carrier: {empty: {}} - # carrier: - # string: {text: "  {ssid} ", deco: *combutil} - #- network: - # name: enp4s0 - # content: - # map: - # on-click: /bin/sh -c "nmtui" - # conditions: - # ~carrier: - # string: {text: "  Eth failed ", deco: *combutil} - # carrier: {empty: {}} - - - script: # mpd song name - path: @mpd_song_name_script@ - content: - map: - conditions: - playing: - string: {text: "{song} ", deco: *combwea} - ~playing: - string: {text: "", deco: *combwea} - - script: # Sound volume - path: @volume_script@ - content: - map: - on-click: /bin/sh -c "pavucontrol" - conditions: - muted: - string: - text: " 󰝟 " - deco: *bgcurg - ~muted: - string: {text: "  {volume}% ", deco: *combutil} - - # - script: # Grade average - # path: @grade_average_script@ - # content: - # string: - # text: "  {grade} " - # deco: *combmem - - - backlight: - name: @backlight@ - content: - - string: {text: "  {percent}% ", deco: *combutil} - - - script: # CPU - path: @cpu_script@ - content: - string: - text: "  {cpu}% " - deco: *combmem - - - script: # Memory info - path: @memory_script@ - content: - map: - conditions: - swapstate: - string: - text: "  {memperc}%({swapperc}%) " - deco: *combmem - ~swapstate: - string: - text: "  {memperc}% " - deco: *combmem - - script: # Disk space - path: @disk_script@ - content: - string: - text: " 󰋊 {diskspace}({diskperc})" - deco: *combmem - - battery: - name: BAT0 - poll-interval: 300 - content: - list: - items: - - ramp: - tag: capacity - items: - - string: - text: "  {capacity}%({estimate}) " - deco: *bgcurg - - string: - text: "  {capacity}%({estimate}) " - deco: {stack: [ <<: *bgcblock, <<: *linebat]} - - string: - text: "  {capacity}%({estimate}) " - deco: {stack: [ <<: *bgcblock, <<: *linebat]} - - string: - text: "  {capacity}%({estimate}) " - deco: {stack: [ <<: *bgcblock, <<: *linebat]} - - string: - text: "  {capacity}%({estimate}) " - deco: {stack: [ <<: *bgcblock, <<: *linebat]} - #- script: # tray - # path: /home/dt/.config/yambar/scripts/yambar-tray - # content: - # empty: {} - #- script: - # path: /home/dt/.config/yambar/scripts/yambar-tray-width - # poll-interval: 10 - # content: - # string: - # text: "{padding}" - # deco: *combmem diff --git a/modules/home.legacy/conf/yambar/default.nix b/modules/home.legacy/conf/yambar/default.nix deleted file mode 100644 index 72dcaa8e..00000000 --- a/modules/home.legacy/conf/yambar/default.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ - nixosConfig, - sysLib, - pkgs, - lib, - ... -}: let - makeScript = { - name, - dependencies, - ... - }: - sysLib.writeShellScript { - inherit name; - src = ./scripts/${name}.sh; - dependencies = dependencies ++ (builtins.attrValues {inherit (pkgs) dash;}); - } - + "/bin/${name}"; -in { - xdg.configFile."yambar/config.yml".source = pkgs.substituteAll { - src = - if nixosConfig.soispha.laptop.enable - then ./config/laptop.yml - else ./config/config.yml; - - backlight = - if nixosConfig.soispha.laptop.enable - then nixosConfig.soispha.laptop.backlight - else ""; - - mpd_song_name_script = makeScript { - dependencies = builtins.attrValues {inherit (pkgs) mpc;}; - name = "mpd_song_name"; - }; - - volume_script = makeScript { - dependencies = builtins.attrValues {inherit (pkgs) pulseaudio gawk coreutils;}; - name = "sound-volume"; - }; - - cpu_script = lib.getExe pkgs.yambar-cpu; - - memory_script = lib.getExe pkgs.yambar-memory; - - disk_script = makeScript { - dependencies = builtins.attrValues {inherit (pkgs) gawk btrfs-progs coreutils;}; - name = "disk"; - }; - }; -} diff --git a/modules/home.legacy/conf/yambar/scripts/disk.sh b/modules/home.legacy/conf/yambar/scripts/disk.sh deleted file mode 100755 index a5547a74..00000000 --- a/modules/home.legacy/conf/yambar/scripts/disk.sh +++ /dev/null @@ -1,21 +0,0 @@ -#! /usr/bin/env dash - -# shellcheck source=/dev/null -SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH - -# Main loop -while true; do - # vars - used_space=$(btrfs filesystem usage /srv 2>/dev/null | awk '{if ( /Used:/ ) { print $2 } } ' | head -n1) - all_space=$(btrfs filesystem usage /srv 2>/dev/null | awk '{if ( /Device size:/ ) { print $3 } } ' | head -n1 | tr -d "GiB") - - # Check space available (4) and percentage used (5) - spaceperc=$(echo "$(echo "$used_space" | tr -d "GiB")" "$all_space" | awk '{div=$1/$2;div *= 100; printf"%2d%%\n",div }') - - echo "diskspace|string|$used_space" - echo "diskperc|string|$spaceperc" - echo "" - sleep 1 -done - -# vim: ft=sh diff --git a/modules/home.legacy/conf/yambar/scripts/mpd_song_name.sh b/modules/home.legacy/conf/yambar/scripts/mpd_song_name.sh deleted file mode 100755 index 7d294781..00000000 --- a/modules/home.legacy/conf/yambar/scripts/mpd_song_name.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env dash - -# shellcheck source=/dev/null -SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH - -while true; do - state="$(mpc status '%state%')" - - if [ "$state" = "playing" ]; then - song="$(mpc --format '[[%artist% - ]%title%]|[%file%]' current)" - echo "playing|bool|true" - echo "song|string|$song :: $(mpc status "%currenttime%/%totaltime%")" - else - echo "playing|bool|false" - fi - echo "" # commit - - sleep 2 -done - -# vim: ft=sh diff --git a/modules/home.legacy/conf/yambar/scripts/network.sh b/modules/home.legacy/conf/yambar/scripts/network.sh deleted file mode 100755 index adfc93df..00000000 --- a/modules/home.legacy/conf/yambar/scripts/network.sh +++ /dev/null @@ -1,47 +0,0 @@ -#! /usr/bin/env dash - -# shellcheck source=/dev/null -SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH - -retest=120 -retest_if_con_fails=10 -backend=nmcli - -case "$backend" in -"nmcli") # Test for connectivity with nmcli - while true; do - connection_status=$(nmcli networking connectivity) - if [ "$connection_status" = "full" ]; then - echo "internet|string|Connected" - echo "" - sleep $retest - else - echo "internet|string|Disconnected" - echo "" - sleep $retest_if_con_fails - fi - done - ;; -"ping") # Test for connectivity with ping - ip_address='8.8.8.8' - ping_number=3 - - while true; do - - ping_result=$(mktmp) - ping $ip_address -c $ping_number -q | awk 'BEGIN {FS="/"} END {print $5}' >"$ping_result" - - if [ "$(wc -l <"$ping_result")" -eq 0 ]; then - echo "med|string|No connection" - echo "" - sleep $retest_if_con_fails - else - echo "med|string|$(cat "$ping_result") ms" - echo "" - sleep $retest - fi - done - ;; -esac - -# vim: ft=sh diff --git a/modules/home.legacy/conf/yambar/scripts/sound-volume.sh b/modules/home.legacy/conf/yambar/scripts/sound-volume.sh deleted file mode 100755 index 8a98daf7..00000000 --- a/modules/home.legacy/conf/yambar/scripts/sound-volume.sh +++ /dev/null @@ -1,20 +0,0 @@ -#! /usr/bin/env dash - -# shellcheck source=/dev/null -SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH - -while true; do - volume="$(pactl get-sink-volume 0 | awk 'BEGIN { FS="/" } {gsub("%","",$2); gsub(" ","",$2)} {printf $2}')" - - if [ "$volume" -eq 0 ]; then - echo "muted|bool|true" - else - echo "volume|string|$volume" - echo "muted|bool|false" - fi - echo "" - - sleep 3 -done - -# vim: ft=sh -- cgit 1.4.1