Merge pull request #2770 from basecamp/dev

Omarchy v3.1.2
This commit is contained in:
Ryan Hughes
2025-10-24 03:01:34 -04:00
committed by GitHub
41 changed files with 336 additions and 84 deletions

View File

@@ -4,33 +4,18 @@
BATTERY_THRESHOLD=10 BATTERY_THRESHOLD=10
NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified" NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified"
BATTERY_LEVEL=$(omarchy-battery-remaining)
get_battery_percentage() { BATTERY_STATE=$(upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{print $2}')
upower -i "$(upower -e | grep 'BAT')" \
| awk -F: '/percentage/ {
gsub(/[%[:space:]]/, "", $2);
val=$2;
printf("%d\n", (val+0.5))
exit
}'
}
get_battery_state() {
upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{print $2}'
}
send_notification() { send_notification() {
notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000 notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000
} }
BATTERY_LEVEL=$(get_battery_percentage) if [[ $BATTERY_STATE == "discharging" && $BATTERY_LEVEL -le $BATTERY_THRESHOLD ]]; then
BATTERY_STATE=$(get_battery_state) if [[ ! -f $NOTIFICATION_FLAG ]]; then
send_notification $BATTERY_LEVEL
if [[ "$BATTERY_STATE" == "discharging" && "$BATTERY_LEVEL" -le "$BATTERY_THRESHOLD" ]]; then touch $NOTIFICATION_FLAG
if [[ ! -f "$NOTIFICATION_FLAG" ]]; then
send_notification "$BATTERY_LEVEL"
touch "$NOTIFICATION_FLAG"
fi fi
else else
rm -f "$NOTIFICATION_FLAG" rm -f $NOTIFICATION_FLAG
fi fi

11
bin/omarchy-battery-remaining Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
# Returns the battery percentage remaining as an integer.
upower -i $(upower -e | grep BAT) \
| awk -F: '/percentage/ {
gsub(/[%[:space:]]/, "", $2);
val=$2;
printf("%d\n", (val+0.5))
exit
}'

61
bin/omarchy-debug Executable file
View File

@@ -0,0 +1,61 @@
#!/bin/bash
LOG_FILE="/tmp/omarchy-debug.log"
cat > "$LOG_FILE" <<EOF
Date: $(date)
Hostname: $(hostname)
Omarchy Branch: $(git -C "$OMARCHY_PATH" branch --show-current 2>/dev/null || echo "unknown")
=========================================
SYSTEM INFORMATION
=========================================
$(inxi -Farz)
=========================================
DMESG
=========================================
$(sudo dmesg)
=========================================
JOURNALCTL (CURRENT BOOT, ERRORS ONLY)
=========================================
$(journalctl -b -p 4..1)
=========================================
INSTALLED PACKAGES
=========================================
$({ expac -S '%n %v (%r)' $(pacman -Qqe) 2>/dev/null; comm -13 <(pacman -Sql | sort) <(pacman -Qqe | sort) | xargs -r expac -Q '%n %v (AUR)'; } | sort)
EOF
OPTIONS=("View log" "Save in current directory")
if ping -c 1 8.8.8.8 >/dev/null 2>&1; then
OPTIONS=("Upload log" "${OPTIONS[@]}")
fi
ACTION=$(gum choose "${OPTIONS[@]}")
case "$ACTION" in
"Upload log")
echo "Uploading debug log to 0x0.st..."
URL=$(curl -sF "file=@$LOG_FILE" -Fexpires=24 https://0x0.st)
if [ $? -eq 0 ] && [ -n "$URL" ]; then
echo "✓ Log uploaded successfully!"
echo "Share this URL:"
echo ""
echo " $URL"
echo ""
echo "This link will expire in 24 hours."
else
echo "Error: Failed to upload log file"
exit 1
fi
;;
"View log")
less "$LOG_FILE"
;;
"Save in current directory")
cp "$LOG_FILE" "./omarchy-debug.log"
echo "✓ Log saved to $(pwd)/omarchy-debug.log"
;;
esac

View File

@@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
set -e
if [[ $# -lt 1 ]]; then if [[ $# -lt 1 ]]; then
echo "Usage: omarchy-hook [name] [args...]" echo "Usage: omarchy-hook [name] [args...]"
exit 1 exit 1

View File

@@ -0,0 +1,10 @@
#!/bin/bash
workspace_id=$(hyprctl activeworkspace -j | jq -r .id)
gaps=$(hyprctl workspacerules -j | jq -r ".[] | select(.workspaceString==\"$workspace_id\") | .gapsOut[0] // 0")
if [[ $gaps == "0" ]]; then
hyprctl keyword "workspace $workspace_id, gapsout:10, gapsin:5, border:true"
else \
hyprctl keyword "workspace $workspace_id, gapsout:0, gapsin:0, border:false"
fi

View File

@@ -3,7 +3,7 @@
echo "Installing VSCode..." echo "Installing VSCode..."
omarchy-pkg-add visual-studio-code-bin omarchy-pkg-add visual-studio-code-bin
mkdir -p ~/.vscode mkdir -p ~/.vscode ~/.config/Code/User
cat > ~/.vscode/argv.json << 'EOF' cat > ~/.vscode/argv.json << 'EOF'
// This configuration file allows you to pass permanent command line arguments to VS Code. // This configuration file allows you to pass permanent command line arguments to VS Code.

3
bin/omarchy-launch-terminal Executable file
View File

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

View File

@@ -387,27 +387,20 @@ show_remove_menu() {
} }
show_update_menu() { show_update_menu() {
case $(menu "Update" " Omarchy\n Branch\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone") in case $(menu "Update" " Omarchy\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone\n Time") in
*Omarchy*) present_terminal omarchy-update ;; *Omarchy*) present_terminal omarchy-update ;;
*Branch*) show_update_branch_menu ;;
*Config*) show_update_config_menu ;; *Config*) show_update_config_menu ;;
*Themes*) present_terminal omarchy-theme-update ;; *Themes*) present_terminal omarchy-theme-update ;;
*Process*) show_update_process_menu ;; *Process*) show_update_process_menu ;;
*Hardware*) show_update_hardware_menu ;; *Hardware*) show_update_hardware_menu ;;
*Firmware*) present_terminal omarchy-update-firmware ;; *Firmware*) present_terminal omarchy-update-firmware ;;
*Timezone*) present_terminal omarchy-tz-select ;; *Timezone*) present_terminal omarchy-tz-select ;;
*Time*) present_terminal omarchy-reset-time ;;
*Password*) show_update_password_menu ;; *Password*) show_update_password_menu ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_update_branch_menu() {
case $(menu "Branch" "master\ndev" "" "$(omarchy-version-branch)") in
*master*) present_terminal "omarchy-update-branch master" ;;
*dev*) present_terminal "omarchy-update-branch dev" ;;
*) show_update_menu ;;
esac
}
show_update_process_menu() { show_update_process_menu() {
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hypridle*) omarchy-restart-hypridle ;; *Hypridle*) omarchy-restart-hypridle ;;

34
bin/omarchy-refresh-limine Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/bash
if [[ -f /boot/EFI/linux/omarchy_linux.efi ]] && [[ -f /boot/EFI/linux/$(cat /etc/machine-id)_linux.efi ]]; then
echo "Cleanup extra UKI"
sudo rm -f /boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi
fi
echo "Resetting limine config"
sudo mv /boot/limine.conf /boot/limine.conf.bak
sudo tee /boot/limine.conf <<EOF >/dev/null
### Read more at config document: https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md
#timeout: 3
default_entry: 2
interface_branding: Omarchy Bootloader
interface_branding_color: 2
hash_mismatch_panic: no
term_background: 1a1b26
backdrop: 1a1b26
# Terminal colors (Tokyo Night palette)
term_palette: 15161e;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;a9b1d6
term_palette_bright: 414868;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;c0caf5
# Text colors
term_foreground: c0caf5
term_foreground_bright: c0caf5
term_background_bright: 24283b
EOF
sudo limine-update
sudo limine-snapper-sync

33
bin/omarchy-reinstall Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/bash
set -e
if [ "$EUID" -eq 0 ]; then
echo "Error: This script should not be run as root"
exit 1
fi
echo -e "This will reinstall all the default Omarchy packages and reset all default configs.\nWarning: All changes to configs will be lost.\n"
if gum confirm "Are you sure you want to reinstall and lose all config changes?"; then
echo "Resetting Omarchy repository"
git clone "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null
rm -rf $OMARCHY_PATH
mv ~/.local/share/omarchy-new $OMARCHY_PATH
echo "Reinstalling missing Omarchy packages"
mapfile -t packages < <(grep -v '^#' "$OMARCHY_PATH/install/omarchy-base.packages" | grep -v '^$')
sudo pacman -Syu --noconfirm --needed "${packages[@]}"
echo "Resetting all Omarchy configs"
cp -R ~/.local/share/omarchy/config/* ~/.config/
cp ~/.local/share/omarchy/default/bashrc ~/.bashrc
echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' | tee ~/.bash_profile >/dev/null
$(bash $OMARCHY_PATH/install/config/theme.sh)
$(bash $OMARCHY_PATH/install/config/git.sh)
omarchy-refresh-limine
omarchy-refresh-plymouth
omarchy-nvim-setup
fi

4
bin/omarchy-reset-time Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
echo "Updating time..."
sudo systemctl restart systemd-timesyncd

View File

@@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
set -e
COMMAND="$1" COMMAND="$1"
OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/omarchy} OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/omarchy}

View File

@@ -3,7 +3,7 @@
# omarchy-theme-set-obsidian: Bootstrap and update Omarchy theme for Obsidian # omarchy-theme-set-obsidian: Bootstrap and update Omarchy theme for Obsidian
# #
# - Ensures registry at ~/.local/state/omarchy/obsidian-vaults # - Ensures registry at ~/.local/state/omarchy/obsidian-vaults
# - If missing/empty, bootstraps by scanning ~/Documents/*/.obsidian and ~/Dropbox/*/.obsidian # - Populates by extracting vault paths from ~/.config/obsidian/obsidian.json
# - For each valid vault: # - For each valid vault:
# - Ensures .obsidian/themes/Omarchy/{manifest.json, theme.css} # - Ensures .obsidian/themes/Omarchy/{manifest.json, theme.css}
# - Updates theme.css (uses current themes obsidian.css if present; otherwise generates -- see below) # - Updates theme.css (uses current themes obsidian.css if present; otherwise generates -- see below)
@@ -26,30 +26,18 @@
VAULTS_FILE="$HOME/.local/state/omarchy/obsidian-vaults" VAULTS_FILE="$HOME/.local/state/omarchy/obsidian-vaults"
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme" CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
# Ensure the vaults registry exists, or bootstrap from known locations
ensure_vaults_file() { ensure_vaults_file() {
mkdir -p "$(dirname "$VAULTS_FILE")" mkdir -p "$(dirname "$VAULTS_FILE")"
# If file exists (even empty), do not scan; treat as authoritative
if [ -f "$VAULTS_FILE" ]; then
return
fi
local tmpfile local tmpfile
tmpfile="$(mktemp)" tmpfile="$(mktemp)"
# Scan a couple of common locations for <base>/<vault>/.obsidian # Extract the Obsidian vault location from config file <base>/<vault>/.obsidian
for base in "$HOME/Documents" "$HOME/Dropbox"; do jq -r '.vaults | values[].path' ~/.config/obsidian/obsidian.json 2>/dev/null >>"$tmpfile"
[ -d "$base" ] || continue
for d in "$base"/*/.obsidian; do
[ -d "$d" ] || continue
vault_dir="${d%/.obsidian}"
printf "%s\n" "$vault_dir" >>"$tmpfile"
done
done
if [ -s "$tmpfile" ]; then if [ -s "$tmpfile" ]; then
sort -u "$tmpfile" >"$VAULTS_FILE" sort -u "$tmpfile" >"$VAULTS_FILE"
else else
: >"$VAULTS_FILE" : >"$VAULTS_FILE"
fi fi
rm -f "$tmpfile" rm "$tmpfile"
} }
# Ensure theme directory and minimal manifest exist in a vault # Ensure theme directory and minimal manifest exist in a vault

View File

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

View File

@@ -2,6 +2,8 @@
set -e 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
omarchy-snapshot create || [ $? -eq 127 ] omarchy-snapshot create || [ $? -eq 127 ]
omarchy-update-git omarchy-update-git
omarchy-update-perform omarchy-update-perform

View File

@@ -2,3 +2,4 @@
# Ensure Waybar icon offering the available update is removed # Ensure Waybar icon offering the available update is removed
pkill -RTMIN+7 waybar pkill -RTMIN+7 waybar
exit 0

View File

@@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
set -e
echo -e "\e[32mUpdate Omarchy\e[0m" echo -e "\e[32mUpdate Omarchy\e[0m"
git -C $OMARCHY_PATH pull --autostash git -C $OMARCHY_PATH pull --autostash

View File

@@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
set -e
# Used in package emergencies if a bad package has been pushed and we can't revoke. # Used in package emergencies if a bad package has been pushed and we can't revoke.
# Requires manually installing the good package using sudo pacman -U <url> # Requires manually installing the good package using sudo pacman -U <url>
ignored_packages=$(omarchy-pkg-ignored) ignored_packages=$(omarchy-pkg-ignored)

View File

@@ -273,7 +273,7 @@ launch_windows() {
echo "Starting Windows VM..." echo "Starting Windows VM..."
# Send desktop notification # Send desktop notification
notify-send "Windows VM" "Starting Windows VM, this may take a moment..." notify-send "Starting Windows VM" " This can take 15-30 seconds" -t 15000
if ! docker-compose -f "$COMPOSE_FILE" up -d 2>&1; then if ! docker-compose -f "$COMPOSE_FILE" up -d 2>&1; then
echo "❌ Failed to start Windows VM!" echo "❌ Failed to start Windows VM!"
@@ -298,7 +298,7 @@ launch_windows() {
done done
# Give it a moment more to fully initialize # Give it a moment more to fully initialize
sleep 3 sleep 5
fi fi
# Extract credentials from compose file # Extract credentials from compose file
@@ -339,7 +339,7 @@ To stop: omarchy-windows-vm stop"
# If scale is less than 130%, don't set any scale (use default 100) # If scale is less than 130%, don't set any scale (use default 100)
# Connect with RDP in fullscreen (auto-detects resolution) # Connect with RDP in fullscreen (auto-detects resolution)
xfreerdp3 /u:"$WIN_USER" /p:"$WIN_PASS" /v:127.0.0.1:3389 +f -grab-keyboard /cert:ignore /title:"Windows VM - Omarchy" /floatbar:sticky:off,default:visible,show:fullscreen $RDP_SCALE xfreerdp3 /u:"$WIN_USER" /p:"$WIN_PASS" /v:127.0.0.1:3389 -grab-keyboard /sound /microphone /cert:ignore /title:"Windows VM - Omarchy" /dynamic-resolution /gfx:AVC444 /floatbar:sticky:off,default:visible,show:fullscreen $RDP_SCALE
# After RDP closes, stop the container unless --keep-alive was specified # After RDP closes, stop the container unless --keep-alive was specified
if [ "$KEEP_ALIVE" = false ]; then if [ "$KEEP_ALIVE" = false ]; then

View File

@@ -12,9 +12,10 @@ bindd = SUPER SHIFT, T, Activity, exec, $terminal -e btop
bindd = SUPER SHIFT, D, Docker, exec, $terminal -e lazydocker bindd = SUPER SHIFT, D, Docker, exec, $terminal -e lazydocker
bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus signal "uwsm-app -- signal-desktop" bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus signal "uwsm-app -- signal-desktop"
bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus "^obsidian$" "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime" bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus "^obsidian$" "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora
bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password
# If your web app url contains #, type it as ## to prevent hyperland treat it as comments # If your web app url contains #, type it as ## to prevent hyprland treating it as a comment
bindd = SUPER SHIFT, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com" bindd = SUPER SHIFT, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com"
bindd = SUPER SHIFT ALT, A, Grok, exec, omarchy-launch-webapp "https://grok.com" bindd = SUPER SHIFT ALT, A, Grok, exec, omarchy-launch-webapp "https://grok.com"
bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/" bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"
@@ -22,6 +23,7 @@ bindd = SUPER SHIFT, E, Email, exec, omarchy-launch-webapp "https://app.hey.com"
bindd = SUPER SHIFT, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/" bindd = SUPER SHIFT, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/"
bindd = SUPER SHIFT ALT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/" bindd = SUPER SHIFT ALT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"
bindd = SUPER SHIFT CTRL, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations" bindd = SUPER SHIFT CTRL, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations"
bindd = SUPER SHIFT, P, Google Photos, exec, omarchy-launch-or-focus-webapp "Google Photos" "https://photos.google.com/"
bindd = SUPER SHIFT, X, X, exec, omarchy-launch-webapp "https://x.com/" bindd = SUPER SHIFT, X, X, exec, omarchy-launch-webapp "https://x.com/"
bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post" bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post"

View File

@@ -1,4 +1,13 @@
# Changes require a restart to take effect. # Changes require a restart to take effect.
# Install other terminals via Install > Terminal
export TERMINAL=alacritty export TERMINAL=alacritty
# Use code for VSCode
export EDITOR=nvim export EDITOR=nvim
# Use a custom directory for screenshots (remember to make the directory!)
# export OMARCHY_SCREENSHOT_DIR="$HOME/Pictures/Screenshots"
# Use a custom directory for screenrecordings (remember to make the directory!)
# export OMARCHY_SCREENRECORD_DIR="$HOME/Videos/Screencasts"

View File

@@ -41,6 +41,7 @@
"custom/omarchy": { "custom/omarchy": {
"format": "<span font='omarchy'>\ue900</span>", "format": "<span font='omarchy'>\ue900</span>",
"on-click": "omarchy-menu", "on-click": "omarchy-menu",
"on-click-right": "omarchy-launch-terminal",
"tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space" "tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space"
}, },
"custom/update": { "custom/update": {

View File

@@ -9,6 +9,5 @@ if [[ ! -v BASH_COMPLETION_VERSINFO && -f /usr/share/bash-completion/bash_comple
source /usr/share/bash-completion/bash_completion source /usr/share/bash-completion/bash_completion
fi fi
# Set complete path # Ensure command hashing is off for mise
export PATH="$HOME/.local/bin:$PATH"
set +h set +h

View File

@@ -1,3 +1,6 @@
# If not running interactively, don't do anything (leave this at the top of this file)
[[ $- != *i* ]] && return
# All the default Omarchy aliases and functions # All the default Omarchy aliases and functions
# (don't mess with these directly, just overwrite them here!) # (don't mess with these directly, just overwrite them here!)
source ~/.local/share/omarchy/default/bash/rc source ~/.local/share/omarchy/default/bash/rc

View File

@@ -1,6 +1,6 @@
# Close windows # Close windows
bindd = SUPER, W, Close active window, killactive, bindd = SUPER, W, Close active window, killactive,
bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-cmd-close-all-windows bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-hyprland-window-close-all
# Control tiling # Control tiling
bindd = SUPER, J, Toggle split, togglesplit, # dwindle bindd = SUPER, J, Toggle split, togglesplit, # dwindle
@@ -85,6 +85,10 @@ bindd = SUPER ALT, DOWN, Move window to group on bottom, moveintogroup, d
bindd = SUPER ALT, TAB, Next window in group, changegroupactive, f bindd = SUPER ALT, TAB, Next window in group, changegroupactive, f
bindd = SUPER ALT SHIFT, TAB, Previous window in group, changegroupactive, b bindd = SUPER ALT SHIFT, TAB, Previous window in group, changegroupactive, b
# Scroll through a set of grouped windows with SUPER + ALT + scroll
bindd = SUPER ALT, mouse_down, Next window in group, changegroupactive, f
bindd = SUPER ALT, mouse_up, Previous window in group, changegroupactive, b
# Activate window in a group by number # Activate window in a group by number
bindd = SUPER ALT, 1, Switch to group window 1, changegroupactive, 1 bindd = SUPER ALT, 1, Switch to group window 1, changegroupactive, 1
bindd = SUPER ALT, 2, Switch to group window 2, changegroupactive, 2 bindd = SUPER ALT, 2, Switch to group window 2, changegroupactive, 2

View File

@@ -3,7 +3,7 @@
# Close windows # Close windows
bindd = SUPER, W, Close active window, killactive, bindd = SUPER, W, Close active window, killactive,
bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-cmd-close-all-windows bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-hyprland-window-close-all
# Control tiling # Control tiling
bindd = SUPER, J, Toggle split, togglesplit, # dwindle bindd = SUPER, J, Toggle split, togglesplit, # dwindle

View File

@@ -12,6 +12,7 @@ bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
bindd = SUPER CTRL, SPACE, Next background in theme, exec, omarchy-theme-bg-next bindd = SUPER CTRL, SPACE, Next background in theme, exec, omarchy-theme-bg-next
bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, omarchy-menu theme bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, omarchy-menu theme
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle
bindd = SUPER SHIFT, BACKSPACE, Toggle workspace gaps, exec, omarchy-hyprland-workspace-toggle-gaps
# Notifications # Notifications
bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss
@@ -30,10 +31,14 @@ bindd = CTRL, F2, Apple Display brightness up, exec, omarchy-cmd-apple-display-b
bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-cmd-apple-display-brightness +60000 bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-cmd-apple-display-brightness +60000
# Captures # Captures
bindd = , PRINT, Screenshot, exec, omarchy-cmd-screenshot bindd = , PRINT, Screenshot with Editing, exec, omarchy-cmd-screenshot
bindd = SHIFT, PRINT, Screenshot, exec, omarchy-cmd-screenshot smart clipboard bindd = SHIFT, PRINT, Screenshot to Clipboard, exec, omarchy-cmd-screenshot smart clipboard
bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord
bindd = SUPER, PRINT, Color picking, exec, pkill hyprpicker || hyprpicker -a bindd = SUPER, PRINT, Color picking, exec, pkill hyprpicker || hyprpicker -a
# File sharing # File sharing
bindd = CTRL SUPER, S, Share, exec, omarchy-menu share bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
# Waybar-less information
bindd = SUPER CTRL, T, Show time, exec, notify-send " $(date +"%A %H:%M — %d %B W%V %Y")"
bindd = SUPER CTRL, B, Show battery remaining, exec, notify-send "󰁹 Battery is at $(omarchy-battery-remaining)%"

View File

@@ -120,17 +120,18 @@ if [[ -n $EFI ]] && efibootmgr &>/dev/null; then
done < <(efibootmgr | grep -E "^Boot[0-9]{4}\*? Arch Linux Limine" | sed 's/^Boot\([0-9]\{4\}\).*/\1/') done < <(efibootmgr | grep -E "^Boot[0-9]{4}\*? Arch Linux Limine" | sed 's/^Boot\([0-9]\{4\}\).*/\1/')
fi fi
if [[ -n $EFI ]] && efibootmgr &>/dev/null && # Move this to a utility to allow manual activation
! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "American Megatrends" && # if [[ -n $EFI ]] && efibootmgr &>/dev/null &&
! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then # ! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "American Megatrends" &&
# ! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then
uki_file=$(find /boot/EFI/Linux/ -name "omarchy*.efi" -printf "%f\n" 2>/dev/null | head -1) #
# uki_file=$(find /boot/EFI/Linux/ -name "omarchy*.efi" -printf "%f\n" 2>/dev/null | head -1)
if [[ -n "$uki_file" ]]; then #
sudo efibootmgr --create \ # if [[ -n "$uki_file" ]]; then
--disk "$(findmnt -n -o SOURCE /boot | sed 's/p\?[0-9]*$//')" \ # sudo efibootmgr --create \
--part "$(findmnt -n -o SOURCE /boot | grep -o 'p\?[0-9]*$' | sed 's/^p//')" \ # --disk "$(findmnt -n -o SOURCE /boot | sed 's/p\?[0-9]*$//')" \
--label "Omarchy" \ # --part "$(findmnt -n -o SOURCE /boot | grep -o 'p\?[0-9]*$' | sed 's/^p//')" \
--loader "\\EFI\\Linux\\$uki_file" # --label "Omarchy" \
fi # --loader "\\EFI\\Linux\\$uki_file"
fi # fi
# fi

View File

@@ -36,6 +36,7 @@ elephant-todo
elephant-unicode elephant-unicode
elephant-websearch elephant-websearch
evince evince
expac
eza eza
fastfetch fastfetch
fcitx5 fcitx5
@@ -65,6 +66,7 @@ imagemagick
impala impala
imv imv
inetutils inetutils
inxi
iwd iwd
jq jq
kdenlive kdenlive
@@ -132,7 +134,7 @@ unzip
uwsm uwsm
walker walker
waybar waybar
wayfreeze-git wayfreeze
whois whois
wireless-regdb wireless-regdb
wiremix wiremix

View File

@@ -17,5 +17,5 @@ fi
# Use default terminal for keybinding # Use default terminal for keybinding
if grep -q "terminal = uwsm app" ~/.config/hypr/bindings.conf; then if grep -q "terminal = uwsm app" ~/.config/hypr/bindings.conf; then
sed -i '/terminal = uwsm-app -- alacritty/ c\$terminal = uwsm-app -- $TERMINAL' ~/.config/hypr/bindings.conf sed -Ei '/terminal = uwsm[- ]app -- alacritty/ c\$terminal = uwsm-app -- $TERMINAL' ~/.config/hypr/bindings.conf
fi fi

21
migrations/1760974946.sh Normal file
View File

@@ -0,0 +1,21 @@
echo "Turn off VSCode's own auto-update feature (we rely on pacman)"
# Note: We cannot use `jq` to update settings.json because its JSONC (allows comments),
# which jq doesnt support.
VS_CODE_SETTINGS="$HOME/.config/Code/User/settings.json"
# If VSCode is installed, ensure that the "update.mode" setting is set to "none"
if omarchy-cmd-present code; then
mkdir -p "$(dirname "$VS_CODE_SETTINGS")"
if [[ ! -f "$VS_CODE_SETTINGS" ]]; then
# If settings.json doesn't exist, create it with just the update.mode setting
printf '{\n "update.mode": "none"\n}\n' > "$VS_CODE_SETTINGS"
elif ! grep -q '"update.mode"' "$VS_CODE_SETTINGS"; then
# Insert "update.mode": "none", immediately after the first "{"
# Use sed's first-match range (0,/{/) to only replace the first "{
sed -i --follow-symlinks -E '0,/\{/{s/\{/{\
"update.mode": "none",/}' "$VS_CODE_SETTINGS"
fi
fi

7
migrations/1761180745.sh Normal file
View File

@@ -0,0 +1,7 @@
echo "Ensure interactive shell check is at the top of .bashrc"
BASHRC="$HOME/.bashrc"
if [ -f "$BASHRC" ] && ! grep -q '\[\[ $- != \*i\* \]\] && return' "$BASHRC"; then
sed -i '1i# If not running interactively, don'\''t do anything (leave this at the top of this file)\n[[ $- != *i* ]] && return\n' "$BASHRC"
fi

3
migrations/1761181166.sh Normal file
View File

@@ -0,0 +1,3 @@
echo "Change to pinned version of wayfreeze"
omarchy-pkg-drop wayfreeze-git
omarchy-pkg-add wayfreeze

33
migrations/1761241493.sh Normal file
View File

@@ -0,0 +1,33 @@
echo "Cleanup extra UKI if needed to prevent errors"
if [[ -f /boot/EFI/linux/omarchy_linux.efi ]] && [[ -f /boot/EFI/linux/$(cat /etc/machine-id)_linux.efi ]]; then
sudo rm -f /boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi
if grep -q "/boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi" /boot/limine.conf; then
echo -e "Resetting limine config\n(you may need to re-add other entries via sudo limine-update)"
sudo mv /boot/limine.conf /boot/limine.conf.bak
sudo tee /boot/limine.conf <<EOF >/dev/null
### Read more at config document: https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md
#timeout: 3
default_entry: 2
interface_branding: Omarchy Bootloader
interface_branding_color: 2
hash_mismatch_panic: no
term_background: 1a1b26
backdrop: 1a1b26
# Terminal colors (Tokyo Night palette)
term_palette: 15161e;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;a9b1d6
term_palette_bright: 414868;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;c0caf5
# Text colors
term_foreground: c0caf5
term_foreground_bright: c0caf5
term_background_bright: 24283b
EOF
sudo limine-update
sudo limine-snapper-sync
fi
fi

2
migrations/1761247569.sh Normal file
View File

@@ -0,0 +1,2 @@
echo "Install expac and inxi for omarchy-debug"
omarchy-pkg-add expac inxi

8
migrations/1761269603.sh Normal file
View File

@@ -0,0 +1,8 @@
echo "Add right-click terminal action to waybar omarchy menu icon"
WAYBAR_CONFIG="$HOME/.config/waybar/config.jsonc"
if [[ -f "$WAYBAR_CONFIG" ]] && ! grep -A5 '"custom/omarchy"' "$WAYBAR_CONFIG" | grep -q '"on-click-right"'; then
sed -i '/"on-click": "omarchy-menu",/a\ "on-click-right": "omarchy-launch-terminal",' "$WAYBAR_CONFIG"
omarchy-state set restart-waybar-required
fi

5
migrations/1761274806.sh Normal file
View File

@@ -0,0 +1,5 @@
echo "Ensure node is available via mise (for treesitter cli)"
if omarchy-cmd-missing node; then
mise use -g node@latest
fi

11
migrations/1761274980.sh Normal file
View File

@@ -0,0 +1,11 @@
echo "Migrate to proper packages for localsend and asdcontrol"
if omarchy-pkg-present localsend-bin; then
omarchy-pkg-drop localsend-bin
omarchy-pkg-add localsend
fi
if omarchy-pkg-present asdcontrol-git; then
omarchy-pkg-drop asdcontrol-git
omarchy-pkg-add asdcontrol
fi

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

View File

@@ -1 +1 @@
3.1.1 3.1.2