mirror of
https://github.com/elenapan/dotfiles.git
synced 2025-12-26 15:14:58 +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"
|
||||
)&
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
(defwindow alarms
|
||||
(defwindow alarms [revealer-duration]
|
||||
:monitor 0
|
||||
:geometry (geometry :x 0
|
||||
; Same as sway gaps (we cannot use EWW_SCALE here)
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
(revealer
|
||||
:transition "slideleft"
|
||||
:reveal "${alarms-visible}"
|
||||
:duration "300ms"
|
||||
:duration "${revealer-duration}"
|
||||
(eventbox
|
||||
:onmiddleclick "${eww-scripts}/manage hide alarms"
|
||||
:halign "fill"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
(defwindow microphone-indicator
|
||||
(defwindow microphone-indicator [revealer-duration]
|
||||
:monitor 0
|
||||
:geometry (geometry :x 0
|
||||
; We cannot use get_env(EWW_SCALE) here
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
(revealer
|
||||
:transition "slidedown"
|
||||
:reveal "${microphone-indicator-visible}"
|
||||
:duration "200ms"
|
||||
:duration "${revealer-duration}"
|
||||
(eventbox :cursor "hand2"
|
||||
:onclick "pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||
:onmiddleclick "${eww-scripts}/manage hide microphone-indicator &"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
(defwindow mode-indicator
|
||||
(defwindow mode-indicator [revealer-duration]
|
||||
:monitor 0
|
||||
:geometry (geometry :x 0
|
||||
:y 0
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
(revealer
|
||||
:transition "slidedown"
|
||||
:reveal "${mode-indicator-visible}"
|
||||
:duration "300ms"
|
||||
:duration "${revealer-duration}"
|
||||
(eventbox
|
||||
; On click, cancel active binding mode and hide widget
|
||||
:onclick "swaymsg -q mode default & ${eww-scripts}/manage hide mode-indicator &"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
(defwindow networks
|
||||
(defwindow networks [revealer-duration]
|
||||
:monitor 0
|
||||
:geometry (geometry :x 0
|
||||
; Same as sway gaps (we cannot use EWW_SCALE here)
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
(revealer
|
||||
:transition "slideleft"
|
||||
:reveal "${networks-visible}"
|
||||
:duration "300ms"
|
||||
:duration "${revealer-duration}"
|
||||
(eventbox
|
||||
:onmiddleclick "${eww-scripts}/manage hide networks"
|
||||
:halign "fill"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
(defwindow powermenu [is-secondary]
|
||||
(defwindow powermenu [is-secondary revealer-duration]
|
||||
:monitor 0
|
||||
:geometry (geometry
|
||||
:x 0
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
(revealer
|
||||
:transition "crossfade"
|
||||
:reveal "${powermenu-visible}"
|
||||
:duration "300ms"
|
||||
:duration "${revealer-duration}"
|
||||
(eventbox
|
||||
:halign "fill"
|
||||
:valign "fill"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
(defwindow sidebar
|
||||
(defwindow sidebar [revealer-duration]
|
||||
:monitor 0
|
||||
:geometry (geometry :x 0
|
||||
:y 0
|
||||
|
|
@ -11,11 +11,9 @@
|
|||
:exclusive false
|
||||
:focusable false
|
||||
(revealer
|
||||
; Would prefer a slideright animation here but it does not work
|
||||
; https://github.com/elkowar/eww/issues/1107
|
||||
:transition "slideright"
|
||||
:reveal "${sidebar-visible}"
|
||||
:duration "300ms"
|
||||
:duration "${revealer-duration}"
|
||||
(eventbox
|
||||
:width "${300 * get_env("EWW_SCALE")}"
|
||||
:onmiddleclick "${eww-scripts}/manage hide sidebar &"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
(defwindow split-indicator
|
||||
(defwindow split-indicator [revealer-duration]
|
||||
:monitor 0
|
||||
:geometry (geometry :x 0
|
||||
:y 0
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
(revealer
|
||||
:transition "crossfade"
|
||||
:reveal "${split-indicator-visible}"
|
||||
:duration "300ms"
|
||||
:duration "${revealer-duration}"
|
||||
(eventbox
|
||||
:onclick "${eww-scripts}/manage hide split-indicator &"
|
||||
:onmiddleclick "${eww-scripts}/manage hide split-indicator &"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue