mirror of
https://github.com/elenapan/dotfiles.git
synced 2026-02-04 03:53:31 +08:00
eww: Set window revealer duration inside manage script only
Use window arguments to pass revealer duration to eww.
This commit is contained in:
parent
61ba0da028
commit
ea10a0e5b2
8 changed files with 34 additions and 30 deletions
|
|
@ -37,16 +37,15 @@ secondary_monitors=(
|
|||
declare -A overlay_widgets
|
||||
overlay_widgets[powermenu]=true
|
||||
|
||||
# How long to wait for the revealer animation to complete. This should be
|
||||
# match the revealer delay in the respective *.yuck files.
|
||||
declare -A revealer_delay
|
||||
revealer_delay[sidebar]=0.3
|
||||
revealer_delay[powermenu]=0.3
|
||||
revealer_delay[split-indicator]=0.3
|
||||
revealer_delay[mode-indicator]=0.3
|
||||
revealer_delay[microphone-indicator]=0.2
|
||||
revealer_delay[networks]=0.3
|
||||
revealer_delay[alarms]=0.3
|
||||
# How long to wait for the revealer animation to complete (in milliseconds).
|
||||
declare -A revealer_duration
|
||||
revealer_duration[sidebar]=300
|
||||
revealer_duration[powermenu]=300
|
||||
revealer_duration[split-indicator]=300
|
||||
revealer_duration[mode-indicator]=300
|
||||
revealer_duration[microphone-indicator]=200
|
||||
revealer_duration[networks]=300
|
||||
revealer_duration[alarms]=300
|
||||
|
||||
# Only one of these should be visible at a time
|
||||
mutually_exclusive_widgets=(
|
||||
|
|
@ -98,6 +97,11 @@ _is_secondary_monitor() {
|
|||
grep -q "^${mon}$" <<< "$(printf '%s\n' "${secondary_monitors[@]}")"
|
||||
}
|
||||
|
||||
_get_revealer_duration_seconds() {
|
||||
widget_name="$1"
|
||||
awk "BEGIN {printf \"%.3f\",${revealer_duration[$widget_name]:-0}/1000}"
|
||||
}
|
||||
|
||||
_open() {
|
||||
widget_name="$1"
|
||||
|
||||
|
|
@ -110,6 +114,10 @@ _open() {
|
|||
done
|
||||
fi
|
||||
|
||||
if [[ -v revealer_duration["$widget_name"] ]]; then
|
||||
extra_args+=" --arg revealer-duration=${revealer_duration[$widget_name]}ms"
|
||||
fi
|
||||
|
||||
# shellcheck disable=2086
|
||||
eww open-many "$widget_name" $extra_args >/dev/null
|
||||
}
|
||||
|
|
@ -215,11 +223,10 @@ _show() {
|
|||
|
||||
_hide() {
|
||||
widget_name="$1"
|
||||
delay="${revealer_delay[$widget_name]:-0}" # default delay is 0
|
||||
_pre_hide "$widget_name"
|
||||
_mode_disable "$widget_name"
|
||||
eww update "${widget_name}"-visible=false
|
||||
sleep "$delay"
|
||||
sleep "$(_get_revealer_duration_seconds "$widget_name")"
|
||||
_close "$widget_name"
|
||||
_post_hide "$widget_name"
|
||||
}
|
||||
|
|
@ -251,7 +258,6 @@ hide_all_except() {
|
|||
|
||||
for widget in "${mutually_exclusive_widgets[@]}"; do
|
||||
if [[ ! "$widget" == "$widget_except" ]] && grep -e "^${widget}:" >/dev/null <<< "$active_windows"; then
|
||||
delay="${revealer_delay[$widget]:-0}" # default delay is 0
|
||||
# We do not call the `hide` helper because we do not necessarily
|
||||
# want to mess with the sway modes.
|
||||
# The widget to be activated will set its own mode through the
|
||||
|
|
@ -272,7 +278,7 @@ hide_all_except() {
|
|||
(
|
||||
_pre_hide "$widget"
|
||||
eww update "${widget}-visible"=false
|
||||
sleep "$delay"
|
||||
sleep "$(_get_revealer_duration_seconds "$widget_name")"
|
||||
_close "$widget"
|
||||
_post_hide "$widget"
|
||||
)&
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue