Add lemonbar config and block scripts
This commit is contained in:
+7
-6
@@ -13,6 +13,7 @@ set $mod2 Mod1
|
|||||||
floating_modifier $mod
|
floating_modifier $mod
|
||||||
|
|
||||||
# Application startup
|
# Application startup
|
||||||
|
exec_always --no-startup-id "pkill lemonbar.sh; $HOME/.scripts/panel/lemonbar.sh &"
|
||||||
exec_always --no-startup-id $HOME/.scripts/wm/wallpaper.sh &
|
exec_always --no-startup-id $HOME/.scripts/wm/wallpaper.sh &
|
||||||
exec --no-startup-id qutebrowser
|
exec --no-startup-id qutebrowser
|
||||||
exec --no-startup-id urxvt
|
exec --no-startup-id urxvt
|
||||||
@@ -54,7 +55,7 @@ client.focused_inactive $bgcolor_inactive $bgcolor_inactive $darkwhite $dar
|
|||||||
client.urgent $bgcolor_urgent $bgcolor_urgent $white $darkgreen
|
client.urgent $bgcolor_urgent $bgcolor_urgent $white $darkgreen
|
||||||
|
|
||||||
# Font
|
# Font
|
||||||
font pango:DejaVu Sans, FontAwesome5Free Solid, FontAwesome5Brands 8
|
font pango:DejaVu Sans 8
|
||||||
|
|
||||||
##--- Bindings ---##
|
##--- Bindings ---##
|
||||||
|
|
||||||
@@ -161,8 +162,8 @@ for_window [class="QtBank"] floating enable
|
|||||||
#--- Function key bindings ---#
|
#--- Function key bindings ---#
|
||||||
|
|
||||||
# Screen brightness
|
# Screen brightness
|
||||||
bindsym $mod+F3 exec brightnessctl -q s +10% && pkill -RTMIN+2 i3blocks
|
bindsym $mod+F3 exec --no-startup-id "brightnessctl -q s +10%; $HOME/.scripts/panel/brightness.sh"
|
||||||
bindsym $mod+F2 exec brightnessctl -q s 10%- && pkill -RTMIN+2 i3blocks
|
bindsym $mod+F2 exec --no-startup-id "brightnessctl -q s 10%-; $HOME/.scripts/panel/brightness.sh"
|
||||||
|
|
||||||
#--- Arrow key bindings ---#
|
#--- Arrow key bindings ---#
|
||||||
|
|
||||||
@@ -191,9 +192,9 @@ bindsym --release Shift+Print exec scrot -s -e "mv \$f "$capture # Selection
|
|||||||
bindsym --release $mod+Print exec scrot -u -e "mv \$f "$capture # Focused window
|
bindsym --release $mod+Print exec scrot -u -e "mv \$f "$capture # Focused window
|
||||||
|
|
||||||
# Volume
|
# Volume
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id mediacontrol.sh up 5
|
bindsym XF86AudioRaiseVolume exec --no-startup-id "mediacontrol.sh up 5; $HOME/.scripts/panel/volume.sh"
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id mediacontrol.sh down 5
|
bindsym XF86AudioLowerVolume exec --no-startup-id "mediacontrol.sh down 5; $HOME/.scripts/panel/volume.sh"
|
||||||
bindsym XF86AudioMute exec --no-startup-id mediacontrol.sh toggle
|
bindsym XF86AudioMute exec --no-startup-id "mediacontrol.sh toggle; $HOME/.scripts/panel/volume.sh"
|
||||||
|
|
||||||
# Touchscreen toggle
|
# Touchscreen toggle
|
||||||
bindsym XF86HomePage exec --no-startup-id touchscreen.sh
|
bindsym XF86HomePage exec --no-startup-id touchscreen.sh
|
||||||
|
|||||||
Executable
+39
@@ -0,0 +1,39 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
BAT_INFO=${BLOCK_INSTANCE:-"$(acpi -b | grep ': [^Unknown]')"}
|
||||||
|
|
||||||
|
CAPACITY=$(echo $BAT_INFO | awk '{ print int($4) }')
|
||||||
|
TIME="$(echo $BAT_INFO | awk '{ print substr($5, 0, length($5) - 3) }')"
|
||||||
|
CHARACTER=":"
|
||||||
|
|
||||||
|
if [ "$TIME" != "" ] && [ "${TIME#*$CHARACTER}" != "$TIME" ]; then
|
||||||
|
TIME=" ($TIME)"
|
||||||
|
else
|
||||||
|
TIME=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
COLOR="-"
|
||||||
|
if [ "$(echo $BAT_INFO | awk '{ print $6 }')" = "remaining" ]; then
|
||||||
|
if [ "$CAPACITY" -ge "80" ]; then
|
||||||
|
ICON=""
|
||||||
|
elif [ "$CAPACITY" -ge "60" ]; then
|
||||||
|
ICON=""
|
||||||
|
elif [ "$CAPACITY" -ge "40" ]; then
|
||||||
|
ICON=""
|
||||||
|
elif [ "$CAPACITY" -ge "20" ]; then
|
||||||
|
ICON=""
|
||||||
|
else
|
||||||
|
ICON=""
|
||||||
|
COLOR="$COLOR9"
|
||||||
|
|
||||||
|
notify-send -u critical -r 1 -t 30000 "Battery critically low!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$CAPACITY" -ge "95" ]; then
|
||||||
|
notify-send -u low -r 1 "You should probably unplug."
|
||||||
|
fi
|
||||||
|
|
||||||
|
ICON=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "%s\n" "battery%{F$COLOR}$ICON $CAPACITY%$TIME%{F-}"
|
||||||
Executable
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Right click, scroll up, scroll down
|
||||||
|
R="A3:brightnessctl -q s 30%; $0:"
|
||||||
|
U="A4:brightnessctl -q s +10%; $0:"
|
||||||
|
D="A5:brightnessctl -q s 10%-; $0:"
|
||||||
|
|
||||||
|
PERCENTAGE=$(brightnessctl \
|
||||||
|
| awk '/\([0-9]+%\)/ { print substr($4, 2, length($4) - 3) }')
|
||||||
|
if [ "$PERCENTAGE" -ge "75" ]; then
|
||||||
|
ICON="" # f111
|
||||||
|
elif [ "$PERCENTAGE" -ge "25" ]; then
|
||||||
|
ICON="" # f042
|
||||||
|
else
|
||||||
|
ICON="" # f1ce
|
||||||
|
# ICON="" # f111
|
||||||
|
fi
|
||||||
|
|
||||||
|
INPUT="%{$R}%{$U}%{$D}"
|
||||||
|
END="%{A}%{A}%{A}"
|
||||||
|
PIPE="$($(dirname $0)/lemonbar.sh getpipe)"
|
||||||
|
|
||||||
|
printf "%s\n" "brightness$INPUT$ICON $PERCENTAGE%$END" > "$PIPE" &
|
||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
ICON=""
|
||||||
|
WIRED="${1:-eth0}"
|
||||||
|
|
||||||
|
COLOR="-"
|
||||||
|
if [ ! -d /sys/class/net/${WIRED} ] ||
|
||||||
|
[ "$(cat /sys/class/net/$WIRED/operstate)" = 'down' ] ||
|
||||||
|
[ "$(ip a | grep $WIRED | awk '/inet / {print $2}')" = "" ]; then
|
||||||
|
COLOR="$COLOR7"
|
||||||
|
else
|
||||||
|
COLOR="$COLOR15"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "%s\n" "iface%{F$COLOR}$ICON%{F-}"
|
||||||
Executable
+124
@@ -0,0 +1,124 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PIPE="/tmp/lemonbar_pipe"
|
||||||
|
PANEL="lemonbar_panel"
|
||||||
|
|
||||||
|
title() {
|
||||||
|
# Grabs focused window's title
|
||||||
|
ID="$(printf "%s" "$1" | awk '{print $5}')"
|
||||||
|
if [ "$ID" == "0x0" ]; then
|
||||||
|
TITLE=""
|
||||||
|
else
|
||||||
|
TITLE="$(xprop -id "$ID" WM_NAME \
|
||||||
|
| awk '{$1=$2=""; print substr($0, 4, length($0) - 4)}')"
|
||||||
|
fi
|
||||||
|
printf "%s\n" "title$TITLE"
|
||||||
|
|
||||||
|
# Grabs focused window's title
|
||||||
|
# TITLE=$(xdotool getactivewindow getwindowname 2> /dev/null)
|
||||||
|
# printf "%s\n" "title$TITLE"
|
||||||
|
}
|
||||||
|
|
||||||
|
clock() {
|
||||||
|
# Grabs date in 11:59 A/PM format
|
||||||
|
DATETIME=$(date "+%I:%M %p")
|
||||||
|
printf "%s\n" "clock $DATETIME"
|
||||||
|
}
|
||||||
|
|
||||||
|
bar() {
|
||||||
|
lemonbar \
|
||||||
|
-a 20 -g x38 -n "$PANEL" \
|
||||||
|
-f "DejaVu Sans-8" \
|
||||||
|
-f "FontAwesome5Free Solid-8" \
|
||||||
|
-f "FontAwesome5Free Regular-8" \
|
||||||
|
-f "FontAwesome5 Brands-8" \
|
||||||
|
-B "$BGCOLOR_INACTIVE" -F "$COLOR15"
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
# Exit if panel is already running
|
||||||
|
if [ "$(pgrep lemonbar | awk 'END {print FNR}')" -gt "2" ]; then
|
||||||
|
printf "%s\n" "The panel is already running." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Trap all subshells
|
||||||
|
trap 'trap - TERM; kill 0' INT TERM QUIT EXIT
|
||||||
|
|
||||||
|
# Create named pipe
|
||||||
|
[ -e "$PIPE" ] && rm "$PIPE"
|
||||||
|
mkfifo "$PIPE"
|
||||||
|
|
||||||
|
# Directory of this script
|
||||||
|
DIR="$(dirname "$0")"
|
||||||
|
|
||||||
|
# Setup workspaces with xprop events
|
||||||
|
xprop -root -spy _NET_CURRENT_DESKTOP | while read -r line; do
|
||||||
|
"$DIR"/workspaces.sh
|
||||||
|
done > "$PIPE" &
|
||||||
|
|
||||||
|
# Setup window title with xprop events
|
||||||
|
xprop -root -spy _NET_ACTIVE_WINDOW | while read -r line; do
|
||||||
|
title "$line"
|
||||||
|
done > "$PIPE" &
|
||||||
|
|
||||||
|
# Setup interrupt blocks
|
||||||
|
"$DIR"/volume.sh
|
||||||
|
"$DIR"/brightness.sh
|
||||||
|
|
||||||
|
# Setup block timers
|
||||||
|
while :; do "$DIR"/wifi.sh; sleep 10; done > "$PIPE" &
|
||||||
|
while :; do "$DIR"/iface.sh; sleep 10; done > "$PIPE" &
|
||||||
|
while :; do "$DIR"/battery.sh; sleep 30; done > "$PIPE" &
|
||||||
|
while :; do clock; sleep 5; done > "$PIPE" &
|
||||||
|
|
||||||
|
while read -r line ; do
|
||||||
|
case $line in
|
||||||
|
workspaces*)
|
||||||
|
workspaces=${line#workspaces}
|
||||||
|
;;
|
||||||
|
title*)
|
||||||
|
title=${line#title}
|
||||||
|
;;
|
||||||
|
volume*)
|
||||||
|
volume=${line#volume}
|
||||||
|
;;
|
||||||
|
brightness*)
|
||||||
|
brightness=${line#brightness}
|
||||||
|
;;
|
||||||
|
wifi*)
|
||||||
|
wifi=${line#wifi}
|
||||||
|
;;
|
||||||
|
iface*)
|
||||||
|
iface=${line#iface}
|
||||||
|
;;
|
||||||
|
battery*)
|
||||||
|
battery=${line#battery}
|
||||||
|
;;
|
||||||
|
clock*)
|
||||||
|
clock=${line#clock}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
printf "%s\n" "%{l}$workspaces%{c}$title%{r}$volume $brightness $wifi $iface $battery $clock "
|
||||||
|
done < "$PIPE" | bar | sh
|
||||||
|
|
||||||
|
wait
|
||||||
|
}
|
||||||
|
|
||||||
|
getpipe() {
|
||||||
|
printf "%s" "$PIPE"
|
||||||
|
}
|
||||||
|
|
||||||
|
if type "$1" 2> /dev/null | grep -q "function"; then
|
||||||
|
"$@"
|
||||||
|
else
|
||||||
|
start
|
||||||
|
fi
|
||||||
|
|
||||||
|
#@Todo:
|
||||||
|
# v lemonbar.sh get_pipe() {}
|
||||||
|
# v implement in workspaces
|
||||||
|
# v rewrite workspaces getter
|
||||||
|
#
|
||||||
|
# v pipes in volume en brightness widget
|
||||||
|
# - i3 bindings
|
||||||
Executable
+35
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
MEDIACONTROL="$HOME/.scripts/mediacontrol.sh"
|
||||||
|
|
||||||
|
# Left click, scroll click, right click, scroll up and scroll down
|
||||||
|
L="A1:pavucontrol:"
|
||||||
|
S="A2:$MEDIACONTROL set 0; $0:"
|
||||||
|
R="A3:$MEDIACONTROL toggle; $0:"
|
||||||
|
U="A4:$MEDIACONTROL up 5; $0:"
|
||||||
|
D="A5:$MEDIACONTROL down 5; $0:"
|
||||||
|
|
||||||
|
VOLUME="$($MEDIACONTROL getvolume)"
|
||||||
|
|
||||||
|
COLOR="-"
|
||||||
|
if [ "$($MEDIACONTROL getmute)" = "1" ]; then
|
||||||
|
COLOR="$COLOR7"
|
||||||
|
|
||||||
|
SYMBOL=""
|
||||||
|
else
|
||||||
|
COLOR="$COLOR15"
|
||||||
|
|
||||||
|
if [ "$VOLUME" -ge "50" ]; then
|
||||||
|
SYMBOL=""
|
||||||
|
elif [ "$VOLUME" -ge "25" ]; then
|
||||||
|
SYMBOL=""
|
||||||
|
else
|
||||||
|
SYMBOL=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
INPUT="%{$L}%{$S}%{$R}%{$U}%{$D}"
|
||||||
|
END="%{A}%{A}%{A}%{A}%{A}"
|
||||||
|
PIPE="$($(dirname $0)/lemonbar.sh getpipe)"
|
||||||
|
|
||||||
|
printf "%s\n" "volume%{F$COLOR}$INPUT$SYMBOL $VOLUME%$END%{F-}" > "$PIPE" &
|
||||||
Executable
+31
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
ICON=""
|
||||||
|
WIRELESS="${1:-wlan0}"
|
||||||
|
|
||||||
|
if [ "$NOTIFY" = "1" ]; then
|
||||||
|
SSID="$(iw dev $WIRELESS link | awk '/SSID/ { print $2 }')"
|
||||||
|
IP="$(ip a show $WIRELESS \
|
||||||
|
| awk '/inet / { print substr($2, 0, length($2) - 3) }')"
|
||||||
|
|
||||||
|
notify-send -r 3 "Wifi" "\
|
||||||
|
Interface: $WIRELESS
|
||||||
|
SSID: $SSID
|
||||||
|
IP: $IP"
|
||||||
|
else
|
||||||
|
COLOR="-"
|
||||||
|
if [ ! -d /sys/class/net/${WIRELESS}/wireless ] ||
|
||||||
|
[ "$(cat /sys/class/net/$WIRELESS/operstate)" = 'down' ]; then
|
||||||
|
|
||||||
|
COLOR="$COLOR7"
|
||||||
|
DISPLAY="$ICON"
|
||||||
|
else
|
||||||
|
QUALITY=$(grep $WIRELESS /proc/net/wireless | \
|
||||||
|
awk '{ print int($3 * 100 / 70) }')
|
||||||
|
|
||||||
|
COLOR="$COLOR15"
|
||||||
|
DISPLAY="$ICON $QUALITY%"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "%s\n" "wifi%{F$COLOR}%{A:NOTIFY=1 $0:}$DISPLAY%{A}%{F-}"
|
||||||
|
fi
|
||||||
Executable
+29
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Suppress output
|
||||||
|
NULL="> /dev/null 2>&1"
|
||||||
|
|
||||||
|
# Scroll up, scroll down
|
||||||
|
U="A4:i3-msg workspace prev_on_output $NULL:"
|
||||||
|
D="A5:i3-msg workspace next_on_output $NULL:"
|
||||||
|
|
||||||
|
# i3
|
||||||
|
# WMNAME="$(xprop -root '\t$0' _NET_WM_NAME | cut -f 2 | tr -d '"')"
|
||||||
|
|
||||||
|
CURRENT=$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3 + 1}')
|
||||||
|
WORKSPACES="$(xprop -root '\n$0\n$1\n$2\n$3\n$4\n$5\n$6\n$7\n$8\n$9' _NET_DESKTOP_NAMES \
|
||||||
|
| awk -v c="$CURRENT" -v n="$NULL" \
|
||||||
|
-v c7="$COLOR7" -v c15="$COLOR15" -v b="$BGCOLOR" -v bi="$BGCOLOR_INACTIVE" '
|
||||||
|
/".*"/ {
|
||||||
|
name = substr($0, 2, length($0) - 2);
|
||||||
|
|
||||||
|
if (c == FNR - 1)
|
||||||
|
printf "%{B%s} %s %{B%s}",
|
||||||
|
b, name, bi
|
||||||
|
else
|
||||||
|
printf "%{F%s}%{A:i3-msg workspace %s %s:} %s %{A}%{F%s}",
|
||||||
|
c7, name, n, name, c15
|
||||||
|
}
|
||||||
|
')"
|
||||||
|
|
||||||
|
printf "%s\n" "workspaces%{$U}%{$D}$WORKSPACES%{A}%{A}"
|
||||||
Reference in New Issue
Block a user