From f1679ba142976ca0364d99e6abeb46460335ba8c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Jun 2025 11:27:33 -0700 Subject: [PATCH 01/37] Add migrations to omarchy-update and use the first one to turn on bluetooth --- bin/omarchy-update | 18 ++++++++++++++++++ migrations/1751134568.sh | 7 +++++++ 2 files changed, 25 insertions(+) create mode 100644 migrations/1751134568.sh diff --git a/bin/omarchy-update b/bin/omarchy-update index 2d6f929..a5ae380 100755 --- a/bin/omarchy-update +++ b/bin/omarchy-update @@ -1,5 +1,23 @@ #!/bin/bash cd ~/.local/share/omarchy + +# Remember the version we're at before upgrading +last_updated_at=$(git log -1 --format=%cd --date=unix) + +# Get the latest git pull + +# Run any pending migrations +for file in migrations/*.sh; do + filename=$(basename "$file") + migrate_at="${filename%.sh}" + + if [ $migrate_at -gt $last_updated_at ]; then + echo "Running migration for $migrate_at" + source $file + fi +done + +# Back to where we came from cd - diff --git a/migrations/1751134568.sh b/migrations/1751134568.sh new file mode 100644 index 0000000..284ba8f --- /dev/null +++ b/migrations/1751134568.sh @@ -0,0 +1,7 @@ +# Turn on bluetooth service so blueberry works out the box +if systemctl is-enabled --quiet bluetooth.service && systemctl is-active --quiet bluetooth.service; then + # Bluetooth is already enabled, nothing to change +else + echo "Let's turn on Bluetooth service so the controls work" + sudo systemctl enable --now bluetooth.service +fi From 682b60b0871df5f293645c945bd2ff28f17557df Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Jun 2025 11:38:20 -0700 Subject: [PATCH 02/37] Ensure valid conditional syntax --- migrations/1751134568.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/migrations/1751134568.sh b/migrations/1751134568.sh index 284ba8f..f1ecd07 100644 --- a/migrations/1751134568.sh +++ b/migrations/1751134568.sh @@ -1,6 +1,7 @@ # Turn on bluetooth service so blueberry works out the box if systemctl is-enabled --quiet bluetooth.service && systemctl is-active --quiet bluetooth.service; then # Bluetooth is already enabled, nothing to change + : else echo "Let's turn on Bluetooth service so the controls work" sudo systemctl enable --now bluetooth.service From f163297a497b2151b01432b435ac1c5870c63219 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Jun 2025 11:39:45 -0700 Subject: [PATCH 03/37] Change output --- bin/omarchy-update | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-update b/bin/omarchy-update index a5ae380..da517c8 100755 --- a/bin/omarchy-update +++ b/bin/omarchy-update @@ -14,7 +14,7 @@ for file in migrations/*.sh; do migrate_at="${filename%.sh}" if [ $migrate_at -gt $last_updated_at ]; then - echo "Running migration for $migrate_at" + echo "Running migration ($migrate_at)" source $file fi done From cbf3717f66c8d13181f43b115ee121e5f6f3ac24 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Jun 2025 11:44:28 -0700 Subject: [PATCH 04/37] Add migration for the missing bat installation --- migrations/1751135253.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 migrations/1751135253.sh diff --git a/migrations/1751135253.sh b/migrations/1751135253.sh new file mode 100644 index 0000000..b830627 --- /dev/null +++ b/migrations/1751135253.sh @@ -0,0 +1,3 @@ +# Add missing installation of bat +echo "Add missing installation of bat (used by the ff alias)" +yay -S --noconfirm --needed bat From 2c1c7550870327ba0a39ac8e20806cc1a1a62019 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 2 Jul 2025 19:27:07 -0700 Subject: [PATCH 05/37] Kill the fd alias from omakub and just install fd Closes #32 --- default/bash/aliases | 1 - install/3-terminal.sh | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/default/bash/aliases b/default/bash/aliases index 22ee469..25e995f 100644 --- a/default/bash/aliases +++ b/default/bash/aliases @@ -4,7 +4,6 @@ alias lsa='ls -a' alias lt='eza --tree --level=2 --long --icons --git' alias lta='lt -a' alias ff="fzf --preview 'bat --style=numbers --color=always {}'" -alias fd='fdfind' alias cd="zd" zd() { if [ $# -eq 0 ]; then diff --git a/install/3-terminal.sh b/install/3-terminal.sh index 8991014..79afcda 100644 --- a/install/3-terminal.sh +++ b/install/3-terminal.sh @@ -1,6 +1,6 @@ yay -S --noconfirm --needed \ wget curl unzip inetutils \ - eza fzf ripgrep zoxide bat \ + fd eza fzf ripgrep zoxide bat \ wl-clipboard fastfetch btop \ man tldr less whois plocate \ alacritty From 04b4c3c9a5263d0a50a535d56ed9164409bff69a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 2 Jul 2025 19:53:44 -0700 Subject: [PATCH 06/37] Install missing fd --- migrations/1751510848.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 migrations/1751510848.sh diff --git a/migrations/1751510848.sh b/migrations/1751510848.sh new file mode 100644 index 0000000..4a4e93e --- /dev/null +++ b/migrations/1751510848.sh @@ -0,0 +1,2 @@ +echo "Installing missing fd terminal tool for finding files" +yay -S --noconfirm --needed fd From 8df95b6fb34e2be3b496d9bb555b9a54a1198413 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 2 Jul 2025 20:06:42 -0700 Subject: [PATCH 07/37] Explain how to get this working --- migrations/1751510848.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/migrations/1751510848.sh b/migrations/1751510848.sh index 4a4e93e..120947b 100644 --- a/migrations/1751510848.sh +++ b/migrations/1751510848.sh @@ -1,2 +1,3 @@ echo "Installing missing fd terminal tool for finding files" yay -S --noconfirm --needed fd +echo "You must start a new terminal for fd to work" From 6faa33f4225b0ced893731c904b6c8b311c2f43a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 2 Jul 2025 22:16:15 -0700 Subject: [PATCH 08/37] No transparency on image viewing --- default/hypr/windows.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/windows.conf b/default/hypr/windows.conf index fb43424..197ca11 100644 --- a/default/hypr/windows.conf +++ b/default/hypr/windows.conf @@ -15,7 +15,7 @@ windowrule = fullscreen, class:^(com.libretro.RetroArch)$ windowrule = opacity 0.97 0.9, class:.* windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$ windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube -windowrule = opacity 1 1, class:^(zoom|vlc|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta)$ +windowrule = opacity 1 1, class:^(zoom|vlc|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv)$ windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$ # Fix some dragging issues with XWayland From 4f0271b5880ad47ee5b02b4fa5307b7f9191c7e7 Mon Sep 17 00:00:00 2001 From: Pratik Karki Date: Thu, 3 Jul 2025 12:28:47 +0545 Subject: [PATCH 09/37] Be able to switch to current theme Additionally, check if the current theme is accessible and loadable else, fallback to a default theme as to not break the theme. Signed-off-by: Pratik Karki --- config/nvim/lua/plugins/theme.lua | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/config/nvim/lua/plugins/theme.lua b/config/nvim/lua/plugins/theme.lua index dad2d30..8464386 100644 --- a/config/nvim/lua/plugins/theme.lua +++ b/config/nvim/lua/plugins/theme.lua @@ -1,4 +1,8 @@ -return { +local uv = vim.uv +local file_path = vim.fn.expand("~/.config/omarchy/current/theme/neovim.lua") + +-- Default configuration +local default = { { "LazyVim/LazyVim", opts = { @@ -6,3 +10,13 @@ return { }, }, } + +-- Try to load custom theme, fallback to default +if uv.fs_stat(file_path) then + local success, result = pcall(dofile, file_path) + if success and type(result) == "table" then + return result + end +end + +return default From f7ec407891fa52efce91f87a7f429f15245e76d7 Mon Sep 17 00:00:00 2001 From: Osvaldo Cordova Aburto Date: Thu, 3 Jul 2025 12:57:13 -0600 Subject: [PATCH 10/37] feat: add script to show keybindings --- bin/show-keybindings | 56 ++++++++++++++++++++++++++++++++++++++ default/hypr/bindings.conf | 1 + 2 files changed, 57 insertions(+) create mode 100755 bin/show-keybindings diff --git a/bin/show-keybindings b/bin/show-keybindings new file mode 100755 index 0000000..4f9369f --- /dev/null +++ b/bin/show-keybindings @@ -0,0 +1,56 @@ +#!/bin/bash +# +# A script to display Hyprland keybindings defined in your configuration +# using wofi for an interactive search menu. +# + +# --- CONFIGURATION --- +# Set the path to your keybindings file. +# The script will check keybindings in 'hyprland.conf'. +HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf" + +# --- SCRIPT LOGIC --- + +# Determine which configuration file to use +if [ -f "$HYPRLAND_CONF" ]; then + CONFIG_FILE="$HYPRLAND_CONF" +else + # If no config file is found, show an error in wofi and exit + echo "Error: Configuration file not found." | wofi -dmenu -p "Hyprland Error" + exit 1 +fi + +# Process the configuration file to extract and format keybindings +# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces). +# 2. The first `sed` removes comments (anything after a '#'). +# 3. `awk` does the heavy lifting of formatting the output. +# - It sets the field separator to a comma ','. +# - It removes the 'bind... =' part from the beginning of the line. +# - It joins the key combination (e.g., "SUPER + Q"). +# - It joins the command that the key executes. +# - It prints everything in a nicely aligned format. +# 4. The final `sed` cleans up any leftover commas from the end of lines. +grep '^[[:space:]]*bind' "$CONFIG_FILE" | + sed 's/\#.*//' | + awk -F, '{ + # Remove the "bind... =" part and any surrounding whitespace + sub(/^[[:space:]]*bind[^=]*=[[:space:]]*/, "", $1); + + # Combine the modifier and key (first two fields) + key_combo = $1 " + " $2; + gsub(/^[ \t]+|[ \t]+$/, "", key_combo); # Trim whitespace + + # Reconstruct the command from the remaining fields + action = ""; + for (i = 3; i <= NF; i++) { + action = action $i (i < NF ? "," : ""); + } + gsub(/^[ \t]+|[ \t]+$/, "", action); # Trim whitespace + + # Print only if an action exists + if (action != "") { + printf "%-35s → %s\n", key_combo, action; + } + }' | + sed 's/,$//' | + flock --nonblock /tmp/.wofi.lock -c "wofi -dmenu -i --width 60% --height 70% -p 'Hyprland Keybindings'" diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index 8dbd878..b0ec530 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -14,6 +14,7 @@ bind = SUPER, space, exec, flock --nonblock /tmp/.wofi.lock -c "wofi --show drun bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next +bind = SUPER, K, exec, ~/.local/share/omarchy/bin/show-keybindings bind = SUPER, W, killactive, From ea2053bd18de0591f22af08f0937e91113222bf8 Mon Sep 17 00:00:00 2001 From: Ihar Suvorau Date: Thu, 3 Jul 2025 01:23:41 +0300 Subject: [PATCH 11/37] Prevent wofi from stack up When hitting SUPER + space several times, a new instance of wofi is launched each time and they stack upon each other. This change uses a file lock to prevent starting several instances of wofi. Thanks to everyone from this thread https://www.reddit.com/r/archlinux/comments/m327pt/prevent_wofi_from_stacking_up/ --- default/hypr/bindings.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index 20a974a..8dbd878 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -10,7 +10,7 @@ bind = SUPER, G, exec, $messenger bind = SUPER, O, exec, obsidian -disable-gpu bind = SUPER, slash, exec, $passwordManager -bind = SUPER, space, exec, wofi --show drun --sort-order=alphabetical +bind = SUPER, space, exec, flock --nonblock /tmp/.wofi.lock -c "wofi --show drun --sort-order=alphabetical" bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next From 9a99e24d6707e652be391a596a45a38cce709df8 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 3 Jul 2025 13:14:42 -0700 Subject: [PATCH 12/37] Tweak keybindings and include the ones in the defaults too --- bin/omarchy-show-keybindings | 51 ++++++++++++++++++++++++++++++++ bin/show-keybindings | 56 ------------------------------------ default/hypr/bindings.conf | 3 +- 3 files changed, 53 insertions(+), 57 deletions(-) create mode 100755 bin/omarchy-show-keybindings delete mode 100755 bin/show-keybindings diff --git a/bin/omarchy-show-keybindings b/bin/omarchy-show-keybindings new file mode 100755 index 0000000..c517eaf --- /dev/null +++ b/bin/omarchy-show-keybindings @@ -0,0 +1,51 @@ +#!/bin/bash + +# A script to display Hyprland keybindings defined in your configuration +# using wofi for an interactive search menu. + +USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf" +OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf" + +# Process the configuration file to extract and format keybindings +# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces). +# 2. The first `sed` removes comments (anything after a '#'). +# 3. `awk` does the heavy lifting of formatting the output. +# - It sets the field separator to a comma ','. +# - It removes the 'bind... =' part from the beginning of the line. +# - It joins the key combination (e.g., "SUPER + Q"). +# - It joins the command that the key executes. +# - It prints everything in a nicely aligned format. +# 4. The final `sed` cleans up any leftover commas from the end of lines. +grep -h '^[[:space:]]*bind' "$HYPRLAND_CONF" "$OMARCHY_BINDINGS_CONF" | + awk -F, ' +{ + # Strip trailing comments + sub(/#.*/, ""); + + # Remove the "bind... =" part and surrounding whitespace + sub(/^[[:space:]]*bind[^=]*=(\+[[:space:]])?(exec, )?[[:space:]]*/, "", $1); + + # Combine the modifier and key (first two fields) + key_combo = $1 " + " $2; + + # Clean up: strip leading "+" if present, trim spaces + gsub(/^[ \t]*\+?[ \t]*/, "", key_combo); + gsub(/[ \t]+$/, "", key_combo); + + # Reconstruct the command from the remaining fields + action = ""; + for (i = 3; i <= NF; i++) { + action = action $i (i < NF ? "," : ""); + } + + # Clean up trailing commas, remove leading "exec, ", and trim + sub(/,$/, "", action); + gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action); + gsub(/^[ \t]+|[ \t]+$/, "", action); + gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one + + if (action != "") { + printf "%-35s → %s\n", key_combo, action; + } +}' | + flock --nonblock /tmp/.wofi.lock -c "wofi -dmenu -i --width 60% --height 70% -p 'Hyprland Keybindings' -O alphabetical" diff --git a/bin/show-keybindings b/bin/show-keybindings deleted file mode 100755 index 4f9369f..0000000 --- a/bin/show-keybindings +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -# -# A script to display Hyprland keybindings defined in your configuration -# using wofi for an interactive search menu. -# - -# --- CONFIGURATION --- -# Set the path to your keybindings file. -# The script will check keybindings in 'hyprland.conf'. -HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf" - -# --- SCRIPT LOGIC --- - -# Determine which configuration file to use -if [ -f "$HYPRLAND_CONF" ]; then - CONFIG_FILE="$HYPRLAND_CONF" -else - # If no config file is found, show an error in wofi and exit - echo "Error: Configuration file not found." | wofi -dmenu -p "Hyprland Error" - exit 1 -fi - -# Process the configuration file to extract and format keybindings -# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces). -# 2. The first `sed` removes comments (anything after a '#'). -# 3. `awk` does the heavy lifting of formatting the output. -# - It sets the field separator to a comma ','. -# - It removes the 'bind... =' part from the beginning of the line. -# - It joins the key combination (e.g., "SUPER + Q"). -# - It joins the command that the key executes. -# - It prints everything in a nicely aligned format. -# 4. The final `sed` cleans up any leftover commas from the end of lines. -grep '^[[:space:]]*bind' "$CONFIG_FILE" | - sed 's/\#.*//' | - awk -F, '{ - # Remove the "bind... =" part and any surrounding whitespace - sub(/^[[:space:]]*bind[^=]*=[[:space:]]*/, "", $1); - - # Combine the modifier and key (first two fields) - key_combo = $1 " + " $2; - gsub(/^[ \t]+|[ \t]+$/, "", key_combo); # Trim whitespace - - # Reconstruct the command from the remaining fields - action = ""; - for (i = 3; i <= NF; i++) { - action = action $i (i < NF ? "," : ""); - } - gsub(/^[ \t]+|[ \t]+$/, "", action); # Trim whitespace - - # Print only if an action exists - if (action != "") { - printf "%-35s → %s\n", key_combo, action; - } - }' | - sed 's/,$//' | - flock --nonblock /tmp/.wofi.lock -c "wofi -dmenu -i --width 60% --height 70% -p 'Hyprland Keybindings'" diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index b0ec530..f6e321d 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -11,10 +11,11 @@ bind = SUPER, O, exec, obsidian -disable-gpu bind = SUPER, slash, exec, $passwordManager bind = SUPER, space, exec, flock --nonblock /tmp/.wofi.lock -c "wofi --show drun --sort-order=alphabetical" + bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next -bind = SUPER, K, exec, ~/.local/share/omarchy/bin/show-keybindings +bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-show-keybindings bind = SUPER, W, killactive, From 1a061cb427af587ba5dcbe7839edcb0bda116274 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 3 Jul 2025 13:38:50 -0700 Subject: [PATCH 13/37] Add Google Messages for RCS via Android Great for SMS 2FA etc! --- config/hypr/hyprland.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 316fc80..42259de 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -35,6 +35,7 @@ bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/" bind = SUPER, E, exec, $webapp="https://app.hey.com" bind = SUPER, Y, exec, $webapp="https://youtube.com/" bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.com/" +bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversations" bind = SUPER, X, exec, $webapp="https://x.com/" bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post" From d05020b7c17624cb4e2bd8debf319d8172da3bea Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 3 Jul 2025 13:59:31 -0700 Subject: [PATCH 14/37] Include Google Messages as a web app too --- install/webapps.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/webapps.sh b/install/webapps.sh index a58c467..befdaec 100644 --- a/install/webapps.sh +++ b/install/webapps.sh @@ -2,6 +2,7 @@ source ~/.local/share/omarchy/default/bash/functions web2app "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png web2app "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png web2app "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png +web2app "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png web2app "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png From bf19025088d658e0a6b5e861085dcf8e019c2b23 Mon Sep 17 00:00:00 2001 From: Brosseau Valentin Date: Fri, 4 Jul 2025 17:59:13 +0200 Subject: [PATCH 15/37] fix: use key codes instead of numeric values to support alternative keyboard layouts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some layouts (like AZERTY or Bépo) do not provide direct access to number keys. Using key codes improves compatibility across different keyboard configurations. --- default/hypr/bindings.conf | 40 +++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index 8dbd878..49623cf 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -36,28 +36,28 @@ bind = SUPER, up, movefocus, u bind = SUPER, down, movefocus, d # Switch workspaces with mainMod + [0-9] -bind = SUPER, 1, workspace, 1 -bind = SUPER, 2, workspace, 2 -bind = SUPER, 3, workspace, 3 -bind = SUPER, 4, workspace, 4 -bind = SUPER, 5, workspace, 5 -bind = SUPER, 6, workspace, 6 -bind = SUPER, 7, workspace, 7 -bind = SUPER, 8, workspace, 8 -bind = SUPER, 9, workspace, 9 -bind = SUPER, 0, workspace, 10 +bind = SUPER, code:10, workspace, 1 +bind = SUPER, code:11, workspace, 2 +bind = SUPER, code:12, workspace, 3 +bind = SUPER, code:13, workspace, 4 +bind = SUPER, code:14, workspace, 5 +bind = SUPER, code:15, workspace, 6 +bind = SUPER, code:16, workspace, 7 +bind = SUPER, code:17, workspace, 8 +bind = SUPER, code:18, workspace, 9 +bind = SUPER, code:19, workspace, 10 # Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = SUPER SHIFT, 1, movetoworkspace, 1 -bind = SUPER SHIFT, 2, movetoworkspace, 2 -bind = SUPER SHIFT, 3, movetoworkspace, 3 -bind = SUPER SHIFT, 4, movetoworkspace, 4 -bind = SUPER SHIFT, 5, movetoworkspace, 5 -bind = SUPER SHIFT, 6, movetoworkspace, 6 -bind = SUPER SHIFT, 7, movetoworkspace, 7 -bind = SUPER SHIFT, 8, movetoworkspace, 8 -bind = SUPER SHIFT, 9, movetoworkspace, 9 -bind = SUPER SHIFT, 0, movetoworkspace, 10 +bind = SUPER SHIFT, code:10, movetoworkspace, 1 +bind = SUPER SHIFT, code:11, movetoworkspace, 2 +bind = SUPER SHIFT, code:12, movetoworkspace, 3 +bind = SUPER SHIFT, code:13, movetoworkspace, 4 +bind = SUPER SHIFT, code:14, movetoworkspace, 5 +bind = SUPER SHIFT, code:15, movetoworkspace, 6 +bind = SUPER SHIFT, code:16, movetoworkspace, 7 +bind = SUPER SHIFT, code:17, movetoworkspace, 8 +bind = SUPER SHIFT, code:18, movetoworkspace, 9 +bind = SUPER SHIFT, code:19, movetoworkspace, 10 # Swap active window with the one next to it with mainMod + SHIFT + arrow keys bind = SUPER SHIFT, left, swapwindow, l From 0ab85263e2e34ac9b8fd1795420119e11e11e368 Mon Sep 17 00:00:00 2001 From: Martin Stork Date: Fri, 4 Jul 2025 20:27:51 +0200 Subject: [PATCH 16/37] Open and close wofi with the same binding --- default/hypr/bindings.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index 8dbd878..3cd1ec4 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -10,7 +10,9 @@ bind = SUPER, G, exec, $messenger bind = SUPER, O, exec, obsidian -disable-gpu bind = SUPER, slash, exec, $passwordManager -bind = SUPER, space, exec, flock --nonblock /tmp/.wofi.lock -c "wofi --show drun --sort-order=alphabetical" +# Toggle wofi +bind = SUPER, space, exec, pkill wofi || wofi --show drun --sort-order=alphabetical + bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next From 609c8ef84e46fb0abd6eb02301c89aef26e466c6 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 11:49:09 -0700 Subject: [PATCH 17/37] Revert "Merge pull request #37 from prertik/nvim-switch-to-current-theme" This reverts commit 79a8d34cc5dedfcb9830bb4d218ee9d6486cd597, reversing changes made to d05020b7c17624cb4e2bd8debf319d8172da3bea. --- config/nvim/lua/plugins/theme.lua | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/config/nvim/lua/plugins/theme.lua b/config/nvim/lua/plugins/theme.lua index 8464386..dad2d30 100644 --- a/config/nvim/lua/plugins/theme.lua +++ b/config/nvim/lua/plugins/theme.lua @@ -1,8 +1,4 @@ -local uv = vim.uv -local file_path = vim.fn.expand("~/.config/omarchy/current/theme/neovim.lua") - --- Default configuration -local default = { +return { { "LazyVim/LazyVim", opts = { @@ -10,13 +6,3 @@ local default = { }, }, } - --- Try to load custom theme, fallback to default -if uv.fs_stat(file_path) then - local success, result = pcall(dofile, file_path) - if success and type(result) == "table" then - return result - end -end - -return default From 3b755b09aacb15a43f20d5c2cb88085be4c9168c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 12:10:52 -0700 Subject: [PATCH 18/37] Use Chromium as the default browser Prevents that warning on first start --- install/mimetypes.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install/mimetypes.sh b/install/mimetypes.sh index 052dc60..176991d 100644 --- a/install/mimetypes.sh +++ b/install/mimetypes.sh @@ -11,6 +11,11 @@ xdg-mime default imv.desktop image/tiff # Open PDFs with the Document Viewer xdg-mime default org.gnome.Evince.desktop application/pdf +# Use Chromium as the default browser +xdg-settings set default-web-browser chromium.desktop +xdg-mime default chromium.desktop x-scheme-handler/http +xdg-mime default chromium.desktop x-scheme-handler/https + # Open video files with VLC xdg-mime default vlc.desktop video/mp4 xdg-mime default vlc.desktop video/x-msvideo From a736c95fdc308e8320c1140cba919871e3e172d5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 14:51:33 -0700 Subject: [PATCH 19/37] Turn on fingerprint authentication for hyprlock Still requires setting up fprint, but we explain that in the manual. Closes #54. --- config/hypr/hyprlock.conf | 6 +++++- themes/catppuccin/hyprlock.conf | 8 ++++++-- themes/everforest/hyprlock.conf | 8 ++++++-- themes/gruvbox/hyprlock.conf | 8 ++++++-- themes/kanagawa/hyprlock.conf | 8 ++++++-- themes/nord/hyprlock.conf | 8 ++++++-- themes/tokyo-night/hyprlock.conf | 8 ++++++-- 7 files changed, 41 insertions(+), 13 deletions(-) diff --git a/config/hypr/hyprlock.conf b/config/hypr/hyprlock.conf index 677e0b5..e84e35b 100644 --- a/config/hypr/hyprlock.conf +++ b/config/hypr/hyprlock.conf @@ -32,7 +32,7 @@ input-field { font_color = rgba(205,214,244,1.0) placeholder_color = rgba(205,214,244,0.6) - placeholder_text = Enter Password + placeholder_text =   Enter Password 󰈷  check_color = rgba(68, 157, 171, 1.0) fail_text = Wrong @@ -40,3 +40,7 @@ input-field { shadow_passes = 0 fade_on_empty = false } + +auth { + fingerprint:enabled = true +} diff --git a/themes/catppuccin/hyprlock.conf b/themes/catppuccin/hyprlock.conf index 622d7fc..f4f0997 100644 --- a/themes/catppuccin/hyprlock.conf +++ b/themes/catppuccin/hyprlock.conf @@ -32,11 +32,15 @@ input-field { font_color = rgba(205,214,244,1.0) placeholder_color = rgba(205,214,244,0.6) - placeholder_text = Enter Password + placeholder_text =   Enter Password 󰈷  check_color = rgba(68, 157, 171, 1.0) fail_text = Wrong rounding = 0 shadow_passes = 0 fade_on_empty = false -} \ No newline at end of file +} + +auth { + fingerprint:enabled = true +} diff --git a/themes/everforest/hyprlock.conf b/themes/everforest/hyprlock.conf index 54bf3c5..b374cfb 100644 --- a/themes/everforest/hyprlock.conf +++ b/themes/everforest/hyprlock.conf @@ -32,11 +32,15 @@ input-field { font_color = rgba(211,198,170,1.0) placeholder_color = rgba(211,198,170,0.6) - placeholder_text = Enter Password + placeholder_text =   Enter Password 󰈷  check_color = rgba(131, 192, 146, 1.0) fail_text = Wrong rounding = 0 shadow_passes = 0 fade_on_empty = false -} \ No newline at end of file +} + +auth { + fingerprint:enabled = true +} diff --git a/themes/gruvbox/hyprlock.conf b/themes/gruvbox/hyprlock.conf index 6fc6793..8a657eb 100644 --- a/themes/gruvbox/hyprlock.conf +++ b/themes/gruvbox/hyprlock.conf @@ -32,11 +32,15 @@ input-field { font_color = rgba(212,190,152,1.0) placeholder_color = rgba(212,190,152,0.6) - placeholder_text = Enter Password + placeholder_text =   Enter Password 󰈷  check_color = rgba(214, 153, 92, 1.0) fail_text = Wrong rounding = 0 shadow_passes = 0 fade_on_empty = false -} \ No newline at end of file +} + +auth { + fingerprint:enabled = true +} diff --git a/themes/kanagawa/hyprlock.conf b/themes/kanagawa/hyprlock.conf index f603ab9..713ad7a 100644 --- a/themes/kanagawa/hyprlock.conf +++ b/themes/kanagawa/hyprlock.conf @@ -32,11 +32,15 @@ input-field { font_color = rgba(220,215,186,1.0) placeholder_color = rgba(220,215,186,0.6) - placeholder_text = Enter Password + placeholder_text =   Enter Password 󰈷  check_color = rgba(126, 156, 216, 1.0) fail_text = Wrong rounding = 0 shadow_passes = 0 fade_on_empty = false -} \ No newline at end of file +} + +auth { + fingerprint:enabled = true +} diff --git a/themes/nord/hyprlock.conf b/themes/nord/hyprlock.conf index 1917b5d..fe1f422 100644 --- a/themes/nord/hyprlock.conf +++ b/themes/nord/hyprlock.conf @@ -32,11 +32,15 @@ input-field { font_color = rgba(216,222,233,1.0) placeholder_color = rgba(216,222,233,0.6) - placeholder_text = Enter Password + placeholder_text =   Enter Password 󰈷  check_color = rgba(136, 192, 208, 1.0) fail_text = Wrong rounding = 0 shadow_passes = 0 fade_on_empty = false -} \ No newline at end of file +} + +auth { + fingerprint:enabled = true +} diff --git a/themes/tokyo-night/hyprlock.conf b/themes/tokyo-night/hyprlock.conf index e097652..cccc950 100644 --- a/themes/tokyo-night/hyprlock.conf +++ b/themes/tokyo-night/hyprlock.conf @@ -32,11 +32,15 @@ input-field { font_color = rgba(205,214,244,1.0) placeholder_color = rgba(205,214,244,0.6) - placeholder_text = Enter Password + placeholder_text =   Enter Password 󰈷  check_color = rgba(68, 157, 171, 1.0) fail_text = Wrong rounding = 0 shadow_passes = 0 fade_on_empty = false -} \ No newline at end of file +} + +auth { + fingerprint:enabled = true +} From 985d137d7182ca8ae85101acc6dc91fdbc76a681 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:05:07 -0700 Subject: [PATCH 20/37] Add a fingerprint setup script Follow-up to #54 --- bin/omarchy-fingerprint-setup | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100755 bin/omarchy-fingerprint-setup diff --git a/bin/omarchy-fingerprint-setup b/bin/omarchy-fingerprint-setup new file mode 100755 index 0000000..ca3f57d --- /dev/null +++ b/bin/omarchy-fingerprint-setup @@ -0,0 +1,15 @@ +#!/bin/bash + +yay -S --noconfirm --needed fprint + +echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m" +sudo fprintd-enroll + +echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n" + +if fprintd-verify; then + echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m" +else + echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m" +fi + From 89ee15f5fb6e801e49278ead9b90c165f97cf01a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:05:34 -0700 Subject: [PATCH 21/37] Excess CR --- bin/omarchy-fingerprint-setup | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/omarchy-fingerprint-setup b/bin/omarchy-fingerprint-setup index ca3f57d..25e587c 100755 --- a/bin/omarchy-fingerprint-setup +++ b/bin/omarchy-fingerprint-setup @@ -12,4 +12,3 @@ if fprintd-verify; then else echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m" fi - From 56ec1351d37ede646bd7b1098b6517ee90498918 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:20:20 -0700 Subject: [PATCH 22/37] Switch default video player from vlc to mpv It's faster and looks better on hyprland --- applications/vlc.desktop | 14 -------------- default/hypr/windows.conf | 2 +- install/desktop.sh | 2 +- install/mimetypes.sh | 32 ++++++++++++++++---------------- install/theme.sh | 2 +- 5 files changed, 19 insertions(+), 33 deletions(-) delete mode 100644 applications/vlc.desktop diff --git a/applications/vlc.desktop b/applications/vlc.desktop deleted file mode 100644 index cad7900..0000000 --- a/applications/vlc.desktop +++ /dev/null @@ -1,14 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=VLC media player -GenericName=Media player -Comment=Read, capture, broadcast your multimedia streams -Exec=env QT_SCALE_FACTOR=2 /usr/bin/vlc --started-from-file %U -TryExec=/usr/bin/vlc -Icon=vlc -Terminal=false -Type=Application -Categories=AudioVideo;Player;Recorder; -MimeType=application/ogg;application/x-ogg;audio/ogg;audio/vorbis;audio/x-vorbis;audio/x-vorbis+ogg;video/ogg;video/x-ogm;video/x-ogm+ogg;video/x-theora+ogg;video/x-theora;audio/x-speex;audio/opus;application/x-flac;audio/flac;audio/x-flac;audio/x-ms-asf;audio/x-ms-asx;audio/x-ms-wax;audio/x-ms-wma;video/x-ms-asf;video/x-ms-asf-plugin;video/x-ms-asx;video/x-ms-wm;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvx;video/x-msvideo;audio/x-pn-windows-acm;video/divx;video/msvideo;video/vnd.divx;video/avi;video/x-avi;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/vnd.rn-realaudio;audio/x-pn-realaudio;audio/x-pn-realaudio-plugin;audio/x-real-audio;audio/x-realaudio;video/vnd.rn-realvideo;audio/mpeg;audio/mpg;audio/mp1;audio/mp2;audio/mp3;audio/x-mp1;audio/x-mp2;audio/x-mp3;audio/x-mpeg;audio/x-mpg;video/mp2t;video/mpeg;video/mpeg-system;video/x-mpeg;video/x-mpeg2;video/x-mpeg-system;application/mpeg4-iod;application/mpeg4-muxcodetable;application/x-extension-m4a;application/x-extension-mp4;audio/aac;audio/m4a;audio/mp4;audio/x-m4a;audio/x-aac;video/mp4;video/mp4v-es;video/x-m4v;application/x-quicktime-media-link;application/x-quicktimeplayer;video/quicktime;application/x-matroska;audio/x-matroska;video/x-matroska;video/webm;audio/webm;audio/3gpp;audio/3gpp2;audio/AMR;audio/AMR-WB;video/3gp;video/3gpp;video/3gpp2;x-scheme-handler/mms;x-scheme-handler/mmsh;x-scheme-handler/rtsp;x-scheme-handler/rtp;x-scheme-handler/rtmp;x-scheme-handler/icy;x-scheme-handler/icyx;application/x-cd-image;x-content/video-vcd;x-content/video-svcd;x-content/video-dvd;x-content/audio-cdda;x-content/audio-player;application/ram;application/xspf+xml;audio/mpegurl;audio/x-mpegurl;audio/scpls;audio/x-scpls;text/google-video-pointer;text/x-google-video-pointer;video/vnd.mpegurl;application/vnd.apple.mpegurl;application/vnd.ms-asf;application/vnd.ms-wpl;application/sdp;audio/dv;video/dv;audio/x-aiff;audio/x-pn-aiff;video/x-anim;video/x-nsv;video/fli;video/flv;video/x-flc;video/x-fli;video/x-flv;audio/wav;audio/x-pn-au;audio/x-pn-wav;audio/x-wav;audio/x-adpcm;audio/ac3;audio/eac3;audio/vnd.dts;audio/vnd.dts.hd;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/vnd.dolby.mlp;audio/basic;audio/midi;audio/x-ape;audio/x-gsm;audio/x-musepack;audio/x-tta;audio/x-wavpack;audio/x-shorten;application/x-shockwave-flash;application/x-flash-video;misc/ultravox;image/vnd.rn-realpix;audio/x-it;audio/x-mod;audio/x-s3m;audio/x-xm;application/mxf; -X-KDE-Protocols=ftp,http,https,mms,rtmp,rtsp,sftp,smb -Keywords=Player;Capture;DVD;Audio;Video;Server;Broadcast; diff --git a/default/hypr/windows.conf b/default/hypr/windows.conf index 197ca11..99ba971 100644 --- a/default/hypr/windows.conf +++ b/default/hypr/windows.conf @@ -15,7 +15,7 @@ windowrule = fullscreen, class:^(com.libretro.RetroArch)$ windowrule = opacity 0.97 0.9, class:.* windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$ windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube -windowrule = opacity 1 1, class:^(zoom|vlc|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv)$ +windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv)$ windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$ # Fix some dragging issues with XWayland diff --git a/install/desktop.sh b/install/desktop.sh index 93c7f75..61c6811 100644 --- a/install/desktop.sh +++ b/install/desktop.sh @@ -4,5 +4,5 @@ yay -S --noconfirm --needed \ wl-clip-persist clipse \ nautilus sushi gnome-calculator \ 1password-beta 1password-cli \ - chromium vlc \ + chromium mpv \ evince imv diff --git a/install/mimetypes.sh b/install/mimetypes.sh index 176991d..87486c2 100644 --- a/install/mimetypes.sh +++ b/install/mimetypes.sh @@ -16,19 +16,19 @@ xdg-settings set default-web-browser chromium.desktop xdg-mime default chromium.desktop x-scheme-handler/http xdg-mime default chromium.desktop x-scheme-handler/https -# Open video files with VLC -xdg-mime default vlc.desktop video/mp4 -xdg-mime default vlc.desktop video/x-msvideo -xdg-mime default vlc.desktop video/x-matroska -xdg-mime default vlc.desktop video/x-flv -xdg-mime default vlc.desktop video/x-ms-wmv -xdg-mime default vlc.desktop video/mpeg -xdg-mime default vlc.desktop video/ogg -xdg-mime default vlc.desktop video/webm -xdg-mime default vlc.desktop video/quicktime -xdg-mime default vlc.desktop video/3gpp -xdg-mime default vlc.desktop video/3gpp2 -xdg-mime default vlc.desktop video/x-ms-asf -xdg-mime default vlc.desktop video/x-ogm+ogg -xdg-mime default vlc.desktop video/x-theora+ogg -xdg-mime default vlc.desktop application/ogg +# Open video files with mpv +xdg-mime default mpv.desktop video/mp4 +xdg-mime default mpv.desktop video/x-msvideo +xdg-mime default mpv.desktop video/x-matroska +xdg-mime default mpv.desktop video/x-flv +xdg-mime default mpv.desktop video/x-ms-wmv +xdg-mime default mpv.desktop video/mpeg +xdg-mime default mpv.desktop video/ogg +xdg-mime default mpv.desktop video/webm +xdg-mime default mpv.desktop video/quicktime +xdg-mime default mpv.desktop video/3gpp +xdg-mime default mpv.desktop video/3gpp2 +xdg-mime default mpv.desktop video/x-ms-asf +xdg-mime default mpv.desktop video/x-ogm+ogg +xdg-mime default mpv.desktop video/x-theora+ogg +xdg-mime default mpv.desktop application/ogg diff --git a/install/theme.sh b/install/theme.sh index a3ec62e..15e2033 100644 --- a/install/theme.sh +++ b/install/theme.sh @@ -1,4 +1,4 @@ -# Use dark mode for QT apps too (like VLC and kdenlive) +# Use dark mode for QT apps too (like kdenlive) sudo pacman -S --noconfirm kvantum-qt5 # Prefer dark mode everything From e4db074d389e5dacfd7b8158ded9996736318a33 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:22:04 -0700 Subject: [PATCH 23/37] Add migration to switch from vlc to mpv --- migrations/1751667620.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 migrations/1751667620.sh diff --git a/migrations/1751667620.sh b/migrations/1751667620.sh new file mode 100644 index 0000000..7a63ab7 --- /dev/null +++ b/migrations/1751667620.sh @@ -0,0 +1,19 @@ +echo "Switching from vlc to mpv for the default video player" +yay -Rns vlc +rm ~/.local/share/applications/vlc.desktop +yay -S --noconfirm mpv +xdg-mime default mpv.desktop video/mp4 +xdg-mime default mpv.desktop video/x-msvideo +xdg-mime default mpv.desktop video/x-matroska +xdg-mime default mpv.desktop video/x-flv +xdg-mime default mpv.desktop video/x-ms-wmv +xdg-mime default mpv.desktop video/mpeg +xdg-mime default mpv.desktop video/ogg +xdg-mime default mpv.desktop video/webm +xdg-mime default mpv.desktop video/quicktime +xdg-mime default mpv.desktop video/3gpp +xdg-mime default mpv.desktop video/3gpp2 +xdg-mime default mpv.desktop video/x-ms-asf +xdg-mime default mpv.desktop video/x-ogm+ogg +xdg-mime default mpv.desktop video/x-theora+ogg +xdg-mime default mpv.desktop application/ogg From 5957da5ecbf56aecd9e6c9e301d5cf7cbcbb6853 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:24:36 -0700 Subject: [PATCH 24/37] No confirm the removal --- migrations/1751667620.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrations/1751667620.sh b/migrations/1751667620.sh index 7a63ab7..5413a47 100644 --- a/migrations/1751667620.sh +++ b/migrations/1751667620.sh @@ -1,5 +1,5 @@ echo "Switching from vlc to mpv for the default video player" -yay -Rns vlc +yay -Rns --noconfirm vlc rm ~/.local/share/applications/vlc.desktop yay -S --noconfirm mpv xdg-mime default mpv.desktop video/mp4 From c74ad0a013717407e57bde7db3bd2ee5c1e17619 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:29:48 -0700 Subject: [PATCH 25/37] Catch errors and offer a retry --- install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/install.sh b/install.sh index 6fe4c7b..bd4465b 100644 --- a/install.sh +++ b/install.sh @@ -1,3 +1,9 @@ +# Exit immediately if a command exits with a non-zero status +set -e + +# Give people a chance to retry running the installation +trap 'echo "Omarchy installation failed! You can retry by running: source ~/.local/share/omarchy/install.sh"' ERR + # Install everything for f in ~/.local/share/omarchy/install/*.sh; do source "$f"; done From 3d8c15a39761c7100d5949997e4774807969eb3d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:44:28 -0700 Subject: [PATCH 26/37] Correct name --- install/{adscontrol.sh => asdcontrol.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename install/{adscontrol.sh => asdcontrol.sh} (100%) diff --git a/install/adscontrol.sh b/install/asdcontrol.sh similarity index 100% rename from install/adscontrol.sh rename to install/asdcontrol.sh From 648d061b3cc22c05b5cdc5f7b87cb043de3dddb3 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:47:38 -0700 Subject: [PATCH 27/37] Fix missing dir for /etc/docker --- install/docker.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/docker.sh b/install/docker.sh index 49f2b20..abb27fd 100644 --- a/install/docker.sh +++ b/install/docker.sh @@ -1,6 +1,7 @@ yay -S --noconfirm --needed docker docker-compose # Limit log size to avoid running out of disk +sudo mkdir -p /etc/docker echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json # Start Docker automatically From 1d90a15c161daf3377f6fc0a58fa5a2a596aabfc Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:49:04 -0700 Subject: [PATCH 28/37] Add missing docker config migration --- migrations/1751669258.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 migrations/1751669258.sh diff --git a/migrations/1751669258.sh b/migrations/1751669258.sh new file mode 100644 index 0000000..cac622f --- /dev/null +++ b/migrations/1751669258.sh @@ -0,0 +1,3 @@ +echo "Add missing docker config" +sudo mkdir -p /etc/docker +echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json From 211b99320bae2383a3fde72dff182fa898c2c197 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 15:54:11 -0700 Subject: [PATCH 29/37] Add localsend-bin No rust conflicts! Closes #51, #46 --- install/desktop.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install/desktop.sh b/install/desktop.sh index 61c6811..1ed39d2 100644 --- a/install/desktop.sh +++ b/install/desktop.sh @@ -5,4 +5,5 @@ yay -S --noconfirm --needed \ nautilus sushi gnome-calculator \ 1password-beta 1password-cli \ chromium mpv \ - evince imv + evince imv \ + localsend-bin From e3b211efae03c89aecbd8ed491a06dee8c6c43e9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 16:00:28 -0700 Subject: [PATCH 30/37] Fix missing directory --- install/4-config.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install/4-config.sh b/install/4-config.sh index bf646cd..8314790 100644 --- a/install/4-config.sh +++ b/install/4-config.sh @@ -1,6 +1,9 @@ # Copy over Omarchy configs cp -R ~/.local/share/omarchy/config/* ~/.config/ +# Ensure application directory exists for update-desktop-database +mkdir -p ~/.local/share/applications + # Use default bashrc from Omarchy echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc From 63d4d6d30266052e5897510e4decb97dcedecb51 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 16:03:19 -0700 Subject: [PATCH 31/37] Only ask if we don't have the identification already --- install/2-identification.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/install/2-identification.sh b/install/2-identification.sh index c135b29..9678e22 100644 --- a/install/2-identification.sh +++ b/install/2-identification.sh @@ -2,6 +2,8 @@ yay -S --noconfirm --needed gum # Configure identification -echo -e "\nEnter identification for git and autocomplete..." -export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ") -export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ") +if [[ -z "${OMARCHY_USER_NAME//[[:space:]]/}${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then + echo -e "\nEnter identification for git and autocomplete..." + export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ") + export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ") +fi From ce875b6fee842967b3763856dcfcbcde2c2aefb7 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 16:08:04 -0700 Subject: [PATCH 32/37] Be resilient to power profile not existing --- install/power.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/power.sh b/install/power.sh index 86e26d2..c7f458f 100644 --- a/install/power.sh +++ b/install/power.sh @@ -4,8 +4,8 @@ yay -S --noconfirm power-profiles-daemon if ls /sys/class/power_supply/BAT* &>/dev/null; then # This computer runs on a battery - powerprofilesctl set balanced + powerprofilesctl set balanced || true else # This computer runs on power outlet - powerprofilesctl set performance + powerprofilesctl set performance || true fi From 3c1e7e5b10fa3c8c797803ea8fcf6565d7b6b76b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 16:10:58 -0700 Subject: [PATCH 33/37] Switch to bin versions where possible --- install/development.sh | 2 +- install/xtras.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/development.sh b/install/development.sh index 190d726..9fbf0ec 100644 --- a/install/development.sh +++ b/install/development.sh @@ -3,4 +3,4 @@ yay -S --noconfirm --needed \ imagemagick \ mariadb-libs postgresql-libs \ github-cli \ - lazygit lazydocker + lazygit lazydocker-bin diff --git a/install/xtras.sh b/install/xtras.sh index 47f162b..d3a72fa 100644 --- a/install/xtras.sh +++ b/install/xtras.sh @@ -1,6 +1,6 @@ yay -S --noconfirm --needed \ signal-desktop spotify dropbox-cli zoom \ - obsidian typora libreoffice obs-studio kdenlive \ + obsidian-bin typora libreoffice obs-studio kdenlive \ pinta xournalpp # Copy over Omarchy applications From b15166cce086209e5cd49d7d6838e1f28baa5471 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 16:18:50 -0700 Subject: [PATCH 34/37] Use clipse bin as well --- install/desktop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/desktop.sh b/install/desktop.sh index 1ed39d2..581d603 100644 --- a/install/desktop.sh +++ b/install/desktop.sh @@ -1,7 +1,7 @@ yay -S --noconfirm --needed \ brightnessctl playerctl pamixer pavucontrol wireplumber \ fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool \ - wl-clip-persist clipse \ + wl-clip-persist clipse-bin \ nautilus sushi gnome-calculator \ 1password-beta 1password-cli \ chromium mpv \ From fcaf61162c371f1b5b7b9f8387247ebb5ceea70e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 16:20:30 -0700 Subject: [PATCH 35/37] Won't be set in that shell --- install/2-identification.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/install/2-identification.sh b/install/2-identification.sh index 9678e22..c135b29 100644 --- a/install/2-identification.sh +++ b/install/2-identification.sh @@ -2,8 +2,6 @@ yay -S --noconfirm --needed gum # Configure identification -if [[ -z "${OMARCHY_USER_NAME//[[:space:]]/}${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then - echo -e "\nEnter identification for git and autocomplete..." - export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ") - export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ") -fi +echo -e "\nEnter identification for git and autocomplete..." +export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ") +export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ") From e166cde9d0971e4051676a1b5829a2ebb44c7748 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 16:20:56 -0700 Subject: [PATCH 36/37] Don't let this stop it --- install/xtras.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/xtras.sh b/install/xtras.sh index d3a72fa..ba83bc1 100644 --- a/install/xtras.sh +++ b/install/xtras.sh @@ -4,4 +4,4 @@ yay -S --noconfirm --needed \ pinta xournalpp # Copy over Omarchy applications -source ~/.local/share/omarchy/bin/omarchy-sync-applications +source ~/.local/share/omarchy/bin/omarchy-sync-applications || true From 59b561a3acad0f9017beb4fa72fca0cf5027f97b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 4 Jul 2025 16:23:18 -0700 Subject: [PATCH 37/37] Don't actually install a specific ruby version Compilation slows down the install too much, and very often projects specify something specific. --- install/ruby.sh | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/install/ruby.sh b/install/ruby.sh index 87152e5..3e10636 100644 --- a/install/ruby.sh +++ b/install/ruby.sh @@ -1,10 +1,6 @@ -if ! command -v ruby &>/dev/null; then - # Install Ruby using gcc-14 for compatibility - yay -S --noconfirm --needed gcc14 - mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14" - mise install ruby - mise use ruby -g +# Install Ruby using gcc-14 for compatibility +yay -S --noconfirm --needed gcc14 +mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14" - # Trust .ruby-version - mise settings add idiomatic_version_file_enable_tools ruby -fi +# Trust .ruby-version +mise settings add idiomatic_version_file_enable_tools ruby