diff --git a/dunst/config/launch.sh b/dunst/config/launch.sh index b113608..8ef79d2 100755 --- a/dunst/config/launch.sh +++ b/dunst/config/launch.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh DIR=$(readlink -f $(dirname $0)) diff --git a/picom/config/launch.sh b/picom/config/launch.sh index cf04df7..b8f50d4 100755 --- a/picom/config/launch.sh +++ b/picom/config/launch.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh DIR=$(readlink -f $(dirname $0)) diff --git a/picom/config/toggle.sh b/picom/config/toggle.sh index 9aaee66..dcbaae9 100755 --- a/picom/config/toggle.sh +++ b/picom/config/toggle.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh DIR=$(readlink -f $(dirname $0)) diff --git a/suckless/config/autorandr/postswitch b/suckless/config/autorandr/postswitch index 4846cb7..d24db78 100755 --- a/suckless/config/autorandr/postswitch +++ b/suckless/config/autorandr/postswitch @@ -1,24 +1,22 @@ -#!/bin/bash +#!/bin/sh # set system dpi to the minimal dpi among all connected monitors -MIN_DPI=99999999 -# loop through all connected monitors line by line -while IFS= read -r LINE; do - WIDTH_PX=$(echo $LINE | grep -oP '\d+(?=x\d+)') - [ -z "$WIDTH_PX" ] && continue - WIDTH_MM=$(echo $LINE | grep -oP '\d+(?=mm x)') - # calculate dpi of the monitor - DPI=$(bc <<< "$WIDTH_PX*25.4/$WIDTH_MM") - # update min dpi - if [ "$DPI" -lt "$MIN_DPI" ]; then - MIN_DPI=$DPI - fi -done <<< "$(xrandr | grep ' connected')" - -# update dpi -echo setting dpi to $MIN_DPI -echo Xft.dpi: $MIN_DPI | xrdb -merge +xrandr | awk ' +BEGIN { + MIN_DPI=99999999 +} +$2 == "connected" { + if (match($0, / ([0-9]+)x([0-9]+)\+([0-9]+)\+([0-9]+) /, m1) && + match($0, / ([0-9]+)mm x ([0-9]+)mm$/, m2)) { + DPI=m1[1]*25.4/m2[1] + if (DPI < MIN_DPI) MIN_DPI=DPI + } +} +END { + printf "Xft.dpi: %i", MIN_DPI+0.5 +} +' | xrdb -merge nitrogen --restore diff --git a/suckless/config/dwm/autostart b/suckless/config/dwm/autostart index 286f345..98b36d7 100755 --- a/suckless/config/dwm/autostart +++ b/suckless/config/dwm/autostart @@ -1,4 +1,4 @@ -#!/usr/bin/env fish +#!/bin/sh # start compositor daemon $HOME/.config/picom/launch.sh @@ -7,7 +7,7 @@ $HOME/.config/picom/launch.sh $HOME/.config/dunst/launch.sh # start dwmbar daemon -$HOME/.config/dwm/dwmbar +$HOME/.config/dwm/statusbar # disable screen saver / turn off monitor if inactived for 300 secs xset s off diff --git a/suckless/config/dwm/statusbar b/suckless/config/dwm/statusbar new file mode 100755 index 0000000..53c5daa --- /dev/null +++ b/suckless/config/dwm/statusbar @@ -0,0 +1,127 @@ +#!/bin/sh + +# symbola +#export ICON_RCD=šŸŽ„ +#export ICON_MSC=ā™¬ +#export ICON_MTD=šŸ”‰ +#export ICON_VOL=šŸ”Š +#export ICON_NIC=šŸ–§ +#export ICON_WFI=šŸ“” +#export ICON_MEM=šŸ“ˆ +#export ICON_TMP=šŸŒ” +#export ICON_PLG=šŸ”Œ +#export ICON_BAT=šŸ”‹ +#export ICON_DAT=ā² + +# nerdfont +export ICON_RCD='ļ©¦' +export ICON_MSC='ļ¢†' +export ICON_MTD='ļ± ' +export ICON_VOL='ļ’… ' +export ICON_NIC='ļ›æ ' +export ICON_WFI='ļ‡« ' +export ICON_MEM='ļ‹› ' +export ICON_TMP='ļ‹‰' +export ICON_PLG='ļ‡¦ ' +export ICON_BA0='ļ‰„ ' +export ICON_BA1='ļ‰ƒ ' +export ICON_BA2='ļ‰‚ ' +export ICON_BA3='ļ‰ ' +export ICON_BA4='ļ‰€ ' +export ICON_DAT='ļ€— ' + +MPD=$(which mpc && echo yes) + +statusbar() { + + echo -n " " + + # recording + [ -f /tmp/recording.pid ] && echo -n "$ICON_RCD " + + # mpd + [ -n "$MPD" ] && mpc | awk ' + NR == 1 { + SONG = $0 + } + NR == 2 { + PLAYING = $1 + } + END { + if (PLAYING == "[playing]") + printf "%s %s ", ENVIRON["ICON_MSC"], SONG + } + ' + + # volume + amixer get Master | awk 'END { + ICO = $NF == "[off]" ? ENVIRON["ICON_MTD"] : ENVIRON["ICON_VOL"] + VOL = $(NF-1) + printf "%s %s ", ICO,substr(VOL, 2, length(VOL)-2) + }' + + # network + for NIC in /sys/class/net/e*; do + grep -q 'up' $NIC/operstate && awk '{ + printf "%s %s ",ENVIRON["ICON_NIC"],($0 >= 1000 ? $0 / 1000 "G" : $0 "M") + }' $NIC/speed + done + + # wifi + awk 'NR > 2 { + printf "%s %i%% ", ENVIRON["ICON_WFI"], $3*100/70 + }' /proc/net/wireless + + # cpu temperature + awk '{ + printf "%s %iĀ°C ", ENVIRON["ICON_TMP"], $0/1000 + }' /sys/class/thermal/thermal_zone0/temp + + # memory usage + free | awk 'NR == 2 { + printf "%s %i%% ", ENVIRON["ICON_MEM"], $3/$2*100 + }' + + # battery + if [ -f /sys/class/power_supply/BAT0/capacity ]; then + grep -q '1' /sys/class/power_supply/AC/online && export PLUGGED=yes + awk '{ + if (ENVIRON["PLUGGED"] == "yes") + ICON=ENVIRON["ICON_PLG"] + else if ($0 > 90) + ICON=ENVIRON["ICON_BA4"] + else if ($0 > 75) + ICON=ENVIRON["ICON_BA3"] + else if ($0 > 50) + ICON=ENVIRON["ICON_BA2"] + else if ($0 > 25) + ICON=ENVIRON["ICON_BA1"] + else + ICON=ENVIRON["ICON_BA0"] + printf "%s %s%% ", ICON, $0 + }' /sys/class/power_supply/BAT0/capacity + fi + + # datetime + echo -n "$ICON_DAT $(date +'%m-%d %H:%M %a') " +} + + +start() { + while :; do + ! pgrep slock 1>/dev/null && xsetroot -name "$(statusbar)" + sleep 1 + done +} + +restart() { + pkill -f 'dwmbar loop' + $0 loop & +} + +if [ "$1" = "loop" ]; then + start +else + restart +fi +