1 Commits

Author SHA1 Message Date
36c8f17749 Prepare for a first-run flow
Will fill in with the first stuff you should do after getting setup.
Teaching you how to do the basic commands.
2025-07-15 21:23:48 -07:00
177 changed files with 699 additions and 1822 deletions

14
ansi.sh
View File

@ -1,14 +0,0 @@
#!/bin/bash
ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀▀▀ ███ ▀▀███▀▀▀▀███▀ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ █▄ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
███ ███ '
clear
echo -e "\n$ansi_art\n"

View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=Bluetooth
Comment=Configure Bluetooth settings
Icon=bluetooth
Exec=env GTK_THEME=Adwaita-dark blueberry
Terminal=false
Type=Application
Categories=GTK;GNOME;Settings;HardwareSettings;X-XFCE-SettingsDialog;X-XFCE-HardwareSettings;
StartupNotify=true
NotShowIn=GNOME;KDE;Unity;

View File

@ -2,7 +2,7 @@
Name=Neovim Name=Neovim
GenericName=Text Editor GenericName=Text Editor
Comment=Edit text files Comment=Edit text files
Exec=alacritty --class=nvim --title=nvim -e nvim -- %F Exec=alacritty -e nvim -- %F
Terminal=false Terminal=false
Type=Application Type=Application
Keywords=Text;editor; Keywords=Text;editor;

View File

@ -0,0 +1,10 @@
[Desktop Entry]
Version=1.0
Name=Volume Control
Comment=Adjust the volume level
Exec=env GTK_THEME=Adwaita-dark pavucontrol
Icon=multimedia-volume-control
StartupNotify=true
Type=Application
Categories=AudioVideo;Audio;Mixer;GTK;Settings;X-XFCE-SettingsDialog;X-XFCE-HardwareSettings;
Keywords=pavucontrol;PulseAudio;Microphone;Volume;Fade;Balance;Headset;Speakers;Headphones;Audio;Mixer;Output;Input;Devices;Playback;Recording;System Sounds;Sound Card;Settings;Preferences;

View File

@ -1,7 +0,0 @@
[Desktop Entry]
Name=Audio Settings
Comment=Using Wiremix
Exec=alacritty --class=Wiremix --title=Wiremix -e wiremix
Icon=audio-card
Type=Application
Terminal=false

View File

@ -4,7 +4,18 @@ OMARCHY_VERSION=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/de
PATH="$PATH:$HOME/.local/share/omarchy/bin" PATH="$PATH:$HOME/.local/share/omarchy/bin"
show_ascii_art() { show_ascii_art() {
source ~/.local/share/omarchy/ansi.sh clear
cat <<'EOF'
▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀▀▀ ███ ▀▀███▀▀▀▀███▀ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ █▄ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
███ ███
EOF
echo " $OMARCHY_VERSION" echo " $OMARCHY_VERSION"
} }
@ -24,11 +35,11 @@ main_menu() {
update_menu() { update_menu() {
show_ascii_art show_ascii_art
local menu=("Omarchy" "Waybar" "Walker" "Plymouth" "Desktop apps" "Back") local menu=("Omarchy" "Waybar" "Wofi" "Plymouth" "Desktop apps" "Back")
local commands=( local commands=(
"omarchy-update" "omarchy-update"
"omarchy-refresh-waybar" "omarchy-refresh-waybar"
"omarchy-refresh-walker" "omarchy-refresh-wofi"
"omarchy-refresh-plymouth" "omarchy-refresh-plymouth"
"omarchy-refresh-applications" "omarchy-refresh-applications"
"main_menu" "main_menu"
@ -51,9 +62,8 @@ update_menu() {
theme_menu() { theme_menu() {
show_ascii_art show_ascii_art
local menu=("Pick" "Install" "Remove" "Back") local menu=("Install" "Remove" "Back")
local commands=( local commands=(
"omarchy-theme-menu"
"install_theme_prompt" "install_theme_prompt"
"remove_theme_prompt" "remove_theme_prompt"
"main_menu" "main_menu"
@ -94,11 +104,9 @@ remove_theme_prompt() {
setup_menu() { setup_menu() {
show_ascii_art show_ascii_art
local menu=("Dropbox" "Fingerprint sensor" "Fido2 device" "Back") local menu=("Fingerprint sensor" "Back")
local commands=( local commands=(
"omarchy-setup-dropbox" "omarchy-fingerprint-setup"
"omarchy-setup-fingerprint"
"omarchy-setup-fido2"
"main_menu" "main_menu"
) )
local choice local choice
@ -118,8 +126,7 @@ setup_menu() {
} }
open_manual() { open_manual() {
setsid chromium --new-window --ozone-platform=wayland --app="https://manuals.omamix.org/2/the-omarchy-manual" >/dev/null 2>&1 & xdg-open "https://manuals.omamix.org/2/the-omarchy-manual"
clear
} }
ack_command() { ack_command() {
@ -127,3 +134,4 @@ ack_command() {
} }
main_menu main_menu

View File

@ -1,26 +0,0 @@
#!/bin/bash
# Set recorder based on GPU
screenrecording() {
filename="$HOME/Videos/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
notify-send "Screen recording starting..." -t 1000
sleep 1
if lspci | grep -qi 'nvidia'; then
wf-recorder -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@"
else
wl-screenrec -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@"
fi
}
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then
pkill -x wl-screenrec
pkill -x wf-recorder
notify-send "Screen recording saved to ~/Videos" -t 2000
elif [[ "$1" == "output" ]]; then
screenrecording
else
region=$(slurp) || exit 1
screenrecording -g "$region"
fi

View File

@ -1,9 +0,0 @@
#!/bin/bash
hyprshot -m ${1:-region} --raw |
satty --filename - \
--output-filename ~/Pictures/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png \
--early-exit \
--actions-on-enter save-to-clipboard \
--save-after-copy \
--copy-command 'wl-copy'

View File

@ -1,6 +1,5 @@
#!/bin/bash #!/bin/bash
cd ~/.local/share/omarchy
migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh" migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh"
touch $migration_file touch $migration_file
nvim $migration_file nvim $migration_file

8
bin/omarchy-dev-config-link Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# Link all the key config files to omarchy's internal versions for quicker testing
ln -nsf ~/.local/share/omarchy/config/hypr/hyprland.conf ~/.config/hypr/
ln -nsf ~/.local/share/omarchy/config/hypr/hypridle.conf ~/.config/hypr/
ln -nsf ~/.local/share/omarchy/config/hypr/hyprlock.conf ~/.config/hypr/
ln -nsf ~/.local/share/omarchy/config/waybar/config ~/.config/waybar/
ln -nsf ~/.local/share/omarchy/config/wofi/config ~/.config/wofi/

36
bin/omarchy-fingerprint-setup Executable file
View File

@ -0,0 +1,36 @@
#!/bin/bash
yay -S --noconfirm --needed fprintd usbutils
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix'; then
echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m"
else
# Add fingerprint authentication as an option for sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
# Add fingerprint authentication as an option for hyprpolkitagent
if [ ! -f /etc/pam.d/polkit-1 ] || ! grep -q pam_fprintd.so /etc/pam.d/polkit-1; then
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
auth required pam_unix.so
auth optional pam_fprintd.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
EOF
fi
# Enroll the first finger
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 $USER
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
fi

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
if [[ ! -f ~/.local/state/omarchy/after-first-run.mode ]]; then if [[ ! -f ~/.local/state/omarchy/first-run.marker ]]; then
chromium --new-window --app=file://$HOME/.local/share/omarchy/first-run/index.html
mkdir -p ~/.local/state/omarchy mkdir -p ~/.local/state/omarchy
touch ~/.local/state/omarchy/after-first-run.mode touch ~/.local/state/omarchy/first-run.marker
uwsm app -- alacritty -e ~/.local/share/omarchy/bin/omarchy-first-run-flow
fi fi

View File

@ -1,54 +0,0 @@
#!/bin/bash
source ~/.local/share/omarchy/ansi.sh
if gum confirm "Install editor in addition to Neovim?"; then
options=("VSCode" "Cursor" "Zed" "Helix" "Nevermind")
choice=$(printf "%s\n" "${options[@]}" | gum choose --header "Add programming editor") || exit 0
case "$choice" in
VSCode) yay -Sy --noconfirm --needed vscodium-electron-bin ;;
Cursor) yay -Sy --noconfirm --needed cursor-bin ;;
Zed) yay -Sy --noconfirm --needed zed ;;
Helix) yay -Sy --noconfirm --needed helix ;;
Nevermind) ;;
esac
fi
source ~/.local/share/omarchy/ansi.sh
if gum confirm "Setup Dropbox?"; then
gtk-launch chromium # FIXME: Workaround for Dropbox to be able to open with the correct scaling during initial setup
~/.local/share/omarchy/bin/omarchy-setup-dropbox
fi
source ~/.local/share/omarchy/ansi.sh
if gum confirm "Login to GitHub?"; then
gh auth login
fi
source ~/.local/share/omarchy/ansi.sh
if gum confirm "Start Docker DBs?"; then
options=("MySQL" "Redis" "PostgreSQL")
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install)") || exit 0
if [[ -n "$choices" ]]; then
for db in $choices; do
case $db in
MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;;
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 ;;
esac
done
fi
fi
source ~/.local/share/omarchy/ansi.sh
echo "Updating all system packages..."
yay -Syu --noconfirm
setsid gtk-launch "Omarchy Manual" >/dev/null 2>&1 &
gum spin --spinner "globe" --title "You're all set!" -- sleep 2
clear

View File

@ -1,21 +0,0 @@
#!/bin/bash
show_power_menu() {
# The first characters are invisible sort keys.
local menu_options="\u200B Lock
\u200C󰤄 Suspend
\u200D Relaunch
\u2060󰜉 Restart
\u2063󰐥 Shutdown"
local selection=$(echo -e "$menu_options" | walker --dmenu --theme dmenu_150)
case "$selection" in
*Lock*) hyprlock ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
esac
}
show_power_menu

25
bin/omarchy-power-menu Executable file
View File

@ -0,0 +1,25 @@
#!/bin/bash
# Power menu for Omarchy
# Provides power off, restart, and sleep options
# Function to show power menu. The first characters are invisible sort keys.
show_power_menu() {
local menu_options="\u200B Lock
\u200C󰤄 Suspend
\u200D Relaunch
\u2060󰜉 Restart
\u2063󰐥 Shutdown"
local selection=$(echo -e "$menu_options" | wofi --show dmenu --prompt "Power Options" --width 150 --height 195 -O alphabetical --style ~/.local/share/omarchy/default/wofi/select.css)
case "$selection" in
*Lock*) hyprlock ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
esac
}
# Main execution
show_power_menu

View File

@ -1,11 +0,0 @@
#!/bin/bash
# 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,6 +1,6 @@
#!/bin/bash #!/bin/bash
if [[ "$1" == "-y" ]] || gum confirm "Refresh Plymouth theme? This will replace your current startup screen with Omarchy defaults."; then if gum confirm "Refresh Plymouth theme? This will replace your current startup screen with Omarchy defaults."; then
sudo cp ~/.local/share/omarchy/default/plymouth/* /usr/share/plymouth/themes/omarchy/ sudo cp ~/.local/share/omarchy/default/plymouth/* /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme -R omarchy sudo plymouth-set-default-theme -R omarchy
fi fi

View File

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

View File

@ -1,25 +1,11 @@
#!/bin/bash #!/bin/bash
# Backup existing settings if gum confirm "Refresh Waybar config? This will replace your current settings with Omarchy defaults."; then
cp -f ~/.config/waybar/config.jsonc ~/.config/waybar/config.jsonc.bak 2>/dev/null # Overwrite local waybar settings with the latest in Omarchy
cp -f ~/.config/waybar/style.css ~/.config/waybar/style.css.bak 2>/dev/null cp -f ~/.local/share/omarchy/config/waybar/config ~/.config/waybar/ 2>/dev/null
cp -f ~/.local/share/omarchy/config/waybar/style.css ~/.config/waybar/ 2>/dev/null
# Overwrite local waybar settings with the latest in Omarchy # Restart waybar
cp -f ~/.local/share/omarchy/config/waybar/config.jsonc ~/.config/waybar/ 2>/dev/null pkill waybar &>/dev/null
cp -f ~/.local/share/omarchy/config/waybar/style.css ~/.config/waybar/ 2>/dev/null setsid waybar &>/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 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

7
bin/omarchy-refresh-wofi Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
if gum confirm "Refresh Wofi config? This will replace your current settings with Omarchy defaults."; then
# Overwrite local waybar settings with the latest in Omarchy
cp -f ~/.local/share/omarchy/config/wofi/config ~/.config/wofi/ 2>/dev/null
cp -f ~/.local/share/omarchy/config/wofi/style.css ~/.config/wofi/ 2>/dev/null
fi

View File

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

View File

@ -1,33 +0,0 @@
#!/bin/bash
if [[ "--remove" == "$1" ]]; then
yay -Rns --noconfirm libfido2 pam-u2f
sudo rm -rf /etc/fido2
sudo sed -i '\|^auth[[:space:]]\+sufficient[[:space:]]\+pam_u2f\.so[[:space:]]\+cue[[:space:]]\+authfile=/etc/fido2/fido2$|d' /etc/pam.d/sudo
echo -e "\e[32m\nYou've successfully removed the fido2 device setup.\e[0m"
else
yay -S --noconfirm --needed libfido2 pam-u2f
tokens=$(fido2-token -L)
if [ -z "$tokens" ]; then
echo -e "\e[31m\nNo fido2 device detected. Plug it in, you may have to unlock it as well\e[0m"
else
# Create the pamu2fcfg file
if [ ! -f /etc/fido2/fido2 ]; then
sudo mkdir -p /etc/fido2
echo -e "\e[32m\nLet's setup your device by confirming on the device now.\e[0m"
pamu2fcfg >/tmp/fido2 # This needs to run as the user
sudo mv /tmp/fido2 /etc/fido2/fido2
fi
# Add fido2 auth as an option for sudo
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo
fi
if ! sudo echo -e "\e[32m\nPerfect! Now you can use your fido2 device for sudo.\e[0m"; then
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
fi
fi
fi

View File

@ -1,43 +0,0 @@
#!/bin/bash
if [[ "--remove" == "$1" ]]; then
yay -Rns --noconfirm fprintd
sudo rm -rf /etc/pam.d/polkit-1
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
echo -e "\e[32mYou've successfully removed the fingerprint setup.\e[0m"
else
yay -S --noconfirm --needed fprintd usbutils
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix'; then
echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m"
else
# Add fingerprint authentication as an option for sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
# Add fingerprint authentication as an option for hyprpolkitagent
if [ ! -f /etc/pam.d/polkit-1 ] || ! grep -q pam_fprintd.so /etc/pam.d/polkit-1; then
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
auth required pam_unix.so
auth optional pam_fprintd.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
EOF
fi
# Enroll the first finger
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 $USER
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
fi
fi

View File

@ -1,13 +1,15 @@
#!/bin/bash #!/bin/bash
# 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 wofi for an interactive search menu.
USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf" USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf $HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf $HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf $HOME/.local/share/omarchy/default/hypr/bindings.conf $HOME/.local/share/omarchy/default/hypr/media.conf"
OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf \ OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf \
$HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf \ $HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf \
$HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf \ $HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf \
$HOME/.local/share/omarchy/default/hypr/bindings/media.conf" $HOME/.local/share/omarchy/default/hypr/media.conf"
# Process the configuration file to extract and format keybindings # Process the configuration file to extract and format keybindings
# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces). # 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces).
@ -51,14 +53,7 @@ grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one
if (action != "") { if (action != "") {
# Escape XML entities
gsub(/&/, "\\&amp;", action);
gsub(/</, "\\&lt;", action);
gsub(/>/, "\\&gt;", action);
gsub(/"/, "\\&quot;", action);
gsub(/'"'"'/, "\\&apos;", action);
printf "%-35s → %s\n", key_combo, action; printf "%-35s → %s\n", key_combo, action;
} }
}' | }' |
walker --dmenu --theme keybindings -p 'Keybindings' flock --nonblock /tmp/.wofi.lock -c "wofi -dmenu -i --width 60% --height 70% -p 'Hyprland Keybindings' -O alphabetical --style=\"$HOME/.local/share/omarchy/default/wofi/search.css\""

View File

@ -2,47 +2,36 @@
# Cycles through the background images available # Cycles through the background images available
BACKGROUNDS_DIR="$HOME/.config/omarchy/current/theme/backgrounds/" BACKGROUNDS_DIR="$HOME/.config/omarchy/current/backgrounds/"
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background" CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
mapfile -d '' -t BACKGROUNDS < <(find "$BACKGROUNDS_DIR" -type f -print0 | sort -z) BACKGROUNDS=($(find "$BACKGROUNDS_DIR" -type f | sort))
TOTAL=${#BACKGROUNDS[@]} TOTAL=${#BACKGROUNDS[@]}
if [[ $TOTAL -eq 0 ]]; then # Get current background from symlink
notify-send "No background was found for theme" -t 2000 if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
pkill -x swaybg CURRENT_BACKGROUND=$(readlink "$CURRENT_BACKGROUND_LINK")
uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
else else
# Get current background from symlink # Default to first background if no symlink exists
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then CURRENT_BACKGROUND=${BACKGROUNDS[0]}
CURRENT_BACKGROUND=$(readlink "$CURRENT_BACKGROUND_LINK")
else
# Default to first background if no symlink exists
CURRENT_BACKGROUND=""
fi
# Find current background index
INDEX=-1
for i in "${!BACKGROUNDS[@]}"; do
if [[ "${BACKGROUNDS[$i]}" == "$CURRENT_BACKGROUND" ]]; then
INDEX=$i
break
fi
done
# Get next background (wrap around)
if [[ $INDEX -eq -1 ]]; then
# Use the first background when no match was found
NEW_BACKGROUND="${BACKGROUNDS[0]}"
else
NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_BACKGROUND="${BACKGROUNDS[$NEXT_INDEX]}"
fi
# Set new background symlink
ln -nsf "$NEW_BACKGROUND" "$CURRENT_BACKGROUND_LINK"
# Relaunch swaybg
pkill -x swaybg
uwsm app -- swaybg -i "$NEW_BACKGROUND" -m fill >/dev/null 2>&1 &
fi fi
# Find current background index
INDEX=0
for i in "${!BACKGROUNDS[@]}"; do
if [[ "${BACKGROUNDS[$i]}" == "$CURRENT_BACKGROUND" ]]; then
INDEX=$i
break
fi
done
# Get next background (wrap around)
NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_BACKGROUND=${BACKGROUNDS[$NEXT_INDEX]}
# Set new background symlink
ln -nsf "$NEW_BACKGROUND" "$CURRENT_BACKGROUND_LINK"
# Relaunch swaybg
pkill -x swaybg
setsid swaybg -i "$NEW_BACKGROUND" -m fill >/dev/null 2>&2 &

View File

@ -10,7 +10,7 @@ fi
REPO_URL="$1" REPO_URL="$1"
THEMES_DIR="$HOME/.config/omarchy/themes" THEMES_DIR="$HOME/.config/omarchy/themes"
THEME_NAME=$(basename "$REPO_URL" .git | sed -E 's/^omarchy-//; s/-theme$//') THEME_NAME=$(basename "$REPO_URL" .git)
THEME_PATH="$THEMES_DIR/$THEME_NAME" THEME_PATH="$THEMES_DIR/$THEME_NAME"
THEME_BACKGROUND_PATH="$THEME_PATH/backgrounds" THEME_BACKGROUND_PATH="$THEME_PATH/backgrounds"
BACKGROUNDS_PATH="$HOME/.config/omarchy/backgrounds" BACKGROUNDS_PATH="$HOME/.config/omarchy/backgrounds"
@ -27,10 +27,12 @@ if ! git clone "$REPO_URL" "$THEME_PATH"; then
exit 1 exit 1
fi fi
# Link backgrounds if present # Copy backgrounds if present
if [ -d $THEME_BACKGROUND_PATH ]; then if [ -d $THEME_BACKGROUND_PATH ]; then
ln -snf $THEME_BACKGROUND_PATH $BACKGROUNDS_THEME_PATH mkdir -p $BACKGROUNDS_THEME_PATH
cp $THEME_BACKGROUND_PATH/* $BACKGROUNDS_THEME_PATH/
fi fi
# Apply the new theme with omarchy-theme-set # Apply the new theme with omarchy-theme-set
omarchy-theme-set $THEME_NAME omarchy-theme-set $THEME_NAME

View File

@ -18,8 +18,14 @@ mapfile -t themes < <(
done | sort done | sort
) )
# Show Walker menu # Show Wofi menu (with markup support)
selection=$(printf '%s\n' "${themes[@]}" | walker --dmenu --theme dmenu_250 2>/dev/null) selection=$(printf '%s\n' "${themes[@]}" | wofi \
--show dmenu \
--allow-markup \
--width 150 \
--height 300 \
-O alphabetical \
--style ~/.local/share/omarchy/default/wofi/select.css)
# Remove any Pango markup before converting back to filename # Remove any Pango markup before converting back to filename
clean_selection=$(echo "$selection" | sed -E 's/<[^>]+>//g') clean_selection=$(echo "$selection" | sed -E 's/<[^>]+>//g')
@ -29,3 +35,4 @@ selected_theme=$(echo "$clean_selection" | tr '[:upper:]' '[:lower:]' | tr ' ' '
# Apply the selected theme # Apply the selected theme
"$HOME/.local/share/omarchy/bin/omarchy-theme-set" "$selected_theme" "$HOME/.local/share/omarchy/bin/omarchy-theme-set" "$selected_theme"

View File

@ -30,5 +30,5 @@ NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_THEME=${THEMES[$NEXT_INDEX]} NEW_THEME=${THEMES[$NEXT_INDEX]}
NEW_THEME_NAME=$(basename "$NEW_THEME") NEW_THEME_NAME=$(basename "$NEW_THEME")
"$HOME/.local/share/omarchy/bin/omarchy-theme-set" $NEW_THEME_NAME omarchy-theme-set $NEW_THEME_NAME
notify-send "Theme changed to $NEW_THEME_NAME" -t 2000 notify-send "Theme changed to $NEW_THEME_NAME" -t 2000

View File

@ -13,12 +13,7 @@ CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
THEME_NAME="$1" THEME_NAME="$1"
THEME_PATH="$THEMES_DIR/$THEME_NAME" THEME_PATH="$THEMES_DIR/$THEME_NAME"
BACKGROUND_PATH="$HOME/.config/omarchy/backgrounds/$THEME_NAME"
if [[ -d "$HOME/.config/omarchy/themes/$THEME_NAME/backgrounds" ]]; then
BACKGROUND_PATH="$HOME/.config/omarchy/themes/$THEME_NAME/backgrounds"
else
BACKGROUND_PATH="$HOME/.config/omarchy/backgrounds/$THEME_NAME"
fi
# Check if the theme entered exists # Check if the theme entered exists
if [[ ! -d "$THEME_PATH" ]]; then if [[ ! -d "$THEME_PATH" ]]; then
@ -27,27 +22,21 @@ if [[ ! -d "$THEME_PATH" ]]; then
fi fi
# Update theme symlinks # Update theme symlinks
ln -nsf "$BACKGROUND_PATH" "$HOME/.config/omarchy/current/backgrounds"
ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR" ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR"
# Change gnome modes
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
else
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
fi
# Trigger alacritty config reload # Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml" touch "$HOME/.config/alacritty/alacritty.toml"
# Trigger btop config reload
pkill -SIGUSR2 btop
# Restart components to apply new theme # Restart components to apply new theme
pkill -SIGUSR2 waybar pkill -SIGUSR2 waybar
makoctl reload makoctl reload
hyprctl reload hyprctl reload
# Set new background # Set new background
"$HOME/.local/share/omarchy/bin/omarchy-theme-bg-next" first_bg=$(find "$HOME/.config/omarchy/current/backgrounds/" -type f | head -n 1)
if [[ -n "$first_bg" ]]; then
ln -nsf "$first_bg" "$HOME/.config/omarchy/current/background"
pkill -x swaybg
setsid swaybg -i "$HOME/.config/omarchy/current/background" -m fill >/dev/null &
fi

View File

@ -1,9 +1,9 @@
#!/bin/bash #!/usr/bin/env bash
if pgrep -x hypridle >/dev/null; then if pgrep -x hypridle > /dev/null; then
pkill -x hypridle pkill -x hypridle
notify-send "Stop locking computer when idle" notify-send "Stop locking computer when idle"
else else
uwsm app -- hypridle >/dev/null 2>&1 & setsid hypridle &> /dev/null &
notify-send "Now locking computer when idle" notify-send "Now locking computer when idle"
fi fi

View File

@ -3,28 +3,29 @@
cd ~/.local/share/omarchy cd ~/.local/share/omarchy
if [[ $1 == "all" ]]; then if [[ $1 == "all" ]]; then
# Run all migrations since the root commit # Run all migrations
migration_starting_point=$(git log --max-parents=0 --first-parent --format="%H") last_updated_at=1
else else
# Remember the commit we're at before upgrading in order to only run new migrations # Remember the version we're at before upgrading
migration_starting_point=$(git log -1 --format=%H) last_updated_at=$(git log -1 --format=%cd --date=unix)
fi fi
# Get the latest while trying to preserve any modifications # Get the latest
git pull --autostash git pull
git diff --check || git reset --merge
# Run any pending migrations # Run any pending migrations
for file in $(git diff --name-only --diff-filter=A $migration_starting_point.. migrations/*.sh); do for file in migrations/*.sh; do
filename=$(basename "$file") filename=$(basename "$file")
migrate_at="${filename%.sh}" migrate_at="${filename%.sh}"
echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m" if [ $migrate_at -gt $last_updated_at ]; then
source $file echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m"
source $file
fi
done done
# Back to where we came from # Back to where we came from
cd - >/dev/null cd - >/dev/null
# Update system packages echo -e "\e[32m\nUpdating system packages\e[0m"
yay -Syu --noconfirm yay -Syu --noconfirm

6
boot.sh Executable file → Normal file
View File

@ -1,6 +1,4 @@
#!/bin/bash ascii_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄ ███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███ ███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
@ -10,7 +8,7 @@ ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀ ▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
███ ███ ' ███ ███ '
echo -e "\n$ansi_art\n" echo -e "\n$ascii_art\n"
pacman -Q git &>/dev/null || sudo pacman -Sy --noconfirm --needed git pacman -Q git &>/dev/null || sudo pacman -Sy --noconfirm --needed git

View File

@ -19,20 +19,20 @@ source = ~/.local/share/omarchy/default/hypr/windows.conf
source = ~/.config/omarchy/current/theme/hyprland.conf source = ~/.config/omarchy/current/theme/hyprland.conf
# Application bindings # Application bindings
$terminal = uwsm app -- alacritty $terminal = alacritty
$browser = uwsm app -- chromium --new-window --ozone-platform=wayland $browser = chromium --new-window --ozone-platform=wayland
$webapp = $browser --app $webapp = $browser --app
bind = SUPER, return, exec, $terminal bind = SUPER, return, exec, $terminal
bind = SUPER, F, exec, uwsm app -- nautilus --new-window bind = SUPER, F, exec, nautilus --new-window
bind = SUPER, B, exec, $browser bind = SUPER, B, exec, $browser
bind = SUPER, M, exec, uwsm app -- spotify bind = SUPER, M, exec, spotify
bind = SUPER, N, exec, $terminal -e nvim bind = SUPER, N, exec, $terminal -e nvim
bind = SUPER, T, exec, $terminal -e btop bind = SUPER, T, exec, $terminal -e btop
bind = SUPER, D, exec, $terminal -e lazydocker bind = SUPER, D, exec, $terminal -e lazydocker
bind = SUPER, G, exec, uwsm app -- signal-desktop bind = SUPER, G, exec, signal-desktop
bind = SUPER, O, exec, uwsm app -- obsidian -disable-gpu bind = SUPER, O, exec, obsidian -disable-gpu
bind = SUPER, slash, exec, uwsm app -- 1password bind = SUPER, slash, exec, 1password
bind = SUPER, A, exec, $webapp="https://chatgpt.com" bind = SUPER, A, exec, $webapp="https://chatgpt.com"
bind = SUPER SHIFT, A, exec, $webapp="https://grok.com" bind = SUPER SHIFT, A, exec, $webapp="https://grok.com"
@ -45,7 +45,7 @@ bind = SUPER, X, exec, $webapp="https://x.com/"
bind = SUPER SHIFT, X, 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 = dropbox-cli start
# Extra env variables # Extra env variables
# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch) # Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch)
@ -56,7 +56,7 @@ bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
input { input {
# Use multiple keyboard layouts and switch between them with Alt + Space # Use multiple keyboard layouts and switch between them with Alt + Space
# kb_layout = us,dk # kb_layout = us,dk
kb_options = compose:caps # ,grp:alt_space_toggle # kb_options = compose:caps,grp:alt_space_toggle
# Change speed of keyboard repeat # Change speed of keyboard repeat
repeat_rate = 40 repeat_rate = 40

View File

@ -1,5 +1,14 @@
# ────────────────────────────────────────────────────────────
# Hyprlock — minimal blur with ringed input
# ────────────────────────────────────────────────────────────
source = ~/.config/omarchy/current/theme/hyprlock.conf source = ~/.config/omarchy/current/theme/hyprlock.conf
general {
disable_loading_bar = true
no_fade_in = false
}
background { background {
monitor = monitor =
color = $color color = $color
@ -21,11 +30,13 @@ input-field {
outline_thickness = 4 outline_thickness = 4
font_family = CaskaydiaMono Nerd Font font_family = CaskaydiaMono Nerd Font
font_size = 32
font_color = $font_color font_color = $font_color
placeholder_color = $placeholder_color
placeholder_text = Enter Password 󰈷  placeholder_text = Enter Password 󰈷 
check_color = $check_color check_color = $check_color
fail_text = <i>$PAMFAIL ($ATTEMPTS)</i> fail_text = Wrong
rounding = 0 rounding = 0
shadow_passes = 0 shadow_passes = 0

View File

@ -1,291 +0,0 @@
app_launch_prefix = "uwsm app -- "
terminal_title_flag = ""
locale = ""
close_when_open = true # Toggle on reopen
theme = "omarchy-default"
theme_base = []
theme_location = ["~/.local/share/omarchy/default/walker/themes/"]
monitor = ""
hotreload_theme = false
as_window = false
timeout = 0
disable_click_to_close = false
force_keyboard_focus = true
[keys]
accept_typeahead = ["tab"]
trigger_labels = "lalt"
next = ["down"]
prev = ["up"]
close = ["esc"]
remove_from_history = ["shift backspace"]
resume_query = ["ctrl r"]
toggle_exact_search = ["ctrl m"]
[keys.activation_modifiers]
keep_open = "shift"
alternate = "alt"
[keys.ai]
clear_session = ["ctrl x"]
copy_last_response = ["ctrl c"]
resume_session = ["ctrl r"]
run_last_responstruee = ["ctrl e"]
[events]
on_activate = ""
on_selection = ""
on_exit = ""
on_launch = ""
on_query_change = ""
[list]
dynamic_sub = true
keyboard_scroll_style = "emacs"
max_entries = 50
show_initial_entries = true
single_click = true
visibility_threshold = 20
placeholder = "No Results"
[search]
argument_delimiter = "#"
placeholder = " Search..."
delay = 0
resume_last_query = false
[activation_mode]
labels = "jkl;asdf"
[builtins.hyprland_keybinds]
show_sub_when_single = true
path = "~/.config/hypr/hyprland.conf"
weight = 5
name = "hyprland_keybinds"
placeholder = "Hyprland Keybinds"
switcher_only = true
hidden = true
[builtins.applications]
weight = 5
name = "applications"
placeholder = " Search..."
prioritize_new = false
hide_actions_with_empty_query = true
context_aware = false
refresh = true
show_sub_when_single = false
show_icon_when_single = true
show_generic = true
history = false
icon = ""
hidden = true
[builtins.applications.actions]
enabled = false
hide_category = true
hide_without_query = true
[builtins.bookmarks]
weight = 5
placeholder = "Bookmarks"
name = "bookmarks"
icon = "bookmark"
switcher_only = true
hidden = true
[[builtins.bookmarks.entries]]
label = "Walker"
url = "https://github.com/abenz1267/walker"
keywords = ["walker", "github"]
[[builtins.bookmarks.entries]]
label = "Omarchy - Github"
url = "https://github.com/basecamp/omarchy"
keywords = ["omarchy", "github"]
[[builtins.bookmarks.entries]]
label = "Omarchy Manual"
url = "https://manuals.omamix.org/2/the-omarchy-manual"
keywords = ["omarchy"]
[builtins.xdph_picker]
hidden = true
weight = 5
placeholder = "Screen/Window Picker"
show_sub_when_single = true
name = "xdphpicker"
switcher_only = true
[builtins.ai]
weight = 5
placeholder = "AI"
name = "ai"
icon = "help-browser"
switcher_only = true
show_sub_when_single = true
[[builtins.ai.anthropic.prompts]]
model = "claude-3-7-sonnet-20250219"
temperature = 1
max_tokens = 1_000
label = "General Assistant"
prompt = "You are a helpful general assistant. Keep your answers short and precise."
[builtins.calc]
require_number = true
weight = 5
name = "Calculator"
icon = "accessories-calculator"
placeholder = "Calculator"
min_chars = 3 # Min chars to calculate. 3 allows "3+3"
[builtins.windows]
weight = 5
icon = "view-restore"
name = "windows"
placeholder = "Windows"
show_icon_when_single = true
switcher_only = true
hidden = true
[builtins.clipboard]
always_put_new_on_top = true
exec = "wl-copy"
weight = 5
name = "clipboard"
avoid_line_breaks = true
placeholder = "Clipboard"
image_height = 300
max_entries = 10
switcher_only = true
hidden = true
[builtins.commands]
weight = 5
icon = "utilities-terminal"
switcher_only = true
name = "commands"
placeholder = "Commands"
hidden = true
[builtins.custom_commands]
weight = 5
icon = "utilities-terminal"
name = "custom_commands"
placeholder = "Custom Commands"
hidden = true
[builtins.emojis]
exec = "wl-copy"
weight = 5
name = "Emojis"
placeholder = "Emojis"
switcher_only = true
history = true
typeahead = true
show_unqualified = false
prefix = ":"
[builtins.symbols]
after_copy = ""
weight = 5
name = "symbols"
placeholder = "Symbols"
switcher_only = true
history = true
typeahead = true
hidden = true
[builtins.finder]
use_fd = false
fd_flags = "--ignore-vcs --type file --type directory"
cmd_alt = "xdg-open $(dirname ~/%RESULT%)"
weight = 5
icon = "file"
name = "finder"
placeholder = "Finder"
switcher_only = true
ignore_gitignore = true
refresh = true
concurrency = 8
show_icon_when_single = true
preview_images = false
hidden = true
[builtins.runner]
eager_loading = true
weight = 5
icon = "utilities-terminal"
name = "runner"
placeholder = "Runner"
typeahead = true
history = true
generic_entry = false # Generic command runner
shell_config = "" # Path to shell to parse for aliases
refresh = true
use_fd = false
switcher_only = true
hidden = true
[builtins.ssh]
weight = 5
icon = "preferences-system-network"
name = "ssh"
placeholder = "SSH"
switcher_only = true
history = true
refresh = true
hidden = true
[builtins.switcher]
weight = 5
name = "switcher"
placeholder = "Switcher"
prefix = "/"
[builtins.websearch]
keep_selection = true
weight = 5
icon = "applications-internet"
name = "websearch"
placeholder = "Websearch"
switcher_only = true
hidden = true
[[builtins.websearch.entries]]
name = "Google"
url = "https://www.google.com/search?q=%TERM%"
[[builtins.websearch.entries]]
name = "DuckDuckGo"
url = "https://duckduckgo.com/?q=%TERM%"
switcher_only = true
[[builtins.websearch.entries]]
name = "Ecosia"
url = "https://www.ecosia.org/search?q=%TERM%"
switcher_only = true
[[builtins.websearch.entries]]
name = "Yandex"
url = "https://yandex.com/search/?text=%TERM%"
switcher_only = true
[builtins.dmenu]
hidden = true
weight = 5
name = "dmenu"
placeholder = "Dmenu"
switcher_only = true
show_icon_when_single = true
[builtins.translation]
delay = 1000
weight = 5
name = "translation"
icon = "accessories-dictionary"
placeholder = "Translation"
switcher_only = true
provider = "googlefree"
hidden = true

View File

@ -12,11 +12,11 @@
], ],
"modules-right": [ "modules-right": [
"group/tray-expander", "group/tray-expander",
"bluetooth", "bluetooth",
"network", "network",
"pulseaudio", "pulseaudio",
"cpu", "cpu",
"battery" "battery"
], ],
"hyprland/workspaces": { "hyprland/workspaces": {
"on-click": "activate", "on-click": "activate",
@ -92,11 +92,11 @@
"format-disabled": "󰂲", "format-disabled": "󰂲",
"format-connected": "", "format-connected": "",
"tooltip-format": "Devices connected: {num_connections}", "tooltip-format": "Devices connected: {num_connections}",
"on-click": "blueberry" "on-click": "GTK_THEME=Adwaita-dark blueberry"
}, },
"pulseaudio": { "pulseaudio": {
"format": "{icon}", "format": "{icon}",
"on-click": "alacritty --class=Wiremix -e wiremix", "on-click": "GTK_THEME=Adwaita-dark pavucontrol",
"on-click-right": "pamixer -t", "on-click-right": "pamixer -t",
"tooltip-format": "Playing at {volume}%", "tooltip-format": "Playing at {volume}%",
"scroll-step": 5, "scroll-step": 5,
@ -124,4 +124,66 @@
"icon-size": 12, "icon-size": 12,
"spacing": 12 "spacing": 12
} }
},
"cpu": {
"interval": 5,
"format": "󰍛",
"on-click": "alacritty -e btop"
},
"clock": {
"format": "{:%A %H:%M}",
"format-alt": "{:%d %B W%V %Y}",
"tooltip": false
},
"network": {
"format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],
"format" : "{icon}",
"format-wifi" : "{icon}",
"format-ethernet" : "󰀂",
"format-disconnected" : "󰖪",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected",
"interval": 3,
"nospacing": 1,
"on-click": "alacritty --class=Impala -e impala"
},
"battery": {
"format": "{capacity}% {icon}",
"format-discharging": "{icon}",
"format-charging": "{icon}",
"format-plugged": "",
"format-icons": {
"charging": [
"󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
},
"format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
"interval": 5,
"states": {
"warning": 20,
"critical": 10
}
},
"bluetooth": {
"format": "",
"format-disabled": "󰂲",
"format-connected": "",
"tooltip-format": "Devices connected: {num_connections}",
"on-click": "GTK_THEME=Adwaita-dark blueberry"
},
"pulseaudio": {
"format": "",
"format-muted": "󰝟",
"scroll-step": 5,
"on-click": "GTK_THEME=Adwaita-dark pavucontrol",
"tooltip-format": "Playing at {volume}%",
"on-click-right": "pamixer -t",
"ignored-sinks": ["Easy Effects Sink"]
}
} }

View File

@ -23,7 +23,6 @@
all: initial; all: initial;
padding: 0 6px; padding: 0 6px;
margin: 0 1.5px; margin: 0 1.5px;
min-width: 9px;
} }
#tray, #tray,

15
config/wofi/config Normal file
View File

@ -0,0 +1,15 @@
width=600
height=350
location=center
show=drun
prompt=Search...
filter_rate=100
allow_markup=true
no_actions=true
halign=fill
orientation=vertical
content_halign=fill
insensitive=true
allow_images=true
image_size=40
gtk_dark=true

73
config/wofi/style.css Normal file
View File

@ -0,0 +1,73 @@
/* Colors are defined by theme files and can be referenced via @base, @text, @selected-text, and @border */
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
border: 2px solid @border;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

View File

@ -15,7 +15,7 @@ zd() {
fi fi
} }
open() { open() {
xdg-open "$@" >/dev/null 2>&1 & xdg-open "$@" >/dev/null 2>&1
} }
# Directories # Directories
@ -24,10 +24,10 @@ alias ...='cd ../..'
alias ....='cd ../../..' alias ....='cd ../../..'
# Tools # Tools
alias n='nvim'
alias g='git' alias g='git'
alias d='docker' alias d='docker'
alias r='rails' alias r='rails'
n() { if [ "$#" -eq 0 ]; then nvim .; else nvim "$@"; fi; }
# Git # Git
alias gcm='git commit -m' alias gcm='git commit -m'

View File

@ -69,5 +69,5 @@ web2app-remove() {
# Ensure changes to ~/.XCompose are immediately available # Ensure changes to ~/.XCompose are immediately available
refresh-xcompose() { refresh-xcompose() {
pkill fcitx5 pkill fcitx5
uwsm app -- fcitx5 >/dev/null 2>&1 & setsid fcitx5 &>/dev/null &
} }

View File

@ -1,10 +1,5 @@
exec-once = uwsm app -- hypridle exec-once = hypridle & mako & waybar & fcitx5
exec-once = uwsm app -- mako exec-once = swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = uwsm app -- waybar
exec-once = uwsm app -- fcitx5
exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = uwsm app -- swayosd-server
exec-once = uwsm app -- walker --gapplication-service
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+' exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+'
exec-once = ~/.local/share/omarchy/bin/omarchy-first-run exec-once = ~/.local/share/omarchy/bin/omarchy-first-run

View File

@ -1,10 +1,10 @@
# Laptop multimedia keys for volume and LCD brightness (with OSD) # Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, swayosd-client --output-volume lower bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, swayosd-client --output-volume mute-toggle bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, swayosd-client --brightness raise bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, swayosd-client --brightness lower bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl # Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next bindl = , XF86AudioNext, exec, playerctl next

View File

@ -5,7 +5,6 @@ bind = SUPER, W, killactive,
bind = SUPER, J, togglesplit, # dwindle bind = SUPER, J, togglesplit, # dwindle
bind = SUPER, P, pseudo, # dwindle bind = SUPER, P, pseudo, # dwindle
bind = SUPER, V, togglefloating, bind = SUPER, V, togglefloating,
bind = , F11, fullscreen, 0
# Move focus with mainMod + arrow keys # Move focus with mainMod + arrow keys
bind = SUPER, left, movefocus, l bind = SUPER, left, movefocus, l

View File

@ -1,6 +1,6 @@
# Launching # Launching
bind = SUPER, space, exec, walker bind = SUPER, space, exec, pkill wofi || wofi --show drun --sort-order=alphabetical --style="$HOME/.local/share/omarchy/default/wofi/search.css"
bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-show-keybindings
# Aesthetics # Aesthetics
bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar
@ -13,24 +13,20 @@ bind = SUPER SHIFT, comma, exec, makoctl dismiss --all
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" 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
bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-menu-power bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-power-menu
# Toggle idling # Toggle idling
bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle
# Control Apple Display brightness # Control Apple Display brightness
bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000 bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-apple-display-brightness -5000
bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000 bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-apple-display-brightness +5000
bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000 bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-apple-display-brightness +60000
# Screenshots # Screenshots
bind = , PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot bind = , PRINT, exec, hyprshot -m region
bind = SHIFT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window bind = SHIFT, PRINT, exec, hyprshot -m window
bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output bind = CTRL, PRINT, exec, hyprshot -m output
# Screenshots
bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
# Color picker # Color picker
bind = SUPER, PRINT, exec, hyprpicker -a bind = SUPER, PRINT, exec, hyprpicker -a

View File

@ -3,8 +3,8 @@ env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24
# Force all apps to use Wayland # Force all apps to use Wayland
env = GDK_BACKEND,wayland,x11,* env = GDK_BACKEND,wayland
env = QT_QPA_PLATFORM,wayland;xcb env = QT_QPA_PLATFORM,wayland
env = QT_STYLE_OVERRIDE,kvantum env = QT_STYLE_OVERRIDE,kvantum
env = SDL_VIDEODRIVER,wayland env = SDL_VIDEODRIVER,wayland
env = MOZ_ENABLE_WAYLAND,1 env = MOZ_ENABLE_WAYLAND,1

View File

@ -69,12 +69,6 @@ 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

@ -5,10 +5,10 @@ windowrule = suppressevent maximize, class:.*
windowrule = tile, class:^(Chromium)$ windowrule = tile, class:^(Chromium)$
# Float and center settings and previews # Float and center settings and previews
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$ windowrule = float, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala|org.gnome.NautilusPreviewer|Omarchy)$
windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer)$ windowrule = size 800 600, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala|org.gnome.NautilusPreviewer)$
windowrule = size 645 450, class:Omarchy windowrule = size 645 350, class:Omarchy
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$ windowrule = center, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala|org.gnome.NautilusPreviewer|Omarchy)$
# Float and center file pickers # Float and center file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
@ -22,8 +22,11 @@ windowrule = fullscreen, class:^(com.libretro.RetroArch)$
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 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube 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:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv)$
windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$ 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
# Proper background blur for wofi
layerrule = blur,wofi

View File

@ -1,2 +0,0 @@
@import url("file://~//.local/share/omarchy/default/walker/themes/omarchy-default.css");
@import url("file://~/.config/omarchy/current/theme/walker.css");

View File

@ -1,10 +0,0 @@
[ui.window.box]
width = 150
[ui.window.box.scroll.list]
max_width = 150
min_width = 150
width = 150
[ui.window.box.search]
hide = true

View File

@ -1,2 +0,0 @@
@import url("file://~//.local/share/omarchy/default/walker/themes/omarchy-default.css");
@import url("file://~/.config/omarchy/current/theme/walker.css");

View File

@ -1,11 +0,0 @@
[ui.window.box]
width = 250
[ui.window.box.scroll.list]
max_width = 250
min_width = 250
width = 250
max_height = 600
[ui.window.box.search]
hide = true

View File

@ -1,2 +0,0 @@
@import url("file://~//.local/share/omarchy/default/walker/themes/omarchy-default.css");
@import url("file://~/.config/omarchy/current/theme/walker.css");

View File

@ -1,48 +0,0 @@
[ui.window.box]
width = 964
min_width = 964
max_width = 964
height = 664
min_height = 664
max_height = 664
[ui.window.box.search]
hide = false
[ui.window.box.scroll]
v_align = "fill"
h_align = "fill"
min_width = 964
width = 964
max_width = 964
min_height = 664
height = 664
max_height = 664
[ui.window.box.scroll.list]
v_align = "fill"
h_align = "fill"
min_width = 900
width = 900
max_width = 900
min_height = 600
height = 600
max_height = 600
[ui.window.box.scroll.list.item]
h_align = "fill"
min_width = 900
width = 900
max_width = 900
[ui.window.box.scroll.list.item.activation_label]
hide = true
[ui.window.box.scroll.list.placeholder]
v_align = "start"
h_align = "fill"
hide = false
min_width = 900
width = 900
max_width = 900

View File

@ -1,166 +0,0 @@
@import url("file://~/.config/omarchy/current/theme/walker.css");
/* Reset all elements */
#window,
#box,
#search,
#password,
#input,
#prompt,
#clear,
#typeahead,
#list,
child,
scrollbar,
slider,
#item,
#text,
#label,
#sub,
#activationlabel {
all: unset;
}
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
/* Window */
#window {
background: transparent;
color: @text;
}
/* Main box container */
#box {
background: alpha(@base, 0.95);
padding: 20px;
border: 2px solid @border;
border-radius: 0px;
}
/* Search container */
#search {
background: @base;
padding: 10px;
margin-bottom: 0;
}
/* Hide prompt icon */
#prompt {
opacity: 0;
min-width: 0;
margin: 0;
}
/* Hide clear button */
#clear {
opacity: 0;
min-width: 0;
}
/* Input field */
#input {
background: none;
color: @text;
padding: 0;
}
#input placeholder {
opacity: 0.5;
color: @text;
}
/* Hide typeahead */
#typeahead {
opacity: 0;
}
/* List */
#list {
background: transparent;
}
/* List items */
child {
padding: 0px 12px;
background: transparent;
border-radius: 0;
}
child:selected,
child:hover {
background: transparent;
}
/* Item layout */
#item {
padding: 0;
}
/* Icon */
#icon {
margin-right: 10px;
-gtk-icon-transform: scale(0.7);
}
/* Text */
#text {
color: @text;
padding: 14px 0;
}
#label {
font-weight: normal;
}
/* Selected state */
child:selected #text,
child:selected #label,
child:hover #text,
child:hover #label {
color: @selected-text;
}
/* Hide sub text */
#sub {
opacity: 0;
font-size: 0;
min-height: 0;
}
/* Hide activation label */
#activationlabel {
opacity: 0;
min-width: 0;
}
/* Scrollbar styling */
scrollbar {
opacity: 0;
}
/* Hide spinner */
#spinner {
opacity: 0;
}
/* Hide AI elements */
#aiScroll,
#aiList,
.aiItem {
opacity: 0;
min-height: 0;
}
/* Bar entry (switcher) */
#bar {
opacity: 0;
min-height: 0;
}
.barentry {
opacity: 0;
}

View File

@ -1,16 +0,0 @@
[ui.window.box]
width = 664
min_width = 664
max_width = 664
height = 396
min_height = 396
max_height = 396
# List constraints are critical - without these, the window shrinks when empty
[ui.window.box.scroll.list]
height = 300
min_height = 300
max_height = 300
[ui.window.box.scroll.list.item.icon]
pixel_size = 40

73
default/wofi/search.css Normal file
View File

@ -0,0 +1,73 @@
@import ".config/omarchy/current/theme/wofi.css";
@import ".config/wofi/style.css";
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
border: 2px solid @border;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

8
default/wofi/select.css Normal file
View File

@ -0,0 +1,8 @@
@import ".config/omarchy/current/theme/wofi.css";
@import ".local/share/omarchy/default/wofi/search.css";
#input {
display: none;
opacity: 0;
margin-top: -200px;
}

8
first-run/index.html Normal file
View File

@ -0,0 +1,8 @@
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>Hello!</h1>
</body>
</html>

10
install.sh Executable file → Normal file
View File

@ -1,16 +1,8 @@
#!/bin/bash
# Exit immediately if a command exits with a non-zero status # Exit immediately if a command exits with a non-zero status
set -e set -e
# Give people a chance to retry running the installation # Give people a chance to retry running the installation
catch_errors() { trap 'echo "Omarchy installation failed! You can retry by running: source ~/.local/share/omarchy/install.sh"' ERR
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
echo "You can retry by running: bash ~/.local/share/omarchy/install.sh"
echo "Get help from the community: https://discord.gg/tXFUdasqhY"
}
trap catch_errors ERR
# Install everything # Install everything
for f in ~/.local/share/omarchy/install/*.sh; do for f in ~/.local/share/omarchy/install/*.sh; do

View File

@ -1,5 +1,3 @@
#!/bin/bash
sudo pacman -S --needed --noconfirm base-devel sudo pacman -S --needed --noconfirm base-devel
if ! command -v yay &>/dev/null; then if ! command -v yay &>/dev/null; then

View File

@ -1,10 +1,7 @@
#!/bin/bash
# Need gum to query for input # Need gum to query for input
yay -S --noconfirm --needed gum yay -S --noconfirm --needed gum
# Configure identification # Configure identification
source ~/.local/share/omarchy/ansi.sh
echo -e "\nEnter identification for git and autocomplete..." echo -e "\nEnter identification for git and autocomplete..."
export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ") export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ")
export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ") export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ")

View File

@ -1,8 +1,6 @@
#!/bin/bash
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
wget curl unzip inetutils impala \ wget curl unzip inetutils impala \
fd eza fzf ripgrep zoxide bat jq \ fd eza fzf ripgrep zoxide bat \
wl-clipboard fastfetch btop \ wl-clipboard fastfetch btop \
man tldr less whois plocate bash-completion \ man tldr less whois plocate bash-completion \
alacritty alacritty

View File

@ -1,5 +1,3 @@
#!/bin/bash
# Copy over Omarchy configs # Copy over Omarchy configs
cp -R ~/.local/share/omarchy/config/* ~/.config/ cp -R ~/.local/share/omarchy/config/* ~/.config/

View File

@ -1,5 +1,3 @@
#!/bin/bash
# Install asdcontrol for controlling brightness on Apple Displays # Install asdcontrol for controlling brightness on Apple Displays
if [ -z "$OMARCHY_BARE" ] && ! command -v asdcontrol &>/dev/null; then if [ -z "$OMARCHY_BARE" ] && ! command -v asdcontrol &>/dev/null; then
git clone https://github.com/nikosdion/asdcontrol.git /tmp/asdcontrol git clone https://github.com/nikosdion/asdcontrol.git /tmp/asdcontrol

9
install/backgrounds.sh Normal file
View File

@ -0,0 +1,9 @@
BACKGROUNDS_DIR=~/.config/omarchy/backgrounds/
download_background_image() {
local url="$1"
local path="$2"
gum spin --title "Downloading $url as $path..." -- curl -sL -o "$BACKGROUNDS_DIR/$path" "$url"
}
for t in ~/.local/share/omarchy/themes/*; do source "$t/backgrounds.sh"; done

View File

@ -1,5 +1,3 @@
#!/bin/bash
# Install bluetooth controls # Install bluetooth controls
yay -S --noconfirm --needed blueberry yay -S --noconfirm --needed blueberry

View File

@ -1,16 +1,6 @@
#!/bin/bash
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
brightnessctl playerctl pamixer wiremix wireplumber \ brightnessctl playerctl pamixer pavucontrol wireplumber \
fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \ fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool wl-clip-persist \
nautilus sushi ffmpegthumbnailer \ nautilus sushi ffmpegthumbnailer \
slurp satty \
mpv evince imv \ mpv evince imv \
chromium chromium
# Add screen recorder based on GPU
if lspci | grep -qi 'nvidia'; then
yay -S --noconfirm --needed wf-recorder
else
yay -S --noconfirm --needed wl-screenrec
fi

View File

@ -1,5 +1,3 @@
#!/bin/bash
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
cargo clang llvm mise \ cargo clang llvm mise \
imagemagick \ imagemagick \

View File

@ -1,6 +1,4 @@
#!/bin/bash yay -S --noconfirm --needed docker docker-compose
yay -S --noconfirm --needed docker docker-compose docker-buildx
# Limit log size to avoid running out of disk # Limit log size to avoid running out of disk
sudo mkdir -p /etc/docker sudo mkdir -p /etc/docker
@ -11,12 +9,3 @@ sudo systemctl enable docker
# Give this user privileged Docker access # Give this user privileged Docker access
sudo usermod -aG docker ${USER} sudo usermod -aG docker ${USER}
# Prevent Docker from preventing boot for network-online.target
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/no-block-boot.conf <<'EOF'
[Unit]
DefaultDependencies=no
EOF
sudo systemctl daemon-reload

View File

@ -1,26 +0,0 @@
#!/bin/bash
if ! command -v ufw &>/dev/null; then
yay -Sy --noconfirm --needed ufw ufw-docker
# Allow nothing in, everything out
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow ports for LocalSend
sudo ufw allow 53317/udp
sudo ufw allow 53317/tcp
# Allow SSH in
sudo ufw allow 22/tcp
# Allow Docker containers to use DNS on host
sudo ufw allow in on docker0 to any port 53
# Turn on the firewall
sudo ufw enable
# Turn on Docker protections
sudo ufw-docker install
sudo ufw reload
fi

View File

@ -1,5 +1,3 @@
#!/bin/bash
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf

View File

@ -1,5 +1,3 @@
#!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then if [ -z "$OMARCHY_BARE" ]; then
yay -Sy --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra yay -Sy --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra
else else

View File

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

View File

@ -1,5 +1,4 @@
#!/bin/bash #!/bin/bash
# Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security # Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security
yay -S --noconfirm --needed uwsm yay -S --noconfirm --needed uwsm
@ -109,16 +108,6 @@ PAMName=login
WantedBy=graphical.target WantedBy=graphical.target
EOF EOF
# Make plymouth remain until graphical.target
sudo mkdir -p /etc/systemd/system/plymouth-quit.service.d
sudo tee /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf <<'EOF'
[Unit]
After=multi-user.target
EOF
# Prevent plymouth-quit-wait.service
sudo systemctl mask plymouth-quit-wait.service
sudo systemctl daemon-reload sudo systemctl daemon-reload
sudo systemctl enable omarchy-seamless-login.service sudo systemctl enable omarchy-seamless-login.service

View File

@ -1,5 +1,3 @@
#!/bin/bash
update-desktop-database ~/.local/share/applications update-desktop-database ~/.local/share/applications
# Open all images with imv # Open all images with imv

View File

@ -1,8 +1,6 @@
#!/bin/bash
# Install iwd explicitly if it wasn't included in archinstall # Install iwd explicitly if it wasn't included in archinstall
# This can happen if archinstall used ethernet # This can happen if archinstall used ethernet
if ! command -v iwctl &>/dev/null; then if ! command -v iwd &>/dev/null; then
yay -S --noconfirm --needed iwd yay -S --noconfirm --needed iwd
sudo systemctl enable --now iwd.service sudo systemctl enable --now iwd.service
fi fi

View File

@ -1,5 +1,3 @@
#!/bin/bash
# ============================================================================== # ==============================================================================
# Hyprland NVIDIA Setup Script for Arch Linux # Hyprland NVIDIA Setup Script for Arch Linux
# ============================================================================== # ==============================================================================

View File

@ -1,5 +1,3 @@
#!/bin/bash
if ! command -v nvim &>/dev/null; then if ! command -v nvim &>/dev/null; then
yay -S --noconfirm --needed nvim luarocks tree-sitter-cli yay -S --noconfirm --needed nvim luarocks tree-sitter-cli

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
if ! command -v plymouth &>/dev/null; then if ! command -v plymouth &>/dev/null; then
yay -S --noconfirm --needed plymouth yay -S --noconfirm --needed plymouth

View File

@ -1,5 +1,3 @@
#!/bin/bash
# Setting the performance profile can make a big difference. By default, most systems seem to start in balanced mode, # Setting the performance profile can make a big difference. By default, most systems seem to start in balanced mode,
# even if they're not running off a battery. So let's make sure that's changed to performance. # even if they're not running off a battery. So let's make sure that's changed to performance.
yay -S --noconfirm power-profiles-daemon yay -S --noconfirm power-profiles-daemon
@ -7,7 +5,7 @@ yay -S --noconfirm power-profiles-daemon
if ls /sys/class/power_supply/BAT* &>/dev/null; then if ls /sys/class/power_supply/BAT* &>/dev/null; then
# This computer runs on a battery # This computer runs on a battery
powerprofilesctl set balanced || true powerprofilesctl set balanced || true
# Enable battery monitoring timer for low battery notifications # Enable battery monitoring timer for low battery notifications
systemctl --user enable --now omarchy-battery-monitor.timer || true systemctl --user enable --now omarchy-battery-monitor.timer || true
else else

View File

@ -1,4 +1,2 @@
#!/bin/bash
sudo pacman -S --noconfirm cups cups-pdf cups-filters system-config-printer sudo pacman -S --noconfirm cups cups-pdf cups-filters system-config-printer
sudo systemctl enable --now cups.service sudo systemctl enable --now cups.service

View File

@ -1,5 +1,3 @@
#!/bin/bash
# Install Ruby using gcc-14 for compatibility # Install Ruby using gcc-14 for compatibility
yay -S --noconfirm --needed gcc14 yay -S --noconfirm --needed gcc14
mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14" mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14"

View File

@ -1,5 +1,3 @@
#!/bin/bash
# Use dark mode for QT apps too (like kdenlive) # Use dark mode for QT apps too (like kdenlive)
sudo pacman -S --noconfirm kvantum-qt5 sudo pacman -S --noconfirm kvantum-qt5
@ -15,13 +13,13 @@ for f in ~/.local/share/omarchy/themes/*; do ln -s "$f" ~/.config/omarchy/themes
# Set initial theme # Set initial theme
mkdir -p ~/.config/omarchy/current mkdir -p ~/.config/omarchy/current
ln -snf ~/.config/omarchy/themes/tokyo-night ~/.config/omarchy/current/theme ln -snf ~/.config/omarchy/themes/tokyo-night ~/.config/omarchy/current/theme
ln -snf ~/.config/omarchy/current/theme/backgrounds/1-Pawel-Czerwinski-Abstract-Purple-Blue.jpg ~/.config/omarchy/current/background source ~/.local/share/omarchy/themes/tokyo-night/backgrounds.sh
ln -snf ~/.config/omarchy/backgrounds/tokyo-night ~/.config/omarchy/current/backgrounds
ln -snf ~/.config/omarchy/current/backgrounds/1-Pawel-Czerwinski-Abstract-Purple-Blue.jpg ~/.config/omarchy/current/background
# Set specific app links for current theme # Set specific app links for current theme
ln -snf ~/.config/omarchy/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua ln -snf ~/.config/omarchy/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua
mkdir -p ~/.config/btop/themes mkdir -p ~/.config/btop/themes
ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current.theme ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current.theme
mkdir -p ~/.config/mako mkdir -p ~/.config/mako
ln -snf ~/.config/omarchy/current/theme/mako.ini ~/.config/mako/config ln -snf ~/.config/omarchy/current/theme/mako.ini ~/.config/mako/config

View File

@ -1,5 +1,3 @@
#!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then if [ -z "$OMARCHY_BARE" ]; then
source ~/.local/share/omarchy/default/bash/functions source ~/.local/share/omarchy/default/bash/functions
web2app "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png web2app "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png
@ -12,5 +10,4 @@ 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://manuals.omamix.org/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6NDgsInB1ciI6ImJsb2JfaWQifX0=--c26606490139480f5bcb3cf91b09fc45825007f6/omarchy.jpg?disposition=attachment
fi fi

View File

@ -1,20 +1,15 @@
#!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then 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 pinta xournalpp localsend-bin
# Packages known to be flaky or having key signing issues are run one-by-one yay -S --noconfirm --needed typora ||
for pkg in pinta typora spotify zoom; do echo -e "\e[31mFailed to install Typora. Continuing without!\e[0m"
yay -S --noconfirm --needed "$pkg" ||
echo -e "\e[31mFailed to install $pkg. Continuing without!\e[0m"
done
yay -S --noconfirm --needed 1password-beta 1password-cli || yay -S --noconfirm --needed spotify dropbox-cli 1password-beta 1password-cli ||
echo -e "\e[31mFailed to install 1password. Continuing without!\e[0m" echo -e "\e[31mFailed to install Spotify, Dropbox, and/or 1password because of a keyserver problem. Continuing without!\e[0m"
fi fi
# Copy over Omarchy applications # Copy over Omarchy applications
source ~/.local/share/omarchy/bin/omarchy-refresh-applications || true source ~/.local/share/omarchy/bin/omarchy-sync-applications || true

View File

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

View File

@ -1,5 +1,2 @@
echo "Installing missing fd terminal tool for finding files" echo "Installing missing fd terminal tool for finding files"
yay -S --noconfirm --needed fd
if ! command -v fd &>/dev/null; then
yay -S --noconfirm --needed fd
fi

View File

@ -1,5 +1,2 @@
echo "Add LocalSend as new default application" echo "Add LocalSend as new default application"
yay -S --noconfirm --needed localsend-bin
if ! command -v localsend &>/dev/null; then
yay -S --noconfirm --needed localsend-bin
fi

View File

@ -1,5 +1,2 @@
echo "Install ffmpegthumbnailer for video thumbnails in the file manager" echo "Install ffmpegthumbnailer for video thumbnails in the file manager"
yay -S --noconfirm --needed ffmpegthumbnailer
if ! command -v ffmpegthumbnailer &>/dev/null; then
yay -S --noconfirm --needed ffmpegthumbnailer
fi

View File

@ -1,5 +1,2 @@
echo "Install bash-completion" echo "Install bash-completion"
yay -S --noconfirm --needed bash-completion
if ! pacman -Q bash-completion &>/dev/null; then
yay -S --noconfirm --needed bash-completion
fi

View File

@ -1,5 +1,2 @@
echo "Adding gnome-keyring to make 1password work with 2FA codes" echo "Adding gnome-keyring to make 1password work with 2FA codes"
yay -S --noconfirm --needed gnome-keyring
if ! command -v gnome-keyring &>/dev/null; then
yay -S --noconfirm --needed gnome-keyring
fi

View File

@ -1,10 +1,14 @@
echo "Enable battery low notifications for laptops" echo "Enable battery low notifications for laptops"
if ls /sys/class/power_supply/BAT* &>/dev/null && [[ ! -f ~/.local/share/omarchy/config/systemd/user/omarchy-battery-monitor.service ]]; then if ls /sys/class/power_supply/BAT* &>/dev/null; then
mkdir -p ~/.config/systemd/user mkdir -p ~/.config/systemd/user
cp ~/.local/share/omarchy/config/systemd/user/omarchy-battery-monitor.* ~/.config/systemd/user/ cp ~/.local/share/omarchy/config/systemd/user/omarchy-battery-monitor.* ~/.config/systemd/user/
systemctl --user daemon-reload systemctl --user daemon-reload
systemctl --user enable --now omarchy-battery-monitor.timer || true systemctl --user enable --now omarchy-battery-monitor.timer || true
echo "Battery monitoring enabled - you'll receive notifications at 10% battery"
else
echo "No battery detected - skipping battery monitor setup"
fi fi

13
migrations/1752249974.sh Normal file
View File

@ -0,0 +1,13 @@
echo "Add new matte black theme"
BACKGROUNDS_DIR=~/.config/omarchy/backgrounds/
download_background_image() {
local url="$1"
local path="$2"
gum spin --title "Downloading $url as $path..." -- curl -sL -o "$BACKGROUNDS_DIR/$path" "$url"
}
if [[ ! -L "~/.config/omarchy/themes/matte-black" ]]; then
ln -snf ~/.local/share/omarchy/themes/matte-black ~/.config/omarchy/themes/
source ~/.local/share/omarchy/themes/matte-black/backgrounds.sh
fi

View File

@ -1,19 +1,18 @@
echo "Update to use UWSM and seamless login" echo "Update to use UWSM and seamless login"
if ! command -v uwsm &>/dev/null; then sudo rm /etc/systemd/system/getty@tty1.service.d/override.conf
sudo rm -f /etc/systemd/system/getty@tty1.service.d/override.conf sudo rmdir /etc/systemd/system/getty@tty1.service.d/ 2>/dev/null || true
sudo rmdir /etc/systemd/system/getty@tty1.service.d/ 2>/dev/null || true
if [ -f "$HOME/.bash_profile" ]; then if [ -f "$HOME/.bash_profile" ]; then
# Remove the specific line # Remove the specific line
sed -i '/^\[\[ -z \$DISPLAY && \$(tty) == \/dev\/tty1 \]\] && exec Hyprland$/d' "$HOME/.bash_profile" sed -i '/^\[\[ -z \$DISPLAY && \$(tty) == \/dev\/tty1 \]\] && exec Hyprland$/d' "$HOME/.bash_profile"
echo "Cleaned up .bash_profile" echo "Cleaned up .bash_profile"
fi
if [ -f "$HOME/.config/environment.d/fcitx.conf" ]; then
echo "Removing GTK_IM_MODULE from fcitx config for Wayland..."
sed -i 's/^GTK_IM_MODULE=fcitx$//' "$HOME/.config/environment.d/fcitx.conf"
fi
omarchy-refresh-plymouth -y
source ~/.local/share/omarchy/install/login.sh
fi fi
if [ -f "$HOME/.config/environment.d/fcitx.conf" ]; then
echo "Removing GTK_IM_MODULE from fcitx config for Wayland..."
sed -i 's/^GTK_IM_MODULE=fcitx$//' "$HOME/.config/environment.d/fcitx.conf"
fi
omarchy-refresh-plymouth
source ~/.local/share/omarchy/install/login.sh

View File

@ -1,10 +1,7 @@
echo "Add override to only require one network interface to be online" echo "Add override to only require one network interface to be online"
sudo mkdir -p /etc/systemd/system/systemd-networkd-wait-online.service.d
if [[ ! -f /etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf ]]; then sudo tee /etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf >/dev/null <<EOF
sudo mkdir -p /etc/systemd/system/systemd-networkd-wait-online.service.d
sudo tee /etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf >/dev/null <<EOF
[Service] [Service]
ExecStart= ExecStart=
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any
EOF EOF
fi

View File

@ -1,9 +1,6 @@
echo "Setting up GPG configuration with multiple keyservers for better reliability" echo "Setting up GPG configuration with multiple keyservers for better reliability"
sudo mkdir -p /etc/gnupg
if [[ ! -f /etc/gnupg/dirmngr.conf ]]; then sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/
sudo mkdir -p /etc/gnupg sudo chmod 644 /etc/gnupg/dirmngr.conf
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/ sudo gpgconf --kill dirmngr || true
sudo chmod 644 /etc/gnupg/dirmngr.conf sudo gpgconf --launch dirmngr || true
sudo gpgconf --kill dirmngr || true
sudo gpgconf --launch dirmngr || true
fi

5
migrations/1752551006.sh Normal file
View File

@ -0,0 +1,5 @@
echo "Make wofi stylesheet user editable"
if [[ -L "$HOME/.config/wofi/style.css" ]]; then
rm "$HOME/.config/wofi/style.css"
cp ~/.local/share/omarchy/config/wofi/style.css ~/.config/wofi/
fi

View File

@ -1,5 +0,0 @@
echo "Add new matte black theme"
if [[ ! -L "~/.config/omarchy/themes/matte-black" ]]; then
ln -snf ~/.local/share/omarchy/themes/matte-black ~/.config/omarchy/themes/
fi

Some files were not shown because too many files have changed in this diff Show More