feat(reminders): dynamically adjust popup width based on content
- Calculate the maximum line width of the reminders output in `show_reminders.sh` - Pass the calculated width and a temporary file to the tmux popup in `main.sh` - Ensure popup width is at least 40 and does not exceed the tmux window width - Improve display by preventing horizontal scrolling and better fitting content
This commit is contained in:
@@ -27,7 +27,38 @@ function get_datetime {
|
|||||||
function show_reminders {
|
function show_reminders {
|
||||||
local datetime
|
local datetime
|
||||||
datetime=$(get_datetime)
|
datetime=$(get_datetime)
|
||||||
tmux display-popup -T "#[align=centre]Today's Reminders - $datetime" -w 60% -h 60% -x C -y C -E -- "$CURRENT_DIR/show_reminders.sh"
|
|
||||||
|
# Ottieni la larghezza della finestra tmux corrente
|
||||||
|
local tmux_width
|
||||||
|
tmux_width=$(tmux display-message -p '#{window_width}')
|
||||||
|
|
||||||
|
# Esporta la larghezza per lo script
|
||||||
|
export TERM_WIDTH="$tmux_width"
|
||||||
|
|
||||||
|
# Esegui lo script per generare l'output e ottenere le informazioni
|
||||||
|
local output
|
||||||
|
output=$("$CURRENT_DIR/show_reminders.sh")
|
||||||
|
|
||||||
|
local tmp_file
|
||||||
|
local max_line_width
|
||||||
|
tmp_file=$(echo "$output" | head -n1)
|
||||||
|
max_line_width=$(echo "$output" | tail -n1)
|
||||||
|
|
||||||
|
# Imposta larghezza minima 40, massima = larghezza finestra tmux
|
||||||
|
local popup_width
|
||||||
|
if [ -z "$max_line_width" ] || [ "$max_line_width" -lt 40 ]; then
|
||||||
|
popup_width=40
|
||||||
|
elif [ "$max_line_width" -gt "$tmux_width" ]; then
|
||||||
|
popup_width="99%"
|
||||||
|
else
|
||||||
|
# Aggiungi qualche carattere per margini
|
||||||
|
popup_width=$((max_line_width + 4))
|
||||||
|
if [ "$popup_width" -gt "$tmux_width" ]; then
|
||||||
|
popup_width="$tmux_width"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
tmux display-popup -T "#[align=centre]Today's Reminders - $datetime" -w "$popup_width" -h 60% -x C -y C -E -- "$CURRENT_DIR/show_reminders.sh" "$tmp_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_calendar {
|
function show_calendar {
|
||||||
|
|||||||
@@ -1,5 +1,25 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
export LESSCHARSET=utf-8
|
export LESSCHARSET=utf-8
|
||||||
TERM_WIDTH=$(tput cols)
|
unset LESS
|
||||||
rem -m -b1 -gaa -q -aa -iinclude_todo=1 -@2 -w"$TERM_WIDTH" | less -r -S +g --status-line -PM"Riga %lt/%L (%Pb\%)"
|
|
||||||
|
# Se viene passato un file temporaneo come argomento, mostra il contenuto
|
||||||
|
if [ -n "$1" ] && [ -f "$1" ]; then
|
||||||
|
less -f -r -S +g --status-line -PM"Riga %lt/%L (%Pb\%)" "$1"
|
||||||
|
rm -f "$1"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Altrimenti, genera l'output e calcola la larghezza
|
||||||
|
TERM_WIDTH=${TERM_WIDTH:-$(tput cols)}
|
||||||
|
TMP_FILE=$(mktemp)
|
||||||
|
|
||||||
|
# Cattura l'output di rem
|
||||||
|
rem -m -b1 -gaa -q -aa -iinclude_todo=1 -@2 -w"$TERM_WIDTH" >"$TMP_FILE"
|
||||||
|
|
||||||
|
# Calcola la lunghezza massima delle righe
|
||||||
|
MAX_LINE_WIDTH=$(awk '{ if (length > max) max = length } END { print max }' "$TMP_FILE")
|
||||||
|
|
||||||
|
# Restituisce il file temporaneo e la larghezza massima
|
||||||
|
echo "$TMP_FILE"
|
||||||
|
echo "$MAX_LINE_WIDTH"
|
||||||
|
|||||||
Reference in New Issue
Block a user