From 62cd1d5b1f401b8e813701a2b97af74d6fd695e2 Mon Sep 17 00:00:00 2001 From: druckdev <63563978+druckdev@users.noreply.github.com> Date: Mon, 2 Nov 2020 23:25:10 +0100 Subject: [PATCH] polybar: Add calendar popup on date-module click --- .config/i3/config | 6 ++++ .config/polybar/config | 2 +- .config/polybar/launch.sh | 2 ++ .config/polybar/scripts/calendar.sh | 46 +++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100755 .config/polybar/scripts/calendar.sh diff --git a/.config/i3/config b/.config/i3/config index d7e9c54..d6e2292 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -187,6 +187,12 @@ for_window [class="^TelegramDesktop$"] \ scratchpad show bindsym $mod+Shift+t [class="^TelegramDesktop$"] scratchpad show +for_window [class="^$TERMINAL-256color$" title="^polybar-datetime-calendar$"] \ + floating enable, \ + border pixel 3, \ + resize set 378 300, \ + move position 1411 32 + # screenshots bindsym --release Print exec gnome-screenshot -i bindsym --release $mod+Print exec gnome-screenshot -a diff --git a/.config/polybar/config b/.config/polybar/config index 933ac17..c593670 100644 --- a/.config/polybar/config +++ b/.config/polybar/config @@ -120,7 +120,7 @@ interval = 1 date = %Y-%m-%d% time = "%H:%M:%S " -label = "%date% - %time%" +label = ${env:POLYBAR_DATETIME} ;################################################# ;################################################# diff --git a/.config/polybar/launch.sh b/.config/polybar/launch.sh index 35fb6da..fa49cd1 100755 --- a/.config/polybar/launch.sh +++ b/.config/polybar/launch.sh @@ -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" diff --git a/.config/polybar/scripts/calendar.sh b/.config/polybar/scripts/calendar.sh new file mode 100755 index 0000000..24024d9 --- /dev/null +++ b/.config/polybar/scripts/calendar.sh @@ -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