commit
87802c84f3
@ -0,0 +1,161 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
thrd_ctrl () { |
||||||
|
while true; do |
||||||
|
if ! kill -0 "$1" 2>/dev/null; then |
||||||
|
printf "Parent process died, I'm going to die too...\n" |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
sleep 1 |
||||||
|
done > "$NPIPE_IN" |
||||||
|
} |
||||||
|
|
||||||
|
term_process () { |
||||||
|
if kill -0 "$PID_CTRL" 2>/dev/null; then |
||||||
|
printf "Killing child process \"thrd_ctrl\" (PID %s)...\n" "$PID_CTRL" |
||||||
|
kill "$PID_CTRL" |
||||||
|
fi |
||||||
|
#printf "Removing created FIFOs...\n" |
||||||
|
#rm "$NPIPE_IN" |
||||||
|
printf "Terminating the program...\n" |
||||||
|
exit 0 |
||||||
|
} |
||||||
|
|
||||||
|
trap_ctrlc () { |
||||||
|
printf "Termination signal by the user (CTLR+C) detected...\n" |
||||||
|
term_process |
||||||
|
} |
||||||
|
|
||||||
|
trap_sigterm () { |
||||||
|
printf "Termination signal detected...\n" |
||||||
|
term_process |
||||||
|
} |
||||||
|
|
||||||
|
trap "trap_ctrlc" 2 |
||||||
|
trap "trap_sigterm" 15 |
||||||
|
|
||||||
|
_pipe_dir="${XDG_RUNTIME_DIR:-/tmp/$(id -u)-runtime}/acejuice" |
||||||
|
mkdir -p "$_pipe_dir" |
||||||
|
NPIPE_IN="$_pipe_dir/main.sock" |
||||||
|
unset _pipe_dir |
||||||
|
|
||||||
|
mkfifo "$NPIPE_IN" 2> /dev/null || printf "fifo already present\n" |
||||||
|
|
||||||
|
PID_SELF=$$ |
||||||
|
|
||||||
|
thrd_ctrl $PID_SELF & |
||||||
|
PID_CTRL=$! |
||||||
|
|
||||||
|
_monitor_list="" |
||||||
|
_workspaces="..." |
||||||
|
_date="..." |
||||||
|
_battery="..." |
||||||
|
_cputemp="..." |
||||||
|
_network="..." |
||||||
|
_audio="..." |
||||||
|
|
||||||
|
|
||||||
|
__print_bar() { |
||||||
|
for _monitor_name in $_monitor_list; do |
||||||
|
printf "%%{Sn%s}%%{l}%s%%{c}%s%%{r}%s %s %s %s" "$_monitor_name" "$_workspaces" "$_date" "$_cputemp" "$_network" "$_audio" "$_battery" |
||||||
|
done |
||||||
|
printf "\n" |
||||||
|
} |
||||||
|
|
||||||
|
msg_cmd_colon () { |
||||||
|
printf "CMD: \"%s\"\nCONTENT: \"%s\"\n" "$1" "$2" |
||||||
|
case "$1" in |
||||||
|
":SET") |
||||||
|
case "$2" in |
||||||
|
[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]" "*) |
||||||
|
widget_content=${2##[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9] } |
||||||
|
printf "WIDGET NAME: \"%s\"\nWIDGET CONTENT: \"%s\"\n" "${2% "$widget_content"}" "$widget_content" |
||||||
|
case "${2% "$widget_content"}" in |
||||||
|
"work") |
||||||
|
_workspaces="${widget_content}" |
||||||
|
;; |
||||||
|
"date") |
||||||
|
_date="${widget_content}" |
||||||
|
;; |
||||||
|
"cput") |
||||||
|
_cputemp="${widget_content}" |
||||||
|
;; |
||||||
|
"netw") |
||||||
|
_network="${widget_content}" |
||||||
|
;; |
||||||
|
"audi") |
||||||
|
_audio="${widget_content}" |
||||||
|
;; |
||||||
|
"batt") |
||||||
|
_battery="${widget_content}" |
||||||
|
;; |
||||||
|
*) |
||||||
|
: |
||||||
|
;; |
||||||
|
esac |
||||||
|
;; |
||||||
|
*) |
||||||
|
: |
||||||
|
;; |
||||||
|
esac |
||||||
|
;; |
||||||
|
":UST") |
||||||
|
case "$2" in |
||||||
|
"work") |
||||||
|
_workspaces="" |
||||||
|
;; |
||||||
|
"date") |
||||||
|
_date="" |
||||||
|
;; |
||||||
|
"cput") |
||||||
|
_cputemp="" |
||||||
|
;; |
||||||
|
"netw") |
||||||
|
_network="" |
||||||
|
;; |
||||||
|
"audi") |
||||||
|
_audio="" |
||||||
|
;; |
||||||
|
"batt") |
||||||
|
_battery="" |
||||||
|
;; |
||||||
|
*) |
||||||
|
: |
||||||
|
;; |
||||||
|
esac |
||||||
|
;; |
||||||
|
":MON") |
||||||
|
case "$2" in |
||||||
|
"LIST "[A-Za-z0-9]*) |
||||||
|
_monitor_list=${2##LIST } |
||||||
|
printf "MONITOR LIST: \"%s\"\n" "$_monitor_list" |
||||||
|
;; |
||||||
|
"ADD") |
||||||
|
: |
||||||
|
;; |
||||||
|
"DEL") |
||||||
|
: |
||||||
|
;; |
||||||
|
*) |
||||||
|
: |
||||||
|
;; |
||||||
|
esac |
||||||
|
;; |
||||||
|
*) |
||||||
|
: |
||||||
|
;; |
||||||
|
esac |
||||||
|
__print_bar |
||||||
|
} |
||||||
|
|
||||||
|
while read -r line; do |
||||||
|
case "$line" in |
||||||
|
:[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]" "*) |
||||||
|
content=${line##:[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9] } |
||||||
|
msg_cmd_colon "${line% "$content"}" "${content}" |
||||||
|
;; |
||||||
|
*) |
||||||
|
printf "%s\n" "$line" |
||||||
|
;; |
||||||
|
esac |
||||||
|
done < "$NPIPE_IN" |
@ -0,0 +1,35 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
set -e |
||||||
|
|
||||||
|
__send_cmd () { |
||||||
|
printf "%s %s\n" "$1" "$2" > "$NPIPE_OUT" |
||||||
|
} |
||||||
|
|
||||||
|
_pipe_dir="${XDG_RUNTIME_DIR:-/tmp/$(id -u)-runtime}/acejuice" |
||||||
|
mkdir -p "$_pipe_dir" |
||||||
|
NPIPE_OUT="$_pipe_dir/main.sock" |
||||||
|
unset _pipe_dir |
||||||
|
|
||||||
|
mkfifo "$NPIPE_IN" 2> /dev/null || printf "fifo already present\n" |
||||||
|
|
||||||
|
cycle=0 |
||||||
|
|
||||||
|
while true; do |
||||||
|
if [ $((cycle%4)) = 0 ]; then |
||||||
|
__send_cmd ":SET netw" "$($HOME/.config/screen/bin/netinfo.sh --color lemonbar --icon nerd)" |
||||||
|
__send_cmd ":SET cput" "$($HOME/.config/screen/bin/cputemp.sh --color lemonbar --icon nerd --unit)" |
||||||
|
fi |
||||||
|
if [ $((cycle%4)) = 0 ]; then |
||||||
|
__send_cmd ":SET date" "$(date +'%a %d %b %H:%M')" |
||||||
|
fi |
||||||
|
if [ $((cycle%16)) = 0 ]; then |
||||||
|
__send_cmd ":SET batt" "$($HOME/.config/screen/bin/battery.sh --color lemonbar --unit --icon nerd --symbols ascii)" |
||||||
|
fi |
||||||
|
|
||||||
|
cycle=$((cycle+1)) |
||||||
|
if [ $cycle = 1024 ]; then |
||||||
|
cycle=0 |
||||||
|
fi |
||||||
|
sleep 1 |
||||||
|
done |
@ -0,0 +1,3 @@ |
|||||||
|
^/README.* |
||||||
|
^/LICENSE.* |
||||||
|
^/COPYING |
@ -0,0 +1,21 @@ |
|||||||
|
MIT License |
||||||
|
|
||||||
|
Copyright (c) 2022 Meliurwen |
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
of this software and associated documentation files (the "Software"), to deal |
||||||
|
in the Software without restriction, including without limitation the rights |
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||||
|
copies of the Software, and to permit persons to whom the Software is |
||||||
|
furnished to do so, subject to the following conditions: |
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all |
||||||
|
copies or substantial portions of the Software. |
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||||
|
SOFTWARE. |
Loading…
Reference in new issue