diff --git a/applications/Alacritty.desktop b/applications/Alacritty.desktop new file mode 100644 index 00000000..f53c813e --- /dev/null +++ b/applications/Alacritty.desktop @@ -0,0 +1,21 @@ +[Desktop Entry] +Type=Application +TryExec=alacritty +Exec=alacritty +Icon=Alacritty +Terminal=false +Categories=System;TerminalEmulator; +Name=Alacritty +GenericName=Terminal +Comment=A fast, cross-platform, OpenGL terminal emulator +StartupNotify=true +StartupWMClass=Alacritty +Actions=New; +X-TerminalArgExec=-e +X-TerminalArgAppId=--class= +X-TerminalArgTitle=--title= +X-TerminalArgDir=--working-directory= + +[Desktop Action New] +Name=New Terminal +Exec=alacritty diff --git a/bin/omarchy-battery-monitor b/bin/omarchy-battery-monitor index 20d6a1e1..84c42974 100755 --- a/bin/omarchy-battery-monitor +++ b/bin/omarchy-battery-monitor @@ -11,11 +11,13 @@ send_notification() { notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000 } -if [[ $BATTERY_STATE == "discharging" && $BATTERY_LEVEL -le $BATTERY_THRESHOLD ]]; then - if [[ ! -f $NOTIFICATION_FLAG ]]; then - send_notification $BATTERY_LEVEL - touch $NOTIFICATION_FLAG +if [[ -n "$BATTERY_LEVEL" && "$BATTERY_LEVEL" =~ ^[0-9]+$ ]]; then + if [[ $BATTERY_STATE == "discharging" && $BATTERY_LEVEL -le $BATTERY_THRESHOLD ]]; then + if [[ ! -f $NOTIFICATION_FLAG ]]; then + send_notification $BATTERY_LEVEL + touch $NOTIFICATION_FLAG + fi + else + rm -f $NOTIFICATION_FLAG fi -else - rm -f $NOTIFICATION_FLAG fi diff --git a/bin/omarchy-cmd-first-run b/bin/omarchy-cmd-first-run index 1031185f..c8837e00 100755 --- a/bin/omarchy-cmd-first-run +++ b/bin/omarchy-cmd-first-run @@ -14,6 +14,6 @@ if [[ -f "$FIRST_RUN_MODE" ]]; then bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh" sudo rm -f /etc/sudoers.d/first-run - bash "$OMARCHY_PATH/install/first-run/wifi.sh" bash "$OMARCHY_PATH/install/first-run/welcome.sh" + bash "$OMARCHY_PATH/install/first-run/wifi.sh" fi diff --git a/bin/omarchy-hyprland-window-pop b/bin/omarchy-hyprland-window-pop new file mode 100755 index 00000000..ac700bf5 --- /dev/null +++ b/bin/omarchy-hyprland-window-pop @@ -0,0 +1,22 @@ +#!/bin/bash + +# Toggle to pop-out a tile to stay fixed on a display basis. + +active=$(hyprctl activewindow -j) +pinned=$(echo "$active" | jq .pinned) +addr=$(echo "$active" | jq -r ".address") +[ -z "$addr" ] && { echo "No active window"; exit 0; } + +if [ "$pinned" = "true" ]; then + hyprctl -q --batch \ + "dispatch pin address:$addr;" \ + "dispatch togglefloating address:$addr;" \ + "dispatch tagwindow -pop address:$addr;" +else + hyprctl -q --batch \ + "dispatch togglefloating address:$addr;" \ + "dispatch centerwindow address:$addr;" \ + "dispatch pin address:$addr;" \ + "dispatch alterzorder top address:$addr;" \ + "dispatch tagwindow +pop address:$addr;" +fi diff --git a/bin/omarchy-install-terminal b/bin/omarchy-install-terminal index 804ccb7a..0cea1a4c 100755 --- a/bin/omarchy-install-terminal +++ b/bin/omarchy-install-terminal @@ -7,15 +7,41 @@ fi package="$1" +# Map package name to desktop entry ID +case "$package" in + alacritty) + desktop_id="Alacritty.desktop" + ;; + ghostty) + desktop_id="com.mitchellh.ghostty.desktop" + ;; + kitty) + desktop_id="kitty.desktop" + ;; + *) + echo "Unknown terminal: $package" + exit 1 + ;; +esac + # Install package if omarchy-pkg-add $package; then # Set as default terminal echo "Setting $package as new default terminal..." sed -i "/export TERMINAL=/ c\export TERMINAL=$package" ~/.config/uwsm/default - # Restart is needed for new default to take effect - echo - gum confirm "Restart to use new terminal?" && systemctl reboot --no-wall + # Copy custom desktop entry for alacritty with X-TerminalArg* keys + if [ "$package" = "alacritty" ]; then + mkdir -p ~/.local/share/applications + cp "$OMARCHY_PATH/applications/Alacritty.desktop" ~/.local/share/applications/ + fi + + # Update xdg-terminals.list to prioritize the proper terminal + cat > ~/.config/xdg-terminals.list << EOF +# Terminal emulator preference order for xdg-terminal-exec +# The first found and valid terminal will be used +$desktop_id +EOF else echo "Failed to install $package" fi diff --git a/bin/omarchy-install-vscode b/bin/omarchy-install-vscode index 9ac4cd5a..4c5b036a 100755 --- a/bin/omarchy-install-vscode +++ b/bin/omarchy-install-vscode @@ -21,4 +21,7 @@ EOF # Ensure VSC's own auto-update feature is turned off printf '{\n "update.mode": "none"\n}\n' > ~/.config/Code/User/settings.json +# Apply Omarchy theme to VSCode +omarchy-theme-set-vscode + setsid gtk-launch code diff --git a/bin/omarchy-launch-about b/bin/omarchy-launch-about index 797e340f..8505ff0e 100755 --- a/bin/omarchy-launch-about +++ b/bin/omarchy-launch-about @@ -1,3 +1,3 @@ #!/bin/bash -exec setsid uwsm-app -- alacritty --class=Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s' +exec setsid uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Omarchy -e bash -c 'fastfetch; read -n 1 -s' diff --git a/bin/omarchy-launch-editor b/bin/omarchy-launch-editor index dbe84cfd..f120001e 100755 --- a/bin/omarchy-launch-editor +++ b/bin/omarchy-launch-editor @@ -1,8 +1,10 @@ #!/bin/bash -case "${EDITOR:-nvim}" in +omarchy-cmd-present "$EDITOR" || EDITOR=nvim + +case "$EDITOR" in nvim | vim | nano | micro | hx | helix) - exec setsid uwsm-app -- "$TERMINAL" -e "$EDITOR" "$@" + exec setsid uwsm-app -- xdg-terminal-exec "$EDITOR" "$@" ;; *) exec setsid uwsm-app -- "$EDITOR" "$@" diff --git a/bin/omarchy-launch-floating-terminal-with-presentation b/bin/omarchy-launch-floating-terminal-with-presentation index b6121705..c074cbf6 100755 --- a/bin/omarchy-launch-floating-terminal-with-presentation +++ b/bin/omarchy-launch-floating-terminal-with-presentation @@ -1,4 +1,4 @@ #!/bin/bash cmd="$*" -exec setsid uwsm-app -- alacritty -o font.size=9 --class=Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done" \ No newline at end of file +exec setsid uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done" diff --git a/bin/omarchy-launch-terminal b/bin/omarchy-launch-terminal deleted file mode 100755 index 67bb2919..00000000 --- a/bin/omarchy-launch-terminal +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -exec setsid uwsm-app -- "${TERMINAL:-alacritty}" "$@" diff --git a/bin/omarchy-launch-wifi b/bin/omarchy-launch-wifi index c9a9b18b..b73cbadc 100755 --- a/bin/omarchy-launch-wifi +++ b/bin/omarchy-launch-wifi @@ -1,3 +1,3 @@ #!/bin/bash -exec setsid uwsm-app -- "$TERMINAL" --class=Impala -e impala "$@" +exec setsid uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Impala -e impala "$@" diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 10337685..b9f8501c 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -37,7 +37,7 @@ menu() { } terminal() { - alacritty --class=Omarchy -e "$@" + xdg-terminal-exec --app-id=com.omarchy.Omarchy "$@" } present_terminal() { @@ -178,7 +178,7 @@ show_setup_menu() { options="$options\n Defaults\n󰱔 DNS\n Security\n Config" case $(menu "Setup" "$options") in - *Audio*) $TERMINAL --class=Wiremix -e wiremix ;; + *Audio*) xdg-terminal-exec --app-id=com.omarchy.Wiremix -e wiremix ;; *Wifi*) rfkill unblock wifi omarchy-launch-wifi @@ -264,7 +264,7 @@ show_install_editor_menu() { *VSCode*) present_terminal omarchy-install-vscode ;; *Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;; *Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;; - *Sublime*) aur_install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;; + *Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;; *Helix*) install "Helix" "helix" ;; *Emacs*) install "Emacs" "emacs-wayland" && systemctl --user enable --now emacs.service ;; *) show_install_menu ;; @@ -287,11 +287,11 @@ show_install_ai_menu() { echo ollama ) - case $(menu "Install" "󱚤 Claude Code\n󱚤 Cursor CLI [AUR]\n󱚤 Gemini [AUR]\n󱚤 OpenAI Codex\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in + case $(menu "Install" "󱚤 Claude Code\n󱚤 Cursor CLI\n󱚤 Gemini\n󱚤 OpenAI Codex\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in *Claude*) install "Claude Code" "claude-code" ;; - *Cursor*) aur_install "Cursor CLI" "cursor-cli" ;; + *Cursor*) install "Cursor CLI" "cursor-cli" ;; *OpenAI*) install "OpenAI Codex" "openai-codex-bin" ;; - *Gemini*) aur_install "Gemini" "gemini-cli" ;; + *Gemini*) install "Gemini" "gemini-cli" ;; *Studio*) install "LM Studio" "lmstudio" ;; *Ollama*) install "Ollama" $ollama_pkg ;; *Crush*) install "Crush" "crush-bin" ;; @@ -304,7 +304,7 @@ show_install_gaming_menu() { case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft") in *Steam*) present_terminal omarchy-install-steam ;; *RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;; - *Minecraft*) aur_install_and_launch "Minecraft [AUR]" "minecraft-launcher" "minecraft-launcher" ;; + *Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;; *) show_install_menu ;; esac } diff --git a/bin/omarchy-update b/bin/omarchy-update index 32f825b1..a3a7ac47 100755 --- a/bin/omarchy-update +++ b/bin/omarchy-update @@ -4,17 +4,7 @@ set -e trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR -gum style --border normal --border-foreground 6 --padding "1 2" --margin "1 0" \ - "Ready to update Omarchy?" \ - "" \ - "• You cannot stop the update once you start!" \ - "• Make sure you're not on battery power or have sufficient charge" - -if ! gum confirm --default=false "Continue with update?"; then - echo "Update cancelled" - exit 0 -fi - +omarchy-update-confirm omarchy-snapshot create || [ $? -eq 127 ] omarchy-update-git omarchy-update-perform diff --git a/bin/omarchy-update-confirm b/bin/omarchy-update-confirm new file mode 100755 index 00000000..bc0c9f54 --- /dev/null +++ b/bin/omarchy-update-confirm @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +gum style --border normal --border-foreground 6 --padding "1 2" \ + "Ready to update Omarchy?" \ + "" \ + "• You cannot stop the update once you start!" \ + "• Make sure you're connected to power or have a full battery" + +if ! gum confirm "Continue with update?"; then + echo "Update cancelled" + exit 0 +fi diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf index 1f60098a..09c2b376 100644 --- a/config/hypr/bindings.conf +++ b/config/hypr/bindings.conf @@ -1,5 +1,5 @@ # Application bindings -$terminal = uwsm-app -- $TERMINAL +$terminal = uwsm-app -- xdg-terminal-exec $browser = omarchy-launch-browser bindd = SUPER, RETURN, Terminal, exec, $terminal --working-directory="$(omarchy-cmd-terminal-cwd)" diff --git a/config/hypr/hyprsunset.conf b/config/hypr/hyprsunset.conf index f51ff746..c4d0f8d3 100644 --- a/config/hypr/hyprsunset.conf +++ b/config/hypr/hyprsunset.conf @@ -5,7 +5,9 @@ profile { identity = true } -# Enable auto switch to nightlight: +# To enable auto switch to nightlight, set in your .config/hypr/autostart: +# exec-once = uwsm app -- hyprsunset +# and use the following: # profile { # time = 20:00 # temperature = 4000 diff --git a/config/uwsm/default b/config/uwsm/default index 72868eb7..946fbe5f 100644 --- a/config/uwsm/default +++ b/config/uwsm/default @@ -1,7 +1,7 @@ # Changes require a restart to take effect. # Install other terminals via Install > Terminal -export TERMINAL=alacritty +export TERMINAL=xdg-terminal-exec # Use code for VSCode export EDITOR=nvim diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index ed064953..6bd34ee4 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -41,7 +41,7 @@ "custom/omarchy": { "format": "\ue900", "on-click": "omarchy-menu", - "on-click-right": "omarchy-launch-terminal", + "on-click-right": "xdg-terminal-exec", "tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space" }, "custom/update": { @@ -56,7 +56,7 @@ "cpu": { "interval": 5, "format": "󰍛", - "on-click": "$TERMINAL -e btop" + "on-click": "xdg-terminal-exec btop" }, "clock": { "format": "{:L%A %H:%M}", @@ -105,7 +105,7 @@ }, "pulseaudio": { "format": "{icon}", - "on-click": "$TERMINAL --class=Wiremix -e wiremix", + "on-click": "xdg-terminal-exec --app-id=com.omarchy.Wiremix -e wiremix", "on-click-right": "pamixer -t", "tooltip-format": "Playing at {volume}%", "scroll-step": 5, diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index bca80dda..82300521 100644 --- a/default/hypr/apps/system.conf +++ b/default/hypr/apps/system.conf @@ -1,9 +1,9 @@ # Floating windows windowrule = float, tag:floating-window windowrule = center, tag:floating-window -windowrule = size 800 600, tag:floating-window +windowrule = size 875 600, tag:floating-window -windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float) +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:(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 @@ -12,3 +12,6 @@ windowrule = fullscreen, class:Screensaver # 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)$ + +# Popped window rounding +windowrule = rounding 8, tag:pop diff --git a/default/hypr/bindings/tiling-v2.conf b/default/hypr/bindings/tiling-v2.conf index 805b4b46..2589dd98 100644 --- a/default/hypr/bindings/tiling-v2.conf +++ b/default/hypr/bindings/tiling-v2.conf @@ -9,6 +9,7 @@ bindd = SUPER, T, Toggle window floating/tiling, togglefloating, bindd = SUPER, F, Full screen, fullscreen, 0 bindd = SUPER CTRL, F, Tiled full screen, fullscreenstate, 0 2 bindd = SUPER ALT, F, Full width, fullscreen, 1 +bindd = SUPER, O, Pop window out (float & pin), exec, omarchy-hyprland-window-pop # Move focus with SUPER + arrow keys bindd = SUPER, LEFT, Move window focus left, movefocus, l diff --git a/default/waybar/indicators/screen-recording.sh b/default/waybar/indicators/screen-recording.sh index bb6cf93c..80038e0e 100755 --- a/default/waybar/indicators/screen-recording.sh +++ b/default/waybar/indicators/screen-recording.sh @@ -1,6 +1,6 @@ #!/bin/bash -if pgrep -f "gpu-screen-recorder" >/dev/null; then +if pgrep -f "^gpu-screen-recorder" >/dev/null; then echo '{"text": "󰻂", "tooltip": "Stop recording", "class": "active"}' else echo '{"text": ""}' diff --git a/install/config/mimetypes.sh b/install/config/mimetypes.sh index ee662f55..ea8e1aff 100644 --- a/install/config/mimetypes.sh +++ b/install/config/mimetypes.sh @@ -36,3 +36,22 @@ xdg-mime default mpv.desktop application/ogg # Use Hey for mailto: links xdg-mime default HEY.desktop x-scheme-handler/mailto + +# Open text files with nvim +xdg-mime default nvim.desktop text/plain +xdg-mime default nvim.desktop text/english +xdg-mime default nvim.desktop text/x-makefile +xdg-mime default nvim.desktop text/x-c++hdr +xdg-mime default nvim.desktop text/x-c++src +xdg-mime default nvim.desktop text/x-chdr +xdg-mime default nvim.desktop text/x-csrc +xdg-mime default nvim.desktop text/x-java +xdg-mime default nvim.desktop text/x-moc +xdg-mime default nvim.desktop text/x-pascal +xdg-mime default nvim.desktop text/x-tcl +xdg-mime default nvim.desktop text/x-tex +xdg-mime default nvim.desktop application/x-shellscript +xdg-mime default nvim.desktop text/x-c +xdg-mime default nvim.desktop text/x-c++ +xdg-mime default nvim.desktop application/xml +xdg-mime default nvim.desktop text/xml diff --git a/install/config/theme.sh b/install/config/theme.sh index e88cc748..a4ed8b3e 100644 --- a/install/config/theme.sh +++ b/install/config/theme.sh @@ -20,9 +20,6 @@ ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current mkdir -p ~/.config/mako ln -snf ~/.config/omarchy/current/theme/mako.ini ~/.config/mako/config -mkdir -p ~/.config/eza -ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml - # Add managed policy directories for Chromium and Brave for theme changes sudo mkdir -p /etc/chromium/policies/managed sudo chmod a+rw /etc/chromium/policies/managed diff --git a/install/first-run/welcome.sh b/install/first-run/welcome.sh index 2da4be2e..9c5d06af 100644 --- a/install/first-run/welcome.sh +++ b/install/first-run/welcome.sh @@ -1,2 +1 @@ -notify-send " Update System" "When you have internet, click to update the system." -u critical notify-send " Learn Keybindings" "Super + K for cheatsheet.\nSuper + Space for application launcher.\nSuper + Alt + Space for Omarchy Menu." -u critical diff --git a/install/first-run/wifi.sh b/install/first-run/wifi.sh index d645a5c3..758a84c4 100644 --- a/install/first-run/wifi.sh +++ b/install/first-run/wifi.sh @@ -1,3 +1,6 @@ if ! ping -c3 -W1 1.1.1.1 >/dev/null 2>&1; then notify-send "󰖩 Click to Setup Wi-Fi" "Tab to navigate, Space to select, ? for help." -u critical -t 30000 + notify-send " Update System" "When you have internet, click to update the system." -u critical +else + notify-send " Update System" "Click to update the system." -u critical fi diff --git a/install/omarchy-base.packages b/install/omarchy-base.packages index f9d53bc8..e2abf607 100644 --- a/install/omarchy-base.packages +++ b/install/omarchy-base.packages @@ -22,19 +22,6 @@ docker docker-buildx docker-compose dust -elephant -elephant-bluetooth -elephant-calc -elephant-clipboard -elephant-desktopapplications -elephant-files -elephant-menus -elephant-providerlist -elephant-runner -elephant-symbols -elephant-todo -elephant-unicode -elephant-websearch evince expac eza @@ -98,6 +85,7 @@ obs-studio obsidian omarchy-chromium omarchy-nvim +omarchy-walker pamixer pinta playerctl @@ -132,7 +120,6 @@ ufw ufw-docker unzip uwsm -walker waybar wayfreeze whois @@ -143,6 +130,7 @@ wl-clipboard woff2-font-awesome xdg-desktop-portal-gtk xdg-desktop-portal-hyprland +xdg-terminal-exec xmlstarlet xournalpp yaru-icon-theme diff --git a/migrations/1761583837.sh b/migrations/1761583837.sh deleted file mode 100644 index 0e32981d..00000000 --- a/migrations/1761583837.sh +++ /dev/null @@ -1,7 +0,0 @@ -echo "Ensure nvim started from app launcher always starts nvim not $EDITOR" - -if [ -f /usr/share/applications/nvim.desktop ]; then - rm ~/.local/share/applications/nvim.desktop - ln -s /usr/share/applications/nvim.desktop ~/.local/share/applications/nvim.desktop - update-desktop-database ~/.local/share/applications -fi diff --git a/migrations/1761758552.sh b/migrations/1761758552.sh new file mode 100644 index 00000000..49680d09 --- /dev/null +++ b/migrations/1761758552.sh @@ -0,0 +1,21 @@ +echo "Set nvim as default via xdg-mime" + +rm ~/.local/share/applications/nvim.desktop || true + +xdg-mime default nvim.desktop text/plain +xdg-mime default nvim.desktop text/english +xdg-mime default nvim.desktop text/x-makefile +xdg-mime default nvim.desktop text/x-c++hdr +xdg-mime default nvim.desktop text/x-c++src +xdg-mime default nvim.desktop text/x-chdr +xdg-mime default nvim.desktop text/x-csrc +xdg-mime default nvim.desktop text/x-java +xdg-mime default nvim.desktop text/x-moc +xdg-mime default nvim.desktop text/x-pascal +xdg-mime default nvim.desktop text/x-tcl +xdg-mime default nvim.desktop text/x-tex +xdg-mime default nvim.desktop application/x-shellscript +xdg-mime default nvim.desktop text/x-c +xdg-mime default nvim.desktop text/x-c++ +xdg-mime default nvim.desktop application/xml +xdg-mime default nvim.desktop text/xml diff --git a/migrations/1762121828.sh b/migrations/1762121828.sh new file mode 100644 index 00000000..308dad36 --- /dev/null +++ b/migrations/1762121828.sh @@ -0,0 +1,64 @@ +echo "Setting up xdg-terminal-exec for gtk-launch terminal support" +# Solve for hardcoded glib terminals +# https://github.com/basecamp/omarchy/issues/1852 + +# Remove old symlink if it exists -- if someone ran the previous migration early +if [ -L /usr/local/bin/xdg-terminal-exec ]; then + sudo rm /usr/local/bin/xdg-terminal-exec +fi + +omarchy-pkg-add xdg-terminal-exec + +# Set up xdg-terminals.list based on current $TERMINAL +if [ -n "$TERMINAL" ]; then + case "$TERMINAL" in + alacritty) + desktop_id="Alacritty.desktop" + ;; + ghostty) + desktop_id="com.mitchellh.ghostty.desktop" + ;; + kitty) + desktop_id="kitty.desktop" + ;; + esac + + if [ -n "$desktop_id" ]; then + mkdir -p ~/.config + cat > ~/.config/xdg-terminals.list << EOF +# Terminal emulator preference order for xdg-terminal-exec +# The first found and valid terminal will be used +$desktop_id +EOF + fi +fi + +# Copy custom desktop entries with proper X-TerminalArg* keys +if command -v alacritty > /dev/null 2>&1; then + cp "$OMARCHY_PATH/applications/Alacritty.desktop" ~/.local/share/applications/ +fi + +# Update hyprland bindings to use xdg-terminal-exec +sed -i 's/\$terminal = uwsm-app -- \$TERMINAL/$terminal = uwsm-app -- xdg-terminal-exec/' ~/.config/hypr/bindings.conf +# Update --working-directory to --dir for xdg-terminal-exec +sed -i 's/--working-directory=/--dir=/g' ~/.config/hypr/bindings.conf + +# Update TERMINAL variable in uwsm config +sed -i 's/export TERMINAL=.*/export TERMINAL=xdg-terminal-exec/' ~/.config/uwsm/default + +# Update waybar config to use xdg-terminal-exec +waybar_config=~/.config/waybar/config.jsonc +if [ -f "$waybar_config" ]; then + sed -i 's|"on-click-right": "omarchy-launch-terminal"|"on-click-right": "xdg-terminal-exec"|' "$waybar_config" + sed -i 's|"on-click": "\$TERMINAL -e btop"|"on-click": "xdg-terminal-exec btop"|' "$waybar_config" + sed -i 's|"on-click": "\$TERMINAL --class=Wiremix -e wiremix"|"on-click": "xdg-terminal-exec --app-id=com.omarchy.Wiremix -e wiremix"|' "$waybar_config" + omarchy-state set restart-waybar-required +fi + +# Update hyprland window rules to use DNS-format class names +system_conf=~/.config/hypr/apps/system.conf +if [ -f "$system_conf" ]; then + if grep -q 'class:(.*|Impala|' "$system_conf" || grep -q 'class:(.*|Wiremix|' "$system_conf" || grep -q '|Omarchy|' "$system_conf"; then + sed -i 's/\bImpala\b/com.omarchy.Impala/g; s/\bWiremix\b/com.omarchy.Wiremix/g; s/|Omarchy|/|com.omarchy.Omarchy|/g' "$system_conf" + fi +fi diff --git a/migrations/1762150269.sh b/migrations/1762150269.sh new file mode 100644 index 00000000..3314021e --- /dev/null +++ b/migrations/1762150269.sh @@ -0,0 +1,2 @@ +echo "Install omarchy-walker meta package" +omarchy-pkg-add omarchy-walker diff --git a/version b/version index 0aec50e6..3ad0595a 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.1.4 +3.1.5