mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
improve: uniquely identify terminal apps for window rules and focus. Unify waybar behaviour to use launch-or-focus (#3389)
* improve: uniquely identify btop when launched from waybar. * align btop app id * add migration to uniquely identify btop * also add unique app ids to lazydocker and terminal editor * introduce new omarchy-launch-tui that sets class. * align all the tuis and behaviour in waybar * update migration accordingly * fixes * separate terminal from tui * fix: double setsid uswm-app -- * Standardize namespace on org.omarchy and lowercase --------- Co-authored-by: David Heinemeier Hansson <david@hey.com>
This commit is contained in:
@@ -1,13 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
screensaver_in_focus() {
|
screensaver_in_focus() {
|
||||||
hyprctl activewindow -j | jq -e '.class == "com.omarchy.Screensaver"' >/dev/null 2>&1
|
hyprctl activewindow -j | jq -e '.class == "org.omarchy.screensaver"' >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
exit_screensaver() {
|
exit_screensaver() {
|
||||||
hyprctl keyword cursor:invisible false
|
hyprctl keyword cursor:invisible false
|
||||||
pkill -x tte 2>/dev/null
|
pkill -x tte 2>/dev/null
|
||||||
pkill -f com.omarchy.Screensaver 2>/dev/null
|
pkill -f org.omarchy.screensaver 2>/dev/null
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
exec setsid uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Omarchy -e bash -c 'fastfetch; read -n 1 -s'
|
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.terminal -e bash -c 'fastfetch; read -n 1 -s'
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ omarchy-cmd-present "$EDITOR" || EDITOR=nvim
|
|||||||
|
|
||||||
case "$EDITOR" in
|
case "$EDITOR" in
|
||||||
nvim | vim | nano | micro | hx | helix)
|
nvim | vim | nano | micro | hx | helix)
|
||||||
exec setsid uwsm-app -- xdg-terminal-exec "$EDITOR" "$@"
|
exec omarchy-launch-tui "$EDITOR" "$@"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exec setsid uwsm-app -- "$EDITOR" "$@"
|
exec setsid uwsm-app -- "$EDITOR" "$@"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cmd="$*"
|
cmd="$*"
|
||||||
exec setsid uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"
|
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.terminal --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ if ! command -v tte &>/dev/null; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Exit early if screensave is already running
|
# Exit early if screensave is already running
|
||||||
pgrep -f com.omarchy.Screensaver && exit 0
|
pgrep -f org.omarchy.screensaver && exit 0
|
||||||
|
|
||||||
# Allow screensaver to be turned off but also force started
|
# Allow screensaver to be turned off but also force started
|
||||||
if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then
|
if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then
|
||||||
@@ -22,19 +22,19 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
|||||||
case $terminal in
|
case $terminal in
|
||||||
*Alacritty*)
|
*Alacritty*)
|
||||||
hyprctl dispatch exec -- \
|
hyprctl dispatch exec -- \
|
||||||
alacritty --class=com.omarchy.Screensaver \
|
alacritty --class=org.omarchy.screensaver \
|
||||||
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
|
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
|
||||||
-e omarchy-cmd-screensaver
|
-e omarchy-cmd-screensaver
|
||||||
;;
|
;;
|
||||||
*ghostty*)
|
*ghostty*)
|
||||||
hyprctl dispatch exec -- \
|
hyprctl dispatch exec -- \
|
||||||
ghostty --class=com.omarchy.Screensaver \
|
ghostty --class=org.omarchy.screensaver \
|
||||||
--font-size=18 \
|
--font-size=18 \
|
||||||
-e omarchy-cmd-screensaver
|
-e omarchy-cmd-screensaver
|
||||||
;;
|
;;
|
||||||
*kitty*)
|
*kitty*)
|
||||||
hyprctl dispatch exec -- \
|
hyprctl dispatch exec -- \
|
||||||
kitty --class=com.omarchy.Screensaver \
|
kitty --class=org.omarchy.screensaver \
|
||||||
--override font_size=18 \
|
--override font_size=18 \
|
||||||
-e omarchy-cmd-screensaver
|
-e omarchy-cmd-screensaver
|
||||||
;;
|
;;
|
||||||
|
|||||||
3
bin/omarchy-launch-tui
Executable file
3
bin/omarchy-launch-tui
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.$(basename $1) -e "$1" "${@:2}"
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
exec setsid omarchy-launch-or-focus com.omarchy.Impala "uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Impala -e impala"
|
exec setsid omarchy-launch-or-focus org.omarchy.impala "omarchy-launch-tui impala"
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ if pgrep -x "1password" >/dev/null; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Avoid running screensaver when locked
|
# Avoid running screensaver when locked
|
||||||
pkill -f com.omarchy.Screensaver
|
pkill -f org.omarchy.screensaver
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
terminal() {
|
terminal() {
|
||||||
xdg-terminal-exec --app-id=com.omarchy.Omarchy "$@"
|
xdg-terminal-exec --app-id=org.omarchy.terminal "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
present_terminal() {
|
present_terminal() {
|
||||||
@@ -173,7 +173,7 @@ show_setup_menu() {
|
|||||||
options="$options\n Defaults\n DNS\n Security\n Config"
|
options="$options\n Defaults\n DNS\n Security\n Config"
|
||||||
|
|
||||||
case $(menu "Setup" "$options") in
|
case $(menu "Setup" "$options") in
|
||||||
*Audio*) xdg-terminal-exec --app-id=com.omarchy.Wiremix -e wiremix ;;
|
*Audio*) omarchy-launch-or-focus org.omarchy.wiremix "omarchy-launch-tui wiremix" ;;
|
||||||
*Wifi*)
|
*Wifi*)
|
||||||
rfkill unblock wifi
|
rfkill unblock wifi
|
||||||
omarchy-launch-wifi
|
omarchy-launch-wifi
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ bindd = SUPER SHIFT, B, Browser, exec, $browser
|
|||||||
bindd = SUPER SHIFT ALT, B, Browser (private), exec, $browser --private
|
bindd = SUPER SHIFT ALT, B, Browser (private), exec, $browser --private
|
||||||
bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify
|
bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify
|
||||||
bindd = SUPER SHIFT, N, Editor, exec, omarchy-launch-editor
|
bindd = SUPER SHIFT, N, Editor, exec, omarchy-launch-editor
|
||||||
bindd = SUPER SHIFT, T, Activity, exec, $terminal -e btop
|
bindd = SUPER SHIFT, T, Activity, exec, omarchy-launch-tui btop
|
||||||
bindd = SUPER SHIFT, D, Docker, exec, $terminal -e lazydocker
|
bindd = SUPER SHIFT, D, Docker, exec, omarchy-launch-tui lazydocker
|
||||||
bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus signal "uwsm-app -- signal-desktop"
|
bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus signal "uwsm-app -- signal-desktop"
|
||||||
bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus obsidian "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
|
bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus obsidian "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
|
||||||
bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime
|
bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
"cpu": {
|
"cpu": {
|
||||||
"interval": 5,
|
"interval": 5,
|
||||||
"format": "",
|
"format": "",
|
||||||
"on-click": "xdg-terminal-exec btop"
|
"on-click": "omarchy-launch-or-focus org.omarchy.btop \"omarchy-launch-tui btop\""
|
||||||
},
|
},
|
||||||
"clock": {
|
"clock": {
|
||||||
"format": "{:L%A %H:%M}",
|
"format": "{:L%A %H:%M}",
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
},
|
},
|
||||||
"pulseaudio": {
|
"pulseaudio": {
|
||||||
"format": "{icon}",
|
"format": "{icon}",
|
||||||
"on-click": "xdg-terminal-exec --app-id=com.omarchy.Wiremix -e wiremix",
|
"on-click": "omarchy-launch-or-focus org.omarchy.wiremix \"omarchy-launch-tui wiremix\"",
|
||||||
"on-click-right": "pamixer -t",
|
"on-click-right": "pamixer -t",
|
||||||
"tooltip-format": "Playing at {volume}%",
|
"tooltip-format": "Playing at {volume}%",
|
||||||
"scroll-step": 5,
|
"scroll-step": 5,
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ windowrule = float, tag:floating-window
|
|||||||
windowrule = center, tag:floating-window
|
windowrule = center, tag:floating-window
|
||||||
windowrule = size 875 600, tag:floating-window
|
windowrule = size 875 600, tag:floating-window
|
||||||
|
|
||||||
windowrule = tag +floating-window, class:(blueberry.py|com.omarchy.Impala|com.omarchy.Wiremix|com.omarchy.Omarchy|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
|
windowrule = tag +floating-window, class:(blueberry.py|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.terminal|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
|
||||||
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
||||||
windowrule = float, class:org.gnome.Calculator
|
windowrule = float, class:org.gnome.Calculator
|
||||||
|
|
||||||
# Fullscreen screensaver
|
# Fullscreen screensaver
|
||||||
windowrule = fullscreen, class:com.omarchy.Screensaver
|
windowrule = fullscreen, class:org.omarchy.screensaver
|
||||||
|
|
||||||
# No transparency on media windows
|
# No transparency on media windows
|
||||||
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
|
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
|
||||||
|
|||||||
8
migrations/1763386443.sh
Normal file
8
migrations/1763386443.sh
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
echo "Uniquely identify terminal apps with custom app-ids using omarchy-launch-tui"
|
||||||
|
|
||||||
|
# Replace terminal -e calls with omarchy-launch-tui in bindings
|
||||||
|
sed -i 's/\$terminal -e \([^ ]*\)/omarchy-launch-tui \1/g' ~/.config/hypr/bindings.conf
|
||||||
|
|
||||||
|
# Update waybar to use omarchy-launch-or-focus with omarchy-launch-tui for TUI apps
|
||||||
|
sed -i 's/xdg-terminal-exec btop/omarchy-launch-or-focus org.omarchy.btop "omarchy-launch-tui btop"/' ~/.config/waybar/config.jsonc
|
||||||
|
sed -i 's/xdg-terminal-exec --app-id=com\.omarchy\.Wiremix -e wiremix/omarchy-launch-or-focus org.omarchy.wiremix "omarchy-launch-tui wiremix"/' ~/.config/waybar/config.jsonc
|
||||||
Reference in New Issue
Block a user