polybar: Add calendar popup on date-module click

This commit is contained in:
2020-11-02 23:25:10 +01:00
parent 4d1b540778
commit 62cd1d5b1f
4 changed files with 55 additions and 1 deletions

View File

@@ -120,7 +120,7 @@ interval = 1
date = %Y-%m-%d%
time = "%H:%M:%S "
label = "%date% - %time%"
label = ${env:POLYBAR_DATETIME}
;#################################################
;#################################################

View File

@@ -3,11 +3,13 @@
XDG_CONF="${XDG_CONFIG_HOME:-$HOME/.config}"
BASE_DIR="$XDG_CONF/polybar"
calendar_exec="st -A 0.45 -t polybar-datetime-calendar \"$BASE_DIR/scripts/calendar.sh\" &"
declare -A module_flags
module_flags=(
[battery]="$BASE_DIR/scripts/battery.sh"
[bluetooth]="$BASE_DIR/scripts/bluetooth.sh"
[bluetooth_click_left]="$BASE/scripts/bluetooth.sh --toggle &"
[datetime]="%{A1:$calendar_exec:} %date% - %time% %{A}"
[media]="$BASE_DIR/scripts/media.sh"
[powermenu]="%{A1:$XDG_CONF/rofi/powermenu.sh &:}%{T2}...%{T-}%{A}"
[vpn]="$BASE_DIR/scripts/vpn.sh"

View File

@@ -0,0 +1,46 @@
#!/bin/bash
# The separation and recursion is sadly necessary since reload is apparently
# executed in a subshell and thus using an environment variable does not work
dn="reload(\"$0\" -)"
up="reload(\"$0\" +)"
FZF_ARGS=(
--reverse
--no-sort
--no-info
--phony
--prompt=
--bind="ctrl-j:$dn,down:$dn,ctrl-k:$up,up:$up,enter:abort"
)
if [[ $# -eq 0 ]]; then
# Frontend
# Create temporary file for the counter that should be removed when exiting.
export FZF_CAL_TMP="$(mktemp)"
trap "rm -f $FZF_CAL_TMP" EXIT
echo 0 > "$FZF_CAL_TMP"
# Call fzf
cal -wm | fzf "${FZF_ARGS[@]}"
exit 0
else
# Backend
# + Add to counter, going back in time
# - Subtract from counter, going forward in time
# = Print current month without modifying the counter
[[ $1 = "+" || $1 = "-" || $1 = "=" ]] || exit 1
[[ -n $FZF_CAL_TMP ]] || exit 1
counter=$(cat "$FZF_CAL_TMP")
if [[ $1 != "=" ]]; then
# Increment or decrement counter
: $((counter$1$1))
echo $counter >"$FZF_CAL_TMP"
fi
# Print calendar
cal -wm $(date +"%m %Y" -d "$counter months ago")
fi