3 Commits

Author SHA1 Message Date
2616b0ad1a Fix again 2025-07-29 19:20:12 +02:00
de7b18e8e2 Reapply "Correct package name"
This reverts commit 8c2f51c08c.
2025-07-29 19:18:01 +02:00
251a5d0263 Reapply "Swap Spotify GUI to TUI"
This reverts commit d4f6859022.
2025-07-29 19:17:57 +02:00
89 changed files with 382 additions and 621 deletions

View File

@ -21,16 +21,41 @@ main_menu() {
ack_command ack_command
main_menu main_menu
;; ;;
Update) Update) update_menu ;;
omarchy-update
main_menu
;;
Setup) setup_menu ;; Setup) setup_menu ;;
Manual) open_manual ;; Manual) open_manual ;;
Exit) clear && exit 0 ;; Exit) clear && exit 0 ;;
esac esac
} }
update_menu() {
show_ascii_art
local menu=("Omarchy" "Waybar" "Walker" "Plymouth" "SwayOSD" "Desktop apps" "Back")
local commands=(
"omarchy-update"
"omarchy-refresh-waybar"
"omarchy-refresh-walker"
"omarchy-refresh-plymouth"
"omarchy-refresh-swayosd"
"omarchy-refresh-applications"
"main_menu"
)
local choice
choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Update") || main_menu
for i in "${!menu[@]}"; do
if [[ "${menu[$i]}" == "$choice" ]]; then
if [[ "$choice" == "Back" ]]; then
main_menu
else
eval "${commands[$i]}"
ack_command
main_menu
fi
break
fi
done
}
theme_menu() { theme_menu() {
show_ascii_art show_ascii_art
local menu=("Pick" "Install" "Update" "Remove" "Back") local menu=("Pick" "Install" "Update" "Remove" "Back")

View File

@ -14,7 +14,7 @@ get_battery_state() {
} }
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 "Battery Low" "Time to recharge! (battery is at ${1}%)" -i battery-caution
} }
BATTERY_LEVEL=$(get_battery_percentage) BATTERY_LEVEL=$(get_battery_percentage)

View File

@ -1,20 +1,10 @@
#!/bin/bash #!/bin/bash
if command -v tte &>/dev/null; then trap "exit" SIGINT
while true; do
effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
tte -i ~/.local/share/omarchy/logo.txt \
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \
"$effect" &
while pgrep tte >/dev/null; do while true; do
if read -n 1 -t 0.01; then effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
pkill tte 2>/dev/null tte -i ~/.local/share/omarchy/logo.txt \
pkill -f "alacritty --class Screensaver" 2>/dev/null --frame-rate 240 --canvas-width 0 --canvas-height 0 --anchor-canvas c --anchor-text c \
exit 0 "$effect"
fi done
done
done
else
gum spin --title "Can't find tte. Try: pip install terminaltexteffects" -- sleep 2
fi

View File

@ -1,19 +1,5 @@
#!/bin/bash #!/bin/bash
# Exit early if screensave is already running pkill -f "alacritty --class Screensaver" ||
pgrep -f "alacritty --class Screensaver" && exit 0 alacritty --class Screensaver --title Screensaver -o 'colors.primary.background="#000000"' \
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
hyprctl dispatch focusmonitor $m
hyprctl dispatch exec -- \
alacritty --class Screensaver \
-o 'colors.primary.background="#000000"' \
-o 'colors.cursor.cursor="#000000"' \
-o 'font.size=18' \
-o 'window.opacity=1' \
-e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver -e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver
done
hyprctl dispatch focusmonitor $focused

View File

@ -3,47 +3,34 @@
# A script to display Hyprland keybindings defined in your configuration # A script to display Hyprland keybindings defined in your configuration
# using walker for an interactive search menu. # using walker for an interactive search menu.
# Fetch dynamic keybindings from Hyprland USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
# OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf \
# Also do some pre-processing: $HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf \
# - Remove standard Omarchy bin path prefix $HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf \
# - Remove uwsm prefix $HOME/.local/share/omarchy/default/hypr/bindings/media.conf"
# - Map numeric modifier key mask to a textual rendition
# - Output comma-separated values that the parser can understand
dynamic_bindings() {
hyprctl -j binds | \
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | \
sed -r \
-e 's/null//' \
-e 's,~/.local/share/omarchy/bin/,,' \
-e 's,uwsm app -- ,,' \
-e 's/@0//' \
-e 's/,@/,code:/' \
-e 's/^0,/,/' \
-e 's/^1,/SHIFT,/' \
-e 's/^4,/CTRL,/' \
-e 's/^5,/SHIFT CTRL,/' \
-e 's/^8,/ALT,/' \
-e 's/^9,/SHIFT ALT,/' \
-e 's/^12,/CTRL ALT,/' \
-e 's/^13,/SHIFT CTRL ALT,/' \
-e 's/^64,/SUPER,/' \
-e 's/^65,/SUPER SHIFT,/' \
-e 's/^68,/SUPER CTRL,/' \
-e 's/^69,/SUPER SHIFT CTRL,/' \
-e 's/^72,/SUPER ALT,/'
}
# Parse and format keybindings # Process the configuration file to extract and format keybindings
# # 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces).
# `awk` does the heavy lifting: # 2. The first `sed` removes comments (anything after a '#').
# - Set the field separator to a comma ','. # 3. `awk` does the heavy lifting of formatting the output.
# - Joins the key combination (e.g., "SUPER + Q"). # - It sets the field separator to a comma ','.
# - Joins the command that the key executes. # - It removes the 'bind... =' part from the beginning of the line.
# - Prints everything in a nicely aligned format. # - It joins the key combination (e.g., "SUPER + Q").
parse_bindings() { # - 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' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
sed 's/#.*//' |
sed '/^[[:space:]]*$/d' |
sort -u |
awk -F, ' 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) # Combine the modifier and key (first two fields)
key_combo = $1 " + " $2; key_combo = $1 " + " $2;
@ -51,36 +38,27 @@ parse_bindings() {
gsub(/^[ \t]*\+?[ \t]*/, "", key_combo); gsub(/^[ \t]*\+?[ \t]*/, "", key_combo);
gsub(/[ \t]+$/, "", key_combo); gsub(/[ \t]+$/, "", key_combo);
# Use description, if set # Reconstruct the command from the remaining fields
action = $3; action = "";
for (i = 3; i <= NF; i++) {
action = action $i (i < NF ? "," : "");
}
if (action == "") { # Clean up trailing commas, remove leading "exec, ", and trim
# Reconstruct the command from the remaining fields sub(/,$/, "", action);
for (i = 4; i <= NF; i++) { gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action);
action = action $i (i < NF ? "," : ""); gsub(/^[ \t]+|[ \t]+$/, "", action);
} gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one
# 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 != "") {
# Escape XML entities # Escape XML entities
gsub(/&/, "\\&amp;", action); gsub(/&/, "\\&amp;", action);
gsub(/</, "\\&lt;", action); gsub(/</, "\\&lt;", action);
gsub(/>/, "\\&gt;", action); gsub(/>/, "\\&gt;", action);
gsub(/"/, "\\&quot;", action); gsub(/"/, "\\&quot;", action);
gsub(/'"'"'/, "\\&apos;", action); gsub(/'"'"'/, "\\&apos;", action);
}
if (action != "") {
printf "%-35s → %s\n", key_combo, action; printf "%-35s → %s\n", key_combo, action;
} }
}' }' |
}
dynamic_bindings | \
sort -u | \
parse_bindings | \
walker --dmenu --theme keybindings -p 'Keybindings' walker --dmenu --theme keybindings -p 'Keybindings'

View File

@ -2,17 +2,15 @@
show_power_menu() { show_power_menu() {
# The first characters are invisible sort keys. # The first characters are invisible sort keys.
local menu_options=" Lock local menu_options="\u200B Lock
󱄄 Save \u200C󰤄 Suspend
󰤄 Suspend \u200D Relaunch
 Relaunch \u2060󰜉 Restart
󰜉 Restart \u2063󰐥 Shutdown"
󰐥 Shutdown"
local selection=$(echo -e "$menu_options" | walker --dmenu --theme dmenu_150) local selection=$(echo -e "$menu_options" | walker --dmenu --theme dmenu_150)
case "$selection" in case "$selection" in
*Lock*) hyprlock ;; *Lock*) hyprlock ;;
*Save*) ~/.local/share/omarchy/bin/omarchy-launch-screensaver ;;
*Suspend*) systemctl suspend ;; *Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;; *Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;; *Restart*) systemctl reboot ;;

View File

@ -1,18 +0,0 @@
#!/bin/bash
set -e
# Where we store an empty file for each migration that has already been performed.
STATE_DIR="$HOME/.local/state/omarchy/migrations"
mkdir -p "$STATE_DIR"
# Run any pending migrations
for file in ~/.local/share/omarchy/migrations/*.sh; do
filename=$(basename "$file")
if [[ ! -f "$STATE_DIR/$filename" ]]; then
echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"
source $file
touch "$STATE_DIR/$filename"
fi
done

View File

@ -1,35 +0,0 @@
#!/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)
user_config_file="${HOME}/.config/$config_file"
default_config_file="${HOME}/.local/share/omarchy/config/$config_file"
backup_config_file="$user_config_file.bak.$(date +%s)"
# Create preliminary backup
cp -f "$user_config_file" "$backup_config_file" 2>/dev/null
# Replace config with new default
cp -f "$default_config_file" "$user_config_file" 2>/dev/null
# Compare and delete/inform accordingly
if cmp -s "$user_config_file" "$backup_config_file"; then
rm "$backup_config_file"
else
echo -e "\e[31mReplaced $user_config_file with new Omarchy default.\nSaved backup as ${backup_config_file}.\n\n\e[32mChanges:\e[0m"
diff "$user_config_file" "$backup_config_file"
fi

View File

@ -1,4 +0,0 @@
#!/bin/bash
omarchy-refresh-config hypr/hypridle.conf
omarchy-restart-hypridle

View File

@ -1,4 +1,11 @@
#!/bin/bash #!/bin/bash
omarchy-refresh-config hypr/hyprlock.conf # Overwrite local Hyprlock settings with the latest in Omarchy, but create a backup if it differs
cp -f ~/.config/hypr/hyprlock.conf ~/.config/hypr/hyprlock.conf.bak 2>/dev/null
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,4 +0,0 @@
#!/bin/bash
omarchy-refresh-config hypr/hyprsunset.conf
omarchy-restart-hyprsunset

View File

@ -1,5 +1,13 @@
#!/bin/bash #!/bin/bash
omarchy-refresh-config swayosd/config.toml cp -f ~/.config/swayosd/config.toml ~/.config/swayosd/config.toml.bak 2>/dev/null
omarchy-refresh-config swayosd/style.css cp -f ~/.local/share/omarchy/config/swayosd/config.toml ~/.config/swayosd/ 3>/dev/null
omarchy-restart-swayosd
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
setsid uwsm app -- swayosd-server &>/dev/null &

View File

@ -1,4 +1,13 @@
#!/bin/bash #!/bin/bash
omarchy-refresh-config walker/config.toml cp -f ~/.config/walker/config.toml ~/.config/walker/config.toml.bak 2>/dev/null
omarchy-restart-walker 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
setsid uwsm app -- walker --gapplication-service &

View File

@ -1,5 +1,25 @@
#!/bin/bash #!/bin/bash
omarchy-refresh-config waybar/config.jsonc # Backup existing settings
omarchy-refresh-config waybar/style.css cp -f ~/.config/waybar/config.jsonc ~/.config/waybar/config.jsonc.bak 2>/dev/null
omarchy-restart-waybar 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
pkill -SIGUSR2 waybar

View File

@ -1,4 +0,0 @@
#!/bin/bash
pkill -x $1
setsid uwsm app -- $1 >/dev/null 2>&1 &

View File

@ -1,3 +0,0 @@
#!/bin/bash
omarchy-restart-app hypridle

View File

@ -1,3 +0,0 @@
#!/bin/bash
omarchy-restart-app hyprsunset

View File

@ -1,3 +0,0 @@
#!/bin/bash
omarchy-restart-app swayosd-server

View File

@ -1,4 +0,0 @@
#!/bin/bash
pkill walker
setsid uwsm app -- walker --gapplication-service &

View File

@ -1,3 +0,0 @@
#!/bin/bash
omarchy-restart-app waybar

View File

@ -1,3 +0,0 @@
#!/bin/bash
omarchy-restart-app fcitx5

View File

@ -32,19 +32,12 @@ else
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
fi fi
# Change gnome icon theme color
if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then
gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)"
else
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
fi
# Trigger alacritty config reload # Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml" touch "$HOME/.config/alacritty/alacritty.toml"
# Restart components to apply new theme # Restart components to apply new theme
pkill -SIGUSR2 btop pkill -SIGUSR2 btop
"$HOME/.local/share/omarchy/bin/omarchy-restart-waybar" pkill -SIGUSR2 waybar
pkill swayosd-server pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null & setsid uwsm app -- swayosd-server &>/dev/null &
makoctl reload makoctl reload

View File

@ -1,25 +0,0 @@
#!/bin/bash
# Default temperature values
ON_TEMP=4000
OFF_TEMP=6500
# Query the current temperature
CURRENT_TEMP=$(hyprctl hyprsunset temperature 2>/dev/null | grep -oE '[0-9]+')
restart_nightlighted_waybar() {
if grep -q "custom/nightlight" ~/.config/waybar/config.jsonc; then
omarchy-restart-waybar # restart waybar in case user has waybar module for hyprsunset
fi
}
if [[ "$CURRENT_TEMP" == "$OFF_TEMP" ]]; then
hyprctl hyprsunset temperature $ON_TEMP
notify-send " Nightlight screen temperature"
restart_nightlighted_waybar
else
hyprctl hyprsunset temperature $OFF_TEMP
notify-send " Daylight screen temperature"
restart_nightlighted_waybar
fi

View File

@ -1,25 +1,31 @@
#!/bin/bash #!/bin/bash
# Exit immediately if a command exits with a non-zero status cd ~/.local/share/omarchy
set -e
# Show logo if [[ $1 == "all" ]]; then
clear # Run all migrations since the root commit
cat <~/.local/share/omarchy/logo.txt 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
omarchy_path=~/.local/share/omarchy git pull --autostash
git -C $omarchy_path pull --autostash git diff --check || git reset --merge
git -C $omarchy_path diff --check || git -C $omarchy_path reset --merge
# Run migrations # Run any pending migrations
"$HOME/.local/share/omarchy/bin/omarchy-migrate" for file in $(git diff --name-only --diff-filter=A $migration_starting_point.. migrations/*.sh); do
filename=$(basename "$file")
migrate_at="${filename%.sh}"
echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m"
source $file
done
# Update system packages # Update system packages
echo -e "\e[32m\nUpdate system packages\e[0m" echo -e "\e[32m\nUpdate system packages\e[0m"
yay -Syu --noconfirm yay -Syu --noconfirm
# Offer to reboot if the kernel has been changed # Back to where we came from
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then cd - >/dev/null
gum confirm "Linux kernel has been updated. Reboot?" && sudo reboot now
fi

View File

@ -1,13 +0,0 @@
#!/bin/bash
omarchy_path="$HOME/.local/share/omarchy"
latest_tag=$(git -C $omarchy_path ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1)
current_tag=$(git -C $omarchy_path describe --tags $(git -C $omarchy_path rev-list --tags --max-count=1))
if [[ "$current_tag" != "$latest_tag" ]]; then
echo "Omarchy update available ($latest_tag)"
exit 0
else
echo "Omarchy is up to date ($current_tag)"
exit 1
fi

View File

@ -16,12 +16,9 @@ echo -e "\n$ansi_art\n"
sudo pacman -Sy --noconfirm --needed git sudo pacman -Sy --noconfirm --needed git
# Use custom repo if specified, otherwise default to basecamp/omarchy echo -e "\nCloning Omarchy..."
OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}"
echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git"
rm -rf ~/.local/share/omarchy/ rm -rf ~/.local/share/omarchy/
git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null git clone https://github.com/basecamp/omarchy.git ~/.local/share/omarchy >/dev/null
# Use custom branch if instructed # Use custom branch if instructed
if [[ -n "$OMARCHY_REF" ]]; then if [[ -n "$OMARCHY_REF" ]]; then

View File

@ -1,14 +1,8 @@
general { general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend. before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
on_lock_cmd = pkill -f "alacritty --class Screensaver" # avoid running screensaver when locked on_unlock_cmd = pkill -SIGUSR2 waybar # prevent stacking of waybar when waking
on_unlock_cmd = omarchy-restart-waybar # prevent stacking of waybar when waking
}
listener {
timeout = 180 # 2.5min
on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already)
} }
listener { listener {

View File

@ -23,26 +23,26 @@ $terminal = uwsm app -- alacritty
$browser = uwsm app -- chromium --new-window --ozone-platform=wayland $browser = uwsm app -- chromium --new-window --ozone-platform=wayland
$webapp = $browser --app $webapp = $browser --app
bindd = SUPER, return, Terminal, exec, $terminal bind = SUPER, return, exec, $terminal
bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window bind = SUPER, F, exec, uwsm app -- nautilus --new-window
bindd = SUPER, B, Browser, exec, $browser bind = SUPER, B, exec, $browser
bindd = SUPER, M, Music, exec, uwsm app -- spotify bind = SUPER, M, exec, $terminal -e spotify_player
bindd = SUPER, N, Neovim, exec, $terminal -e nvim bind = SUPER, N, exec, $terminal -e nvim
bindd = SUPER, T, Activity, exec, $terminal -e btop bind = SUPER, T, exec, $terminal -e btop
bindd = SUPER, D, Docker, exec, $terminal -e lazydocker bind = SUPER, D, exec, $terminal -e lazydocker
bindd = SUPER, G, Signal, exec, uwsm app -- signal-desktop bind = SUPER, G, exec, uwsm app -- signal-desktop
bindd = SUPER, O, Obsidian, exec, uwsm app -- obsidian -disable-gpu bind = SUPER, O, exec, uwsm app -- obsidian -disable-gpu
bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password bind = SUPER, slash, exec, uwsm app -- 1password
bindd = SUPER, A, ChatGPT, exec, $webapp="https://chatgpt.com" bind = SUPER, A, exec, $webapp="https://chatgpt.com"
bindd = SUPER SHIFT, A, Grok, exec, $webapp="https://grok.com" bind = SUPER SHIFT, A, exec, $webapp="https://grok.com"
bindd = SUPER, C, Calendar, exec, $webapp="https://app.hey.com/calendar/weeks/" bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/"
bindd = SUPER, E, Email, exec, $webapp="https://app.hey.com" bind = SUPER, E, exec, $webapp="https://app.hey.com"
bindd = SUPER, Y, YouTube, exec, $webapp="https://youtube.com/" bind = SUPER, Y, exec, $webapp="https://youtube.com/"
bindd = SUPER SHIFT, G, WhatsApp, exec, $webapp="https://web.whatsapp.com/" bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.com/"
bindd = SUPER ALT, G, Google Messages, exec, $webapp="https://messages.google.com/web/conversations" bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversations"
bindd = SUPER, X, X, exec, $webapp="https://x.com/" bind = SUPER, X, exec, $webapp="https://x.com/"
bindd = SUPER SHIFT, X, X Post, exec, $webapp="https://x.com/compose/post" bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
# Extra autostart processes # Extra autostart processes
# exec-once = uwsm app -- my-service # exec-once = uwsm app -- my-service

View File

@ -1,6 +0,0 @@
# Makes hyprsunset do nothing to the screen by default
# Without this, the default applies some tint to the monitor
profile {
time = 00:00
identity = true
}

View File

@ -42,7 +42,7 @@ on_query_change = ""
[list] [list]
dynamic_sub = true dynamic_sub = true
keyboard_scroll_style = "emacs" keyboard_scroll_style = "emacs"
max_entries = 200 max_entries = 50
show_initial_entries = true show_initial_entries = true
single_click = true single_click = true
visibility_threshold = 20 visibility_threshold = 20
@ -199,7 +199,7 @@ typeahead = true
hidden = true hidden = true
[builtins.finder] [builtins.finder]
use_fd = true use_fd = false
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
@ -213,7 +213,7 @@ concurrency = 8
show_icon_when_single = true show_icon_when_single = true
preview_images = true preview_images = true
hidden = false hidden = false
prefix = "." prefix = '.'
[builtins.runner] [builtins.runner]
eager_loading = true eager_loading = true

View File

@ -8,8 +8,7 @@
"hyprland/workspaces" "hyprland/workspaces"
], ],
"modules-center": [ "modules-center": [
"clock", "clock"
"custom/update"
], ],
"modules-right": [ "modules-right": [
"group/tray-expander", "group/tray-expander",
@ -43,12 +42,6 @@
"5": [] "5": []
} }
}, },
"custom/update": {
"format": "",
"exec": "~/.local/share/omarchy/bin/omarchy-update-available",
"on-click": "alacritty --class Omarchy --title Omarchy -e omarchy-update",
"interval": 3600
},
"cpu": { "cpu": {
"interval": 5, "interval": 5,
"format": "󰍛", "format": "󰍛",

View File

@ -26,10 +26,6 @@
min-width: 9px; min-width: 9px;
} }
#workspaces button.empty {
opacity: 0.5;
}
#tray, #tray,
#cpu, #cpu,
#battery, #battery,

View File

@ -1,4 +1,3 @@
# Editor used by CLI # Editor used by CLI
export EDITOR="nvim" export EDITOR="nvim"
export SUDO_EDITOR="$EDITOR" export SUDO_EDITOR="$EDITOR"
export BAT_THEME=ansi

View File

@ -65,3 +65,9 @@ web2app-remove() {
rm "$DESKTOP_FILE" rm "$DESKTOP_FILE"
rm "$ICON_PATH" rm "$ICON_PATH"
} }
# Ensure changes to ~/.XCompose are immediately available
refresh-xcompose() {
pkill fcitx5
uwsm app -- fcitx5 >/dev/null 2>&1 &
}

View File

@ -1,7 +0,0 @@
# App-specific tweaks
source = ~/.local/share/omarchy/default/hypr/apps/chromium.conf
source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf
source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf
source = ~/.local/share/omarchy/default/hypr/apps/steam.conf
source = ~/.local/share/omarchy/default/hypr/apps/system.conf
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf

View File

@ -1,6 +0,0 @@
# Force chromium into a tile to deal with --app bug
windowrule = tile, class:^(Chromium)$
# Only slight opacity when unfocused
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube

View File

@ -1,2 +0,0 @@
# Remove 1px border around hyprshot screenshots
layerrule = noanim, selection

View File

@ -1,3 +0,0 @@
windowrule = fullscreen, class:com.libretro.RetroArch
windowrule = opacity 1 1, class:com.libretro.RetroArch

View File

@ -1,4 +0,0 @@
# Float Steam, fullscreen RetroArch
windowrule = float, class:steam
windowrule = center, class:steam, title:Steam
windowrule = opacity 1 1, class:steam

View File

@ -1,16 +0,0 @@
# Float and center settings and previews
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$
windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$
windowrule = size 600 470, class:Omarchy
windowrule = size 700 470 class:About
# Float and center file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
# Fullscreen screensaver
windowrule = fullscreen, class:Screensaver
# No transparency on media windows
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$

View File

@ -1,2 +0,0 @@
# Application-sepcific animation
layerrule = noanim, walker

View File

@ -2,7 +2,6 @@ exec-once = uwsm app -- hypridle
exec-once = uwsm app -- mako exec-once = uwsm app -- mako
exec-once = uwsm app -- waybar exec-once = uwsm app -- waybar
exec-once = uwsm app -- fcitx5 exec-once = uwsm app -- fcitx5
exec-once = uwsm app -- hyprsunset
exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = uwsm app -- swayosd-server exec-once = uwsm app -- swayosd-server
exec-once = uwsm app -- walker --gapplication-service exec-once = uwsm app -- walker --gapplication-service

View File

@ -1,15 +1,15 @@
# Deprecated bindings file. New installations include everything directly. # Deprecated bindings file. New installations include everything directly.
bindd = SUPER, return, Terminal, exec, $terminal bind = SUPER, return, exec, $terminal
bindd = SUPER, F, File manager, exec, $fileManager bind = SUPER, F, exec, $fileManager
bindd = SUPER, B, Web browser, exec, $browser bind = SUPER, B, exec, $browser
bindd = SUPER, M, Music player, exec, $music bind = SUPER, M, exec, $music
bindd = SUPER, N, Neovim, exec, $terminal -e nvim bind = SUPER, N, exec, $terminal -e nvim
bindd = SUPER, T, Top, exec, $terminal -e btop bind = SUPER, T, exec, $terminal -e btop
bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker bind = SUPER, D, exec, $terminal -e lazydocker
bindd = SUPER, G, Messenger, exec, $messenger bind = SUPER, G, exec, $messenger
bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu bind = SUPER, O, exec, obsidian -disable-gpu
bindd = SUPER, slash, Pasword manager, exec, $passwordManager bind = SUPER, slash, exec, $passwordManager
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf

View File

@ -2,15 +2,15 @@
$osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')" $osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
# Laptop multimedia keys for volume and LCD brightness (with OSD) # Laptop multimedia keys for volume and LCD brightness (with OSD)
bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise bindel = ,XF86AudioRaiseVolume, exec, $osdclient --output-volume raise
bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower bindel = ,XF86AudioLowerVolume, exec, $osdclient --output-volume lower
bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle bindel = ,XF86AudioMute, exec, $osdclient --output-volume mute-toggle
bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle bindel = ,XF86AudioMicMute, exec, $osdclient --input-volume mute-toggle
bindeld = ,XF86MonBrightnessUp, Brightness up, exec, $osdclient --brightness raise bindel = ,XF86MonBrightnessUp, exec, $osdclient --brightness raise
bindeld = ,XF86MonBrightnessDown, Brightness down, exec, $osdclient --brightness lower bindel = ,XF86MonBrightnessDown, exec, $osdclient --brightness lower
# Requires playerctl # Requires playerctl
bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next bindl = , XF86AudioNext, exec, playerctl next
bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause bindl = , XF86AudioPause, exec, $osdclient --playerctl play-pause
bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause bindl = , XF86AudioPlay, exec, $osdclient --playerctl play-pause
bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous bindl = , XF86AudioPrev, exec, playerctl previous

View File

@ -1,62 +1,63 @@
# Close window # Close window
bindd = SUPER, W, Close active window, killactive, bind = SUPER, W, killactive,
# Control tiling # Control tiling
bindd = SUPER, J, Toggle split, togglesplit, # dwindle bind = SUPER, J, togglesplit, # dwindle
bindd = SUPER, P, Pseudo window, pseudo, # dwindle bind = SUPER, P, pseudo, # dwindle
bindd = SUPER, V, Toggle floating, togglefloating, bind = SUPER, V, togglefloating,
bindd = SHIFT, F11, Force full screen, fullscreen, 0 bind = SHIFT, F11, fullscreen, 0
# Move focus with mainMod + arrow keys # Move focus with mainMod + arrow keys
bindd = SUPER, left, Move focus left, movefocus, l bind = SUPER, left, movefocus, l
bindd = SUPER, right, Move focus right, movefocus, r bind = SUPER, right, movefocus, r
bindd = SUPER, up, Move focus up, movefocus, u bind = SUPER, up, movefocus, u
bindd = SUPER, down, Move focus down, movefocus, d bind = SUPER, down, movefocus, d
# Switch workspaces with mainMod + [0-9] # Switch workspaces with mainMod + [0-9]
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1 bind = SUPER, code:10, workspace, 1
bindd = SUPER, code:11, Switch to workspace 2, workspace, 2 bind = SUPER, code:11, workspace, 2
bindd = SUPER, code:12, Switch to workspace 3, workspace, 3 bind = SUPER, code:12, workspace, 3
bindd = SUPER, code:13, Switch to workspace 4, workspace, 4 bind = SUPER, code:13, workspace, 4
bindd = SUPER, code:14, Switch to workspace 5, workspace, 5 bind = SUPER, code:14, workspace, 5
bindd = SUPER, code:15, Switch to workspace 6, workspace, 6 bind = SUPER, code:15, workspace, 6
bindd = SUPER, code:16, Switch to workspace 7, workspace, 7 bind = SUPER, code:16, workspace, 7
bindd = SUPER, code:17, Switch to workspace 8, workspace, 8 bind = SUPER, code:17, workspace, 8
bindd = SUPER, code:18, Switch to workspace 9, workspace, 9 bind = SUPER, code:18, workspace, 9
bindd = SUPER, code:19, Switch to workspace 10, workspace, 10 bind = SUPER, code:19, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9] # Move active window to a workspace with mainMod + SHIFT + [0-9]
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1 bind = SUPER SHIFT, code:10, movetoworkspace, 1
bindd = SUPER SHIFT, code:11, Move window to workspace 1, movetoworkspace, 2 bind = SUPER SHIFT, code:11, movetoworkspace, 2
bindd = SUPER SHIFT, code:12, Move window to workspace 1, movetoworkspace, 3 bind = SUPER SHIFT, code:12, movetoworkspace, 3
bindd = SUPER SHIFT, code:13, Move window to workspace 1, movetoworkspace, 4 bind = SUPER SHIFT, code:13, movetoworkspace, 4
bindd = SUPER SHIFT, code:14, Move window to workspace 1, movetoworkspace, 5 bind = SUPER SHIFT, code:14, movetoworkspace, 5
bindd = SUPER SHIFT, code:15, Move window to workspace 1, movetoworkspace, 6 bind = SUPER SHIFT, code:15, movetoworkspace, 6
bindd = SUPER SHIFT, code:16, Move window to workspace 1, movetoworkspace, 7 bind = SUPER SHIFT, code:16, movetoworkspace, 7
bindd = SUPER SHIFT, code:17, Move window to workspace 1, movetoworkspace, 8 bind = SUPER SHIFT, code:17, movetoworkspace, 8
bindd = SUPER SHIFT, code:18, Move window to workspace 1, movetoworkspace, 9 bind = SUPER SHIFT, code:18, movetoworkspace, 9
bindd = SUPER SHIFT, code:19, Move window to workspace 1, movetoworkspace, 10 bind = SUPER SHIFT, code:19, movetoworkspace, 10
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys # Swap active window with the one next to it with mainMod + SHIFT + arrow keys
bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l bind = SUPER SHIFT, left, swapwindow, l
bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r bind = SUPER SHIFT, right, swapwindow, r
bindd = SUPER SHIFT, up, Swap window up, swapwindow, u bind = SUPER SHIFT, up, swapwindow, u
bindd = SUPER SHIFT, down, Swap window down, swapwindow, d bind = SUPER SHIFT, down, swapwindow, d
# Cycle through applications on active workspace # Cycle through applications on active workspace
bindd = ALT, Tab, Cycle to next window, cyclenext bind = ALT, Tab, cyclenext
bindd = ALT, Tab, Reveal active window on top, bringactivetotop bind = ALT, Tab, bringactivetotop
# Resize active window # Resize active window
bindd = SUPER, minus, Expand window left, resizeactive, -100 0 bind = SUPER, minus, resizeactive, -100 0
bindd = SUPER, equal, Shrink window left, resizeactive, 100 0 bind = SUPER, equal, resizeactive, 100 0
bindd = SUPER SHIFT, minus, Shrink window up, resizeactive, 0 -100 bind = SUPER SHIFT, minus, resizeactive, 0 -100
bindd = SUPER SHIFT, equal, Expand window down, resizeactive, 0 100 bind = SUPER SHIFT, equal, resizeactive, 0 100
# Scroll through existing workspaces with mainMod + scroll # Scroll through existing workspaces with mainMod + scroll
bindd = SUPER, mouse_down, Scroll active worspace forward, workspace, e+1 bind = SUPER, mouse_down, workspace, e+1
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1 bind = SUPER, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging # Move/resize windows with mainMod + LMB/RMB and dragging
bindmd = SUPER, mouse:272, Move window, movewindow bindm = SUPER, mouse:272, movewindow
bindmd = SUPER, mouse:273, Resize window, resizewindow bindm = SUPER, mouse:273, resizewindow

View File

@ -1,42 +1,39 @@
# Launching # Launching
bindd = SUPER, space, Launch apps, exec, walker bind = SUPER, space, exec, walker
bindd = SUPER, K, Show key bindings, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings
# Aesthetics # Aesthetics
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, pkill -SIGUSR1 waybar bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar
bindd = SUPER CTRL, SPACE, Next background in theme, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next
bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu
# Notifications # Notifications
bindd = SUPER, comma, Dismiss last notification, exec, makoctl dismiss bind = SUPER, comma, exec, makoctl dismiss
bindd = SUPER SHIFT, comma, Dismiss all notifications, exec, makoctl dismiss --all bind = SUPER SHIFT, comma, exec, makoctl dismiss --all
bindd = SUPER CTRL, comma, Toggle silencing notifications, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications" bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
# Power menu controls lock, suspend, relaunch, restart, shutdown # Power menu controls lock, suspend, relaunch, restart, shutdown
bindd = SUPER, ESCAPE, Power menu, exec, ~/.local/share/omarchy/bin/omarchy-menu-power bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-menu-power
# Toggle idling # Toggle idling
bindd = SUPER CTRL, I, Toggle locking on idle, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle
# Toggle nightlight
bindd = SUPER CTRL, N, Toggle nightlight, exec, ~/.local/share/omarchy/bin/omarchy-toggle-nightlight
# Control Apple Display brightness # Control Apple Display brightness
bindd = CTRL, F1, Apple Display brightness down, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000 bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000
bindd = CTRL, F2, Apple Display brightness up, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000 bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000
bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000 bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000
# Screenshots # Screenshots
bindd = , PRINT, Screenshot of region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot bind = , PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot
bindd = SHIFT, PRINT, Screenshot of window, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window bind = SHIFT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window
bindd = CTRL, PRINT, Screenshot of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output
# Screen recordings # Screenshots
bindd = ALT, PRINT, Screen record a region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
bindd = CTRL ALT, PRINT, Screen record display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
# Screensaver # Screensaver
bindd = SUPER ALT, SPACE, Screensaver, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver bind = SUPER ALT, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver
# Color picker # Color picker
bindd = SUPER, PRINT, Color picker, exec, hyprpicker -a bind = SUPER, PRINT, exec, hyprpicker -a

View File

@ -69,6 +69,12 @@ animations {
animation = workspaces, 0, 0, ease animation = workspaces, 0, 0, ease
} }
# Application-sepcific animation
layerrule = noanim,walker
# Remove 1px border around hyprshot screenshots
layerrule = noanim, selection
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ # Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only" # "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that. # uncomment all if you wish to use that.

View File

@ -1,11 +1,34 @@
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrule = suppressevent maximize, class:.* windowrule = suppressevent maximize, class:.*
# Just dash of opacity by default # Force chromium into a tile to deal with --app bug
windowrule = tile, class:^(Chromium)$
# Float and center settings and previews
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$
windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$
windowrule = size 590 450, class:Omarchy
windowrule = size 700 470 class:About
# Float and center file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
# Float Steam, fullscreen RetroArch
windowrule = float, class:steam
windowrule = center, class:steam, title:Steam
windowrule = fullscreen, class:^(com.libretro.RetroArch)$
# Fullscreen screensaver
windowrule = fullscreen, class:Screensaver
# Just dash of opacity
windowrule = opacity 0.97 0.9, class:.* 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|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$
# Fix some dragging issues with XWayland # Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# App-specific tweaks
source = ~/.local/share/omarchy/default/hypr/apps.conf

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -5,8 +5,8 @@ Window.SetBackgroundBottomColor(0.101, 0.105, 0.149);
logo.image = Image("logo.png"); logo.image = Image("logo.png");
logo.sprite = Sprite(logo.image); logo.sprite = Sprite(logo.image);
logo.sprite.SetX (Window.GetWidth() / 2 - logo.image.GetWidth() / 2); logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2);
logo.sprite.SetY (Window.GetHeight() / 2 - logo.image.GetHeight() / 2); logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2);
logo.sprite.SetOpacity (1); logo.sprite.SetOpacity (1);
# Use these to adjust the progress bar timing # Use these to adjust the progress bar timing
@ -119,7 +119,7 @@ entry.image = Image("entry.png");
bullet.image = Image("bullet.png"); bullet.image = Image("bullet.png");
entry.sprite = Sprite(entry.image); entry.sprite = Sprite(entry.image);
entry.x = Window.GetWidth()/2 - entry.image.GetWidth() / 2; entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2;
entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40; entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40;
entry.sprite.SetPosition(entry.x, entry.y, 10001); entry.sprite.SetPosition(entry.x, entry.y, 10001);
entry.sprite.SetOpacity(0); entry.sprite.SetOpacity(0);
@ -171,13 +171,8 @@ fun display_password_callback (prompt, bullets)
for (index = 0; bullet.sprites[index]; index++) for (index = 0; bullet.sprites[index]; index++)
bullet.sprites[index].SetOpacity(0); bullet.sprites[index].SetOpacity(0);
# Create and show bullets for current password (max 21) # Create and show bullets for current password
max_bullets = 21; for (index = 0; index < bullets; index++)
bullets_to_show = bullets;
if (bullets_to_show > max_bullets)
bullets_to_show = max_bullets;
for (index = 0; index < bullets_to_show; index++)
{ {
if (!bullet.sprites[index]) if (!bullet.sprites[index])
{ {
@ -200,7 +195,7 @@ Plymouth.SetDisplayPasswordFunction(display_password_callback);
progress_box.image = Image("progress_box.png"); progress_box.image = Image("progress_box.png");
progress_box.sprite = Sprite(progress_box.image); progress_box.sprite = Sprite(progress_box.image);
progress_box.x = Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2;
progress_box.y = entry.y + entry.image.GetHeight() / 2 - progress_box.image.GetHeight() / 2; progress_box.y = entry.y + entry.image.GetHeight() / 2 - progress_box.image.GetHeight() / 2;
progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0);
progress_box.sprite.SetOpacity(0); progress_box.sprite.SetOpacity(0);
@ -209,7 +204,7 @@ progress_bar.original_image = Image("progress_bar.png");
progress_bar.sprite = Sprite(); progress_bar.sprite = Sprite();
progress_bar.image = progress_bar.original_image.Scale(1, progress_bar.original_image.GetHeight()); progress_bar.image = progress_bar.original_image.Scale(1, progress_bar.original_image.GetHeight());
progress_bar.x = Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2;
progress_bar.y = progress_box.y + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; progress_bar.y = progress_box.y + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2;
progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1);
progress_bar.sprite.SetOpacity(0); progress_bar.sprite.SetOpacity(0);

View File

@ -28,7 +28,6 @@ show_subtext() {
# Install prerequisites # Install prerequisites
source $OMARCHY_INSTALL/preflight/aur.sh source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/presentation.sh source $OMARCHY_INSTALL/preflight/presentation.sh
source $OMARCHY_INSTALL/preflight/migrations.sh
# Configuration # Configuration
show_logo beams 240 show_logo beams 240
@ -39,7 +38,6 @@ source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/fix-fkeys.sh source $OMARCHY_INSTALL/config/fix-fkeys.sh
source $OMARCHY_INSTALL/config/network.sh source $OMARCHY_INSTALL/config/network.sh
source $OMARCHY_INSTALL/config/power.sh source $OMARCHY_INSTALL/config/power.sh
source $OMARCHY_INSTALL/config/timezones.sh
source $OMARCHY_INSTALL/config/login.sh source $OMARCHY_INSTALL/config/login.sh
source $OMARCHY_INSTALL/config/nvidia.sh source $OMARCHY_INSTALL/config/nvidia.sh

View File

@ -12,4 +12,5 @@ if [ -z "$OMARCHY_BARE" ]; then
web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.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 web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
web2app "Omarchy Manual" https://manuals.omamix.org/2/the-omarchy-manual https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/arch-linux.png
fi fi

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 xournalpp localsend-bin spotify-player
# 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 spotify zoom; do for pkg in pinta typora 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

@ -3,7 +3,7 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
brightnessctl playerctl pamixer wiremix wireplumber \ brightnessctl playerctl pamixer wiremix wireplumber \
fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \ fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \
nautilus sushi ffmpegthumbnailer gvfs-mtp \ nautilus sushi ffmpegthumbnailer \
slurp satty \ slurp satty \
mpv evince imv \ mpv evince imv \
chromium chromium

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
hyprland hyprshot hyprpicker hyprlock hypridle hyprsunset polkit-gnome hyprland-qtutils \ hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \
walker-bin libqalculate waybar mako swaybg swayosd \ walker-bin libqalculate waybar mako swaybg swayosd \
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-desktop-portal-hyprland xdg-desktop-portal-gtk

View File

@ -1,16 +1,4 @@
#!/bin/bash #!/bin/bash
sudo pacman -S --noconfirm cups cups-pdf cups-filters cups-browsed system-config-printer avahi nss-mdns sudo pacman -S --noconfirm cups cups-pdf cups-filters system-config-printer
sudo systemctl enable --now cups.service sudo systemctl enable --now cups.service
# Disable multicast dns in resolved. Avahi will provide this for better network printer discovery
sudo mkdir -p /etc/systemd/resolved.conf.d
echo "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf
sudo systemctl enable --now avahi-daemon.service
# Enable automatically adding remote printers
if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then
echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf
fi
sudo systemctl enable --now cups-browsed.service

View File

@ -10,14 +10,8 @@ if ! yay -Q gnome-themes-extra &>/dev/null; then
yay -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme yay -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme
fi fi
# Allow icons to match the theme
if ! yay -! yaru-icon-theme &>/dev/null; then
yay -S --noconfirm yaru-icon-theme
fi
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
# Setup theme links # Setup theme links
mkdir -p ~/.config/omarchy/themes mkdir -p ~/.config/omarchy/themes

View File

@ -1,8 +0,0 @@
#!/bin/bash
omarchy_migrations_state_path=~/.local/state/omarchy/migrations
mkdir -p $omarchy_migrations_state_path
for file in ~/.local/share/omarchy/migrations/*.sh; do
touch "$omarchy_migrations_state_path/$(basename "$file")"
done

View File

@ -2,5 +2,5 @@ echo "Fixing persistent workspaces in waybar config"
if [[ -f ~/.config/waybar/config ]]; then if [[ -f ~/.config/waybar/config ]]; then
sed -i 's/"persistent_workspaces":/"persistent-workspaces":/' ~/.config/waybar/config sed -i 's/"persistent_workspaces":/"persistent-workspaces":/' ~/.config/waybar/config
omarchy-restart-waybar pkill -SIGUSR2 waybar
fi fi

14
migrations/1752187060.sh Normal file
View File

@ -0,0 +1,14 @@
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

5
migrations/1752981882.sh Normal file
View File

@ -0,0 +1,5 @@
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

6
migrations/1753064164.sh Normal file
View File

@ -0,0 +1,6 @@
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,6 +12,8 @@ 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

12
migrations/1753795654.sh Normal file
View File

@ -0,0 +1,12 @@
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

View File

@ -1,12 +0,0 @@
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

View File

@ -1,4 +0,0 @@
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

View File

@ -1,9 +0,0 @@
echo "Add icon theme coloring"
if ! yay -! yaru-icon-theme &>/dev/null; then
yay -S --noconfirm yaru-icon-theme
if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then
gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)"
fi
fi

View File

@ -1,2 +0,0 @@
echo "Fix Plymouth login positioning in multi-monitor setups + limit password from overflowing"
omarchy-refresh-plymouth

View File

@ -1,6 +0,0 @@
echo "Add hyprsunset blue light filter"
if ! command -v hyprsunset &>/dev/null; then
yay -S --noconfirm --needed hyprsunset
fi
omarchy-refresh-hyprsunset

View File

@ -1,10 +0,0 @@
echo "Change reload Waybar on unlock command to prevent stacking"
if ! grep -q 'on_unlock_cmd *= *omarchy-restart-waybar' ~/.config/hypr/hypridle.conf; then
sed -i \
'/^ on_unlock_cmd = pkill -SIGUSR2 waybar[[:space:]]*# prevent stacking of waybar when waking$/c\
on_unlock_cmd = omarchy-restart-waybar # prevent stacking of waybar when waking' \
~/.config/hypr/hypridle.conf
omarchy-restart-waybar
fi

View File

@ -1,6 +0,0 @@
echo "Update Waybar CSS to dim unused workspaces"
if ! grep -q "#workspaces button\.empty" ~/.config/waybar/style.css; then
omarchy-refresh-config waybar/style.css
omarchy-restart-waybar
fi

View File

@ -1,6 +0,0 @@
echo "Start screensaver automatically after 1 minute and stop before locking"
if ! grep -q "omarchy-launch-screensaver" ~/.config/hypr/hypridle.conf; then
omarchy-refresh-hypridle
omarchy-refresh-hyprlock
fi

View File

@ -1,4 +0,0 @@
echo "Ensure screensaver doesn't start while the computer is locked"
if ! grep -q "pidof hyprlock || omarchy-launch-screensaver" ~/.config/hypr/hypridle.conf; then
omarchy-refresh-hypridle
fi

View File

@ -1,5 +0,0 @@
echo "Update app launcher config to allow enough entries to show all keybindings on SUPER+K"
if ! grep "max_entries = 200" ~/.config/walker/config.toml; then
omarchy-refresh-walker
fi

View File

@ -1,17 +0,0 @@
echo "Enable auto-discovery of network printers"
if [[ ! -f /etc/systemd/resolved.conf.d/10-disable-multicast.conf ]]; then
sudo pacman -S --noconfirm avahi nss-mdns
# Disable multicast dns in resolved. Avahi will provide this for better network printer discovery
sudo mkdir -p /etc/systemd/resolved.conf.d
echo "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf
sudo systemctl enable --now avahi-daemon.service
fi
if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then
sudo pacman -S --noconfirm cups-browsed
# Enable automatically adding remote printers
echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf
sudo systemctl enable --now cups-browsed.service
fi

View File

@ -1,2 +0,0 @@
echo "Add support for accessing Android phone data via file manager"
yay -S --noconfirm --needed gvfs-mtp

View File

@ -1,5 +0,0 @@
echo "Add auto-update icon to waybar when update available"
if ! grep -q "custom/update" ~/.config/waybar/config.jsonc; then
omarchy-refresh-waybar
fi

View File

@ -1,2 +0,0 @@
echo "Increase time before screensaver starts to 2.5 minutes (from 1 minute)"
omarchy-refresh-hypridle

View File

@ -1 +0,0 @@
Yaru-blue

View File

@ -1 +0,0 @@
Yaru-purple

View File

@ -1 +0,0 @@
Yaru-sage

View File

@ -1 +0,0 @@
Yaru-olive

View File

@ -1 +0,0 @@
Yaru-blue

View File

@ -1 +0,0 @@
Yaru-red

View File

@ -1 +0,0 @@
Yaru-blue

View File

@ -1 +0,0 @@
Yaru-yellow

View File

@ -1,31 +1,22 @@
return { return {
{ {
"gthelding/monokai-pro.nvim", "gthelding/monokai-pro.nvim",
config = function() config = function()
require("monokai-pro").setup({ require("monokai-pro").setup({
filter = "ristretto", filter = "ristretto",
override = function() override = function()
return { return {
NonText = { fg = "#948a8b" }, NonText = { fg = "#948a8b" },
MiniIconsGrey = { fg = "#948a8b" }, }
MiniIconsRed = { fg = "#fd6883" }, end,
MiniIconsBlue = { fg = "#85dacc" }, })
MiniIconsGreen = { fg = "#adda78" }, vim.cmd([[colorscheme monokai-pro]])
MiniIconsYellow = { fg = "#f9cc6c" }, end,
MiniIconsOrange = { fg = "#f38d70" }, },
MiniIconsPurple = { fg = "#a8a9eb" }, {
MiniIconsAzure = { fg = "#a8a9eb" }, "LazyVim/LazyVim",
MiniIconsCyan = { fg = "#85dacc" }, -- same value as MiniIconsBlue for consistency opts = {
} colorscheme = "monokai-pro",
end, },
}) },
vim.cmd([[colorscheme monokai-pro]])
end,
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "monokai-pro",
},
},
} }

View File

@ -1 +0,0 @@
Yaru-blue

View File

@ -1 +0,0 @@
Yaru-magenta