diff options
| author | 2024-09-25 20:02:25 +0100 | |
|---|---|---|
| committer | 2024-09-25 20:16:42 +0100 | |
| commit | 3de3d1e46625a272e8e4e529786573dcbed36ceb (patch) | |
| tree | a09def43edb72743e9154e9e57f1438a33804e21 | |
| parent | ad56debc8d30252f04ce339f402f753a1a1f54ee (diff) | |
Separate wob.ini(5); add PKGBUILD
| -rw-r--r-- | PKGBUILD | 24 | ||||
| -rw-r--r-- | README.md | 17 | ||||
| -rwxr-xr-x | install.sh | 5 | ||||
| -rw-r--r-- | swob-wob.ini | 8 | ||||
| -rwxr-xr-x | swob.sh | 53 |
5 files changed, 73 insertions, 34 deletions
diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..b90a172 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,24 @@ +pkgname=swob-git +pkgver=0 +pkgrel=1 +pkgdesc='Volume and brightness controls for wayland, using wob' +arch=(any) # limited only by dependencies +depends=(sh coreutils sed wob alsa-utils brightnessctl) +url='https://github.com/el-remph/swob' +license=(FSFULLRWD) +provides=(swob) +source=("git+$url") +b2sums=(SKIP) + +pkgver() ( + cd swob + set -o pipefail + git describe --long --abbrev=7 --tags 2>/dev/null | + sed -e 's/^v//' -e 's/[^-]*-g/r&/' -e y/-/./ || + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)" +) + +package() { + cd swob + DESTDIR=$pkgdir ./install.sh +} @@ -28,19 +28,22 @@ Dependencies Installation ------------ -Put swob.sh on your PATH, or edit the sway(5) config snippet to point to its -exact location. Copy the sway config snippet into your own sway config file, -or source it from that file, or copy it into /etc/sway/config.d -- obviously -if you aren't on sway, do the equivalent for your window manager. +- Put swob.sh on your PATH, or edit the sway(5) config snippet to point to its + exact location. +- Copy the sway config snippet into your own sway config file, or source it + from that file, or copy it into /etc/sway/config.d -- obviously if you + aren't on sway, do the equivalent for your window manager. +- Copy swob-wob.ini to one of: `$XDG_CONFIG_DIR`/swob/wob.ini, + ~/.config/swob/wob.ini, /etc/swob/wob.ini Copying ------- Copyright © 2024 The Remph <lhr@disroot.org> -This file is free software; the Remph gives unlimited permission to copy -and/or distribute it, with or without modification, as long as this -notice is preserved. +These files are free software; the Remph gives unlimited permission to copy +and/or distribute them, with or without modification, as long as this notice +is preserved. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, to the extent permitted by law; without even the diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..4ea365f --- /dev/null +++ b/install.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -ex +install -m 644 -Dt "$DESTDIR"/etc/sway/config.d/ swob-swayconfig +install -D -m 644 swob-wob.ini "$DESTDIR"/etc/swob/wob.ini +install -Dt "$DESTDIR"/usr/bin swob.sh diff --git a/swob-wob.ini b/swob-wob.ini new file mode 100644 index 0000000..a3a37b8 --- /dev/null +++ b/swob-wob.ini @@ -0,0 +1,8 @@ +[style.volume] +background_color = 000000 + +[style.mute] +background_color = af0000 + +[style.brightness] +background_color = a89800 @@ -3,49 +3,48 @@ # SPDX-License-Identifier: FSFULLRWD wobfifo=${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}/wob +wobini= wobini_istemp= readonly wobfifo -set -o pipefail -e # `set -e' comes after readonly and pipefail, they +set -o pipefail -efmu # `set -e' comes after readonly and pipefail, they # aren't vital enough to kill the script for -start_wob() { - if test -e "$wobfifo"; then - return # Already started - fi - - # temporary fifo (call mkfifo(1) asap to minimise possibility of races) - # TODO: should this be in C, so we can call mkfifo(2) and check for - # EEXIST, rather than using test(1)? Alternatively, there is flock(1), - # or any other IPC or SHM system - mkfifo -m600 "$wobfifo" - - default_wobini= +set_wobini() { for dir in ${XDG_CONFIG_HOME:+"$XDG_CONFIG_HOME"} ~/.config /etc; do - if test -r "$dir"/wob/wob.ini; then - default_wobini="$dir"/wob/wob.ini - break + if test -r "$dir"/swob/wob.ini; then + wobini="$dir"/swob/wob.ini + return fi done - # temporary wob.ini(5) file, to set wob colours - wobini=`mktemp` - { - # This order means that a user can change the styles in - # their own config if they like - printf '[style.mute]\nbackground_color = af0000\n\n' - cat - ${default_wobini:+"$default_wobini"} <<EOF + # fallthrough to default: temporary wob.ini(5) standin + echo >&2 "$0: warning: no swob/wob.ini found; defaulting to temporary" + wobini=`mktemp` wobini_istemp=1 + cat >$wobini <<EOF [style.volume] background_color = 000000 [style.mute] background_color = af0000 [style.brightness] background_color = a89800 - EOF - } >$wobini +} + +start_wob() { + if test -e "$wobfifo"; then + return # Already started + fi + + # temporary fifo (call mkfifo(1) asap to minimise possibility of races) + # TODO: should this be in C, so we can call mkfifo(2) and check for + # EEXIST, rather than using test(1)? Alternatively, there is flock(1), + # or any other IPC or SHM system + mkfifo -m600 "$wobfifo" + + set_wobini - # spawn wob process with temporary files + # spawn wob process with temporary file(s) ( - trap 'rm "$wobini" "$wobfifo"' 0 + trap 'rm "$wobfifo" ${wobini_istemp:+"$wobini"}' 0 # Don't `exec' wob here, else the trap won't work wob -c "$wobini" -v <$wobfifo ) & |
