mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
Compare commits
140 Commits
share-pick
...
colors-gem
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8bcad0c23 | ||
|
|
a6b9bee8b9 | ||
|
|
edc964e458 | ||
|
|
7194176fe5 | ||
|
|
2829279884 | ||
|
|
63a4710a88 | ||
|
|
b86fb24403 | ||
|
|
615e13bbba | ||
|
|
de2757466b | ||
|
|
6dfa5f0807 | ||
|
|
4e802d8058 | ||
|
|
5e75c2d3a9 | ||
|
|
2c8f71c179 | ||
|
|
f4f356659f | ||
|
|
d20ad9032f | ||
|
|
9e2ff7be1d | ||
|
|
e1b3a88126 | ||
|
|
16a9bc295c | ||
|
|
fdee76e2d2 | ||
|
|
941e1c2dd8 | ||
|
|
c723411049 | ||
|
|
c82b1bfb7e | ||
|
|
36095c1ac8 | ||
|
|
57bbe425df | ||
|
|
d90bc6d3f3 | ||
|
|
dbc3c006dd | ||
|
|
807c74d405 | ||
|
|
a9cea21463 | ||
|
|
fee7746362 | ||
|
|
c832b7dc75 | ||
|
|
b08b419bfc | ||
|
|
5d712d3ff1 | ||
|
|
32dbe60a02 | ||
|
|
9ecf5a089b | ||
|
|
4ead763559 | ||
|
|
a308000390 | ||
|
|
1b8da49425 | ||
|
|
934285b7c4 | ||
|
|
fdd3b6d787 | ||
|
|
0b04881a6f | ||
|
|
222386639b | ||
|
|
a7d925de51 | ||
|
|
8460be15c2 | ||
|
|
a57e2b48e7 | ||
|
|
b07c54fff1 | ||
|
|
277495b875 | ||
|
|
d448664726 | ||
|
|
14e140285f | ||
|
|
b95a4a44df | ||
|
|
79b31144d0 | ||
|
|
cf5f4423e1 | ||
|
|
01135724d4 | ||
|
|
ff9474e0eb | ||
|
|
b14297ea21 | ||
|
|
3db3705370 | ||
|
|
bd6992c58c | ||
|
|
3dc59e5404 | ||
|
|
3ecdcb262b | ||
|
|
8ea021744d | ||
|
|
6952e80710 | ||
|
|
2643967424 | ||
|
|
8abeac68dc | ||
|
|
64f254653f | ||
|
|
687ac4567e | ||
|
|
72cecc600d | ||
|
|
1cd2f5b979 | ||
|
|
7fbc139cb5 | ||
|
|
7c213db46d | ||
|
|
5dd4bec68a | ||
|
|
4311a00ca4 | ||
|
|
cd224e7ecd | ||
|
|
7e12473f80 | ||
|
|
2c7480135a | ||
|
|
df0a019c6a | ||
|
|
083715c8c6 | ||
|
|
d0aabc162a | ||
|
|
e416988d4e | ||
|
|
314abce4e8 | ||
|
|
fe8927b351 | ||
|
|
13390441a9 | ||
|
|
65a238d805 | ||
|
|
c535b19235 | ||
|
|
9c8c789453 | ||
|
|
2bc88ebf25 | ||
|
|
2573da8f5e | ||
|
|
e44e937284 | ||
|
|
fd952c2323 | ||
|
|
4e09523127 | ||
|
|
643cf35448 | ||
|
|
1fd1b65cd0 | ||
|
|
9a704fdadb | ||
|
|
a252a42772 | ||
|
|
c59089e9f3 | ||
|
|
ca8f25fba1 | ||
|
|
dae89574dd | ||
|
|
49a9ce14b8 | ||
|
|
d2ea6ad183 | ||
|
|
d5066561ca | ||
|
|
fe9493bd86 | ||
|
|
f578880bc8 | ||
|
|
7ce838565c | ||
|
|
aacc40c954 | ||
|
|
f3b9ca2149 | ||
|
|
ee8f62d967 | ||
|
|
32592e2e28 | ||
|
|
adf7fba2b3 | ||
|
|
021d66f9b6 | ||
|
|
1a34be257c | ||
|
|
1f4c50eddf | ||
|
|
92af9f41f2 | ||
|
|
8ed20d0524 | ||
|
|
2d00b2a02f | ||
|
|
97396f5fb2 | ||
|
|
46c85e49a3 | ||
|
|
8357dd3da2 | ||
|
|
860624d3f4 | ||
|
|
a15d3740a9 | ||
|
|
7b05dcfe0c | ||
|
|
df8b69bf27 | ||
|
|
f39c2a91a5 | ||
|
|
906baa8fee | ||
|
|
457b954db5 | ||
|
|
9b78e3c571 | ||
|
|
88e9c9db49 | ||
|
|
64a8d7bb04 | ||
|
|
c11a1c7989 | ||
|
|
c37ef6d78c | ||
|
|
4d5dab3e32 | ||
|
|
133d54f600 | ||
|
|
4194c649a1 | ||
|
|
33eabb0c88 | ||
|
|
573cbd8ec3 | ||
|
|
fec0731c17 | ||
|
|
0a9e7205c3 | ||
|
|
a810b8058b | ||
|
|
930246aee5 | ||
|
|
f9450e1fb7 | ||
|
|
d6dc1c7b86 | ||
|
|
e39269f9f0 | ||
|
|
74f2900db1 |
Binary file not shown.
|
Before Width: | Height: | Size: 932 KiB After Width: | Height: | Size: 53 KiB |
BIN
applications/icons/Google Maps.png
Normal file
BIN
applications/icons/Google Maps.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
@@ -13,3 +13,5 @@ case "$channel" in
|
|||||||
"dev") omarchy-branch-set "dev" && omarchy-refresh-pacman "edge" ;;
|
"dev") omarchy-branch-set "dev" && omarchy-refresh-pacman "edge" ;;
|
||||||
*) echo "Unknown channel: $channel"; exit 1; ;;
|
*) echo "Unknown channel: $channel"; exit 1; ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
omarchy-update -y
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ exit_screensaver() {
|
|||||||
|
|
||||||
# Exit the screensaver on signals and input from keyboard and mouse
|
# Exit the screensaver on signals and input from keyboard and mouse
|
||||||
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
|
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
|
||||||
printf '\e[?1000h\e[?1003h' # Enable mouse tracking (clicks: 1000, movement: 1003)
|
|
||||||
while read -rsn1 -t 0.1; do :; done # Flush any pending input
|
|
||||||
|
|
||||||
printf '\033]11;rgb:00/00/00\007' # Set background color to black
|
printf '\033]11;rgb:00/00/00\007' # Set background color to black
|
||||||
|
|
||||||
@@ -29,7 +27,7 @@ while true; do
|
|||||||
--no-eol --no-restore-cursor &
|
--no-eol --no-restore-cursor &
|
||||||
|
|
||||||
while pgrep -t "${tty#/dev/}" -x tte >/dev/null; do
|
while pgrep -t "${tty#/dev/}" -x tte >/dev/null; do
|
||||||
if read -rsn1 -t 1 || ! screensaver_in_focus; then
|
if read -n1 -t 1 || ! screensaver_in_focus; then
|
||||||
exit_screensaver
|
exit_screensaver
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -1,7 +1,34 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
NO_SUDO=false
|
||||||
|
PRINT_ONLY=false
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--no-sudo)
|
||||||
|
NO_SUDO=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--print)
|
||||||
|
PRINT_ONLY=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1"
|
||||||
|
echo "Usage: omarchy-debug [--no-sudo] [--print]"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
LOG_FILE="/tmp/omarchy-debug.log"
|
LOG_FILE="/tmp/omarchy-debug.log"
|
||||||
|
|
||||||
|
if [ "$NO_SUDO" = true ]; then
|
||||||
|
DMESG_OUTPUT="(skipped - --no-sudo flag used)"
|
||||||
|
else
|
||||||
|
DMESG_OUTPUT="$(sudo dmesg)"
|
||||||
|
fi
|
||||||
|
|
||||||
cat > "$LOG_FILE" <<EOF
|
cat > "$LOG_FILE" <<EOF
|
||||||
Date: $(date)
|
Date: $(date)
|
||||||
Hostname: $(hostname)
|
Hostname: $(hostname)
|
||||||
@@ -15,7 +42,7 @@ $(inxi -Farz)
|
|||||||
=========================================
|
=========================================
|
||||||
DMESG
|
DMESG
|
||||||
=========================================
|
=========================================
|
||||||
$(sudo dmesg)
|
$DMESG_OUTPUT
|
||||||
|
|
||||||
=========================================
|
=========================================
|
||||||
JOURNALCTL (CURRENT BOOT, ERRORS ONLY)
|
JOURNALCTL (CURRENT BOOT, ERRORS ONLY)
|
||||||
@@ -28,6 +55,11 @@ INSTALLED PACKAGES
|
|||||||
$({ expac -S '%n %v (%r)' $(pacman -Qqe) 2>/dev/null; comm -13 <(pacman -Sql | sort) <(pacman -Qqe | sort) | xargs -r expac -Q '%n %v (AUR)'; } | sort)
|
$({ expac -S '%n %v (%r)' $(pacman -Qqe) 2>/dev/null; comm -13 <(pacman -Sql | sort) <(pacman -Qqe | sort) | xargs -r expac -Q '%n %v (AUR)'; } | sort)
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
if [ "$PRINT_ONLY" = true ]; then
|
||||||
|
cat "$LOG_FILE"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
OPTIONS=("View log" "Save in current directory")
|
OPTIONS=("View log" "Save in current directory")
|
||||||
if ping -c 1 8.8.8.8 >/dev/null 2>&1; then
|
if ping -c 1 8.8.8.8 >/dev/null 2>&1; then
|
||||||
OPTIONS=("Upload log" "${OPTIONS[@]}")
|
OPTIONS=("Upload log" "${OPTIONS[@]}")
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ install_php() {
|
|||||||
|
|
||||||
install_node() {
|
install_node() {
|
||||||
echo -e "Installing Node.js...\n"
|
echo -e "Installing Node.js...\n"
|
||||||
mise use --global node@lts
|
mise use --global node
|
||||||
}
|
}
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ if [[ -n "$choices" ]]; then
|
|||||||
for db in $choices; do
|
for db in $choices; do
|
||||||
case $db in
|
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 ;;
|
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 ;;
|
||||||
PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres17 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:17 ;;
|
PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres18 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:18 ;;
|
||||||
MariaDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mariadb11 -e MARIADB_ROOT_PASSWORD= -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true mariadb:11.8 ;;
|
MariaDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mariadb11 -e MARIADB_ROOT_PASSWORD= -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true mariadb:11.8 ;;
|
||||||
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
|
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
|
||||||
MongoDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:27017:27017" --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin123 mongo:noble ;;
|
MongoDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:27017:27017" --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin123 mongo:noble ;;
|
||||||
|
|||||||
3
bin/omarchy-launch-audio
Executable file
3
bin/omarchy-launch-audio
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
omarchy-launch-or-focus-tui wiremix
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
omarchy-cmd-present "$EDITOR" || EDITOR=nvim
|
omarchy-cmd-present "$EDITOR" || EDITOR=nvim
|
||||||
|
|
||||||
case "$EDITOR" in
|
case "$EDITOR" in
|
||||||
nvim | vim | nano | micro | hx | helix)
|
nvim | vim | nano | micro | hx | helix | fresh)
|
||||||
exec omarchy-launch-tui "$EDITOR" "$@"
|
exec omarchy-launch-tui "$EDITOR" "$@"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cmd="$*"
|
cmd="$*"
|
||||||
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.terminal --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"
|
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.terminal --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; if [ \$? -ne 130 ]; then omarchy-show-done; fi"
|
||||||
|
|||||||
3
bin/omarchy-launch-opencode
Executable file
3
bin/omarchy-launch-opencode
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.opencode -e bash -c 'cd ~/Work; opencode'
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
APP_ID="org.omarchy.$(basename $1)"
|
APP_ID="org.omarchy.$(basename "$1")"
|
||||||
LAUNCH_COMMAND="omarchy-launch-tui $@"
|
LAUNCH_COMMAND="omarchy-launch-tui $@"
|
||||||
|
|
||||||
exec omarchy-launch-or-focus "$APP_ID" "$LAUNCH_COMMAND"
|
exec omarchy-launch-or-focus "$APP_ID" "$LAUNCH_COMMAND"
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Silently quit Walker on overlay
|
||||||
|
walker -q
|
||||||
|
|
||||||
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
|
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
|
||||||
terminal=$(xdg-terminal-exec --print-id)
|
terminal=$(xdg-terminal-exec --print-id)
|
||||||
|
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ show_setup_menu() {
|
|||||||
options="$options\n Defaults\n DNS\n Security\n Config"
|
options="$options\n Defaults\n DNS\n Security\n Config"
|
||||||
|
|
||||||
case $(menu "Setup" "$options") in
|
case $(menu "Setup" "$options") in
|
||||||
*Audio*) omarchy-launch-or-focus-tui wiremix ;;
|
*Audio*) omarchy-launch-audio ;;
|
||||||
*Wifi*) omarchy-launch-wifi ;;
|
*Wifi*) omarchy-launch-wifi ;;
|
||||||
*Bluetooth*) omarchy-launch-bluetooth ;;
|
*Bluetooth*) omarchy-launch-bluetooth ;;
|
||||||
*Power*) show_setup_power_menu ;;
|
*Power*) show_setup_power_menu ;;
|
||||||
@@ -276,15 +276,16 @@ show_install_ai_menu() {
|
|||||||
echo ollama
|
echo ollama
|
||||||
)
|
)
|
||||||
|
|
||||||
case $(menu "Install" " Claude Code\n Cursor CLI\n Gemini\n OpenAI Codex\n LM Studio\n Ollama\n Crush\n opencode") in
|
case $(menu "Install" " Dictation [AUR]\n Claude Code\n Copilot CLI [AUR]\n Cursor CLI\n Gemini\n OpenAI Codex\n LM Studio\n Ollama\n Crush") in
|
||||||
|
*Dictation*) present_terminal "echo 'Installing Hyprwhspr from AUR...'; yay -S --noconfirm hyprwhspr && hyprwhspr setup" ;;
|
||||||
*Claude*) install "Claude Code" "claude-code" ;;
|
*Claude*) install "Claude Code" "claude-code" ;;
|
||||||
|
*Copilot*) aur_install "Copilot CLI" "github-copilot-cli" ;;
|
||||||
*Cursor*) install "Cursor CLI" "cursor-cli" ;;
|
*Cursor*) install "Cursor CLI" "cursor-cli" ;;
|
||||||
*OpenAI*) install "OpenAI Codex" "openai-codex-bin" ;;
|
|
||||||
*Gemini*) install "Gemini" "gemini-cli" ;;
|
*Gemini*) install "Gemini" "gemini-cli" ;;
|
||||||
|
*OpenAI*) install "OpenAI Codex" "openai-codex" ;;
|
||||||
*Studio*) install "LM Studio" "lmstudio" ;;
|
*Studio*) install "LM Studio" "lmstudio" ;;
|
||||||
*Ollama*) install "Ollama" $ollama_pkg ;;
|
*Ollama*) install "Ollama" $ollama_pkg ;;
|
||||||
*Crush*) install "Crush" "crush-bin" ;;
|
*Crush*) install "Crush" "crush-bin" ;;
|
||||||
*opencode*) install "opencode" "opencode" ;;
|
|
||||||
*) show_install_menu ;;
|
*) show_install_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@@ -302,7 +303,7 @@ show_install_gaming_menu() {
|
|||||||
show_install_style_menu() {
|
show_install_style_menu() {
|
||||||
case $(menu "Install" " Theme\n Background\n Font") in
|
case $(menu "Install" " Theme\n Background\n Font") in
|
||||||
*Theme*) present_terminal omarchy-theme-install ;;
|
*Theme*) present_terminal omarchy-theme-install ;;
|
||||||
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;;
|
*Background*) omarchy-theme-bg-install ;;
|
||||||
*Font*) show_install_font_menu ;;
|
*Font*) show_install_font_menu ;;
|
||||||
*) show_install_menu ;;
|
*) show_install_menu ;;
|
||||||
esac
|
esac
|
||||||
@@ -365,10 +366,11 @@ show_install_elixir_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_remove_menu() {
|
show_remove_menu() {
|
||||||
case $(menu "Remove" " Package\n Web App\n TUI\n Theme\n Windows\n Fingerprint\n Fido2") in
|
case $(menu "Remove" " Package\n Web App\n TUI\n Development\n Theme\n Windows\n Fingerprint\n Fido2") in
|
||||||
*Package*) terminal omarchy-pkg-remove ;;
|
*Package*) terminal omarchy-pkg-remove ;;
|
||||||
*Web*) present_terminal omarchy-webapp-remove ;;
|
*Web*) present_terminal omarchy-webapp-remove ;;
|
||||||
*TUI*) present_terminal omarchy-tui-remove ;;
|
*TUI*) present_terminal omarchy-tui-remove ;;
|
||||||
|
*Development*) show_remove_development_menu ;;
|
||||||
*Theme*) present_terminal omarchy-theme-remove ;;
|
*Theme*) present_terminal omarchy-theme-remove ;;
|
||||||
*Windows*) present_terminal "omarchy-windows-vm remove" ;;
|
*Windows*) present_terminal "omarchy-windows-vm remove" ;;
|
||||||
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
|
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
|
||||||
@@ -377,9 +379,54 @@ show_remove_menu() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_remove_development_menu() {
|
||||||
|
case $(menu "Remove" " Ruby on Rails\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure") in
|
||||||
|
*Rails*) present_terminal "omarchy-remove-dev-env ruby" ;;
|
||||||
|
*JavaScript*) show_remove_javascript_menu ;;
|
||||||
|
*Go*) present_terminal "omarchy-remove-dev-env go" ;;
|
||||||
|
*PHP*) show_remove_php_menu ;;
|
||||||
|
*Python*) present_terminal "omarchy-remove-dev-env python" ;;
|
||||||
|
*Elixir*) show_remove_elixir_menu ;;
|
||||||
|
*Zig*) present_terminal "omarchy-remove-dev-env zig" ;;
|
||||||
|
*Rust*) present_terminal "omarchy-remove-dev-env rust" ;;
|
||||||
|
*Java*) present_terminal "omarchy-remove-dev-env java" ;;
|
||||||
|
*NET*) present_terminal "omarchy-remove-dev-env dotnet" ;;
|
||||||
|
*OCaml*) present_terminal "omarchy-remove-dev-env ocaml" ;;
|
||||||
|
*Clojure*) present_terminal "omarchy-remove-dev-env clojure" ;;
|
||||||
|
*) show_remove_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
show_remove_javascript_menu() {
|
||||||
|
case $(menu "Remove" " Node.js\n Bun\n Deno") in
|
||||||
|
*Node*) present_terminal "omarchy-remove-dev-env node" ;;
|
||||||
|
*Bun*) present_terminal "omarchy-remove-dev-env bun" ;;
|
||||||
|
*Deno*) present_terminal "omarchy-remove-dev-env deno" ;;
|
||||||
|
*) show_remove_development_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
show_remove_php_menu() {
|
||||||
|
case $(menu "Remove" " PHP\n Laravel\n Symfony") in
|
||||||
|
*PHP*) present_terminal "omarchy-remove-dev-env php" ;;
|
||||||
|
*Laravel*) present_terminal "omarchy-remove-dev-env laravel" ;;
|
||||||
|
*Symfony*) present_terminal "omarchy-remove-dev-env symfony" ;;
|
||||||
|
*) show_remove_development_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
show_remove_elixir_menu() {
|
||||||
|
case $(menu "Remove" " Elixir\n Phoenix") in
|
||||||
|
*Elixir*) present_terminal "omarchy-remove-dev-env elixir" ;;
|
||||||
|
*Phoenix*) present_terminal "omarchy-remove-dev-env phoenix" ;;
|
||||||
|
*) show_remove_development_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
show_update_menu() {
|
show_update_menu() {
|
||||||
case $(menu "Update" " Omarchy\n Config\n Extra Themes\n Process\n Hardware\n Firmware\n Password\n Timezone\n Time") in
|
case $(menu "Update" " Omarchy\n Channel\n Config\n Extra Themes\n Process\n Hardware\n Firmware\n Password\n Timezone\n Time") in
|
||||||
*Omarchy*) present_terminal omarchy-update ;;
|
*Omarchy*) present_terminal omarchy-update ;;
|
||||||
|
*Channel*) show_update_channel_menu ;;
|
||||||
*Config*) show_update_config_menu ;;
|
*Config*) show_update_config_menu ;;
|
||||||
*Themes*) present_terminal omarchy-theme-update ;;
|
*Themes*) present_terminal omarchy-theme-update ;;
|
||||||
*Process*) show_update_process_menu ;;
|
*Process*) show_update_process_menu ;;
|
||||||
@@ -392,6 +439,14 @@ show_update_menu() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_update_channel_menu() {
|
||||||
|
case $(menu "Update channel" "🟢 Stable\n🟡 Edge\n🔴 Dev") in
|
||||||
|
*Stable*) present_terminal "omarchy-channel-set stable" ;;
|
||||||
|
*Edge*) present_terminal "omarchy-channel-set edge" ;;
|
||||||
|
*Dev*) present_terminal "omarchy-channel-set dev" ;;
|
||||||
|
*) show_update_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
show_update_process_menu() {
|
show_update_process_menu() {
|
||||||
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n Walker\n Waybar") in
|
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n Walker\n Waybar") in
|
||||||
*Hypridle*) omarchy-restart-hypridle ;;
|
*Hypridle*) omarchy-restart-hypridle ;;
|
||||||
@@ -468,6 +523,10 @@ go_to_menu() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Allow user extensions and overrides
|
||||||
|
USER_EXTENSIONS="$HOME/.config/omarchy/extensions/menu.sh"
|
||||||
|
[[ -f $USER_EXTENSIONS ]] && source "$USER_EXTENSIONS"
|
||||||
|
|
||||||
if [[ -n "$1" ]]; then
|
if [[ -n "$1" ]]; then
|
||||||
BACK_TO_EXIT=true
|
BACK_TO_EXIT=true
|
||||||
go_to_menu "$1"
|
go_to_menu "$1"
|
||||||
|
|||||||
@@ -212,18 +212,26 @@ prioritize_entries() {
|
|||||||
cut -f2-
|
cut -f2-
|
||||||
}
|
}
|
||||||
|
|
||||||
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
|
output_keybindings() {
|
||||||
menu_height=$((monitor_height * 40 / 100))
|
build_keymap_cache
|
||||||
|
|
||||||
build_keymap_cache
|
{
|
||||||
|
dynamic_bindings
|
||||||
|
static_bindings
|
||||||
|
} |
|
||||||
|
sort -u |
|
||||||
|
parse_keycodes |
|
||||||
|
parse_bindings |
|
||||||
|
prioritize_entries
|
||||||
|
}
|
||||||
|
|
||||||
{
|
if [[ "$1" == "--print" || "$1" == "-p" ]]; then
|
||||||
dynamic_bindings
|
output_keybindings
|
||||||
static_bindings
|
else
|
||||||
} |
|
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
|
||||||
sort -u |
|
menu_height=$((monitor_height * 40 / 100))
|
||||||
parse_keycodes |
|
|
||||||
parse_bindings |
|
output_keybindings |
|
||||||
prioritize_entries |
|
walker --dmenu -p 'Keybindings' --width 800 --height "$menu_height"
|
||||||
walker --dmenu -p 'Keybindings' --width 800 --height "$menu_height"
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
PINNED_PACKAGES_FILE="$OMARCHY_PATH/install/packages.pinned"
|
|
||||||
|
|
||||||
if [[ -f $PINNED_PACKAGES_FILE ]]; then
|
|
||||||
tr '\r\n' ',' <"$PINNED_PACKAGES_FILE" | sed 's/,$//'
|
|
||||||
fi
|
|
||||||
19
bin/omarchy-refresh-chromium
Executable file
19
bin/omarchy-refresh-chromium
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
CONFIG_FILE="$HOME/.config/chromium-flags.conf"
|
||||||
|
INSTALL_GOOGLE_ACCOUNTS=false
|
||||||
|
|
||||||
|
# Check if google accounts were installed
|
||||||
|
if [[ -f "$CONFIG_FILE" ]] && \
|
||||||
|
grep -q -- "--oauth2-client-id" "$CONFIG_FILE" && \
|
||||||
|
grep -q -- "--oauth2-client-secret" "$CONFIG_FILE"; then
|
||||||
|
INSTALL_GOOGLE_ACCOUNTS=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Refresh the Chromium configuration
|
||||||
|
omarchy-refresh-config chromium-flags.conf
|
||||||
|
|
||||||
|
# Re-install Google accounts if previously configured
|
||||||
|
if [[ "$INSTALL_GOOGLE_ACCOUNTS" == true ]]; then
|
||||||
|
omarchy-install-chromium-google-account
|
||||||
|
fi
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if [[ -f /boot/EFI/linux/omarchy_linux.efi ]] && [[ -f /boot/EFI/linux/$(cat /etc/machine-id)_linux.efi ]]; then
|
if [[ -f /boot/EFI/Linux/omarchy_linux.efi ]] && [[ -f /boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi ]]; then
|
||||||
echo "Cleanup extra UKI"
|
echo "Cleanup extra UKI"
|
||||||
sudo rm -f /boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi
|
sudo rm -f /boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -20,6 +20,3 @@ echo
|
|||||||
|
|
||||||
# Reset all package DBs and then update
|
# Reset all package DBs and then update
|
||||||
sudo pacman -Syyu --noconfirm
|
sudo pacman -Syyu --noconfirm
|
||||||
|
|
||||||
# Offer a reboot if a new kernel was installed
|
|
||||||
omarchy-update-restart
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
# Ensure walker is set to autostart
|
# Ensure walker is set to autostart
|
||||||
mkdir -p ~/.config/autostart/
|
mkdir -p ~/.config/autostart/
|
||||||
cp $OMARCHY_PATH/autostart/walker.desktop ~/.config/autostart/
|
cp $OMARCHY_PATH/autostart/walker.desktop ~/.config/autostart/
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
|
||||||
omarchy-refresh-config walker/config.toml
|
omarchy-refresh-config walker/config.toml
|
||||||
omarchy-refresh-config elephant/calc.toml
|
omarchy-refresh-config elephant/calc.toml
|
||||||
|
|||||||
102
bin/omarchy-remove-dev-env
Executable file
102
bin/omarchy-remove-dev-env
Executable file
@@ -0,0 +1,102 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z "$1" ]]; then
|
||||||
|
echo "Usage: omarchy-remove-dev-env <ruby|node|bun|deno|go|php|laravel|symfony|python|elixir|phoenix|zig|rust|java|dotnet|ocaml|clojure>" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
remove_php() {
|
||||||
|
sudo pacman -Rns --noconfirm php composer php-sqlite xdebug 2>/dev/null || true
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
ruby)
|
||||||
|
echo -e "Removing Ruby...\n"
|
||||||
|
mise uninstall ruby --all
|
||||||
|
mise rm -g ruby
|
||||||
|
rm -f ~/.gemrc
|
||||||
|
;;
|
||||||
|
node)
|
||||||
|
echo -e "Removing Node.js...\n"
|
||||||
|
mise uninstall node --all
|
||||||
|
mise rm -g node
|
||||||
|
;;
|
||||||
|
bun)
|
||||||
|
echo -e "Removing Bun...\n"
|
||||||
|
mise uninstall bun --all
|
||||||
|
mise rm -g bun
|
||||||
|
;;
|
||||||
|
deno)
|
||||||
|
echo -e "Removing Deno...\n"
|
||||||
|
mise uninstall deno --all
|
||||||
|
mise rm -g deno
|
||||||
|
;;
|
||||||
|
go)
|
||||||
|
echo -e "Removing Go...\n"
|
||||||
|
mise uninstall go --all
|
||||||
|
mise rm -g go
|
||||||
|
;;
|
||||||
|
php)
|
||||||
|
echo -e "Removing PHP...\n"
|
||||||
|
remove_php
|
||||||
|
;;
|
||||||
|
laravel)
|
||||||
|
echo -e "Removing Laravel...\n"
|
||||||
|
composer global remove laravel/installer 2>/dev/null || true
|
||||||
|
;;
|
||||||
|
symfony)
|
||||||
|
echo -e "Removing Symfony CLI...\n"
|
||||||
|
sudo pacman -Rns --noconfirm symfony-cli 2>/dev/null || true
|
||||||
|
;;
|
||||||
|
python)
|
||||||
|
echo -e "Removing Python...\n"
|
||||||
|
mise uninstall python --all
|
||||||
|
mise rm -g python
|
||||||
|
rm -rf ~/.local/bin/uv ~/.local/bin/uvx ~/.cargo/bin/uv 2>/dev/null || true
|
||||||
|
;;
|
||||||
|
elixir|phoenix)
|
||||||
|
echo -e "Removing Elixir/Erlang...\n"
|
||||||
|
mise uninstall elixir --all
|
||||||
|
mise uninstall erlang --all
|
||||||
|
mise rm -g elixir
|
||||||
|
mise rm -g erlang
|
||||||
|
;;
|
||||||
|
zig)
|
||||||
|
echo -e "Removing Zig...\n"
|
||||||
|
mise uninstall zig --all
|
||||||
|
mise uninstall zls --all
|
||||||
|
mise rm -g zig
|
||||||
|
mise rm -g zls
|
||||||
|
;;
|
||||||
|
rust)
|
||||||
|
echo -e "Removing Rust...\n"
|
||||||
|
rustup self uninstall -y 2>/dev/null || true
|
||||||
|
;;
|
||||||
|
java)
|
||||||
|
echo -e "Removing Java...\n"
|
||||||
|
mise uninstall java --all
|
||||||
|
mise rm -g java
|
||||||
|
;;
|
||||||
|
dotnet)
|
||||||
|
echo -e "Removing .NET...\n"
|
||||||
|
mise uninstall dotnet --all
|
||||||
|
mise rm -g dotnet
|
||||||
|
;;
|
||||||
|
ocaml)
|
||||||
|
echo -e "Removing OCaml...\n"
|
||||||
|
opam switch remove default -y 2>/dev/null || true
|
||||||
|
rm -rf ~/.opam 2>/dev/null || true
|
||||||
|
sudo rm -f /usr/local/bin/opam 2>/dev/null || true
|
||||||
|
;;
|
||||||
|
clojure)
|
||||||
|
echo -e "Removing Clojure...\n"
|
||||||
|
mise uninstall clojure --all
|
||||||
|
mise rm -g clojure
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown environment: $1"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo -e "\nDone!"
|
||||||
@@ -1,22 +1,22 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
pkill elephant
|
restart_services() {
|
||||||
pkill walker
|
if systemctl --user is-enabled elephant.service &>/dev/null; then
|
||||||
|
systemctl --user restart elephant.service
|
||||||
|
fi
|
||||||
|
|
||||||
|
if systemctl --user is-enabled app-walker@autostart.service &>/dev/null; then
|
||||||
|
systemctl --user restart app-walker@autostart.service
|
||||||
|
else
|
||||||
|
echo -e "\e[31mUnable to restart Walker -- RESTART MANUALLY\e[0m"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Detect if we're running as root (from pacman hook)
|
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [[ $EUID -eq 0 ]]; then
|
||||||
# Get the owner of this script to determine which user to run as
|
|
||||||
SCRIPT_OWNER=$(stat -c '%U' "$0")
|
SCRIPT_OWNER=$(stat -c '%U' "$0")
|
||||||
USER_UID=$(id -u "$SCRIPT_OWNER")
|
USER_UID=$(id -u "$SCRIPT_OWNER")
|
||||||
|
|
||||||
# Restart services as the script owner
|
|
||||||
systemd-run --uid="$SCRIPT_OWNER" --setenv=XDG_RUNTIME_DIR="/run/user/$USER_UID" \
|
systemd-run --uid="$SCRIPT_OWNER" --setenv=XDG_RUNTIME_DIR="/run/user/$USER_UID" \
|
||||||
bash -c "
|
bash -c "$(declare -f restart_services); restart_services"
|
||||||
systemctl --user restart elephant.service
|
|
||||||
setsid walker --gapplication-service &
|
|
||||||
"
|
|
||||||
else
|
else
|
||||||
elephant service enable 2>/dev/null
|
restart_services
|
||||||
systemctl --user restart elephant.service
|
|
||||||
setsid walker --gapplication-service &
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
7
bin/omarchy-theme-bg-install
Executable file
7
bin/omarchy-theme-bg-install
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
CURRENT_THEME_NAME=$(cat "$HOME/.config/omarchy/current/theme.name")
|
||||||
|
THEME_USER_BACKGROUNDS="$HOME/.config/omarchy/backgrounds/$CURRENT_THEME_NAME"
|
||||||
|
|
||||||
|
mkdir -p "$THEME_USER_BACKGROUNDS"
|
||||||
|
nautilus "$THEME_USER_BACKGROUNDS"
|
||||||
@@ -2,10 +2,12 @@
|
|||||||
|
|
||||||
# Cycles through the background images available
|
# Cycles through the background images available
|
||||||
|
|
||||||
BACKGROUNDS_DIR="$HOME/.config/omarchy/current/theme/backgrounds/"
|
THEME_NAME=$(cat "$HOME/.config/omarchy/current/theme.name" 2>/dev/null)
|
||||||
|
THEME_BACKGROUNDS_PATH="$HOME/.config/omarchy/current/theme/backgrounds/"
|
||||||
|
USER_BACKGROUNDS_PATH="$HOME/.config/omarchy/backgrounds/$THEME_NAME/"
|
||||||
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
|
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
|
||||||
|
|
||||||
mapfile -d '' -t BACKGROUNDS < <(find -L "$BACKGROUNDS_DIR" -type f -print0 | sort -z)
|
mapfile -d '' -t BACKGROUNDS < <(find -L "$USER_BACKGROUNDS_PATH" "$THEME_BACKGROUNDS_PATH" -maxdepth 1 -type f -print0 2>/dev/null | sort -z)
|
||||||
TOTAL=${#BACKGROUNDS[@]}
|
TOTAL=${#BACKGROUNDS[@]}
|
||||||
|
|
||||||
if [[ $TOTAL -eq 0 ]]; then
|
if [[ $TOTAL -eq 0 ]]; then
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
basename "$(realpath "$HOME/.config/omarchy/current/theme")" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g'
|
THEME_NAME_PATH="$HOME/.config/omarchy/current/theme.name"
|
||||||
|
|
||||||
|
if [[ -f $THEME_NAME_PATH ]]; then
|
||||||
|
cat $THEME_NAME_PATH | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g'
|
||||||
|
else
|
||||||
|
echo "Unknown"
|
||||||
|
fi
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
find ~/.config/omarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | sort | while read -r path; do
|
{
|
||||||
echo "$(basename "$path" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')"
|
find ~/.config/omarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) -printf '%f\n'
|
||||||
|
find "$OMARCHY_PATH/themes/" -mindepth 1 -maxdepth 1 -type d -printf '%f\n'
|
||||||
|
} | sort -u | while read -r name; do
|
||||||
|
echo "$name" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g'
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
THEMES_DIR="$HOME/.config/omarchy/themes/"
|
|
||||||
CURRENT_THEME_LINK="$HOME/.config/omarchy/current/theme"
|
|
||||||
|
|
||||||
THEMES=($(find "$THEMES_DIR" -mindepth 1 -maxdepth 1 | sort))
|
|
||||||
TOTAL=${#THEMES[@]}
|
|
||||||
|
|
||||||
# Get current theme from symlink
|
|
||||||
if [[ -L "$CURRENT_THEME_LINK" ]]; then
|
|
||||||
CURRENT_THEME=$(realpath "$CURRENT_THEME_LINK")
|
|
||||||
else
|
|
||||||
# Default to first theme if no symlink exists
|
|
||||||
CURRENT_THEME=$(realpath "${THEMES[0]}")
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Find current theme index
|
|
||||||
INDEX=0
|
|
||||||
for i in "${!THEMES[@]}"; do
|
|
||||||
THEMES[$i]=$(realpath "${THEMES[$i]}")
|
|
||||||
|
|
||||||
if [[ "${THEMES[$i]}" == "$CURRENT_THEME" ]]; then
|
|
||||||
INDEX=$i
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Get next theme (wrap around)
|
|
||||||
NEXT_INDEX=$(((INDEX + 1) % TOTAL))
|
|
||||||
NEW_THEME=${THEMES[$NEXT_INDEX]}
|
|
||||||
NEW_THEME_NAME=$(basename "$NEW_THEME")
|
|
||||||
|
|
||||||
omarchy-theme-set $NEW_THEME_NAME
|
|
||||||
notify-send "Theme changed to $NEW_THEME_NAME" -t 2000
|
|
||||||
@@ -31,10 +31,5 @@ if [ ! -d "$THEME_PATH" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Move to the next theme if the current theme is the one being removed
|
|
||||||
if [ "$(readlink -f "$CURRENT_DIR/theme")" = "$(readlink -f "$THEME_PATH")" ]; then
|
|
||||||
omarchy-theme-next
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Now remove the theme directory for THEME_NAME
|
# Now remove the theme directory for THEME_NAME
|
||||||
rm -rf "$THEME_PATH"
|
rm -rf "$THEME_PATH"
|
||||||
|
|||||||
@@ -1,24 +1,42 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if [[ -z $1 && $1 != "CNCLD" ]]; then
|
if [[ -z $1 ]]; then
|
||||||
echo "Usage: omarchy-theme-set <theme-name>"
|
echo "Usage: omarchy-theme-set <theme-name>"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
THEMES_DIR="$HOME/.config/omarchy/themes/"
|
CURRENT_THEME_PATH="$HOME/.config/omarchy/current/theme"
|
||||||
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
|
NEXT_THEME_PATH="$HOME/.config/omarchy/current/next-theme"
|
||||||
|
USER_THEMES_PATH="$HOME/.config/omarchy/themes"
|
||||||
|
OMARCHY_THEMES_PATH="$OMARCHY_PATH/themes"
|
||||||
|
|
||||||
THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
|
THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
|
||||||
THEME_PATH="$THEMES_DIR/$THEME_NAME"
|
|
||||||
|
|
||||||
# Check if the theme entered exists
|
if [[ -d "$USER_THEMES_PATH/$THEME_NAME" ]]; then
|
||||||
if [[ ! -d "$THEME_PATH" ]]; then
|
THEME_PATH="$USER_THEMES_PATH/$THEME_NAME"
|
||||||
echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR"
|
elif [[ -d "$OMARCHY_THEMES_PATH/$THEME_NAME" ]]; then
|
||||||
|
THEME_PATH="$OMARCHY_THEMES_PATH/$THEME_NAME"
|
||||||
|
else
|
||||||
|
echo "Theme '$THEME_NAME' does not exist"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Update theme symlinks
|
# Setup clean next theme directory (for atomic theme config swapping)
|
||||||
ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR"
|
rm -rf "$NEXT_THEME_PATH"
|
||||||
|
mkdir -p "$NEXT_THEME_PATH"
|
||||||
|
|
||||||
|
# Copy static configs
|
||||||
|
cp -r "$THEME_PATH/"* "$NEXT_THEME_PATH/" 2>/dev/null
|
||||||
|
|
||||||
|
# Generate dynamic configs
|
||||||
|
omarchy-theme-set-templates
|
||||||
|
|
||||||
|
# Swap next theme in as current
|
||||||
|
rm -rf "$CURRENT_THEME_PATH"
|
||||||
|
mv "$NEXT_THEME_PATH" "$CURRENT_THEME_PATH"
|
||||||
|
|
||||||
|
# Store theme name for reference
|
||||||
|
echo "$THEME_NAME" > "$HOME/.config/omarchy/current/theme.name"
|
||||||
|
|
||||||
# Change background with theme
|
# Change background with theme
|
||||||
omarchy-theme-bg-next
|
omarchy-theme-bg-next
|
||||||
@@ -31,12 +49,14 @@ omarchy-restart-swayosd
|
|||||||
omarchy-restart-terminal
|
omarchy-restart-terminal
|
||||||
hyprctl reload
|
hyprctl reload
|
||||||
pkill -SIGUSR2 btop
|
pkill -SIGUSR2 btop
|
||||||
|
# pkill -SIGUSR2 opencode
|
||||||
makoctl reload
|
makoctl reload
|
||||||
|
|
||||||
# Change gnome, browser, vscode, cursor themes
|
# Change app-specific themes
|
||||||
omarchy-theme-set-gnome
|
omarchy-theme-set-gnome
|
||||||
omarchy-theme-set-browser
|
omarchy-theme-set-browser
|
||||||
omarchy-theme-set-vscode
|
omarchy-theme-set-vscode
|
||||||
|
omarchy-theme-set-vscodium
|
||||||
omarchy-theme-set-cursor
|
omarchy-theme-set-cursor
|
||||||
omarchy-theme-set-obsidian
|
omarchy-theme-set-obsidian
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Call the VSCode theme setter with Cursor-specific parameters
|
# Call the VSCode theme setter with Cursor-specific parameters
|
||||||
omarchy-theme-set-vscode cursor "$HOME/.config/Cursor/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-cursor-theme-changes" Cursor
|
omarchy-theme-set-vscode cursor "$HOME/.config/Cursor/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-cursor-theme-changes"
|
||||||
|
|||||||
44
bin/omarchy-theme-set-templates
Executable file
44
bin/omarchy-theme-set-templates
Executable file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
TEMPLATES_DIR="$OMARCHY_PATH/default/themed"
|
||||||
|
NEXT_THEME_DIR="$HOME/.config/omarchy/current/next-theme"
|
||||||
|
COLORS_FILE="$NEXT_THEME_DIR/colors.toml"
|
||||||
|
|
||||||
|
# Convert hex color to decimal RGB (e.g., "#1e1e2e" -> "30,30,46")
|
||||||
|
hex_to_rgb() {
|
||||||
|
local hex="${1#\#}"
|
||||||
|
printf "%d,%d,%d" "0x${hex:0:2}" "0x${hex:2:2}" "0x${hex:4:2}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Only generate dynamic templates for themes with a colors.toml definition
|
||||||
|
if [[ -f $COLORS_FILE ]]; then
|
||||||
|
# Parse TOML using yq (treating it as YAML since the flat key=value structure is compatible)
|
||||||
|
# We convert 'key = value' to 'key: value' to make it valid YAML, then use yq/jq to generate the replacement commands.
|
||||||
|
sed_script=$(mktemp)
|
||||||
|
|
||||||
|
# Generate standard and _strip substitutions
|
||||||
|
sed 's/=/:/' "$COLORS_FILE" | yq -r 'to_entries[] | "s|{{ \(.key) }}|\(.value)|g", "s|{{ \(.key)_strip }}|\(.value | sub("^#";""))|g"' > "$sed_script"
|
||||||
|
|
||||||
|
# Generate _rgb substitutions for hex colors
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
key=$(echo "$key" | xargs)
|
||||||
|
value=$(echo "$value" | xargs | tr -d '"')
|
||||||
|
if [[ $value =~ ^# ]]; then
|
||||||
|
rgb=$(hex_to_rgb "$value")
|
||||||
|
echo "s|{{ ${key}_rgb }}|${rgb}|g" >> "$sed_script"
|
||||||
|
fi
|
||||||
|
done < "$COLORS_FILE"
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
for tpl in "$TEMPLATES_DIR"/*.tpl; do
|
||||||
|
filename=$(basename "$tpl" .tpl)
|
||||||
|
output_path="$NEXT_THEME_DIR/$filename"
|
||||||
|
|
||||||
|
# Don't overwrite configs already exists in the output directory (copied from theme specific folder)
|
||||||
|
if [[ ! -f $output_path ]]; then
|
||||||
|
sed -f "$sed_script" "$tpl" > "$output_path"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
rm "$sed_script"
|
||||||
|
fi
|
||||||
@@ -7,8 +7,6 @@
|
|||||||
EDITOR_CMD="${1:-code}"
|
EDITOR_CMD="${1:-code}"
|
||||||
SETTINGS_PATH="${2:-$HOME/.config/Code/User/settings.json}"
|
SETTINGS_PATH="${2:-$HOME/.config/Code/User/settings.json}"
|
||||||
SKIP_FLAG="${3:-$HOME/.local/state/omarchy/toggles/skip-vscode-theme-changes}"
|
SKIP_FLAG="${3:-$HOME/.local/state/omarchy/toggles/skip-vscode-theme-changes}"
|
||||||
EDITOR_NAME="${4:-VS Code}"
|
|
||||||
|
|
||||||
VS_CODE_THEME="$HOME/.config/omarchy/current/theme/vscode.json"
|
VS_CODE_THEME="$HOME/.config/omarchy/current/theme/vscode.json"
|
||||||
|
|
||||||
if omarchy-cmd-present "$EDITOR_CMD" && [[ ! -f "$SKIP_FLAG" ]]; then
|
if omarchy-cmd-present "$EDITOR_CMD" && [[ ! -f "$SKIP_FLAG" ]]; then
|
||||||
@@ -16,7 +14,7 @@ if omarchy-cmd-present "$EDITOR_CMD" && [[ ! -f "$SKIP_FLAG" ]]; then
|
|||||||
theme_name=$(jq -r '.name' "$VS_CODE_THEME")
|
theme_name=$(jq -r '.name' "$VS_CODE_THEME")
|
||||||
extension=$(jq -r '.extension' "$VS_CODE_THEME")
|
extension=$(jq -r '.extension' "$VS_CODE_THEME")
|
||||||
|
|
||||||
# Install $EDITOR_NAME theme extension
|
# Install theme extension
|
||||||
if [[ -n "$extension" ]] && ! "$EDITOR_CMD" --list-extensions | grep -Fxq "$extension"; then
|
if [[ -n "$extension" ]] && ! "$EDITOR_CMD" --list-extensions | grep -Fxq "$extension"; then
|
||||||
"$EDITOR_CMD" --install-extension "$extension" >/dev/null
|
"$EDITOR_CMD" --install-extension "$extension" >/dev/null
|
||||||
fi
|
fi
|
||||||
@@ -39,7 +37,7 @@ if omarchy-cmd-present "$EDITOR_CMD" && [[ ! -f "$SKIP_FLAG" ]]; then
|
|||||||
"s/(\"workbench.colorTheme\"[[:space:]]*:[[:space:]]*\")[^\"]*(\")/\1$theme_name\2/" \
|
"s/(\"workbench.colorTheme\"[[:space:]]*:[[:space:]]*\")[^\"]*(\")/\1$theme_name\2/" \
|
||||||
"$SETTINGS_PATH"
|
"$SETTINGS_PATH"
|
||||||
else
|
else
|
||||||
# Remove theme from settings.json when the theme doesn't have $EDITOR_NAME support
|
# Remove theme from settings.json when the theme doesn't have editor support
|
||||||
if [[ -f "$SETTINGS_PATH" ]]; then
|
if [[ -f "$SETTINGS_PATH" ]]; then
|
||||||
sed -i --follow-symlinks -E 's/\"workbench\.colorTheme\"[[:space:]]*:[^,}]*,?//' "$SETTINGS_PATH"
|
sed -i --follow-symlinks -E 's/\"workbench\.colorTheme\"[[:space:]]*:[^,}]*,?//' "$SETTINGS_PATH"
|
||||||
fi
|
fi
|
||||||
|
|||||||
4
bin/omarchy-theme-set-vscodium
Executable file
4
bin/omarchy-theme-set-vscodium
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Call the VSCode theme setter with VSCodium-specific parameters
|
||||||
|
omarchy-theme-set-vscode codium "$HOME/.config/VSCodium/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-codium-theme-changes"
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
if [ "$#" -ne 4 ]; then
|
if [ "$#" -ne 4 ]; then
|
||||||
echo -e "\e[32mLet's create a TUI shortcut you can start with the app launcher.\n\e[0m"
|
echo -e "\e[32mLet's create a TUI shortcut you can start with the app launcher.\n\e[0m"
|
||||||
APP_NAME=$(gum input --prompt "Name> " --placeholder "My TUI")
|
APP_NAME=$(gum input --prompt "Name> " --placeholder "My TUI")
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
ICON_DIR="$HOME/.local/share/applications/icons"
|
||||||
DESKTOP_DIR="$HOME/.local/share/applications/"
|
DESKTOP_DIR="$HOME/.local/share/applications/"
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ set -e
|
|||||||
|
|
||||||
trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR
|
trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR
|
||||||
|
|
||||||
if omarchy-update-confirm; then
|
if [[ $1 == "-y" ]] || omarchy-update-confirm; then
|
||||||
omarchy-snapshot create || [ $? -eq 127 ]
|
omarchy-snapshot create || [ $? -eq 127 ]
|
||||||
omarchy-update-git
|
omarchy-update-git
|
||||||
omarchy-update-perform
|
omarchy-update-perform
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ set -e
|
|||||||
echo -e "\e[32mUpdate Omarchy\e[0m"
|
echo -e "\e[32mUpdate Omarchy\e[0m"
|
||||||
|
|
||||||
git -C $OMARCHY_PATH pull --autostash
|
git -C $OMARCHY_PATH pull --autostash
|
||||||
git -C $OMARCHY_PATH diff --check || git -C $OMARCHY_PATH reset --merge
|
git -C $OMARCHY_PATH --no-pager diff --check || git -C $OMARCHY_PATH reset --merge
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# Ensure screensaver/sleep doesn't set in during updates
|
||||||
|
hyprctl dispatch tagwindow +noidle &> /dev/null || true
|
||||||
|
|
||||||
|
# Perform all update steps
|
||||||
omarchy-update-time
|
omarchy-update-time
|
||||||
omarchy-update-keyring
|
omarchy-update-keyring
|
||||||
omarchy-update-available-reset
|
omarchy-update-available-reset
|
||||||
@@ -9,3 +13,6 @@ omarchy-update-system-pkgs
|
|||||||
omarchy-migrate
|
omarchy-migrate
|
||||||
omarchy-hook post-update
|
omarchy-hook post-update
|
||||||
omarchy-update-restart
|
omarchy-update-restart
|
||||||
|
|
||||||
|
# Re-enable screensaver/sleep after updates
|
||||||
|
hyprctl dispatch tagwindow -- -noidle &> /dev/null || true
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then
|
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then
|
||||||
gum confirm "Linux kernel has been updated. Reboot?" && omarchy-state clear re*-required && sudo reboot now
|
gum confirm "Linux kernel has been updated. Reboot?" && omarchy-cmd-reboot
|
||||||
|
|
||||||
elif [ -f "$HOME/.local/state/omarchy/reboot-required" ]; then
|
elif [ -f "$HOME/.local/state/omarchy/reboot-required" ]; then
|
||||||
gum confirm "Updates require reboot. Ready?" && omarchy-state clear re*-required && sudo reboot now
|
gum confirm "Updates require reboot. Ready?" && omarchy-cmd-reboot
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for file in "$HOME"/.local/state/omarchy/restart-*-required; do
|
for file in "$HOME"/.local/state/omarchy/restart-*-required; do
|
||||||
|
|||||||
5
bin/omarchy-update-without-idle
Executable file
5
bin/omarchy-update-without-idle
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# No-op now that omarchy-update-perform is responsible for idle management.
|
||||||
|
# But this file can't be removed since it was referenced in old omarchy-update files,
|
||||||
|
# which would fail if this file is missing.
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
if [ "$#" -lt 3 ]; then
|
if [ "$#" -lt 3 ]; then
|
||||||
echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m"
|
echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m"
|
||||||
APP_NAME=$(gum input --prompt "Name> " --placeholder "My favorite web app")
|
APP_NAME=$(gum input --prompt "Name> " --placeholder "My favorite web app")
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
ICON_DIR="$HOME/.local/share/applications/icons"
|
||||||
DESKTOP_DIR="$HOME/.local/share/applications/"
|
DESKTOP_DIR="$HOME/.local/share/applications/"
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ bindd = SUPER SHIFT, B, Browser, exec, omarchy-launch-browser
|
|||||||
bindd = SUPER SHIFT ALT, B, Browser (private), exec, omarchy-launch-browser --private
|
bindd = SUPER SHIFT ALT, B, Browser (private), exec, omarchy-launch-browser --private
|
||||||
bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify
|
bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify
|
||||||
bindd = SUPER SHIFT, N, Editor, exec, omarchy-launch-editor
|
bindd = SUPER SHIFT, N, Editor, exec, omarchy-launch-editor
|
||||||
bindd = SUPER SHIFT, T, Activity, exec, omarchy-launch-tui btop
|
|
||||||
bindd = SUPER SHIFT, D, Docker, exec, omarchy-launch-tui lazydocker
|
bindd = SUPER SHIFT, D, Docker, exec, omarchy-launch-tui lazydocker
|
||||||
bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"
|
bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"
|
||||||
bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus ^obsidian$ "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
|
bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus ^obsidian$ "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
|
||||||
@@ -15,6 +14,7 @@ bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password
|
|||||||
# If your web app url contains #, type it as ## to prevent hyprland treating it as a comment
|
# If your web app url contains #, type it as ## to prevent hyprland treating it as a comment
|
||||||
bindd = SUPER SHIFT, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com"
|
bindd = SUPER SHIFT, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com"
|
||||||
bindd = SUPER SHIFT ALT, A, Grok, exec, omarchy-launch-webapp "https://grok.com"
|
bindd = SUPER SHIFT ALT, A, Grok, exec, omarchy-launch-webapp "https://grok.com"
|
||||||
|
bindd = SUPER SHIFT CTRL, A, opencode, exec, omarchy-launch-opencode
|
||||||
bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"
|
bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"
|
||||||
bindd = SUPER SHIFT, E, Email, exec, omarchy-launch-webapp "https://app.hey.com"
|
bindd = SUPER SHIFT, E, Email, exec, omarchy-launch-webapp "https://app.hey.com"
|
||||||
bindd = SUPER SHIFT, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/"
|
bindd = SUPER SHIFT, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
listener {
|
listener {
|
||||||
timeout = 300 # 5min
|
timeout = 150 # 5min
|
||||||
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Scroll nicely in the terminal
|
# Scroll nicely in the terminal
|
||||||
windowrule = scrolltouchpad 1.5, class:(Alacritty|kitty)
|
windowrule = match:class (Alacritty|kitty), scroll_touchpad 1.5
|
||||||
windowrule = scrolltouchpad 0.2, class:com.mitchellh.ghostty
|
windowrule = match:class com.mitchellh.ghostty, scroll_touchpad 0.2
|
||||||
|
|
||||||
# Enable touchpad gestures for changing workspaces
|
# Enable touchpad gestures for changing workspaces
|
||||||
# See https://wiki.hyprland.org/Configuring/Gestures/
|
# See https://wiki.hyprland.org/Configuring/Gestures/
|
||||||
|
|||||||
4
config/opencode/opencode.json
Normal file
4
config/opencode/opencode.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://opencode.ai/config.json",
|
||||||
|
"theme": "system"
|
||||||
|
}
|
||||||
@@ -43,3 +43,7 @@ provider = "websearch"
|
|||||||
[[providers.prefixes]]
|
[[providers.prefixes]]
|
||||||
prefix = "$"
|
prefix = "$"
|
||||||
provider = "clipboard"
|
provider = "clipboard"
|
||||||
|
|
||||||
|
[[emergencies]]
|
||||||
|
text = "Restart Walker"
|
||||||
|
command = "omarchy-restart-walker"
|
||||||
|
|||||||
@@ -57,7 +57,8 @@
|
|||||||
"cpu": {
|
"cpu": {
|
||||||
"interval": 5,
|
"interval": 5,
|
||||||
"format": "",
|
"format": "",
|
||||||
"on-click": "omarchy-launch-or-focus-tui btop"
|
"on-click": "omarchy-launch-or-focus-tui btop",
|
||||||
|
"on-click-right": "alacritty"
|
||||||
},
|
},
|
||||||
"clock": {
|
"clock": {
|
||||||
"format": "{:L%A %H:%M}",
|
"format": "{:L%A %H:%M}",
|
||||||
@@ -99,6 +100,7 @@
|
|||||||
},
|
},
|
||||||
"bluetooth": {
|
"bluetooth": {
|
||||||
"format": "",
|
"format": "",
|
||||||
|
"format-off": "",
|
||||||
"format-disabled": "",
|
"format-disabled": "",
|
||||||
"format-connected": "",
|
"format-connected": "",
|
||||||
"format-no-controller": "",
|
"format-no-controller": "",
|
||||||
@@ -107,7 +109,7 @@
|
|||||||
},
|
},
|
||||||
"pulseaudio": {
|
"pulseaudio": {
|
||||||
"format": "{icon}",
|
"format": "{icon}",
|
||||||
"on-click": "omarchy-launch-or-focus-tui wiremix",
|
"on-click": "omarchy-launch-audio",
|
||||||
"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,
|
||||||
@@ -126,7 +128,11 @@
|
|||||||
},
|
},
|
||||||
"custom/expand-icon": {
|
"custom/expand-icon": {
|
||||||
"format": "",
|
"format": "",
|
||||||
"tooltip": false
|
"tooltip": false,
|
||||||
|
"on-scroll-up": "",
|
||||||
|
"on-scroll-down": "",
|
||||||
|
"on-scroll-left": "",
|
||||||
|
"on-scroll-right": ""
|
||||||
},
|
},
|
||||||
"custom/screenrecording-indicator": {
|
"custom/screenrecording-indicator": {
|
||||||
"on-click": "omarchy-cmd-screenrecord",
|
"on-click": "omarchy-cmd-screenrecord",
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ alias ...='cd ../..'
|
|||||||
alias ....='cd ../../..'
|
alias ....='cd ../../..'
|
||||||
|
|
||||||
# Tools
|
# Tools
|
||||||
|
alias c='opencode'
|
||||||
alias d='docker'
|
alias d='docker'
|
||||||
alias r='rails'
|
alias r='rails'
|
||||||
n() { if [ "$#" -eq 0 ]; then nvim .; else nvim "$@"; fi; }
|
n() { if [ "$#" -eq 0 ]; then nvim .; else nvim "$@"; fi; }
|
||||||
|
|||||||
@@ -4,67 +4,93 @@
|
|||||||
Name = "omarchythemes"
|
Name = "omarchythemes"
|
||||||
NamePretty = "Omarchy Themes"
|
NamePretty = "Omarchy Themes"
|
||||||
|
|
||||||
|
-- Check if file exists using Lua (no subprocess)
|
||||||
|
local function file_exists(path)
|
||||||
|
local f = io.open(path, "r")
|
||||||
|
if f then
|
||||||
|
f:close()
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Get first matching file from directory using ls (single call for fallback)
|
||||||
|
local function first_image_in_dir(dir)
|
||||||
|
local handle = io.popen("ls -1 '" .. dir .. "' 2>/dev/null | head -n 1")
|
||||||
|
if handle then
|
||||||
|
local file = handle:read("*l")
|
||||||
|
handle:close()
|
||||||
|
if file and file ~= "" then
|
||||||
|
return dir .. "/" .. file
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
-- The main function elephant will call
|
-- The main function elephant will call
|
||||||
function GetEntries()
|
function GetEntries()
|
||||||
local entries = {}
|
local entries = {}
|
||||||
local theme_dir = os.getenv("HOME") .. "/.config/omarchy/themes"
|
local user_theme_dir = os.getenv("HOME") .. "/.config/omarchy/themes"
|
||||||
|
local omarchy_path = os.getenv("OMARCHY_PATH") or ""
|
||||||
|
local default_theme_dir = omarchy_path .. "/themes"
|
||||||
|
|
||||||
-- First, get all theme directories
|
local seen_themes = {}
|
||||||
local find_dirs_cmd = "find -L '" .. theme_dir .. "' -mindepth 1 -maxdepth 1 -type d 2>/dev/null"
|
|
||||||
|
|
||||||
local handle = io.popen(find_dirs_cmd)
|
-- Helper function to process themes from a directory
|
||||||
if not handle then
|
local function process_themes_from_dir(theme_dir)
|
||||||
return entries
|
-- Single find call to get all theme directories
|
||||||
end
|
local handle = io.popen("find -L '" .. theme_dir .. "' -mindepth 1 -maxdepth 1 -type d 2>/dev/null")
|
||||||
|
if not handle then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
for theme_path in handle:lines() do
|
for theme_path in handle:lines() do
|
||||||
local theme_name = theme_path:match(".*/(.+)$")
|
local theme_name = theme_path:match(".*/(.+)$")
|
||||||
|
|
||||||
if theme_name then
|
if theme_name and not seen_themes[theme_name] then
|
||||||
-- find preview image
|
seen_themes[theme_name] = true
|
||||||
local find_preview_cmd = "find -L '"
|
|
||||||
.. theme_path
|
|
||||||
.. "' -maxdepth 1 -type f \\( -name 'preview.png' -o -name 'preview.jpg' \\) 2>/dev/null | head -n 1"
|
|
||||||
local preview_handle = io.popen(find_preview_cmd)
|
|
||||||
local preview_path = nil
|
|
||||||
|
|
||||||
if preview_handle then
|
-- Check for preview images directly (no subprocess)
|
||||||
preview_path = preview_handle:read("*l")
|
local preview_path = nil
|
||||||
preview_handle:close()
|
local preview_png = theme_path .. "/preview.png"
|
||||||
end
|
local preview_jpg = theme_path .. "/preview.jpg"
|
||||||
|
|
||||||
-- If no preview found, use first image from backgrounds folder
|
if file_exists(preview_png) then
|
||||||
if not preview_path or preview_path == "" then
|
preview_path = preview_png
|
||||||
local bg_cmd = "find -L '"
|
elseif file_exists(preview_jpg) then
|
||||||
.. theme_path
|
preview_path = preview_jpg
|
||||||
.. "/backgrounds' -maxdepth 1 -type f \\( -iname '*.png' -o -iname '*.jpg' -o -iname '*.jpeg' \\) 2>/dev/null | head -n 1"
|
else
|
||||||
local bg_handle = io.popen(bg_cmd)
|
-- Fallback: get first image from backgrounds (one ls call)
|
||||||
if bg_handle then
|
preview_path = first_image_in_dir(theme_path .. "/backgrounds")
|
||||||
preview_path = bg_handle:read("*l")
|
end
|
||||||
bg_handle:close()
|
|
||||||
|
if preview_path and preview_path ~= "" then
|
||||||
|
local display_name = theme_name:gsub("_", " "):gsub("%-", " ")
|
||||||
|
display_name = display_name:gsub("(%a)([%w_']*)", function(first, rest)
|
||||||
|
return first:upper() .. rest:lower()
|
||||||
|
end)
|
||||||
|
display_name = display_name .. " "
|
||||||
|
|
||||||
|
table.insert(entries, {
|
||||||
|
Text = display_name,
|
||||||
|
Preview = preview_path,
|
||||||
|
PreviewType = "file",
|
||||||
|
Actions = {
|
||||||
|
activate = "omarchy-theme-set " .. theme_name,
|
||||||
|
},
|
||||||
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if preview_path and preview_path ~= "" then
|
|
||||||
local display_name = theme_name:gsub("_", " "):gsub("%-", " ")
|
|
||||||
display_name = display_name:gsub("(%a)([%w_']*)", function(first, rest)
|
|
||||||
return first:upper() .. rest:lower()
|
|
||||||
end)
|
|
||||||
display_name = display_name .. " "
|
|
||||||
|
|
||||||
table.insert(entries, {
|
|
||||||
Text = display_name,
|
|
||||||
Preview = preview_path,
|
|
||||||
PreviewType = "file",
|
|
||||||
Actions = {
|
|
||||||
activate = "omarchy-theme-set " .. theme_name,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
handle:close()
|
||||||
end
|
end
|
||||||
|
|
||||||
handle:close()
|
-- Process user themes first (they take precedence)
|
||||||
|
process_themes_from_dir(user_theme_dir)
|
||||||
|
-- Then process default themes (only if not already seen)
|
||||||
|
process_themes_from_dir(default_theme_dir)
|
||||||
|
|
||||||
return entries
|
return entries
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
windowrule = noscreenshare, class:^(1[p|P]assword)$
|
windowrule = no_screen_share on, match:class ^(1[p|P]assword)$
|
||||||
windowrule = tag +floating-window, class:^(1[p|P]assword)$
|
windowrule = tag +floating-window, match:class ^(1[p|P]assword)$
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
windowrule = noscreenshare, class:^(Bitwarden)$
|
windowrule = no_screen_share on, match:class ^(Bitwarden)$
|
||||||
windowrule = tag +floating-window, class:^(Bitwarden)$
|
windowrule = tag +floating-window, match:class ^(Bitwarden)$
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# Browser types
|
# Browser types
|
||||||
windowrule = tag +chromium-based-browser, class:((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)
|
windowrule = tag +chromium-based-browser, match:class ((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)
|
||||||
windowrule = tag +firefox-based-browser, class:([fF]irefox|zen|librewolf)
|
windowrule = tag +firefox-based-browser, match:class ([fF]irefox|zen|librewolf)
|
||||||
|
|
||||||
# Force chromium-based browsers into a tile to deal with --app bug
|
# Force chromium-based browsers into a tile to deal with --app bug
|
||||||
windowrule = tile, tag:chromium-based-browser
|
windowrule = tile on, match:tag chromium-based-browser
|
||||||
|
|
||||||
# Only a subtle opacity change, but not for video sites
|
# Only a subtle opacity change, but not for video sites
|
||||||
windowrule = opacity 1 0.97, tag:chromium-based-browser
|
windowrule = opacity 1 0.97, match:tag chromium-based-browser
|
||||||
windowrule = opacity 1 0.97, tag:firefox-based-browser
|
windowrule = opacity 1 0.97, match:tag firefox-based-browser
|
||||||
|
|
||||||
# Some video sites should never have opacity applied to them
|
# Some video sites should never have opacity applied to them
|
||||||
windowrule = opacity 1.0 1.0, initialTitle:((?i)(?:[a-z0-9-]+\.)*youtube\.com_/|app\.zoom\.us_/wc/home)
|
windowrule = opacity 1.0 1.0, match:initial_title ((?i)(?:[a-z0-9-]+\.)*youtube\.com_/|app\.zoom\.us_/wc/home)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
# Focus floating DaVinci Resolve dialog windows
|
# Focus floating DaVinci Resolve dialog windows
|
||||||
windowrule = stayfocused, class:.*[Rr]esolve.*, floating:1
|
windowrule = stay_focused on, match:class .*[Rr]esolve.*, match:float 1
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
# Remove 1px border around hyprshot screenshots
|
# Remove 1px border around hyprshot screenshots
|
||||||
layerrule = noanim, selection
|
layerrule = no_anim on, match:namespace selection
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
# Fix splash screen showing in weird places and prevent annoying focus takeovers
|
# Fix splash screen showing in weird places and prevent annoying focus takeovers
|
||||||
windowrule = tag +jetbrains-splash, class:^(jetbrains-.*)$, title:^(splash)$, floating:1
|
windowrule = tag +jetbrains-splash, match:class ^(jetbrains-.*)$, match:title ^(splash)$, match:float 1
|
||||||
windowrule = center, tag:jetbrains-splash
|
windowrule = center on, match:tag jetbrains-splash
|
||||||
windowrule = nofocus, tag:jetbrains-splash
|
windowrule = no_focus on, match:tag jetbrains-splash
|
||||||
windowrule = noborder, tag:jetbrains-splash
|
windowrule = border_size 0, match:tag jetbrains-splash
|
||||||
|
|
||||||
# Center popups/find windows
|
# Center popups/find windows
|
||||||
windowrule = tag +jetbrains, class:^(jetbrains-.*), title:^()$, floating:1
|
windowrule = tag +jetbrains, match:class ^(jetbrains-.*), match:title ^()$, match:float 1
|
||||||
windowrule = center, tag:jetbrains
|
windowrule = center on, match:tag jetbrains
|
||||||
|
|
||||||
# Enabling this makes it possible to provide input in popup dialogs (search window, new file, etc.)
|
# Enabling this makes it possible to provide input in popup dialogs (search window, new file, etc.)
|
||||||
windowrule = stayfocused, tag:jetbrains
|
windowrule = stay_focused on, match:tag jetbrains
|
||||||
windowrule = noborder, tag:jetbrains
|
windowrule = border_size 0, match:tag jetbrains
|
||||||
|
|
||||||
# For some reason tag:jetbrains does not work for size rule
|
# For some reason tag:jetbrains does not work for size rule
|
||||||
windowrule = size >50% >50%, class:^(jetbrains-.*), title:^()$, floating:1
|
windowrule = min_size (monitor_w*0.5) (monitor_h*0.5), match:class ^(jetbrains-.*), match:title ^()$, match:float 1
|
||||||
|
|
||||||
# Disable window flicker when autocomplete or tooltips appear
|
# Disable window flicker when autocomplete or tooltips appear
|
||||||
windowrule = noinitialfocus, class:^(jetbrains-.*)$, title:^(win.*)$, floating:1
|
windowrule = no_initial_focus on, match:class ^(jetbrains-.*)$, match:title ^(win.*)$, match:float 1
|
||||||
|
|
||||||
# Disable mouse focus
|
# Disable mouse focus
|
||||||
windowrule = nofollowmouse, class:^(jetbrains-.*)$
|
windowrule = no_follow_mouse on, match:class ^(jetbrains-.*)$
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# Float LocalSend and fzf file picker
|
# Float LocalSend and fzf file picker
|
||||||
windowrule = float, class:(Share|localsend)
|
windowrule = float on, match:class (Share|localsend)
|
||||||
windowrule = center, class:(Share|localsend)
|
windowrule = center on, match:class (Share|localsend)
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
# Picture-in-picture overlays
|
# Picture-in-picture overlays
|
||||||
windowrule = tag +pip, title:(Picture.?in.?[Pp]icture)
|
windowrule = tag +pip, match:title (Picture.?in.?[Pp]icture)
|
||||||
windowrule = float, tag:pip
|
windowrule = float on, match:tag pip
|
||||||
windowrule = pin, tag:pip
|
windowrule = pin on, match:tag pip
|
||||||
windowrule = size 600 338, tag:pip
|
windowrule = size 600 338, match:tag pip
|
||||||
windowrule = keepaspectratio, tag:pip
|
windowrule = keep_aspect_ratio on, match:tag pip
|
||||||
windowrule = noborder, tag:pip
|
windowrule = border_size 0, match:tag pip
|
||||||
windowrule = opacity 1 1, tag:pip
|
windowrule = opacity 1 1, match:tag pip
|
||||||
windowrule = move 100%-w-40 4%, tag:pip
|
windowrule = move (monitor_w-window_w-40) (monitor_h*0.04), match:tag pip
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
windowrule = opacity 1 1, class:qemu
|
windowrule = opacity 1 1, match:class qemu
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
windowrule = fullscreen, class:com.libretro.RetroArch
|
windowrule = fullscreen on, match:class com.libretro.RetroArch
|
||||||
windowrule = opacity 1 1, class:com.libretro.RetroArch
|
windowrule = opacity 1 1, match:class com.libretro.RetroArch
|
||||||
windowrule = idleinhibit fullscreen, class:com.libretro.RetroArch
|
windowrule = idle_inhibit fullscreen, match:class com.libretro.RetroArch
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Float Steam
|
# Float Steam
|
||||||
windowrule = float, class:steam
|
windowrule = float on, match:class steam
|
||||||
windowrule = center, class:steam, title:Steam
|
windowrule = center on, match:class steam, match:title Steam
|
||||||
windowrule = opacity 1 1, class:steam
|
windowrule = opacity 1 1, match:class steam
|
||||||
windowrule = size 1100 700, class:steam, title:Steam
|
windowrule = size 1100 700, match:class steam, match:title Steam
|
||||||
windowrule = size 460 800, class:steam, title:Friends List
|
windowrule = size 460 800, match:class steam, match:title Friends List
|
||||||
windowrule = idleinhibit fullscreen, class:steam
|
windowrule = idle_inhibit fullscreen, match:class steam
|
||||||
|
|||||||
@@ -1,18 +1,21 @@
|
|||||||
# Floating windows
|
# Floating windows
|
||||||
windowrule = float, tag:floating-window
|
windowrule = float on, match:tag floating-window
|
||||||
windowrule = center, tag:floating-window
|
windowrule = center on, match:tag floating-window
|
||||||
windowrule = size 875 600, tag:floating-window
|
windowrule = size 875 600, match:tag floating-window
|
||||||
|
|
||||||
windowrule = tag +floating-window, class:(org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv)
|
windowrule = tag +floating-window, match:class (org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv)
|
||||||
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
||||||
windowrule = float, class:org.gnome.Calculator
|
windowrule = float on, match:class org.gnome.Calculator
|
||||||
|
|
||||||
# Fullscreen screensaver
|
# Fullscreen screensaver
|
||||||
windowrule = fullscreen, class:org.omarchy.screensaver
|
windowrule = fullscreen on, match:class org.omarchy.screensaver
|
||||||
windowrule = float, class:org.omarchy.screensaver
|
windowrule = float on, match:class org.omarchy.screensaver
|
||||||
|
|
||||||
# No transparency on media windows
|
# 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)$
|
windowrule = opacity 1 1, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
|
||||||
|
|
||||||
# Popped window rounding
|
# Popped window rounding
|
||||||
windowrule = rounding 8, tag:pop
|
windowrule = rounding 8, match:tag pop
|
||||||
|
|
||||||
|
# Prevent idle while open
|
||||||
|
windowrule = idle_inhibit always, match:tag noidle
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
# Define terminal tag to style them uniformly
|
# Define terminal tag to style them uniformly
|
||||||
windowrule = tag +terminal, class:(Alacritty|kitty|com.mitchellh.ghostty)
|
windowrule = tag +terminal, match:class (Alacritty|kitty|com.mitchellh.ghostty)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
# Application-specific animation
|
# Application-specific animation
|
||||||
layerrule = noanim, walker
|
layerrule = no_anim on, match:namespace walker
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Webcam overlay for screen recording
|
# Webcam overlay for screen recording
|
||||||
windowrule = float, title:WebcamOverlay
|
windowrule = float on, match:title WebcamOverlay
|
||||||
windowrule = pin, title:WebcamOverlay
|
windowrule = pin on, match:title WebcamOverlay
|
||||||
windowrule = noinitialfocus, title:WebcamOverlay
|
windowrule = no_initial_focus on, match:title WebcamOverlay
|
||||||
windowrule = nodim, title:WebcamOverlay
|
windowrule = no_dim on, match:title WebcamOverlay
|
||||||
windowrule = move 100%-w-40 100%-w-40, title:WebcamOverlay # There's a typo in the hyprland rule so 100%-w on the height param is actually correct here
|
windowrule = move (monitor_w-window_w-40) (monitor_h-window_h-40), match:title WebcamOverlay
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
|
|||||||
# Move workspaces to other monitors
|
# Move workspaces to other monitors
|
||||||
bindd = SUPER SHIFT ALT, LEFT, Move workspace to left monitor, movecurrentworkspacetomonitor, l
|
bindd = SUPER SHIFT ALT, LEFT, Move workspace to left monitor, movecurrentworkspacetomonitor, l
|
||||||
bindd = SUPER SHIFT ALT, RIGHT, Move workspace to right monitor, movecurrentworkspacetomonitor, r
|
bindd = SUPER SHIFT ALT, RIGHT, Move workspace to right monitor, movecurrentworkspacetomonitor, r
|
||||||
|
bindd = SUPER SHIFT ALT, UP, Move workspace to up monitor, movecurrentworkspacetomonitor, u
|
||||||
|
bindd = SUPER SHIFT ALT, DOWN, Move workspace to down monitor, movecurrentworkspacetomonitor, d
|
||||||
|
|
||||||
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
|
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
|
||||||
bindd = SUPER SHIFT, LEFT, Swap window to the left, swapwindow, l
|
bindd = SUPER SHIFT, LEFT, Swap window to the left, swapwindow, l
|
||||||
|
|||||||
@@ -42,5 +42,11 @@ bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
|
|||||||
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
||||||
|
|
||||||
# Waybar-less information
|
# Waybar-less information
|
||||||
bindd = SUPER CTRL, T, Show time, exec, notify-send " $(date +"%A %H:%M — %d %B W%V %Y")"
|
bindd = SUPER CTRL ALT, T, Show time, exec, notify-send " $(date +"%A %H:%M — %d %B W%V %Y")"
|
||||||
bindd = SUPER CTRL, B, Show battery remaining, exec, notify-send " Battery is at $(omarchy-battery-remaining)%"
|
bindd = SUPER CTRL ALT, B, Show battery remaining, exec, notify-send " Battery is at $(omarchy-battery-remaining)%"
|
||||||
|
|
||||||
|
# Control panels
|
||||||
|
bindd = SUPER CTRL, A, Audio controls, exec, omarchy-launch-audio
|
||||||
|
bindd = SUPER CTRL, B, Bluetooth controls, exec, omarchy-launch-bluetooth
|
||||||
|
bindd = SUPER CTRL, W, Wifi controls, exec, omarchy-launch-wifi
|
||||||
|
bindd = SUPER CTRL, T, Activity, exec, omarchy-launch-tui btop
|
||||||
@@ -123,7 +123,7 @@ misc {
|
|||||||
disable_splash_rendering = true
|
disable_splash_rendering = true
|
||||||
focus_on_activate = true
|
focus_on_activate = true
|
||||||
anr_missed_pings = 3
|
anr_missed_pings = 3
|
||||||
new_window_takes_over_fullscreen = 1
|
on_focus_under_fullscreen = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# https://wiki.hypr.land/Configuring/Variables/#cursor
|
# https://wiki.hypr.land/Configuring/Variables/#cursor
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
windowrule = suppressevent maximize, class:.*
|
# Hyprland 0.53+ syntax
|
||||||
|
windowrule = suppress_event maximize, match:class .*
|
||||||
|
|
||||||
# Just dash of opacity by default
|
# Just dash of opacity by default
|
||||||
windowrule = opacity 0.97 0.9, class:.*
|
windowrule = opacity 0.97 0.9, match:class .*
|
||||||
|
|
||||||
# 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 = no_focus on, match:class ^$, match:title ^$, match:xwayland 1, match:float 1, match:fullscreen 0, match:pin 0
|
||||||
|
|
||||||
# App-specific tweaks
|
# App-specific tweaks
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps.conf
|
source = ~/.local/share/omarchy/default/hypr/apps.conf
|
||||||
|
|||||||
47
default/themed/alacritty.toml.tpl
Normal file
47
default/themed/alacritty.toml.tpl
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
[colors.primary]
|
||||||
|
background = "{{ background }}"
|
||||||
|
foreground = "{{ foreground }}"
|
||||||
|
|
||||||
|
[colors.cursor]
|
||||||
|
text = "{{ background }}"
|
||||||
|
cursor = "{{ cursor }}"
|
||||||
|
|
||||||
|
[colors.vi_mode_cursor]
|
||||||
|
text = "{{ background }}"
|
||||||
|
cursor = "{{ cursor }}"
|
||||||
|
|
||||||
|
[colors.search.matches]
|
||||||
|
foreground = "{{ background }}"
|
||||||
|
background = "{{ color3 }}"
|
||||||
|
|
||||||
|
[colors.search.focused_match]
|
||||||
|
foreground = "{{ background }}"
|
||||||
|
background = "{{ color1 }}"
|
||||||
|
|
||||||
|
[colors.footer_bar]
|
||||||
|
foreground = "{{ background }}"
|
||||||
|
background = "{{ foreground }}"
|
||||||
|
|
||||||
|
[colors.selection]
|
||||||
|
text = "{{ selection_foreground }}"
|
||||||
|
background = "{{ selection_background }}"
|
||||||
|
|
||||||
|
[colors.normal]
|
||||||
|
black = "{{ color0 }}"
|
||||||
|
red = "{{ color1 }}"
|
||||||
|
green = "{{ color2 }}"
|
||||||
|
yellow = "{{ color3 }}"
|
||||||
|
blue = "{{ color4 }}"
|
||||||
|
magenta = "{{ color5 }}"
|
||||||
|
cyan = "{{ color6 }}"
|
||||||
|
white = "{{ color7 }}"
|
||||||
|
|
||||||
|
[colors.bright]
|
||||||
|
black = "{{ color8 }}"
|
||||||
|
red = "{{ color9 }}"
|
||||||
|
green = "{{ color10 }}"
|
||||||
|
yellow = "{{ color11 }}"
|
||||||
|
blue = "{{ color12 }}"
|
||||||
|
magenta = "{{ color13 }}"
|
||||||
|
cyan = "{{ color14 }}"
|
||||||
|
white = "{{ color15 }}"
|
||||||
83
default/themed/btop.theme.tpl
Normal file
83
default/themed/btop.theme.tpl
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# Main background, empty for terminal default, need to be empty if you want transparent background
|
||||||
|
theme[main_bg]="{{ background }}"
|
||||||
|
|
||||||
|
# Main text color
|
||||||
|
theme[main_fg]="{{ foreground }}"
|
||||||
|
|
||||||
|
# Title color for boxes
|
||||||
|
theme[title]="{{ foreground }}"
|
||||||
|
|
||||||
|
# Highlight color for keyboard shortcuts
|
||||||
|
theme[hi_fg]="{{ accent }}"
|
||||||
|
|
||||||
|
# Background color of selected item in processes box
|
||||||
|
theme[selected_bg]="{{ color8 }}"
|
||||||
|
|
||||||
|
# Foreground color of selected item in processes box
|
||||||
|
theme[selected_fg]="{{ accent }}"
|
||||||
|
|
||||||
|
# Color of inactive/disabled text
|
||||||
|
theme[inactive_fg]="{{ color8 }}"
|
||||||
|
|
||||||
|
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
|
||||||
|
theme[graph_text]="{{ foreground }}"
|
||||||
|
|
||||||
|
# Background color of the percentage meters
|
||||||
|
theme[meter_bg]="{{ color8 }}"
|
||||||
|
|
||||||
|
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
|
||||||
|
theme[proc_misc]="{{ foreground }}"
|
||||||
|
|
||||||
|
# CPU, Memory, Network, Proc box outline colors
|
||||||
|
theme[cpu_box]="{{ color5 }}"
|
||||||
|
theme[mem_box]="{{ color2 }}"
|
||||||
|
theme[net_box]="{{ color1 }}"
|
||||||
|
theme[proc_box]="{{ accent }}"
|
||||||
|
|
||||||
|
# Box divider line and small boxes line color
|
||||||
|
theme[div_line]="{{ color8 }}"
|
||||||
|
|
||||||
|
# Temperature graph color (Green -> Yellow -> Red)
|
||||||
|
theme[temp_start]="{{ color2 }}"
|
||||||
|
theme[temp_mid]="{{ color3 }}"
|
||||||
|
theme[temp_end]="{{ color1 }}"
|
||||||
|
|
||||||
|
# CPU graph colors (Teal -> Lavender)
|
||||||
|
theme[cpu_start]="{{ color6 }}"
|
||||||
|
theme[cpu_mid]="{{ color4 }}"
|
||||||
|
theme[cpu_end]="{{ color5 }}"
|
||||||
|
|
||||||
|
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
|
||||||
|
theme[free_start]="{{ color5 }}"
|
||||||
|
theme[free_mid]="{{ color4 }}"
|
||||||
|
theme[free_end]="{{ color6 }}"
|
||||||
|
|
||||||
|
# Mem/Disk cached meter (Sapphire -> Lavender)
|
||||||
|
theme[cached_start]="{{ color4 }}"
|
||||||
|
theme[cached_mid]="{{ color6 }}"
|
||||||
|
theme[cached_end]="{{ color5 }}"
|
||||||
|
|
||||||
|
# Mem/Disk available meter (Peach -> Red)
|
||||||
|
theme[available_start]="{{ color3 }}"
|
||||||
|
theme[available_mid]="{{ color1 }}"
|
||||||
|
theme[available_end]="{{ color1 }}"
|
||||||
|
|
||||||
|
# Mem/Disk used meter (Green -> Sky)
|
||||||
|
theme[used_start]="{{ color2 }}"
|
||||||
|
theme[used_mid]="{{ color6 }}"
|
||||||
|
theme[used_end]="{{ color4 }}"
|
||||||
|
|
||||||
|
# Download graph colors (Peach -> Red)
|
||||||
|
theme[download_start]="{{ color3 }}"
|
||||||
|
theme[download_mid]="{{ color1 }}"
|
||||||
|
theme[download_end]="{{ color1 }}"
|
||||||
|
|
||||||
|
# Upload graph colors (Green -> Sky)
|
||||||
|
theme[upload_start]="{{ color2 }}"
|
||||||
|
theme[upload_mid]="{{ color6 }}"
|
||||||
|
theme[upload_end]="{{ color4 }}"
|
||||||
|
|
||||||
|
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
|
||||||
|
theme[process_start]="{{ color6 }}"
|
||||||
|
theme[process_mid]="{{ color4 }}"
|
||||||
|
theme[process_end]="{{ color5 }}"
|
||||||
22
default/themed/ghostty.conf.tpl
Normal file
22
default/themed/ghostty.conf.tpl
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
background = {{ background }}
|
||||||
|
foreground = {{ foreground }}
|
||||||
|
cursor-color = {{ cursor }}
|
||||||
|
selection-background = {{ selection_background }}
|
||||||
|
selection-foreground = {{ selection_foreground }}
|
||||||
|
|
||||||
|
palette = 0={{ color0 }}
|
||||||
|
palette = 1={{ color1 }}
|
||||||
|
palette = 2={{ color2 }}
|
||||||
|
palette = 3={{ color3 }}
|
||||||
|
palette = 4={{ color4 }}
|
||||||
|
palette = 5={{ color5 }}
|
||||||
|
palette = 6={{ color6 }}
|
||||||
|
palette = 7={{ color7 }}
|
||||||
|
palette = 8={{ color8 }}
|
||||||
|
palette = 9={{ color9 }}
|
||||||
|
palette = 10={{ color10 }}
|
||||||
|
palette = 11={{ color11 }}
|
||||||
|
palette = 12={{ color12 }}
|
||||||
|
palette = 13={{ color13 }}
|
||||||
|
palette = 14={{ color14 }}
|
||||||
|
palette = 15={{ color15 }}
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
@define-color foreground #ffcead;
|
@define-color foreground {{ foreground }};
|
||||||
@define-color background #060B1E;
|
@define-color background {{ background }};
|
||||||
@define-color accent #7d82d9;
|
@define-color accent {{ accent }};
|
||||||
@define-color muted #6d7db6;
|
@define-color muted {{ color8 }};
|
||||||
@define-color card_bg #12172b;
|
@define-color card_bg {{ color0 }};
|
||||||
@define-color text_dark #060B1E;
|
@define-color text_dark {{ background }};
|
||||||
@define-color accent_hover #c2c4f0;
|
@define-color accent_hover {{ color12 }};
|
||||||
@define-color selected_tab #7d82d9;
|
@define-color selected_tab {{ accent }};
|
||||||
@define-color text #ffcead;
|
@define-color text {{ foreground }};
|
||||||
|
|
||||||
* {
|
* {
|
||||||
all: unset;
|
all: unset;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
$activeBorderColor = rgb(d3c6aa)
|
$activeBorderColor = rgb({{ accent_strip }})
|
||||||
|
|
||||||
general {
|
general {
|
||||||
col.active_border = $activeBorderColor
|
col.active_border = $activeBorderColor
|
||||||
5
default/themed/hyprlock.conf.tpl
Normal file
5
default/themed/hyprlock.conf.tpl
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
$color = rgba({{ background_rgb }}, 1.0)
|
||||||
|
$inner_color = rgba({{ background_rgb }}, 0.8)
|
||||||
|
$outer_color = rgba({{ foreground_rgb }}, 1.0)
|
||||||
|
$font_color = rgba({{ foreground_rgb }}, 1.0)
|
||||||
|
$check_color = rgba({{ accent_rgb }}, 1.0)
|
||||||
27
default/themed/kitty.conf.tpl
Normal file
27
default/themed/kitty.conf.tpl
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
foreground {{ foreground }}
|
||||||
|
background {{ background }}
|
||||||
|
selection_foreground {{ selection_foreground }}
|
||||||
|
selection_background {{ selection_background }}
|
||||||
|
|
||||||
|
cursor {{ cursor }}
|
||||||
|
cursor_text_color {{ background }}
|
||||||
|
|
||||||
|
active_border_color {{ active_border_color }}
|
||||||
|
active_tab_background {{ active_tab_background }}
|
||||||
|
|
||||||
|
color0 {{ color0 }}
|
||||||
|
color1 {{ color1 }}
|
||||||
|
color2 {{ color2 }}
|
||||||
|
color3 {{ color3 }}
|
||||||
|
color4 {{ color4 }}
|
||||||
|
color5 {{ color5 }}
|
||||||
|
color6 {{ color6 }}
|
||||||
|
color7 {{ color7 }}
|
||||||
|
color8 {{ color8 }}
|
||||||
|
color9 {{ color9 }}
|
||||||
|
color10 {{ color10 }}
|
||||||
|
color11 {{ color11 }}
|
||||||
|
color12 {{ color12 }}
|
||||||
|
color13 {{ color13 }}
|
||||||
|
color14 {{ color14 }}
|
||||||
|
color15 {{ color15 }}
|
||||||
5
default/themed/mako.ini.tpl
Normal file
5
default/themed/mako.ini.tpl
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
include=~/.local/share/omarchy/default/mako/core.ini
|
||||||
|
|
||||||
|
text-color={{ foreground }}
|
||||||
|
border-color={{ foreground }}
|
||||||
|
background-color={{ background }}
|
||||||
5
default/themed/swayosd.css.tpl
Normal file
5
default/themed/swayosd.css.tpl
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
@define-color background-color {{ background }};
|
||||||
|
@define-color border-color {{ foreground }};
|
||||||
|
@define-color label {{ foreground }};
|
||||||
|
@define-color image {{ foreground }};
|
||||||
|
@define-color progress {{ foreground }};
|
||||||
6
default/themed/walker.css.tpl
Normal file
6
default/themed/walker.css.tpl
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
@define-color selected-text {{ accent }};
|
||||||
|
@define-color text {{ foreground }};
|
||||||
|
@define-color base {{ background }};
|
||||||
|
@define-color border {{ foreground }};
|
||||||
|
@define-color foreground {{ foreground }};
|
||||||
|
@define-color background {{ background }};
|
||||||
2
default/themed/waybar.css.tpl
Normal file
2
default/themed/waybar.css.tpl
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
@define-color foreground {{ foreground }};
|
||||||
|
@define-color background {{ background }};
|
||||||
@@ -1,80 +1,40 @@
|
|||||||
# ==============================================================================
|
NVIDIA="$(lspci | grep -i 'nvidia')"
|
||||||
# Hyprland NVIDIA Setup Script for Arch Linux
|
|
||||||
# ==============================================================================
|
|
||||||
# This script automates the installation and configuration of NVIDIA drivers
|
|
||||||
# for use with Hyprland on Arch Linux, following the official Hyprland wiki.
|
|
||||||
#
|
|
||||||
# Author: https://github.com/Kn0ax
|
|
||||||
#
|
|
||||||
# ==============================================================================
|
|
||||||
|
|
||||||
# --- GPU Detection ---
|
|
||||||
if [ -n "$(lspci | grep -i 'nvidia')" ]; then
|
|
||||||
# --- Driver Selection ---
|
|
||||||
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
|
|
||||||
if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then
|
|
||||||
NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms"
|
|
||||||
else
|
|
||||||
NVIDIA_DRIVER_PACKAGE="nvidia-dkms"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
if [ -n "$NVIDIA" ]; then
|
||||||
# Check which kernel is installed and set appropriate headers package
|
# Check which kernel is installed and set appropriate headers package
|
||||||
KERNEL_HEADERS="linux-headers" # Default
|
KERNEL_HEADERS="$(pacman -Qqs '^linux(-zen|-lts|-hardened)?$' | head -1)-headers"
|
||||||
if pacman -Q linux-zen &>/dev/null; then
|
|
||||||
KERNEL_HEADERS="linux-zen-headers"
|
if echo "$NVIDIA" | grep -qE "RTX [2-9][0-9]|GTX 16"; then
|
||||||
elif pacman -Q linux-lts &>/dev/null; then
|
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
|
||||||
KERNEL_HEADERS="linux-lts-headers"
|
PACKAGES=(nvidia-open-dkms nvidia-utils lib32-nvidia-utils libva-nvidia-driver)
|
||||||
elif pacman -Q linux-hardened &>/dev/null; then
|
elif echo "$NVIDIA" | grep -qE "GTX 9|GTX 10"; then
|
||||||
KERNEL_HEADERS="linux-hardened-headers"
|
# Pascal (10xx) and Maxwell (9xx) use legacy branch that can only be installed from AUR
|
||||||
|
PACKAGES=(nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils)
|
||||||
|
fi
|
||||||
|
# Bail if no supported GPU
|
||||||
|
if [ -z "${PACKAGES+x}" ]; then
|
||||||
|
echo "No compatible driver for your NVIDIA GPU. See: https://wiki.archlinux.org/title/NVIDIA"
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# force package database refresh
|
pacman -S --needed --noconfirm "$KERNEL_HEADERS" "${PACKAGES[@]}"
|
||||||
sudo pacman -Syu --noconfirm
|
|
||||||
|
|
||||||
# Install packages
|
|
||||||
PACKAGES_TO_INSTALL=(
|
|
||||||
"${KERNEL_HEADERS}"
|
|
||||||
"${NVIDIA_DRIVER_PACKAGE}"
|
|
||||||
"nvidia-utils"
|
|
||||||
"lib32-nvidia-utils"
|
|
||||||
"egl-wayland"
|
|
||||||
"libva-nvidia-driver" # For VA-API hardware acceleration
|
|
||||||
"qt5-wayland"
|
|
||||||
"qt6-wayland"
|
|
||||||
)
|
|
||||||
|
|
||||||
sudo pacman -S --needed --noconfirm "${PACKAGES_TO_INSTALL[@]}"
|
|
||||||
|
|
||||||
# Configure modprobe for early KMS
|
# Configure modprobe for early KMS
|
||||||
echo "options nvidia_drm modeset=1" | sudo tee /etc/modprobe.d/nvidia.conf >/dev/null
|
sudo tee /etc/modprobe.d/nvidia.conf <<EOF >/dev/null
|
||||||
|
options nvidia_drm modeset=1
|
||||||
|
EOF
|
||||||
|
|
||||||
# Configure mkinitcpio for early loading
|
# Configure mkinitcpio for early loading
|
||||||
MKINITCPIO_CONF="/etc/mkinitcpio.conf"
|
sudo tee /etc/mkinitcpio.conf.d/nvidia.conf <<EOF >/dev/null
|
||||||
|
MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
|
||||||
|
EOF
|
||||||
|
|
||||||
# Define modules
|
# Add NVIDIA environment variables
|
||||||
NVIDIA_MODULES="nvidia nvidia_modeset nvidia_uvm nvidia_drm"
|
cat >>$HOME/.config/hypr/envs.conf <<'EOF'
|
||||||
|
|
||||||
# Create backup
|
# NVIDIA
|
||||||
sudo cp "$MKINITCPIO_CONF" "${MKINITCPIO_CONF}.backup"
|
|
||||||
|
|
||||||
# Remove any old nvidia modules to prevent duplicates
|
|
||||||
sudo sed -i -E 's/ nvidia_drm//g; s/ nvidia_uvm//g; s/ nvidia_modeset//g; s/ nvidia//g;' "$MKINITCPIO_CONF"
|
|
||||||
# Add the new modules at the start of the MODULES array
|
|
||||||
sudo sed -i -E "s/^(MODULES=\\()/\\1${NVIDIA_MODULES} /" "$MKINITCPIO_CONF"
|
|
||||||
# Clean up potential double spaces
|
|
||||||
sudo sed -i -E 's/ +/ /g' "$MKINITCPIO_CONF"
|
|
||||||
|
|
||||||
sudo mkinitcpio -P
|
|
||||||
|
|
||||||
# Add NVIDIA environment variables to hyprland.conf
|
|
||||||
HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
|
|
||||||
if [ -f "$HYPRLAND_CONF" ]; then
|
|
||||||
cat >>"$HYPRLAND_CONF" <<'EOF'
|
|
||||||
|
|
||||||
# NVIDIA environment variables
|
|
||||||
env = NVD_BACKEND,direct
|
env = NVD_BACKEND,direct
|
||||||
env = LIBVA_DRIVER_NAME,nvidia
|
env = LIBVA_DRIVER_NAME,nvidia
|
||||||
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||||
EOF
|
EOF
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
# Give the user 10 instead of 3 tries to fat finger their password before lockout
|
# Give the user 10 instead of 3 tries to fat finger their password before lockout
|
||||||
echo "Defaults passwd_tries=10" | sudo tee /etc/sudoers.d/passwd-tries
|
echo "Defaults passwd_tries=10" | sudo tee /etc/sudoers.d/passwd-tries
|
||||||
sudo chmod 440 /etc/sudoers.d/passwd-tries
|
sudo chmod 440 /etc/sudoers.d/passwd-tries
|
||||||
|
|
||||||
|
# Set for hyprlock too
|
||||||
|
sudo sed -i 's/^# *deny = .*/deny = 10/' /etc/security/faillock.conf
|
||||||
|
|||||||
@@ -3,25 +3,27 @@ if command -v limine &>/dev/null; then
|
|||||||
|
|
||||||
sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf <<EOF >/dev/null
|
sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf <<EOF >/dev/null
|
||||||
HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs)
|
HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs)
|
||||||
|
EOF
|
||||||
|
sudo tee /etc/mkinitcpio.conf.d/thunderbolt_module.conf <<EOF >/dev/null
|
||||||
|
MODULES+=(thunderbolt)
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
[[ -f /boot/EFI/limine/limine.conf ]] || [[ -f /boot/EFI/BOOT/limine.conf ]] && EFI=true
|
# Detect boot mode
|
||||||
|
[[ -d /sys/firmware/efi ]] && EFI=true
|
||||||
|
|
||||||
# Conf location is different between EFI and BIOS
|
# Find config location
|
||||||
if [[ -n "$EFI" ]]; then
|
if [[ -f /boot/EFI/arch-limine/limine.conf ]]; then
|
||||||
# Check USB location first, then regular EFI location
|
limine_config="/boot/EFI/arch-limine/limine.conf"
|
||||||
if [[ -f /boot/EFI/BOOT/limine.conf ]]; then
|
elif [[ -f /boot/EFI/BOOT/limine.conf ]]; then
|
||||||
limine_config="/boot/EFI/BOOT/limine.conf"
|
limine_config="/boot/EFI/BOOT/limine.conf"
|
||||||
else
|
elif [[ -f /boot/EFI/limine/limine.conf ]]; then
|
||||||
limine_config="/boot/EFI/limine/limine.conf"
|
limine_config="/boot/EFI/limine/limine.conf"
|
||||||
fi
|
elif [[ -f /boot/limine/limine.conf ]]; then
|
||||||
else
|
|
||||||
limine_config="/boot/limine/limine.conf"
|
limine_config="/boot/limine/limine.conf"
|
||||||
fi
|
elif [[ -f /boot/limine.conf ]]; then
|
||||||
|
limine_config="/boot/limine.conf"
|
||||||
# Double-check and exit if we don't have a config file for some reason
|
else
|
||||||
if [[ ! -f $limine_config ]]; then
|
echo "Error: Limine config not found" >&2
|
||||||
echo "Error: Limine config not found at $limine_config" >&2
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -95,10 +97,15 @@ EOF
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Enable quota to allow space-aware algorithms to work
|
||||||
|
sudo btrfs quota enable /
|
||||||
|
|
||||||
# Tweak default Snapper configs
|
# Tweak default Snapper configs
|
||||||
sudo sed -i 's/^TIMELINE_CREATE="yes"/TIMELINE_CREATE="no"/' /etc/snapper/configs/{root,home}
|
sudo sed -i 's/^TIMELINE_CREATE="yes"/TIMELINE_CREATE="no"/' /etc/snapper/configs/{root,home}
|
||||||
sudo sed -i 's/^NUMBER_LIMIT="50"/NUMBER_LIMIT="5"/' /etc/snapper/configs/{root,home}
|
sudo sed -i 's/^NUMBER_LIMIT="50"/NUMBER_LIMIT="5"/' /etc/snapper/configs/{root,home}
|
||||||
sudo sed -i 's/^NUMBER_LIMIT_IMPORTANT="10"/NUMBER_LIMIT_IMPORTANT="5"/' /etc/snapper/configs/{root,home}
|
sudo sed -i 's/^NUMBER_LIMIT_IMPORTANT="10"/NUMBER_LIMIT_IMPORTANT="5"/' /etc/snapper/configs/{root,home}
|
||||||
|
sudo sed -i 's/^SPACE_LIMIT="0.5"/SPACE_LIMIT="0.3"/' /etc/snapper/configs/{root,home}
|
||||||
|
sudo sed -i 's/^FREE_LIMIT="0.2"/FREE_LIMIT="0.3"/' /etc/snapper/configs/{root,home}
|
||||||
|
|
||||||
chrootable_systemctl_enable limine-snapper-sync.service
|
chrootable_systemctl_enable limine-snapper-sync.service
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ avahi
|
|||||||
bash-completion
|
bash-completion
|
||||||
bat
|
bat
|
||||||
bluetui
|
bluetui
|
||||||
|
bolt
|
||||||
brightnessctl
|
brightnessctl
|
||||||
btop
|
btop
|
||||||
clang
|
clang
|
||||||
@@ -20,6 +21,7 @@ cups-pdf
|
|||||||
docker
|
docker
|
||||||
docker-buildx
|
docker-buildx
|
||||||
docker-compose
|
docker-compose
|
||||||
|
dotnet-runtime-9.0
|
||||||
dust
|
dust
|
||||||
evince
|
evince
|
||||||
exfatprogs
|
exfatprogs
|
||||||
@@ -47,7 +49,7 @@ gvfs-smb
|
|||||||
hypridle
|
hypridle
|
||||||
hyprland
|
hyprland
|
||||||
hyprland-guiutils
|
hyprland-guiutils
|
||||||
hyprland-preview-share-picker-git
|
hyprland-preview-share-picker
|
||||||
hyprlock
|
hyprlock
|
||||||
hyprpicker
|
hyprpicker
|
||||||
hyprsunset
|
hyprsunset
|
||||||
@@ -88,6 +90,7 @@ obsidian
|
|||||||
omarchy-chromium
|
omarchy-chromium
|
||||||
omarchy-nvim
|
omarchy-nvim
|
||||||
omarchy-walker
|
omarchy-walker
|
||||||
|
opencode
|
||||||
pamixer
|
pamixer
|
||||||
pinta
|
pinta
|
||||||
playerctl
|
playerctl
|
||||||
@@ -141,4 +144,5 @@ xmlstarlet
|
|||||||
xournalpp
|
xournalpp
|
||||||
yaru-icon-theme
|
yaru-icon-theme
|
||||||
yay
|
yay
|
||||||
|
yq
|
||||||
zoxide
|
zoxide
|
||||||
|
|||||||
@@ -27,9 +27,12 @@ linux
|
|||||||
linux-firmware
|
linux-firmware
|
||||||
linux-headers
|
linux-headers
|
||||||
macbook12-spi-driver-dkms
|
macbook12-spi-driver-dkms
|
||||||
|
nvidia-580xx-dkms
|
||||||
nvidia-dkms
|
nvidia-dkms
|
||||||
nvidia-open-dkms
|
nvidia-open-dkms
|
||||||
|
nvidia-580xx-utils
|
||||||
nvidia-utils
|
nvidia-utils
|
||||||
|
lib32-nvidia-580xx-utils
|
||||||
lib32-nvidia-utils
|
lib32-nvidia-utils
|
||||||
pipewire
|
pipewire
|
||||||
pipewire-alsa
|
pipewire-alsa
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ WhatsApp.png
|
|||||||
omarchy-webapp-install "Google Photos" https://photos.google.com/ "Google Photos.png"
|
omarchy-webapp-install "Google Photos" https://photos.google.com/ "Google Photos.png"
|
||||||
omarchy-webapp-install "Google Contacts" https://contacts.google.com/ "Google Contacts.png"
|
omarchy-webapp-install "Google Contacts" https://contacts.google.com/ "Google Contacts.png"
|
||||||
omarchy-webapp-install "Google Messages" https://messages.google.com/web/conversations "Google Messages.png"
|
omarchy-webapp-install "Google Messages" https://messages.google.com/web/conversations "Google Messages.png"
|
||||||
|
omarchy-webapp-install "Google Maps" https://maps.google.com "Google Maps.png"
|
||||||
omarchy-webapp-install "ChatGPT" https://chatgpt.com/ ChatGPT.png
|
omarchy-webapp-install "ChatGPT" https://chatgpt.com/ ChatGPT.png
|
||||||
omarchy-webapp-install "YouTube" https://youtube.com/ YouTube.png
|
omarchy-webapp-install "YouTube" https://youtube.com/ YouTube.png
|
||||||
omarchy-webapp-install "GitHub" https://github.com/ GitHub.png
|
omarchy-webapp-install "GitHub" https://github.com/ GitHub.png
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
echo "Install Copy URL extension for Chromium"
|
echo "Install Copy URL extension for Chromium"
|
||||||
|
|
||||||
omarchy-refresh-config chromium-flags.conf
|
omarchy-refresh-chromium
|
||||||
|
|||||||
13
migrations/1758455816.sh
Normal file
13
migrations/1758455816.sh
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
echo "Add thunderbolt support to boot image"
|
||||||
|
|
||||||
|
omarchy-pkg-add bolt
|
||||||
|
|
||||||
|
if [[ ! -f /etc/mkinitcpio.conf.d/thunderbolt_module.conf ]]; then
|
||||||
|
sudo tee /etc/mkinitcpio.conf.d/thunderbolt_module.conf <<EOF >/dev/null
|
||||||
|
MODULES+=(thunderbolt)
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if omarchy-cmd-present limine-update; then
|
||||||
|
sudo limine-update
|
||||||
|
fi
|
||||||
@@ -1,6 +1,17 @@
|
|||||||
echo "Add custom share portal picker"
|
echo "Add custom share portal picker"
|
||||||
omarchy-pkg-add hyprland-preview-share-picker-git
|
omarchy-pkg-add hyprland-preview-share-picker
|
||||||
|
|
||||||
|
mkdir -p ~/.config/hyprland-preview-share-picker
|
||||||
|
omarchy-refresh-config hyprland-preview-share-picker/config.yaml
|
||||||
|
|
||||||
if ! grep -q "custom_picker_binary" ~/.config/hypr/xdph.conf; then
|
if ! grep -q "custom_picker_binary" ~/.config/hypr/xdph.conf; then
|
||||||
sed -i '/screencopy {/a\ custom_picker_binary = hyprland-preview-share-picker' ~/.config/hypr/xdph.conf
|
sed -i '/screencopy {/a\ custom_picker_binary = hyprland-preview-share-picker' ~/.config/hypr/xdph.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
killall -e xdg-desktop-portal-hyprland
|
||||||
|
killall -e xdg-desktop-portal-wlr
|
||||||
|
killall xdg-desktop-portal
|
||||||
|
/usr/lib/xdg-desktop-portal-hyprland &
|
||||||
|
sleep 2
|
||||||
|
/usr/lib/xdg-desktop-portal &
|
||||||
|
|||||||
11
migrations/1765729055.sh
Normal file
11
migrations/1765729055.sh
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
echo "Add emergency entry for Walker"
|
||||||
|
CONFIG_FILE="$HOME/.config/walker/config.toml"
|
||||||
|
|
||||||
|
if [[ -f "$CONFIG_FILE" ]] && ! grep -q 'command = "omarchy-restart-walker"' "$CONFIG_FILE"; then
|
||||||
|
cat >> "$CONFIG_FILE" << 'EOF'
|
||||||
|
|
||||||
|
[[emergencies]]
|
||||||
|
text = "Restart Walker"
|
||||||
|
command = "omarchy-restart-walker"
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
7
migrations/1765739892.sh
Normal file
7
migrations/1765739892.sh
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
if omarchy-cmd-present btrfs && omarchy-cmd-present snapper; then
|
||||||
|
echo "Adjust snapper space limits & enable btrfs quota"
|
||||||
|
|
||||||
|
sudo sed -i 's/^SPACE_LIMIT="0.5"/SPACE_LIMIT="0.3"/' /etc/snapper/configs/{root,home} 2>/dev/null
|
||||||
|
sudo sed -i 's/^FREE_LIMIT="0.2"/FREE_LIMIT="0.3"/' /etc/snapper/configs/{root,home} 2>/dev/null
|
||||||
|
sudo btrfs quota enable /
|
||||||
|
fi
|
||||||
2
migrations/1765744321.sh
Normal file
2
migrations/1765744321.sh
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
echo "Increase faillock attempts to 10"
|
||||||
|
sudo sed -i 's/^# *deny = .*/deny = 10/' /etc/security/faillock.conf
|
||||||
3
migrations/1765846739.sh
Normal file
3
migrations/1765846739.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
echo "Add missing dotnet 9.0 for Pinta"
|
||||||
|
|
||||||
|
omarchy-pkg-add dotnet-runtime-9.0
|
||||||
6
migrations/1765884267.sh
Normal file
6
migrations/1765884267.sh
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
echo "Change to openai-codex instead of openai-codex-bin"
|
||||||
|
|
||||||
|
if omarchy-pkg-present openai-codex-bin; then
|
||||||
|
omarchy-pkg-drop openai-codex-bin
|
||||||
|
omarchy-pkg-add openai-codex
|
||||||
|
fi
|
||||||
8
migrations/1766942230.sh
Normal file
8
migrations/1766942230.sh
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
echo "Migrate legacy NVIDIA GPUs to nvidia-580xx driver (if needed)"
|
||||||
|
|
||||||
|
# Only migrate GTX 9xx or 10xx (Pascal/Maxwell)
|
||||||
|
NVIDIA="$(lspci | grep -i 'nvidia')"
|
||||||
|
if echo "$NVIDIA" | grep -qE "GTX 9|GTX 10"; then
|
||||||
|
# Piping yes to override existing packages
|
||||||
|
yes | sudo pacman -S nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils
|
||||||
|
fi
|
||||||
9
migrations/1767138576.sh
Normal file
9
migrations/1767138576.sh
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
echo "Update terminal scrolltouchpad setting to Hyprland 0.53 style"
|
||||||
|
|
||||||
|
if grep -q "scrolltouchpad" ~/.config/hypr/input.conf; then
|
||||||
|
sed -Ei 's/^windowrule = scrolltouchpad ([^,]+), class:\(([^)]+)\)$/windowrule = match:class (\2), scroll_touchpad \1/;
|
||||||
|
s/^windowrule = scrolltouchpad ([^,]+), class:([^ ]+)$/windowrule = match:class \2, scroll_touchpad \1/' ~/.config/hypr/input.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure we restart to pair new Hyprland settings with new version
|
||||||
|
omarchy-state set reboot-required
|
||||||
3
migrations/1767227973.sh
Executable file
3
migrations/1767227973.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
echo "Replace Waybar omarchy-launch-or-focus-tui wiremix with omarchy-launch-audio"
|
||||||
|
|
||||||
|
sed -i 's/omarchy-launch-or-focus-tui wiremix/omarchy-launch-audio/g' ~/.config/waybar/config.jsonc
|
||||||
62
migrations/1767306902.sh
Normal file
62
migrations/1767306902.sh
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
echo "Migrate to new theme setup"
|
||||||
|
|
||||||
|
omarchy-pkg-add yq
|
||||||
|
|
||||||
|
# Move user-added backgrounds from Omarchy theme folders to user config
|
||||||
|
OMARCHY_DIR="$HOME/.local/share/omarchy"
|
||||||
|
USER_BACKGROUNDS_DIR="$HOME/.config/omarchy/backgrounds"
|
||||||
|
|
||||||
|
if [[ -d "$OMARCHY_DIR/themes" ]]; then
|
||||||
|
cd "$OMARCHY_DIR"
|
||||||
|
|
||||||
|
# Get list of git-tracked background files (relative to omarchy dir)
|
||||||
|
mapfile -t TRACKED_BACKGROUNDS < <(git ls-files --cached 'themes/*/backgrounds/*' 2>/dev/null)
|
||||||
|
|
||||||
|
# Find all background files and check if they're untracked (user-added)
|
||||||
|
for theme_dir in themes/*/; do
|
||||||
|
theme_name=$(basename "$theme_dir")
|
||||||
|
backgrounds_dir="themes/$theme_name/backgrounds"
|
||||||
|
|
||||||
|
[[ -d "$backgrounds_dir" ]] || continue
|
||||||
|
|
||||||
|
for bg_file in "$backgrounds_dir"/*; do
|
||||||
|
[[ -f "$bg_file" ]] || continue
|
||||||
|
|
||||||
|
# Check if this file is tracked by git
|
||||||
|
is_tracked=false
|
||||||
|
for tracked in "${TRACKED_BACKGROUNDS[@]}"; do
|
||||||
|
if [[ "$tracked" == "$bg_file" ]]; then
|
||||||
|
is_tracked=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$is_tracked" == "false" ]]; then
|
||||||
|
# This is a user-added background, move it to user config
|
||||||
|
user_theme_bg_dir="$USER_BACKGROUNDS_DIR/$theme_name"
|
||||||
|
mkdir -p "$user_theme_bg_dir"
|
||||||
|
mv "$bg_file" "$user_theme_bg_dir/"
|
||||||
|
echo "Moved user background: $bg_file -> $user_theme_bg_dir/"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
THEMES_DIR="$HOME/.config/omarchy/themes"
|
||||||
|
CURRENT_THEME_LINK="$HOME/.config/omarchy/current/theme"
|
||||||
|
|
||||||
|
# Get current theme name from symlink before removing anything
|
||||||
|
CURRENT_THEME_NAME=""
|
||||||
|
if [[ -L $CURRENT_THEME_LINK ]]; then
|
||||||
|
CURRENT_THEME_NAME=$(basename "$(readlink "$CURRENT_THEME_LINK")")
|
||||||
|
elif [[ -f "$HOME/.config/omarchy/current/theme.name" ]]; then
|
||||||
|
CURRENT_THEME_NAME=$(cat "$HOME/.config/omarchy/current/theme.name")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove all symlinks from ~/.config/omarchy/themes
|
||||||
|
find "$THEMES_DIR" -mindepth 1 -maxdepth 1 -type l -delete
|
||||||
|
|
||||||
|
# Re-apply the current theme with the new system
|
||||||
|
if [[ -n $CURRENT_THEME_NAME ]]; then
|
||||||
|
omarchy-theme-set "$CURRENT_THEME_NAME"
|
||||||
|
fi
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user