1 Commits

Author SHA1 Message Date
1c2b5ea8e0 Omarchy 1.8.0 (#415)
* Update location of sourced install script

* Add OMARCHY_PATH for easy access

* Formatting

* Enable using finder in walker (#396)

* Enable using finder in walker

* capitalize name property

* Hot reload theme for quick switching

* Use fonts from AUR instead of downloading them directly like an animal

* Include the common JetBrains substitution

* Add a very basic font selector for terminal

* Give the new font selector a bit of room to breathe

* Swap Spotify GUI to TUI

* Correct package name

* Add theme update script (#391)

* Move updating themes from Updates to theme menu

Yeah, it could go in either spot, but since we have one entire category
dedicated to themes, lets keep it there.

* Revert "Correct package name"

This reverts commit 4c46c2208a.

* Revert "Swap Spotify GUI to TUI"

This reverts commit b09d2d68cd.

* Added backup timestamps to various omarchy-refresh-* files to prevent clobbering (#402)

* Added backup timestamps to omarchy-refresh-[hyprlock|swayosd|walker|waybar] scripts to prevent data loss if ran multiple times

* Added new script (omarchy-refresh-config) for refreshing various config files with automated backup creation

* update plymouth logo (#406)

* Track migrations via state files to avoid running migrations that have already been performed. (#411)

* Just use set -e instead of manually checking for return values

* Fix migration

* Unused

* Migrate fonts to packages

* No longer needed

* Use fd for better performance on walker finder

* Add walker config refresh to enable the finder

* Dropbox is now an optional setup

---------

Co-authored-by: Shigeto Kumagai <shk@all.daynight.jp>
Co-authored-by: Mohamedsayhii <63726183+Mohamedsayhii@users.noreply.github.com>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: Andy Davis <developer.andy@gmail.com>
Co-authored-by: Taha <paprikataha@gmail.com>
2025-07-30 23:44:27 +02:00
18 changed files with 73 additions and 99 deletions

30
bin/omarchy-refresh-config Executable file
View File

@ -0,0 +1,30 @@
#!/bin/bash
# This script deploys ~/.local/share/omarchy/config/X/Y/Z -> ~/.config/X/Y/Z
config_file=$1
if [[ -z "$config_file" ]]; then
cat << USAGE
Usage: $0 [config_file]
Must provide a file path from the .config directory to be refreshed.
To copy ~/.local/share/omarchy/config/hypr/hyprlock.conf to ~/.config/hypr/hyprlock.conf
$0 hypr/hyprlock.conf
USAGE
exit 1
fi
# Backup the destination file (with timestamp) to avoid clobbering (Ex: hyprlock.conf.bak.1753817951)
backup_file="${HOME}/.config/${config_file}.bak.$(date +%s)"
cp -f "${HOME}/.config/${config_file}" "$backup_file" 2>/dev/null
# Deploy the source file
cp -f "${HOME}/.local/share/omarchy/config/${config_file}" "${HOME}/.config/${config_file}" 2>/dev/null
# Compare and delete/inform accordingly
if cmp -s "${HOME}/.config/${config_file}" "$backup_file"; then
rm $backup_file
else
echo -e "\e[31mExisting "${HOME}/.config/${config_file}" replaced with new Omarchy default, but ${backup_file} file was made.\e[0m"
fi

View File

@ -1,11 +1,4 @@
#!/bin/bash #!/bin/bash
# Overwrite local Hyprlock settings with the latest in Omarchy, but create a backup if it differs # Overwrite local Hyprlock settings with the latest in Omarchy
cp -f ~/.config/hypr/hyprlock.conf ~/.config/hypr/hyprlock.conf.bak 2>/dev/null omarchy-refresh-config hypr/hyprlock.conf
cp -f ~/.local/share/omarchy/config/hypr/hyprlock.conf ~/.config/hypr/ 2>/dev/null
if cmp -s ~/.config/hypr/hyprlock.conf.bak ~/.config/hypr/hyprlock.conf; then
rm ~/.config/hypr/hyprlock.conf.bak
else
echo -e "\e[31mExisting .config/hypr/hyprlock.conf replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi

View File

@ -1,13 +1,7 @@
#!/bin/bash #!/bin/bash
cp -f ~/.config/swayosd/config.toml ~/.config/swayosd/config.toml.bak 2>/dev/null omarchy-refresh-config swayosd/config.toml
cp -f ~/.local/share/omarchy/config/swayosd/config.toml ~/.config/swayosd/ 3>/dev/null omarchy-refresh-config swayosd/style.css
if cmp -s ~/.config/swayosd/config.toml.bak ~/.config/swayosd/config.toml; then
rm ~/.config/swayosd//config.toml.bak
else
echo -e "\e[31mExisting .config/swayosd/config.toml replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
pkill swayosd-server pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null & setsid uwsm app -- swayosd-server &>/dev/null &

View File

@ -1,13 +1,6 @@
#!/bin/bash #!/bin/bash
cp -f ~/.config/walker/config.toml ~/.config/walker/config.toml.bak 2>/dev/null omarchy-refresh-config walker/config.toml
cp -f ~/.local/share/omarchy/config/walker/config.toml ~/.config/walker/ 2>/dev/null
if cmp -s ~/.config/walker/config.toml.bak ~/.config/walker/config.toml; then
rm ~/.config/walker/config.toml.bak
else
echo -e "\e[31mExisting .config/walker/config.toml replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
pkill walker pkill walker
setsid uwsm app -- walker --gapplication-service & setsid uwsm app -- walker --gapplication-service &

View File

@ -1,25 +1,7 @@
#!/bin/bash #!/bin/bash
# Backup existing settings omarchy-refresh-config waybar/config.jsonc
cp -f ~/.config/waybar/config.jsonc ~/.config/waybar/config.jsonc.bak 2>/dev/null omarchy-refresh-config waybar/style.css
cp -f ~/.config/waybar/style.css ~/.config/waybar/style.css.bak 2>/dev/null
# Overwrite local waybar settings with the latest in Omarchy
cp -f ~/.local/share/omarchy/config/waybar/config.jsonc ~/.config/waybar/ 2>/dev/null
cp -f ~/.local/share/omarchy/config/waybar/style.css ~/.config/waybar/ 2>/dev/null
# Remove identical backup files
if cmp -s ~/.config/waybar/config.jsonc.bak ~/.config/waybar/config.jsonc; then
rm ~/.config/waybar/config.jsonc.bak
else
echo -e "\e[31mExisting .config/waybar/config.jsonc replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
if cmp -s ~/.config/waybar/style.css.bak ~/.config/waybar/style.css; then
rm ~/.config/waybar/style.css.bak
else
echo -e "\e[31mExisting .config/waybar/style.css replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
# Restart waybar # Restart waybar
pkill -SIGUSR2 waybar pkill -SIGUSR2 waybar

View File

@ -1,26 +1,30 @@
#!/bin/bash #!/bin/bash
# Exit immediately if a command exits with a non-zero status
set -e
STATE_DIR="$HOME/.local/state/omarchy/migrations"
cd ~/.local/share/omarchy cd ~/.local/share/omarchy
if [[ $1 == "all" ]]; then # Create the migrations state directory, we will store an empty file for each migration that has already been performed.
# Run all migrations since the root commit mkdir -p "$STATE_DIR"
migration_starting_point=$(git log --max-parents=0 --first-parent --format="%H")
else
# Remember the commit we're at before upgrading in order to only run new migrations
migration_starting_point=$(git log -1 --format=%H)
fi
# Get the latest while trying to preserve any modifications # Get the latest while trying to preserve any modifications
git pull --autostash git pull --autostash
git diff --check || git reset --merge git diff --check || git reset --merge
# Run any pending migrations # Run any pending migrations
for file in $(git diff --name-only --diff-filter=A $migration_starting_point.. migrations/*.sh); do for file in migrations/*.sh; do
filename=$(basename "$file") filename=$(basename "$file")
migrate_at="${filename%.sh}" migrate_at="${filename%.sh}"
echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m" # Migration already applied, to re-run it simply delete the state file and try again
[ -e "${STATE_DIR}/$filename" ] && continue
echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"
source $file source $file
touch "${STATE_DIR}/$filename"
done done
# Update system packages # Update system packages
@ -29,3 +33,4 @@ yay -Syu --noconfirm
# Back to where we came from # Back to where we came from
cd - >/dev/null cd - >/dev/null

View File

@ -26,7 +26,7 @@ $webapp = $browser --app
bind = SUPER, return, exec, $terminal bind = SUPER, return, exec, $terminal
bind = SUPER, F, exec, uwsm app -- nautilus --new-window bind = SUPER, F, exec, uwsm app -- nautilus --new-window
bind = SUPER, B, exec, $browser bind = SUPER, B, exec, $browser
bind = SUPER, M, exec, $terminal -e spotify_player bind = SUPER, M, exec, uwsm app -- spotify
bind = SUPER, N, exec, $terminal -e nvim bind = SUPER, N, exec, $terminal -e nvim
bind = SUPER, T, exec, $terminal -e btop bind = SUPER, T, exec, $terminal -e btop
bind = SUPER, D, exec, $terminal -e lazydocker bind = SUPER, D, exec, $terminal -e lazydocker

View File

@ -199,7 +199,7 @@ typeahead = true
hidden = true hidden = true
[builtins.finder] [builtins.finder]
use_fd = false use_fd = true
fd_flags = "--ignore-vcs --type file --type directory" fd_flags = "--ignore-vcs --type file --type directory"
cmd_alt = "xdg-open $(dirname ~/%RESULT%)" cmd_alt = "xdg-open $(dirname ~/%RESULT%)"
weight = 5 weight = 5

View File

@ -10,7 +10,7 @@ bindel = ,XF86MonBrightnessUp, exec, $osdclient --brightness raise
bindel = ,XF86MonBrightnessDown, exec, $osdclient --brightness lower bindel = ,XF86MonBrightnessDown, exec, $osdclient --brightness lower
# Requires playerctl # Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next bindl = , XF86AudioNext, exec, $osdclient --playerctl next
bindl = , XF86AudioPause, exec, $osdclient --playerctl play-pause bindl = , XF86AudioPause, exec, $osdclient --playerctl play-pause
bindl = , XF86AudioPlay, exec, $osdclient --playerctl play-pause bindl = , XF86AudioPlay, exec, $osdclient --playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous bindl = , XF86AudioPrev, exec, $osdclient --playerctl previous

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -4,10 +4,10 @@ if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
gnome-calculator gnome-keyring signal-desktop \ gnome-calculator gnome-keyring signal-desktop \
obsidian-bin libreoffice obs-studio kdenlive \ obsidian-bin libreoffice obs-studio kdenlive \
xournalpp localsend-bin spotify-player xournalpp localsend-bin
# Packages known to be flaky or having key signing issues are run one-by-one # Packages known to be flaky or having key signing issues are run one-by-one
for pkg in pinta typora zoom; do for pkg in pinta typora spotify zoom; do
yay -S --noconfirm --needed "$pkg" || yay -S --noconfirm --needed "$pkg" ||
echo -e "\e[31mFailed to install $pkg. Continuing without!\e[0m" echo -e "\e[31mFailed to install $pkg. Continuing without!\e[0m"
done done

View File

@ -1,14 +0,0 @@
echo "Add missing Propo version of Caskaydia Mono Nerd Font for Waybar use"
if ! fc-list | grep -qi "CaskaydiaMono Nerd Font Propo"; then
cd /tmp
wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip
unzip CascadiaMono.zip -d CascadiaFont
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Regular.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Bold.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Italic.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-BoldItalic.ttf ~/.local/share/fonts
rm -rf CascadiaMono.zip CascadiaFont
fc-cache
cd -
fi

View File

@ -1,5 +0,0 @@
echo "Add missing libappindicator-gtk3 for Dropbox icon tray to work right"
if ! pacman -Q libappindicator-gtk3 &>/dev/null; then
yay -S --noconfirm --needed libappindicator-gtk3
fi

View File

@ -1,6 +0,0 @@
echo "Add missing Dropbox dependencies"
# Dropbox is still there, but the dependencies aren't yet
if command -v dropbox-cli &>/dev/null && ! pacman -Q libappindicator-gtk3 &>/dev/null; then
yay -S --noconfirm --needed dropbox libappindicator-gtk3 python-gpgme nautilus-dropbox
fi

View File

@ -12,8 +12,6 @@ if [[ "$(uname -m)" == "x86_64" ]] && ! grep -q '^\[chaotic-aur\]' /etc/pacman.c
# Refresh pacman package databases # Refresh pacman package databases
sudo pacman -Sy sudo pacman -Sy
chaotic_ok=1
else else
echo "Failed to install Chaotic-AUR, so won't include it in pacman config!" echo "Failed to install Chaotic-AUR, so won't include it in pacman config!"
fi fi

View File

@ -1,12 +0,0 @@
if [[ ! -f ~/.local/state/omarchy/bare.mode ]]; then
echo "Offer to swap Spotify GUI to TUI"
if command -v spotify >/dev/null && ! command -v spotify_player >/dev/null; then
if gum confirm "Replace Spotify GUI with TUI?"; then
yay -Sy --noconfirm spotify-player
yay -Rns --noconfirm spotify
sed -i -E 's|bind = (.+), exec, .*spotify|bind = \1, exec, $terminal -e spotify_player|' ~/.config/hypr/hyprland.conf
fi
fi
fi

12
migrations/1753908454.sh Normal file
View File

@ -0,0 +1,12 @@
echo "Migrate from manually downloaded fonts to font packages"
if ! yay -Q ttf-cascadia-mono-nerd &>/dev/null; then
yay -S --noconfirm ttf-cascadia-mono-nerd
rm -rf ~/.local/share/fonts/Caskaydia*
fc-cache
fi
if ! yay -Q ttf-ia-writer &>/dev/null; then
yay -S --noconfirm ttf-ia-writer
rm -rf ~/.local/share/fonts/iAWriterMonoS*
fc-cache
fi

4
migrations/1753910761.sh Normal file
View File

@ -0,0 +1,4 @@
echo "Update Walker config to include . as the leader key for the finder"
if ! grep -q 'prefix = "."' ~/.config/walker/config.toml; then
omarchy-refresh-walker
fi