Merge pull request #559 from basecamp/dev

Omarchy 1.12.1
This commit is contained in:
David Heinemeier Hansson 2025-08-08 17:35:06 +02:00 committed by GitHub
commit 4d94f02584
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
26 changed files with 121 additions and 99 deletions

3
bin/omarchy-font-current Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
grep -oP 'family\s*=\s*"\K[^"]+' ~/.config/alacritty/alacritty.toml | head -n1

View File

@ -1,7 +1,5 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
options=("MariaDB" "MySQL" "Redis" "PostgreSQL")
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
@ -15,5 +13,3 @@ if [[ -n "$choices" ]]; then
esac
done
fi
~/.local/share/omarchy/bin/omarchy-show-done

View File

@ -1,7 +1,5 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
echo "Installing all dependencies..."
yay -S --noconfirm --needed \
dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
@ -9,5 +7,3 @@ yay -S --noconfirm --needed \
echo "Starting Dropbox..."
uwsm app -- dropbox-cli start &>/dev/null &
echo "See Dropbox icon behind  hover tray in top right and right-click for setup."
~/.local/share/omarchy/bin/omarchy-show-done

View File

@ -1,7 +1,5 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
echo "Adding multilib repository for 32-bit compatibility"
sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf
sudo pacman -Sy
@ -9,5 +7,3 @@ sudo pacman -Sy
echo "Now pick dependencies matching your graphics card"
yay -S steam
gtk-launch steam >/dev/null 2>&1 &
~/.local/share/omarchy/bin/omarchy-show-done

View File

@ -3,7 +3,22 @@
OMARCHY_BIN_PATH=~/.local/share/omarchy/bin
menu() {
echo -e "$2" | walker --dmenu --theme dmenu_250 -p "$1…" $3
local prompt="$1"
local options="$2"
local extra="$3"
local preselect="$4"
read -r -a args <<<"$extra"
if [[ -n "$preselect" ]]; then
local index
index=$(echo -e "$options" | grep -nxF "$preselect" | cut -d: -f1)
if [[ -n "$index" ]]; then
args+=("-a" "$index")
fi
fi
echo -e "$options" | walker --dmenu --theme dmenu_250 -p "$prompt…" "${args[@]}"
}
terminal() {
@ -19,6 +34,14 @@ edit_in_nvim() {
alacritty -e nvim "$1"
}
open_web() {
setsid chromium --new-window --app="$1" &
}
install() {
present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2"
}
install_and_launch() {
present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2 && gtk-launch $3"
}
@ -30,11 +53,11 @@ install_font() {
show_learn_menu() {
case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in
*Keybindings*) $OMARCHY_BIN_PATH/omarchy-menu-keybindings ;;
*Omarchy*) setsid chromium --new-window --app="https://manuals.omamix.org/2/the-omarchy-manual" & ;;
*Hyprland*) setsid chromium --new-window --app="https://wiki.hypr.land/" & ;;
*Arch*) setsid chromium --new-window --app="https://wiki.archlinux.org/title/Main_page" & ;;
*Bash*) setsid chromium --new-window --app="https://devhints.io/bash" & ;;
*Neovim*) setsid chromium --new-window --app="https://www.lazyvim.org/keymaps" & ;;
*Omarchy*) open_web "https://manuals.omamix.org/2/the-omarchy-manual" ;;
*Hyprland*) open_web "https://wiki.hypr.land/" ;;
*Arch*) open_web "https://wiki.archlinux.org/title/Main_page" ;;
*Bash*) open_web "https://devhints.io/bash" ;;
*Neovim*) open_web "https://www.lazyvim.org/keymaps" ;;
*) show_main_menu ;;
esac
}
@ -49,7 +72,7 @@ show_style_menu() {
}
show_theme_menu() {
theme=$(menu "Theme" "$($OMARCHY_BIN_PATH/omarchy-theme-list)")
theme=$(menu "Theme" "$($OMARCHY_BIN_PATH/omarchy-theme-list)" "" "$($OMARCHY_BIN_PATH/omarchy-theme-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
else
@ -58,7 +81,7 @@ show_theme_menu() {
}
show_font_menu() {
theme=$(menu "Font" "$($OMARCHY_BIN_PATH/omarchy-font-list)" "-w 350")
theme=$(menu "Font" "$($OMARCHY_BIN_PATH/omarchy-font-list)" "-w 350" "$($OMARCHY_BIN_PATH/omarchy-font-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
else
@ -106,7 +129,7 @@ show_setup_menu() {
local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n󰍹 Monitors"
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
options="$options\n Configs\n󰈷 Fingerprint\n Fido2"
options="$options\n Config\n󰈷 Fingerprint\n Fido2"
case $(menu "Setup" "$options") in
*Audio*) alacritty --class=Wiremix -e wiremix ;;
@ -116,25 +139,24 @@ show_setup_menu() {
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;;
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;;
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;;
*Configs*) show_setup_configs_menu ;;
*Fingerprint*) terminal $OMARCHY_BIN_PATH/omarchy-setup-fingerprint ;;
*Fido2*) terminal $OMARCHY_BIN_PATH/omarchy-setup-fido2 ;;
*Config*) show_setup_config_menu ;;
*Fingerprint*) present_terminal $OMARCHY_BIN_PATH/omarchy-setup-fingerprint ;;
*Fido2*) present_terminal $OMARCHY_BIN_PATH/omarchy-setup-fido2 ;;
*) show_main_menu ;;
esac
}
show_setup_power_menu() {
current_profile=$(powerprofilesctl get)
new_profile=$(menu "Power Profile" "$($OMARCHY_BIN_PATH/omarchy-powerprofiles-list)" "-a '${current_profile}'")
profile=$(menu "Power Profile" "$($OMARCHY_BIN_PATH/omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)")
if [[ "$new_profile" == "CNCLD" || -z "$new_profile" ]]; then
if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then
show_main_menu
else
powerprofilesctl set "$new_profile"
powerprofilesctl set "$profile"
fi
}
show_setup_configs_menu() {
show_setup_config_menu() {
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in
*Hyprland*) edit_in_nvim ~/.config/hypr/hyprland.conf ;;
*Hypridle*) edit_in_nvim ~/.config/hypr/hypridle.conf && ~/.local/share/omarchy/bin/omarchy-restart-hypridle ;;
@ -149,16 +171,15 @@ show_setup_configs_menu() {
}
show_install_menu() {
case $(menu "Install" "󰣇 Package\n Web App\n Editor\n󰸌 Theme\n Background\n Font\n Dropbox\n Steam\n Docker DBs") in
case $(menu "Install" "󰣇 Package\n Web App\n Style\n Editor\n󱚤 AI\n Dropbox\n Steam\n Docker DB") in
*Package*) terminal $OMARCHY_BIN_PATH/omarchy-pkg-install ;;
*Web*) terminal $OMARCHY_BIN_PATH/omarchy-webapp-install ;;
*Web*) present_terminal $OMARCHY_BIN_PATH/omarchy-webapp-install ;;
*Style*) show_install_style_menu ;;
*Editor*) show_install_editor_menu ;;
*Theme*) terminal $OMARCHY_BIN_PATH/omarchy-theme-install ;;
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;;
*Font*) show_install_font_menu ;;
*Dropbox*) terminal $OMARCHY_BIN_PATH/omarchy-setup-dropbox ;;
*Steam*) terminal $OMARCHY_BIN_PATH/omarchy-setup-steam ;;
*Docker*) terminal $OMARCHY_BIN_PATH/omarchy-setup-docker-dbs ;;
*AI*) show_install_ai_menu ;;
*Dropbox*) present_terminal $OMARCHY_BIN_PATH/omarchy-install-dropbox ;;
*Steam*) present_terminal $OMARCHY_BIN_PATH/omarchy-install-steam ;;
*Docker*) present_terminal $OMARCHY_BIN_PATH/omarchy-install-docker-dbs ;;
*) show_main_menu ;;
esac
}
@ -172,6 +193,27 @@ show_install_editor_menu() {
esac
}
show_install_ai_menu() {
case $(menu "Install" "󱚤 Claude Code\n󱚤 Gemini\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 Open Code") in
*Claude*) install "Claude Code" "claude-code" ;;
*Gemini*) install "Gemini" "gemini-cli-bin" ;;
*Studio*) install "LM Studio" "lmstudio" ;;
*Ollama*) install "Ollama" "ollama" ;;
*Crush*) install "Crush" "crush-bin" ;;
*Code*) install "Open Code" "opencode-bin" ;;
*) show_install_menu ;;
esac
}
show_install_style_menu() {
case $(menu "Install" "󰸌 Theme\n Background\n Font") in
*Theme*) present_terminal $OMARCHY_BIN_PATH/omarchy-theme-install ;;
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;;
*Font*) show_install_font_menu ;;
*) show_install_menu ;;
esac
}
show_install_font_menu() {
case $(menu "Install" " Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono" "-w 350") in
*Meslo*) install_font "Meslo LG Mono" "ttf-meslo-nerd" "MesloLGL Nerd Font" ;;
@ -185,25 +227,37 @@ show_install_font_menu() {
show_remove_menu() {
case $(menu "Remove" "󰣇 Package\n Web App\n󰸌 Theme\n󰈷 Fingerprint\n Fido2") in
*Package*) terminal $OMARCHY_BIN_PATH/omarchy-pkg-remove ;;
*Web*) terminal $OMARCHY_BIN_PATH/omarchy-webapp-remove ;;
*Web*) present_terminal $OMARCHY_BIN_PATH/omarchy-webapp-remove ;;
*Theme*) present_terminal $OMARCHY_BIN_PATH/omarchy-theme-remove ;;
*Fingerprint*) terminal "$OMARCHY_BIN_PATH/omarchy-setup-fingerprint --remove" ;;
*Fido2*) terminal "$OMARCHY_BIN_PATH/omarchy-setup-fido2 --remove" ;;
*Fingerprint*) present_terminal "$OMARCHY_BIN_PATH/omarchy-setup-fingerprint --remove" ;;
*Fido2*) present_terminal "$OMARCHY_BIN_PATH/omarchy-setup-fido2 --remove" ;;
*) show_main_menu ;;
esac
}
show_update_menu() {
case $(menu "Update" "󰣇 Omarchy\n Configs\n󰸌 Themes\n Timezone") in
*Omarchy*) terminal $OMARCHY_BIN_PATH/omarchy-update ;;
*Configs*) show_update_configs_menu ;;
*Themes*) terminal $OMARCHY_BIN_PATH/omarchy-theme-update ;;
case $(menu "Update" "󰣇 Omarchy\n Config\n Process\n󰸌 Themes\n Timezone") in
*Omarchy*) present_terminal $OMARCHY_BIN_PATH/omarchy-update ;;
*Config*) show_update_config_menu ;;
*Process*) show_update_process_menu ;;
*Themes*) present_terminal $OMARCHY_BIN_PATH/omarchy-theme-update ;;
*Timezone*) $OMARCHY_BIN_PATH/omarchy-cmd-tzupdate ;;
*) show_main_menu ;;
esac
}
show_update_configs_menu() {
show_update_process_menu() {
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hypridle*) $OMARCHY_BIN_PATH/omarchy-restart-hypridle ;;
*Hyprsunset*) $OMARCHY_BIN_PATH/omarchy-restart-hyprsunset ;;
*Swayosd*) $OMARCHY_BIN_PATH/omarchy-restart-swayosd ;;
*Walker*) $OMARCHY_BIN_PATH/omarchy-restart-walker ;;
*Waybar*) $OMARCHY_BIN_PATH/omarchy-restart-waybar ;;
*) show_main_menu ;;
esac
}
show_update_config_menu() {
case $(menu "Use default config" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n󱣴 Plymouth\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hyprland*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-hyprland ;;
*Hypridle*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-hypridle ;;

View File

@ -32,7 +32,7 @@ if [[ -f "$user_config_file" ]]; then
rm "$backup_config_file"
else
echo -e "\e[31mReplaced $user_config_file with new Omarchy default.\nSaved backup as ${backup_config_file}.\n\n\e[32mChanges:\e[0m"
diff "$user_config_file" "$backup_config_file"
diff "$user_config_file" "$backup_config_file" || true
fi
else
# Config file did not exist already

View File

@ -1,7 +1,5 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
if [[ "--remove" == "$1" ]]; then
echo -e "\e[32mLet's remove your Fido2 device from sudo authentication.\n\e[0m"
yay -Rns --noconfirm libfido2 pam-u2f
@ -39,5 +37,3 @@ else
fi
fi
fi
~/.local/share/omarchy/bin/omarchy-show-done

View File

@ -1,7 +1,5 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
if [[ "--remove" == "$1" ]]; then
echo -e "\e[32mLet's remove your fingerprint scanner from authentication.\n\e[0m"
yay -Rns --noconfirm fprintd
@ -45,5 +43,3 @@ EOF
fi
fi
fi
~/.local/share/omarchy/bin/omarchy-show-done

View File

@ -1,5 +1,4 @@
#!/bin/bash
echo
gum spin --spinner "globe" --title "Done!" -- sleep 2
clear
gum spin --spinner "globe" --title "Done! Press any key to close..." -- bash -c 'read -n 1 -s'

3
bin/omarchy-theme-current Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
basename "$(realpath "$HOME/.config/omarchy/current/theme")" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g'

View File

@ -4,7 +4,6 @@
# Usage: omarchy-theme-install <git-repo-url>
if [ -z "$1" ]; then
~/.local/share/omarchy/bin/omarchy-show-logo
echo -e "\e[32mSee https://manuals.omamix.org/2/the-omarchy-manual/90/extra-themes\n\e[0m"
REPO_URL=$(gum input --placeholder="Git repo URL for theme" --header="")
else

View File

@ -1,21 +1,5 @@
#!/bin/bash
THEMES_DIR="$HOME/.config/omarchy/themes/"
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
CURRENT_THEME_NAME=$(basename "$(realpath "$CURRENT_THEME_DIR")")
# Build themes list with pretty display names
mapfile -t themes < <(
find "$THEMES_DIR" -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | sort | while read -r path; do
filename=$(basename "$path")
display_name=$(echo "$filename" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')
if [[ "$filename" == "$CURRENT_THEME_NAME" ]]; then
echo "<i>$display_name</i>"
else
echo "$display_name"
fi
done
)
printf '%s\n' "${themes[@]}"
find ~/.config/omarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | sort | while read -r path; do
echo "$(basename "$path" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')"
done

View File

@ -45,8 +45,7 @@ touch "$HOME/.config/alacritty/alacritty.toml"
# Restart components to apply new theme
pkill -SIGUSR2 btop
~/.local/share/omarchy/bin/omarchy-restart-waybar
pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null &
~/.local/share/omarchy/bin/omarchy-restart-swayosd
makoctl reload
hyprctl reload

View File

@ -1,9 +1,5 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
for dir in ~/.config/omarchy/themes/*/; do
[ -d "$dir" ] && [ ! -L "${dir%/}" ] && echo "Updating: $(basename "$dir")" && git -C "$dir" pull
done
~/.local/share/omarchy/bin/omarchy-show-done

View File

@ -3,10 +3,6 @@
# Exit immediately if a command exits with a non-zero status
set -e
# Show logo
clear
cat <~/.local/share/omarchy/logo.txt
# Get the latest while trying to preserve any modifications
omarchy_path=~/.local/share/omarchy
git -C $omarchy_path pull --autostash
@ -23,5 +19,3 @@ yay -Syu --noconfirm
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then
gum confirm "Linux kernel has been updated. Reboot?" && sudo reboot now
fi
~/.local/share/omarchy/bin/omarchy-show-done

View File

@ -1,7 +1,6 @@
#!/bin/bash
if [ "$#" -ne 3 ]; then
~/.local/share/omarchy/bin/omarchy-show-logo
echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m"
APP_NAME=$(gum input --prompt "Name> " --placeholder "My favorite web app")
APP_URL=$(gum input --prompt "URL> " --placeholder "https://example.com")
@ -44,5 +43,4 @@ chmod +x "$DESKTOP_FILE"
if [ "$#" -ne 3 ]; then
echo -e "You can now find $APP_NAME using the app launcher (SUPER + SPACE)\n"
~/.local/share/omarchy/bin/omarchy-show-done
fi

View File

@ -4,8 +4,6 @@ ICON_DIR="$HOME/.local/share/applications/icons"
DESKTOP_DIR="$HOME/.local/share/applications/"
if [ "$#" -ne 1 ]; then
~/.local/share/omarchy/bin/omarchy-show-logo
# Find all web apps
while IFS= read -r -d '' file; do
if grep -q '^Exec=.*chromium.*--app' "$file"; then
@ -35,5 +33,4 @@ rm "$ICON_DIR/$APP_NAME.png"
if [ "$#" -ne 1 ]; then
echo -e "Removed $APP_NAME\n"
~/.local/share/omarchy/bin/omarchy-show-done
fi

View File

@ -60,7 +60,7 @@
},
{
"type": "os",
"key": " OS",
"key": "󰣇 OS",
"keyColor": "yellow"
},
{

View File

@ -52,7 +52,7 @@
"custom/update": {
"format": "",
"exec": "~/.local/share/omarchy/bin/omarchy-update-available",
"on-click": "alacritty --class Omarchy --title Omarchy -e omarchy-update",
"on-click": "alacritty --class Omarchy --title Omarchy -e ~/.local/share/omarchy/bin/omarchy-update",
"interval": 3600
},
"cpu": {

View File

@ -7,7 +7,7 @@
border: none;
border-radius: 0;
min-height: 0;
font-family: CaskaydiaMono Nerd Font Propo;
font-family: CaskaydiaMono Nerd Font;
font-size: 12px;
}
@ -43,7 +43,7 @@
}
#custom-expand-icon {
margin-right: 12px;
margin-right: 7px;
}
tooltip {

View File

@ -3,7 +3,7 @@ windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPrevie
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$
windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$
windowrule = size 600 470, class:Omarchy
windowrule = size 700 470 class:About
windowrule = size 700 520, class:About
# Float and center file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)

View File

@ -99,6 +99,10 @@ child:hover {
padding: 0;
}
#item.active {
font-style: italic;
}
/* Icon */
#icon {
margin-right: 10px;

View File

@ -2,6 +2,6 @@ echo "Make new Osaka Jade theme available as new default"
if [[ ! -L ~/.config/omarchy/themes/osaka-jade ]]; then
rm -rf ~/.config/omarchy/themes/osaka-jade
git -C ~/.local/share/omarchy co -f themes/osaka-jade
git -C ~/.local/share/omarchy checkout -f themes/osaka-jade
ln -nfs ~/.local/share/omarchy/themes/osaka-jade ~/.config/omarchy/themes/osaka-jade
fi

6
migrations/1754568612.sh Normal file
View File

@ -0,0 +1,6 @@
echo "Update Waybar config to fix path issue with update-available icon click"
if grep -q "alacritty --class Omarchy --title Omarchy -e omarchy-update" ~/.config/waybar/config.jsonc; then
sed -i 's|\("on-click": "alacritty --class Omarchy --title Omarchy -e \)omarchy-update"|\1~/.local/share/omarchy/bin/omarchy-update"|' ~/.config/waybar/config.jsonc
~/.local/share/omarchy/bin/omarchy-restart-waybar
fi

3
migrations/1754652760.sh Normal file
View File

@ -0,0 +1,3 @@
echo "Fix the expand icon margin in the Waybar style"
~/.local/share/omarchy/bin/omarchy-refresh-config waybar/style.css

3
migrations/1754666868.sh Normal file
View File

@ -0,0 +1,3 @@
echo "Update OS icon in About from Windows to Arch"
~/.local/share/omarchy/bin/omarchy-refresh-config fastfetch/config.jsonc