Merge pull request #3084 from basecamp/dev

Omarchy 3.1.5
This commit is contained in:
Ryan Hughes
2025-11-03 12:13:01 -05:00
committed by GitHub
31 changed files with 240 additions and 71 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

22
bin/omarchy-hyprland-window-pop Executable file
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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'

View File

@@ -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" "$@"

View File

@@ -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"
exec setsid uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"

View File

@@ -1,3 +0,0 @@
#!/bin/bash
exec setsid uwsm-app -- "${TERMINAL:-alacritty}" "$@"

View File

@@ -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 "$@"

View File

@@ -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
}

View File

@@ -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

14
bin/omarchy-update-confirm Executable file
View File

@@ -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

View File

@@ -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)"

View File

@@ -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

View File

@@ -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

View File

@@ -41,7 +41,7 @@
"custom/omarchy": {
"format": "<span font='omarchy'>\ue900</span>",
"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,

View File

@@ -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

View File

@@ -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

View File

@@ -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": ""}'

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

21
migrations/1761758552.sh Normal file
View File

@@ -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

64
migrations/1762121828.sh Normal file
View File

@@ -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

2
migrations/1762150269.sh Normal file
View File

@@ -0,0 +1,2 @@
echo "Install omarchy-walker meta package"
omarchy-pkg-add omarchy-walker

View File

@@ -1 +1 @@
3.1.4
3.1.5