diff --git a/applications/About.desktop b/applications/About.desktop deleted file mode 100644 index 52e0ca23..00000000 --- a/applications/About.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=About -Comment=System information from Fastfetch -Exec=alacritty -o "font.size=9" --class=About --title=About -e bash -c 'fastfetch; read -n 1 -s' -Terminal=false -Type=Application -Icon=Arch -Categories=GTK; -StartupNotify=false - diff --git a/applications/Activity.desktop b/applications/Activity.desktop deleted file mode 100644 index 7f3d6658..00000000 --- a/applications/Activity.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Activity -Comment=System activity from btop -Exec=alacritty --class=Activity --title=Activity -e btop -Terminal=false -Type=Application -Icon=Activity -Categories=GTK; -StartupNotify=false - diff --git a/applications/Docker.desktop b/applications/Docker.desktop deleted file mode 100644 index 72e17e6d..00000000 --- a/applications/Docker.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Docker -Comment=Manage Docker containers with LazyDocker -Exec=alacritty --class=Docker --title=Docker -e lazydocker -Terminal=false -Type=Application -Icon=Docker -Categories=GTK; -StartupNotify=false - diff --git a/applications/chromium.desktop b/applications/chromium.desktop deleted file mode 100644 index 5327cb54..00000000 --- a/applications/chromium.desktop +++ /dev/null @@ -1,221 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Chromium -# Only KDE 4 seems to use GenericName, so we reuse the KDE strings. -# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413. -GenericName=Web Browser -GenericName[ar]=متصفح الشبكة -GenericName[bg]=Уеб браузър -GenericName[ca]=Navegador web -GenericName[cs]=WWW prohlížeč -GenericName[da]=Browser -GenericName[de]=Web-Browser -GenericName[el]=Περιηγητής ιστού -GenericName[en_GB]=Web Browser -GenericName[es]=Navegador web -GenericName[et]=Veebibrauser -GenericName[fi]=WWW-selain -GenericName[fr]=Navigateur Web -GenericName[gu]=વેબ બ્રાઉઝર -GenericName[he]=דפדפן אינטרנט -GenericName[hi]=वेब ब्राउज़र -GenericName[hu]=Webböngésző -GenericName[it]=Browser Web -GenericName[ja]=ウェブブラウザ -GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ -GenericName[ko]=웹 브라우저 -GenericName[lt]=Žiniatinklio naršyklė -GenericName[lv]=Tīmekļa pārlūks -GenericName[ml]=വെബ് ബ്രൌസര്‍ -GenericName[mr]=वेब ब्राऊजर -GenericName[nb]=Nettleser -GenericName[nl]=Webbrowser -GenericName[pl]=Przeglądarka WWW -GenericName[pt]=Navegador Web -GenericName[pt_BR]=Navegador da Internet -GenericName[ro]=Navigator de Internet -GenericName[ru]=Веб-браузер -GenericName[sl]=Spletni brskalnik -GenericName[sv]=Webbläsare -GenericName[ta]=இணைய உலாவி -GenericName[th]=เว็บเบราว์เซอร์ -GenericName[tr]=Web Tarayıcı -GenericName[uk]=Навігатор Тенет -GenericName[zh_CN]=网页浏览器 -GenericName[zh_HK]=網頁瀏覽器 -GenericName[zh_TW]=網頁瀏覽器 -# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1. -GenericName[bn]=ওয়েব ব্রাউজার -GenericName[fil]=Web Browser -GenericName[hr]=Web preglednik -GenericName[id]=Browser Web -GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର -GenericName[sk]=WWW prehliadač -GenericName[sr]=Интернет прегледник -GenericName[te]=మహాతల అన్వేషి -GenericName[vi]=Bộ duyệt Web -# Gnome and KDE 3 uses Comment. -Comment=Access the Internet -Comment[ar]=الدخول إلى الإنترنت -Comment[bg]=Достъп до интернет -Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন -Comment[ca]=Accedeix a Internet -Comment[cs]=Přístup k internetu -Comment[da]=Få adgang til internettet -Comment[de]=Internetzugriff -Comment[el]=Πρόσβαση στο Διαδίκτυο -Comment[en_GB]=Access the Internet -Comment[es]=Accede a Internet. -Comment[et]=Pääs Internetti -Comment[fi]=Käytä internetiä -Comment[fil]=I-access ang Internet -Comment[fr]=Accéder à Internet -Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો -Comment[he]=גישה אל האינטרנט -Comment[hi]=इंटरनेट तक पहुंच स्थापित करें -Comment[hr]=Pristup Internetu -Comment[hu]=Internetelérés -Comment[id]=Akses Internet -Comment[it]=Accesso a Internet -Comment[ja]=インターネットにアクセス -Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ -Comment[ko]=인터넷 연결 -Comment[lt]=Interneto prieiga -Comment[lv]=Piekļūt internetam -Comment[ml]=ഇന്റര്‍‌നെറ്റ് ആക്‌സസ് ചെയ്യുക -Comment[mr]=इंटरनेटमध्ये प्रवेश करा -Comment[nb]=Gå til Internett -Comment[nl]=Verbinding maken met internet -Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ -Comment[pl]=Skorzystaj z internetu -Comment[pt]=Aceder à Internet -Comment[pt_BR]=Acessar a internet -Comment[ro]=Accesaţi Internetul -Comment[ru]=Доступ в Интернет -Comment[sk]=Prístup do siete Internet -Comment[sl]=Dostop do interneta -Comment[sr]=Приступите Интернету -Comment[sv]=Gå ut på Internet -Comment[ta]=இணையத்தை அணுகுதல் -Comment[te]=ఇంటర్నెట్‌ను ఆక్సెస్ చెయ్యండి -Comment[th]=เข้าถึงอินเทอร์เน็ต -Comment[tr]=İnternet'e erişin -Comment[uk]=Доступ до Інтернету -Comment[vi]=Truy cập Internet -Comment[zh_CN]=访问互联网 -Comment[zh_HK]=連線到網際網路 -Comment[zh_TW]=連線到網際網路 -Exec=/usr/bin/chromium --ozone-platform=wayland %U -StartupNotify=true -Terminal=false -Icon=chromium -Type=Application -Categories=Network;WebBrowser; -MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; -Actions=new-window;new-private-window; - -[Desktop Action new-window] -Name=New Window -Name[am]=አዲስ መስኮት -Name[ar]=نافذة جديدة -Name[bg]=Нов прозорец -Name[bn]=নতুন উইন্ডো -Name[ca]=Finestra nova -Name[cs]=Nové okno -Name[da]=Nyt vindue -Name[de]=Neues Fenster -Name[el]=Νέο Παράθυρο -Name[en_GB]=New Window -Name[es]=Nueva ventana -Name[et]=Uus aken -Name[fa]=پنجره جدید -Name[fi]=Uusi ikkuna -Name[fil]=New Window -Name[fr]=Nouvelle fenêtre -Name[gu]=નવી વિંડો -Name[hi]=नई विंडो -Name[hr]=Novi prozor -Name[hu]=Új ablak -Name[id]=Jendela Baru -Name[it]=Nuova finestra -Name[iw]=חלון חדש -Name[ja]=新規ウインドウ -Name[kn]=ಹೊಸ ವಿಂಡೊ -Name[ko]=새 창 -Name[lt]=Naujas langas -Name[lv]=Jauns logs -Name[ml]=പുതിയ വിന്‍ഡോ -Name[mr]=नवीन विंडो -Name[nl]=Nieuw venster -Name[no]=Nytt vindu -Name[pl]=Nowe okno -Name[pt]=Nova janela -Name[pt_BR]=Nova janela -Name[ro]=Fereastră nouă -Name[ru]=Новое окно -Name[sk]=Nové okno -Name[sl]=Novo okno -Name[sr]=Нови прозор -Name[sv]=Nytt fönster -Name[sw]=Dirisha Jipya -Name[ta]=புதிய சாளரம் -Name[te]=క్రొత్త విండో -Name[th]=หน้าต่างใหม่ -Name[tr]=Yeni Pencere -Name[uk]=Нове вікно -Name[vi]=Cửa sổ Mới -Name[zh_CN]=新建窗口 -Name[zh_TW]=開新視窗 -Exec=/usr/bin/chromium --ozone-platform=wayland --new-window - -[Desktop Action new-private-window] -Name=New Incognito Window -Name[ar]=نافذة جديدة للتصفح المتخفي -Name[bg]=Нов прозорец „инкогнито“ -Name[bn]=নতুন ছদ্মবেশী উইন্ডো -Name[ca]=Finestra d'incògnit nova -Name[cs]=Nové anonymní okno -Name[da]=Nyt inkognitovindue -Name[de]=Neues Inkognito-Fenster -Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση -Name[en_GB]=New Incognito window -Name[es]=Nueva ventana de incógnito -Name[et]=Uus inkognito aken -Name[fa]=پنجره جدید حالت ناشناس -Name[fi]=Uusi incognito-ikkuna -Name[fil]=Bagong Incognito window -Name[fr]=Nouvelle fenêtre de navigation privée -Name[gu]=નવી છુપી વિંડો -Name[hi]=नई गुप्त विंडो -Name[hr]=Novi anoniman prozor -Name[hu]=Új Inkognitóablak -Name[id]=Jendela Penyamaran baru -Name[it]=Nuova finestra di navigazione in incognito -Name[iw]=חלון חדש לגלישה בסתר -Name[ja]=新しいシークレット ウィンドウ -Name[kn]=ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ -Name[ko]=새 시크릿 창 -Name[lt]=Naujas inkognito langas -Name[lv]=Jauns inkognito režīma logs -Name[ml]=പുതിയ വേഷ പ്രച്ഛന്ന വിന്‍ഡോ -Name[mr]=नवीन गुप्त विंडो -Name[nl]=Nieuw incognitovenster -Name[no]=Nytt inkognitovindu -Name[pl]=Nowe okno incognito -Name[pt]=Nova janela de navegação anónima -Name[pt_BR]=Nova janela anônima -Name[ro]=Fereastră nouă incognito -Name[ru]=Новое окно в режиме инкогнито -Name[sk]=Nové okno inkognito -Name[sl]=Novo okno brez beleženja zgodovine -Name[sr]=Нови прозор за прегледање без архивирања -Name[sv]=Nytt inkognitofönster -Name[ta]=புதிய மறைநிலைச் சாளரம் -Name[te]=క్రొత్త అజ్ఞాత విండో -Name[th]=หน้าต่างใหม่ที่ไม่ระบุตัวตน -Name[tr]=Yeni Gizli pencere -Name[uk]=Нове вікно в режимі анонімного перегляду -Name[vi]=Cửa sổ ẩn danh mới -Name[zh_CN]=新建隐身窗口 -Name[zh_TW]=新增無痕式視窗 -Exec=/usr/bin/chromium --ozone-platform=wayland --new-window --incognito diff --git a/applications/btop.desktop b/applications/hidden/btop.desktop similarity index 100% rename from applications/btop.desktop rename to applications/hidden/btop.desktop diff --git a/applications/xtras/dropbox.desktop b/applications/hidden/dropbox.desktop similarity index 100% rename from applications/xtras/dropbox.desktop rename to applications/hidden/dropbox.desktop diff --git a/applications/icons/Activity.png b/applications/icons/Activity.png deleted file mode 100644 index e0713bff..00000000 Binary files a/applications/icons/Activity.png and /dev/null differ diff --git a/applications/icons/Arch.png b/applications/icons/Arch.png deleted file mode 100644 index 909f1b75..00000000 Binary files a/applications/icons/Arch.png and /dev/null differ diff --git a/applications/icons/Docker.png b/applications/icons/Docker.png deleted file mode 100644 index c0257594..00000000 Binary files a/applications/icons/Docker.png and /dev/null differ diff --git a/applications/xtras/typora.desktop b/applications/typora.desktop similarity index 100% rename from applications/xtras/typora.desktop rename to applications/typora.desktop diff --git a/applications/wiremix.desktop b/applications/wiremix.desktop deleted file mode 100644 index 7cb0c602..00000000 --- a/applications/wiremix.desktop +++ /dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Name=Audio Settings -Comment=Using Wiremix -Exec=alacritty --class=Wiremix --title=Wiremix -e wiremix -Icon=audio-headphones -Type=Application -Terminal=false diff --git a/applications/xtras/Zoom.desktop b/applications/xtras/Zoom.desktop deleted file mode 100644 index 8bce96d8..00000000 --- a/applications/xtras/Zoom.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Name=Zoom -Comment=Zoom Video Conference -Exec=env QT_SCALE_FACTOR=2 /usr/bin/zoom %U -Icon=Zoom -Terminal=false -Type=Application -Encoding=UTF-8 -Categories=Network;Application; -StartupWMClass=zoom -MimeType=x-scheme-handler/zoommtg;x-scheme-handler/zoomus;x-scheme-handler/tel;x-scheme-handler/callto;x-scheme-handler/zoomphonecall;x-scheme-handler/zoomphonesms;x-scheme-handler/zoomcontactcentercall;application/x-zoom -X-KDE-Protocols=zoommtg;zoomus;tel;callto;zoomphonecall;zoomphonesms;zoomcontactcentercall; diff --git a/bin/omarchy-cmd-audio-switch b/bin/omarchy-cmd-audio-switch new file mode 100755 index 00000000..2377a123 --- /dev/null +++ b/bin/omarchy-cmd-audio-switch @@ -0,0 +1,19 @@ +#!/bin/bash + +# Find all the audio sinks but exit if there are none +sinks=($(wpctl status | sed -n '/Sinks:/,/Sources:/p' | grep -E '^\s*│\s+\*?\s*[0-9]+\.' | sed -E 's/^[^0-9]*([0-9]+)\..*/\1/')) +[ ${#sinks[@]} -eq 0 ] && exit 1 + +# Find current audio sink +current=$(wpctl status | sed -n '/Sinks:/,/Sources:/p' | grep '^\s*│\s*\*' | sed -E 's/^[^0-9]*([0-9]+)\..*/\1/') + +# Find the next sink (looping around in the list) +for i in "${!sinks[@]}"; do + [ "${sinks[$i]}" = "$current" ] && next=${sinks[$(((i + 1) % ${#sinks[@]}))]} +done +next=${next:-${sinks[0]}} + +# Set the next sink and ensure it's not muted +wpctl set-default "$next" +wpctl set-mute "$next" 0 + diff --git a/bin/omarchy-cmd-close-all-windows b/bin/omarchy-cmd-close-all-windows new file mode 100755 index 00000000..e53fec6a --- /dev/null +++ b/bin/omarchy-cmd-close-all-windows @@ -0,0 +1,9 @@ +#!/bin/bash + +# Close all open windows +hyprctl clients -j | \ + jq -r ".[].address" | \ + xargs -I{} hyprctl dispatch closewindow address:{} + +# Move to first workspace +hyprctl dispatch workspace 1 diff --git a/bin/omarchy-cmd-first-run b/bin/omarchy-cmd-first-run new file mode 100755 index 00000000..9334d1d3 --- /dev/null +++ b/bin/omarchy-cmd-first-run @@ -0,0 +1,12 @@ +#!/bin/bash + +set -e + +FIRST_RUN_MODE=~/.local/state/omarchy/first-run.mode + +if [[ -f "$FIRST_RUN_MODE" ]]; then + rm -f "$FIRST_RUN_MODE" + $OMARCHY_PATH/install/first-run/battery-monitor.sh + $OMARCHY_PATH/install/first-run/firewall.sh + sudo rm -f /etc/sudoers.d/first-run +fi diff --git a/bin/omarchy-cmd-screenrecord b/bin/omarchy-cmd-screenrecord index 1d05fae7..4abffc6c 100755 --- a/bin/omarchy-cmd-screenrecord +++ b/bin/omarchy-cmd-screenrecord @@ -13,7 +13,7 @@ screenrecording() { notify-send "Screen recording starting..." -t 1000 sleep 1 - if lspci | grep -qi 'nvidia'; then + if lspci | grep -Eqi 'nvidia|intel.*graphics'; then wf-recorder -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" else wl-screenrec -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" diff --git a/bin/omarchy-cmd-screenrecord-stop b/bin/omarchy-cmd-screenrecord-stop new file mode 100755 index 00000000..5631920c --- /dev/null +++ b/bin/omarchy-cmd-screenrecord-stop @@ -0,0 +1,7 @@ +#!/bin/bash + +if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then + pkill -x wl-screenrec + pkill -x wf-recorder + notify-send "Screen recording stopped" -t 2000 +fi diff --git a/bin/omarchy-cmd-screensaver b/bin/omarchy-cmd-screensaver index 65bbce2f..eb320600 100755 --- a/bin/omarchy-cmd-screensaver +++ b/bin/omarchy-cmd-screensaver @@ -1,20 +1,16 @@ #!/bin/bash -if command -v tte &>/dev/null; then - while true; do - effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1) - tte -i ~/.local/share/omarchy/logo.txt \ - --frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \ - "$effect" & +while true; do + effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1) + tte -i ~/.config/omarchy/branding/screensaver.txt \ + --frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \ + "$effect" & - while pgrep tte >/dev/null; do - if read -n 1 -t 0.01; then - pkill tte 2>/dev/null - pkill -f "alacritty --class Screensaver" 2>/dev/null - exit 0 - fi - done + while pgrep -x tte >/dev/null; do + if read -n 1 -t 0.01; then + pkill -x tte 2>/dev/null + pkill -f "alacritty --class Screensaver" 2>/dev/null + exit 0 + fi done -else - gum spin --title "Can't find tte. Try: pip install terminaltexteffects" -- sleep 2 -fi +done diff --git a/bin/omarchy-cmd-terminal-cwd b/bin/omarchy-cmd-terminal-cwd new file mode 100755 index 00000000..6062b68f --- /dev/null +++ b/bin/omarchy-cmd-terminal-cwd @@ -0,0 +1,11 @@ +#!/bin/bash + +# Go from current active terminal to its child shell process and run cwd there +terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}') +shell_pid=$(pgrep -P "$terminal_pid" | head -n1) + +if [[ -n $shell_pid ]]; then + readlink -f "/proc/$shell_pid/cwd" 2>/dev/null +else + echo "$HOME" +fi diff --git a/bin/omarchy-cmd-tzupdate b/bin/omarchy-cmd-tzupdate index 1c5d0ac1..da135e9e 100755 --- a/bin/omarchy-cmd-tzupdate +++ b/bin/omarchy-cmd-tzupdate @@ -1,5 +1,7 @@ #!/bin/bash +sudo systemctl restart systemd-timesyncd sudo tzupdate new_timezone=$(timedatectl show -p Timezone --value) -notify-send "Timezone has been set to $new_timezone" +omarchy-restart-waybar +notify-send "Time synced and timezone set to $new_timezone" diff --git a/bin/omarchy-font-set b/bin/omarchy-font-set index 1fc789f0..a45467d4 100755 --- a/bin/omarchy-font-set +++ b/bin/omarchy-font-set @@ -5,8 +5,8 @@ font_name="$1" if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then if fc-list | grep -iq "$font_name"; then sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml - sed -i "s/font-family: .*/font-family: $font_name;/g" ~/.config/waybar/style.css - sed -i "s/font-family: .*/font-family: $font_name;/g" ~/.config/swayosd/style.css + sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css + sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css xmlstarlet ed -L \ -u '//match[@target="pattern"][test/string="monospace"]/edit[@name="family"]/string' \ -v "$font_name" \ diff --git a/bin/omarchy-install-dev-env b/bin/omarchy-install-dev-env index f59e5f07..1e8480ac 100755 --- a/bin/omarchy-install-dev-env +++ b/bin/omarchy-install-dev-env @@ -1,12 +1,12 @@ #!/bin/bash if [[ -z "$1" ]]; then - echo "Usage: omarchy-instal-dev-env " >&2 + echo "Usage: omarchy-install-dev-env " >&2 exit 1 fi install_php() { - yay -Sy php composer php-sqlite --noconfirm + sudo pacman -Sy php composer php-sqlite --noconfirm # Install Path for Composer if [[ ":$PATH:" != *":$HOME/.config/composer/vendor/bin:"* ]]; then @@ -77,7 +77,7 @@ python) echo -e "Installing Python...\n" mise use --global python@latest echo -e "\nInstalling uv...\n" - wget -qO- https://astral.sh/uv/install.sh | sh + curl -fsSL https://astral.sh/uv/install.sh | sh ;; elixir) echo -e "Installing Elixir...\n" @@ -85,6 +85,18 @@ elixir) mise use --global elixir@latest mise x elixir -- mix local.hex --force ;; +phoenix) + echo -e "Installing Phoenix Framework...\n" + # Ensure Erlang/Elixir first + mise use --global erlang@latest + mise use --global elixir@latest + # Hex & Rebar + mise x elixir -- mix local.hex --force + mise x elixir -- mix local.rebar --force + # Phoenix project (phx_new) + mise x elixir -- mix archive.install hex phx_new --force + echo -e "\nYou can now run: mix phx.new my_app" + ;; rust) echo -e "Installing Rust...\n" bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y diff --git a/bin/omarchy-install-docker-dbs b/bin/omarchy-install-docker-dbs index af10da71..da9090fa 100755 --- a/bin/omarchy-install-docker-dbs +++ b/bin/omarchy-install-docker-dbs @@ -1,6 +1,6 @@ #!/bin/bash -options=("MariaDB" "MySQL" "Redis" "PostgreSQL") +options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB") choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu if [[ -n "$choices" ]]; then @@ -10,6 +10,7 @@ if [[ -n "$choices" ]]; then PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 ;; 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 ;; + 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 ;; esac done fi diff --git a/bin/omarchy-install-dropbox b/bin/omarchy-install-dropbox index 90ec37c2..e80982d4 100755 --- a/bin/omarchy-install-dropbox +++ b/bin/omarchy-install-dropbox @@ -1,6 +1,7 @@ #!/bin/bash -echo "Installing all dependencies..." +# FIXME: Should not use AUR dependencies when we can avoid it +echo "Installing all dependencies [from AUR]..." yay -S --noconfirm --needed \ dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox diff --git a/bin/omarchy-install-steam b/bin/omarchy-install-steam index 4dc76b7c..9eb826db 100755 --- a/bin/omarchy-install-steam +++ b/bin/omarchy-install-steam @@ -5,5 +5,5 @@ sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf sudo pacman -Sy echo "Now pick dependencies matching your graphics card" -yay -S steam +sudo pacman -S steam setsid gtk-launch steam >/dev/null 2>&1 & diff --git a/bin/omarchy-install-tailscale b/bin/omarchy-install-tailscale index 6c859c3f..c6dbe03f 100755 --- a/bin/omarchy-install-tailscale +++ b/bin/omarchy-install-tailscale @@ -1,8 +1,13 @@ #!/bin/bash curl -fsSL https://tailscale.com/install.sh | sh +curl -fsSL https://neuralink.com/tsui/install.sh | bash echo -e "\nStarting Tailscale..." sudo tailscale up --accept-routes -omarchy-webapp-install "Tailscale" "https://login.tailscale.com/admin/machines" https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png +echo -e "\nAdd tsui to sudoers..." +echo "$USER ALL=(ALL) NOPASSWD: $(which tsui)" | sudo tee /etc/sudoers.d/tsui + +omarchy-tui-install "Tailscale" "sudo tsui" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png +omarchy-webapp-install "Tailscale Admin Console" "https://login.tailscale.com/admin/machines" https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png diff --git a/bin/omarchy-launch-browser b/bin/omarchy-launch-browser new file mode 100755 index 00000000..5b9f86c9 --- /dev/null +++ b/bin/omarchy-launch-browser @@ -0,0 +1,3 @@ +#!/bin/bash + +exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,/usr}/share/applications/$(xdg-settings get default-web-browser) 2>/dev/null | head -1) ${args[@]} $@ diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index 7e2d4de0..eebef0c5 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -1,8 +1,18 @@ #!/bin/bash +# Exit early if we don't have the tte show +if ! command -v tte &>/dev/null; then + exit 1 +fi + # Exit early if screensave is already running pgrep -f "alacritty --class Screensaver" && exit 0 +# Allow screensaver to be turned off but also force started +if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then + exit 1 +fi + focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name') for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do diff --git a/bin/omarchy-launch-webapp b/bin/omarchy-launch-webapp new file mode 100755 index 00000000..24f48e9c --- /dev/null +++ b/bin/omarchy-launch-webapp @@ -0,0 +1,10 @@ +#!/bin/bash + +browser=$(xdg-settings get default-web-browser) + +case $browser in +google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi*) ;; +*) browser="chromium.desktop" ;; +esac + +exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,/usr}/share/applications/$browser 2>/dev/null | head -1) --app="$1" "${@:2}" diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 5bc88dbd..8e702b8e 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -22,7 +22,7 @@ menu() { } terminal() { - alacritty --class Omarchy -e $1 + alacritty --class Omarchy -e "$@" } present_terminal() { @@ -34,39 +34,45 @@ edit_in_nvim() { alacritty -e nvim "$1" } -open_web() { - setsid chromium --new-window --app="$1" & -} - install() { - present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2" + present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2" } install_and_launch() { - present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2 && setsid gtk-launch $3" + present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2 && setsid gtk-launch $3" } install_font() { - present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'" + present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'" +} + +aur_install() { + present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2" +} + +aur_install_and_launch() { + present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2 && setsid gtk-launch $3" } show_learn_menu() { case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in *Keybindings*) omarchy-menu-keybindings ;; - *Omarchy*) open_web "https://manuals.omamix.org/2/the-omarchy-manual" ;; - *Hyprland*) open_web "https://wiki.hypr.land/" ;; - *Arch*) open_web "https://wiki.archlinux.org/title/Main_page" ;; - *Bash*) open_web "https://devhints.io/bash" ;; - *Neovim*) open_web "https://www.lazyvim.org/keymaps" ;; + *Omarchy*) omarchy-launch-webapp "https://learn.omacom.io/2/the-omarchy-manual" ;; + *Hyprland*) omarchy-launch-webapp "https://wiki.hypr.land/" ;; + *Arch*) omarchy-launch-webapp "https://wiki.archlinux.org/title/Main_page" ;; + *Bash*) omarchy-launch-webapp "https://devhints.io/bash" ;; + *Neovim*) omarchy-launch-webapp "https://www.lazyvim.org/keymaps" ;; *) show_main_menu ;; esac } show_style_menu() { - case $(menu "Style" "󰸌 Theme\n Font\n Background") in + case $(menu "Style" "󰸌 Theme\n Font\n Background\n󱄄 Screensaver\n About") in *Theme*) show_theme_menu ;; *Font*) show_font_menu ;; *Background*) omarchy-theme-bg-next ;; + *Screensaver*) edit_in_nvim ~/.config/omarchy/branding/screensaver.txt ;; + *About*) edit_in_nvim ~/.config/omarchy/branding/about.txt ;; *) show_main_menu ;; esac } @@ -117,10 +123,10 @@ show_screenrecord_menu() { show_toggle_menu() { case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar") in - *Screensaver*) omarchy-launch-screensaver ;; + *Screensaver*) omarchy-toggle-screensaver ;; *Nightlight*) omarchy-toggle-nightlight ;; *Idle*) omarchy-toggle-idle ;; - *Bar*) pkill -SIGUSR1 waybar ;; + *Bar*) omarchy-toggle-waybar ;; *) show_main_menu ;; esac } @@ -129,16 +135,23 @@ show_setup_menu() { local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n󰍹 Monitors" [ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings" [ -f ~/.config/hypr/input.conf ] && options="$options\n Input" - options="$options\n Config\n󰈷 Fingerprint\n Fido2" + options="$options\n󰱔 DNS\n Config\n󰈷 Fingerprint\n Fido2" case $(menu "Setup" "$options") in *Audio*) alacritty --class=Wiremix -e wiremix ;; - *Wifi*) alacritty --class=Impala -e impala ;; - *Bluetooth*) blueberry ;; + *Wifi*) + rfkill unblock wifi + alacritty --class=Impala -e impala + ;; + *Bluetooth*) + rfkill unblock bluetooth + blueberry + ;; *Power*) show_setup_power_menu ;; *Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;; *Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;; *Input*) edit_in_nvim ~/.config/hypr/input.conf ;; + *DNS*) present_terminal omarchy-setup-dns ;; *Config*) show_setup_config_menu ;; *Fingerprint*) present_terminal omarchy-setup-fingerprint ;; *Fido2*) present_terminal omarchy-setup-fido2 ;; @@ -171,9 +184,11 @@ show_setup_config_menu() { } show_install_menu() { - case $(menu "Install" "󰣇 Package\n Web App\n Service\n Style\n󰵮 Development\n Editor\n󱚤 AI\n Gaming") in + case $(menu "Install" "󰣇 Package\n󰣇 AUR\n Web App\n TUI\n Service\n Style\n󰵮 Development\n Editor\n󱚤 AI\n Gaming") in *Package*) terminal omarchy-pkg-install ;; + *AUR*) terminal omarchy-pkg-aur-install ;; *Web*) present_terminal omarchy-webapp-install ;; + *TUI*) present_terminal omarchy-tui-install ;; *Service*) show_install_service_menu ;; *Style*) show_install_style_menu ;; *Development*) show_install_development_menu ;; @@ -193,9 +208,9 @@ show_install_service_menu() { } show_install_editor_menu() { - case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix") in + case $(menu "Install" " VSCode\n Cursor [AUR]\n Zed\n Sublime Text\n Helix") in *VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;; - *Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;; + *Cursor*) aur_install_and_launch "Cursor" "cursor-bin" "cursor" ;; *Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;; *Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;; *Helix*) install "Helix" "helix" ;; @@ -204,21 +219,21 @@ show_install_editor_menu() { } show_install_ai_menu() { - case $(menu "Install" "󱚤 Claude Code\n󱚤 Gemini\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in - *Claude*) install "Claude Code" "claude-code" ;; - *Gemini*) install "Gemini" "gemini-cli-bin" ;; - *Studio*) install "LM Studio" "lmstudio" ;; + case $(menu "Install" "󱚤 Claude Code [AUR]\n󱚤 Gemini\n󱚤 LM Studio [AUR]\n󱚤 Ollama\n󱚤 Crush [AUR]\n󱚤 opencode [AUR]") in + *Claude*) aur_install "Claude Code" "claude-code" ;; + *Gemini*) install "Gemini" "gemini-cli" ;; + *Studio*) aur_install "LM Studio" "lmstudio" ;; *Ollama*) install "Ollama" "ollama" ;; - *Crush*) install "Crush" "crush-bin" ;; - *opencode*) install "opencode" "opencode-bin" ;; + *Crush*) aur_install "Crush" "crush-bin" ;; + *opencode*) aur_install "opencode" "opencode-bin" ;; *) show_install_menu ;; esac } show_install_gaming_menu() { - case $(menu "Install" " Steam\n RetroArch\n󰍳 Minecraft") in + case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft") in *Steam*) present_terminal omarchy-install-steam ;; - *RetroArch*) install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;; + *RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;; *Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;; *) show_install_menu ;; esac @@ -251,7 +266,7 @@ show_install_development_menu() { *Go*) present_terminal "omarchy-install-dev-env go" ;; *PHP*) show_install_php_menu ;; *Python*) present_terminal "omarchy-install-dev-env python" ;; - *Elixir*) present_terminal "omarchy-install-dev-env elixir" ;; + *Elixir*) show_install_elixir_menu ;; *Zig*) present_terminal "omarchy-install-dev-env zig" ;; *Rust*) present_terminal "omarchy-install-dev-env rust" ;; *Java*) present_terminal "omarchy-install-dev-env java" ;; @@ -279,10 +294,19 @@ show_install_php_menu() { esac } +show_install_elixir_menu() { + case $(menu "Install" " Elixir\n Phoenix") in + *Elixir*) present_terminal "omarchy-install-dev-env elixir" ;; + *Phoenix*) present_terminal "omarchy-install-dev-env phoenix" ;; + *) show_install_development_menu ;; + esac +} + show_remove_menu() { - case $(menu "Remove" "󰣇 Package\n Web App\n󰸌 Theme\n󰈷 Fingerprint\n Fido2") in + case $(menu "Remove" "󰣇 Package\n Web App\n TUI\n󰸌 Theme\n󰈷 Fingerprint\n Fido2") in *Package*) terminal omarchy-pkg-remove ;; *Web*) present_terminal omarchy-webapp-remove ;; + *TUI*) present_terminal omarchy-tui-remove ;; *Theme*) present_terminal omarchy-theme-remove ;; *Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;; *Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;; @@ -327,8 +351,9 @@ show_update_config_menu() { } show_system_menu() { - case $(menu "System" " Lock\n󰤄 Suspend\n Relaunch\n󰜉 Restart\n󰐥 Shutdown") in + case $(menu "System" " Lock\n󱄄 Screensaver\n󰤄 Suspend\n Relaunch\n󰜉 Restart\n󰐥 Shutdown") in *Lock*) omarchy-lock-screen ;; + *Screensaver*) omarchy-launch-screensaver force ;; *Suspend*) systemctl suspend ;; *Relaunch*) uwsm stop ;; *Restart*) systemctl reboot ;; @@ -356,7 +381,7 @@ go_to_menu() { *remove*) show_remove_menu ;; *update*) show_update_menu ;; *system*) show_system_menu ;; - *about*) gtk-launch About.desktop ;; + *about*) terminal bash -c 'fastfetch; read -n 1 -s' ;; esac } diff --git a/bin/omarchy-menu-keybindings b/bin/omarchy-menu-keybindings index a851871b..99a49c15 100755 --- a/bin/omarchy-menu-keybindings +++ b/bin/omarchy-menu-keybindings @@ -31,7 +31,10 @@ dynamic_bindings() { -e 's/^65,/SUPER SHIFT,/' \ -e 's/^68,/SUPER CTRL,/' \ -e 's/^69,/SUPER SHIFT CTRL,/' \ - -e 's/^72,/SUPER ALT,/' + -e 's/^72,/SUPER ALT,/' \ + -e 's/^73,/SUPER SHIFT ALT,/' \ + -e 's/^76,/SUPER CTRL ALT,/' \ + -e 's/^77,/SUPER SHIFT CTRL ALT,/' } # Parse and format keybindings diff --git a/bin/omarchy-pkg-aur-accessible b/bin/omarchy-pkg-aur-accessible new file mode 100755 index 00000000..5dd3e2d8 --- /dev/null +++ b/bin/omarchy-pkg-aur-accessible @@ -0,0 +1,4 @@ +#!/bin/bash + +curl -sf --connect-timeout 30 --retry 3 --retry-delay 3 -A "omarchy-update" \ + "https://aur.archlinux.org/rpc/?v=5&type=info&arg=base" >/dev/null diff --git a/bin/omarchy-pkg-aur-install b/bin/omarchy-pkg-aur-install new file mode 100755 index 00000000..25aff21f --- /dev/null +++ b/bin/omarchy-pkg-aur-install @@ -0,0 +1,24 @@ +#!/bin/bash + +set -e + +fzf_args=( + --multi + --preview 'yay -Sii {1}' + --preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize' + --preview-label-pos='bottom' + --preview-window 'down:65%:wrap' + --bind 'alt-p:toggle-preview' + --bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up' + --bind 'alt-k:preview-up,alt-j:preview-down' + --color 'pointer:green,marker:green' +) + +pkg_names=$(yay -Slqa | fzf "${fzf_args[@]}") + +if [[ -n "$pkg_names" ]]; then + # Convert newline-separated selections to space-separated for yay + echo "$pkg_names" | tr '\n' ' ' | xargs yay -Sy --noconfirm + sudo updatedb + omarchy-show-done +fi diff --git a/bin/omarchy-pkg-install b/bin/omarchy-pkg-install index 04f8d0d4..7f861063 100755 --- a/bin/omarchy-pkg-install +++ b/bin/omarchy-pkg-install @@ -1,18 +1,25 @@ #!/bin/bash +set -e + fzf_args=( --multi - --preview 'echo "alt-p: toggle description, alt-j/k: scroll, F11: maximize"; echo; yay -Sii {1}' + --preview 'pacman -Sii {1}' + --preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize' + --preview-label-pos='bottom' --preview-window 'down:65%:wrap' --bind 'alt-p:toggle-preview' --bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up' --bind 'alt-k:preview-up,alt-j:preview-down' + --color 'pointer:green,marker:green' ) -pkg_name=$(yay -Slq | fzf "${fzf_args[@]}") +sudo pacman -Sy +pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}") -if [[ -n "$pkg_name" ]]; then - yay -Sy --noconfirm "$pkg_name" +if [[ -n "$pkg_names" ]]; then + # Convert newline-separated selections to space-separated for yay + echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Sy --noconfirm sudo updatedb omarchy-show-done fi diff --git a/bin/omarchy-pkg-remove b/bin/omarchy-pkg-remove index 67169f2a..5408aa9b 100755 --- a/bin/omarchy-pkg-remove +++ b/bin/omarchy-pkg-remove @@ -2,17 +2,21 @@ fzf_args=( --multi - --preview 'echo "alt-p: toggle description, alt-j/k: scroll, F11: maximize"; echo; yay -Qi {1}' + --preview 'yay -Qi {1}' + --preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize' + --preview-label-pos='bottom' --preview-window 'down:65%:wrap' --bind 'alt-p:toggle-preview' --bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up' --bind 'alt-k:preview-up,alt-j:preview-down' + --color 'pointer:red,marker:red' ) -pkg_name=$(yay -Qqe | fzf "${fzf_args[@]}") +pkg_names=$(yay -Qqe | fzf "${fzf_args[@]}") -if [[ -n "$pkg_name" ]]; then - yay -Rns --noconfirm "$pkg_name" +if [[ -n "$pkg_names" ]]; then + # Convert newline-separated selections to space-separated for yay + echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Rns --noconfirm sudo updatedb omarchy-show-done fi diff --git a/bin/omarchy-refresh-applications b/bin/omarchy-refresh-applications index 429cbb82..c0f2bb00 100755 --- a/bin/omarchy-refresh-applications +++ b/bin/omarchy-refresh-applications @@ -10,9 +10,4 @@ mkdir -p ~/.local/share/applications cp ~/.local/share/omarchy/applications/*.desktop ~/.local/share/applications/ cp ~/.local/share/omarchy/applications/hidden/*.desktop ~/.local/share/applications/ -# Only copy xtras if user is not in bare mode -if [[ ! -f ~/.local/state/omarchy/bare.mode ]] && [ -z "$OMARCHY_BARE" ]; then - cp ~/.local/share/omarchy/applications/xtras/*.desktop ~/.local/share/applications/ -fi - update-desktop-database ~/.local/share/applications diff --git a/bin/omarchy-refresh-plymouth b/bin/omarchy-refresh-plymouth index deb28529..81166037 100755 --- a/bin/omarchy-refresh-plymouth +++ b/bin/omarchy-refresh-plymouth @@ -1,6 +1,6 @@ #!/bin/bash -if [[ "$1" == "-y" ]] || gum confirm "Refresh Plymouth theme? This will replace your current startup screen with Omarchy defaults."; then +if [[ "$1" == "-y" ]]; then sudo cp ~/.local/share/omarchy/default/plymouth/* /usr/share/plymouth/themes/omarchy/ sudo plymouth-set-default-theme -R omarchy fi diff --git a/bin/omarchy-reset-sudo b/bin/omarchy-reset-sudo new file mode 100755 index 00000000..18294965 --- /dev/null +++ b/bin/omarchy-reset-sudo @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "Resetting sudo lockout for user: $USER" +su -c "faillock --reset --user $USER" diff --git a/bin/omarchy-restart-walker b/bin/omarchy-restart-walker index 2d4aa4b8..ae165b39 100755 --- a/bin/omarchy-restart-walker +++ b/bin/omarchy-restart-walker @@ -1,4 +1,7 @@ #!/bin/bash pkill walker -setsid uwsm app -- walker --gapplication-service & +# FIXME: Reenable the walker service once the memory leak has been fixed +# See https://github.com/basecamp/omarchy/issues/698 +# setsid uwsm app -- walker --gapplication-service & +echo # Always end in success so we don't terminate further running diff --git a/bin/omarchy-setup-dns b/bin/omarchy-setup-dns new file mode 100755 index 00000000..119ab40b --- /dev/null +++ b/bin/omarchy-setup-dns @@ -0,0 +1,89 @@ +#!/bin/bash + +if [[ -z $1 ]]; then + dns=$(gum choose --height 5 --header "Select DNS provider" Cloudflare DHCP Custom) +else + dns=$1 +fi + +case "$dns" in +Cloudflare) + sudo tee /etc/systemd/resolved.conf >/dev/null <<'EOF' +[Resolve] +DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com +FallbackDNS=9.9.9.9 149.112.112.112 +DNSOverTLS=opportunistic +EOF + + # Ensure network interfaces don't override our DNS settings + for file in /etc/systemd/network/*.network; do + [[ -f "$file" ]] || continue + if ! grep -q "^\[DHCPv4\]" "$file"; then continue; fi + + # Add UseDNS=no to DHCPv4 section if not present + if ! sed -n '/^\[DHCPv4\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then + sudo sed -i '/^\[DHCPv4\]/a UseDNS=no' "$file" + fi + + # Add UseDNS=no to IPv6AcceptRA section if present + if grep -q "^\[IPv6AcceptRA\]" "$file" && ! sed -n '/^\[IPv6AcceptRA\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then + sudo sed -i '/^\[IPv6AcceptRA\]/a UseDNS=no' "$file" + fi + done + + sudo systemctl restart systemd-networkd systemd-resolved + ;; + +DHCP) + sudo tee /etc/systemd/resolved.conf >/dev/null <<'EOF' +[Resolve] +DNS= +FallbackDNS= +DNSOverTLS=no +EOF + + # Allow network interfaces to use DHCP DNS + for file in /etc/systemd/network/*.network; do + [[ -f "$file" ]] || continue + sudo sed -i '/^UseDNS=no/d' "$file" + done + + sudo systemctl restart systemd-networkd systemd-resolved + ;; + +Custom) + echo "Enter your DNS servers (space-separated, e.g. '192.168.1.1 1.1.1.1'):" + read -r dns_servers + + if [[ -z "$dns_servers" ]]; then + echo "Error: No DNS servers provided." + exit 1 + fi + + sudo tee /etc/systemd/resolved.conf >/dev/null </dev/null) if [ -z "$tokens" ]; then - echo -e "\e[31m\nNo fido2 device detected. Plug it in, you may have to unlock it as well\e[0m" - else - # Create the pamu2fcfg file - if [ ! -f /etc/fido2/fido2 ]; then - sudo mkdir -p /etc/fido2 - echo -e "\e[32m\nLet's setup your device by confirming on the device now.\e[0m" - pamu2fcfg >/tmp/fido2 # This needs to run as the user - if [ $? -ne 0 ]; then - echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m" - exit 1 - fi + print_error "\nNo FIDO2 device detected. Please plug it in (you may need to unlock it as well)." + return 1 + fi + return 0 +} + +setup_pam_config() { + # Configure sudo + if ! grep -q pam_u2f.so /etc/pam.d/sudo; then + print_info "Configuring sudo for FIDO2 authentication..." + sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo + fi + + # Configure polkit + if [ -f /etc/pam.d/polkit-1 ] && ! grep -q 'pam_u2f.so' /etc/pam.d/polkit-1; then + print_info "Configuring polkit for FIDO2 authentication..." + sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/polkit-1 + elif [ ! -f /etc/pam.d/polkit-1 ]; then + print_info "Creating polkit configuration with FIDO2 authentication..." + sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF' +auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2 +auth required pam_unix.so + +account required pam_unix.so +password required pam_unix.so +session required pam_unix.so +EOF + fi +} + +remove_pam_config() { + # Remove from sudo + if grep -q pam_u2f.so /etc/pam.d/sudo; then + print_info "Removing FIDO2 authentication from sudo..." + sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/sudo + fi + + # Remove from polkit + if [ -f /etc/pam.d/polkit-1 ] && grep -Fq 'pam_u2f.so' /etc/pam.d/polkit-1; then + print_info "Removing FIDO2 authentication from polkit..." + sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/polkit-1 + fi +} + +if [[ "--remove" == "$1" ]]; then + print_success "Removing FIDO2 device from authentication.\n" + + # Remove PAM configuration + remove_pam_config + + # Remove FIDO2 configuration + if [ -d /etc/fido2 ]; then + print_info "Removing FIDO2 configuration..." + sudo rm -rf /etc/fido2 + fi + + # Uninstall packages + print_info "Removing FIDO2 packages..." + sudo pacman -Rns --noconfirm libfido2 pam-u2f + + print_success "FIDO2 authentication has been completely removed." +else + print_success "Setting up FIDO2 device for authentication.\n" + + # Install required packages + print_info "Installing required packages..." + sudo pacman -S --noconfirm --needed libfido2 pam-u2f + + if ! check_fido2_hardware; then + exit 1 + fi + + # Create the pamu2fcfg file + if [ ! -f /etc/fido2/fido2 ]; then + sudo mkdir -p /etc/fido2 + print_success "\nLet's setup your device by confirming on the device now." + print_info "Touch your FIDO2 key when it lights up...\n" + + if pamu2fcfg >/tmp/fido2; then sudo mv /tmp/fido2 /etc/fido2/fido2 + print_success "FIDO2 device registered successfully!" + else + print_error "\nFIDO2 registration failed. Please try again." + exit 1 fi + else + print_info "FIDO2 device already registered." + fi - # Add fido2 auth as an option for sudo - if ! grep -q pam_u2f.so /etc/pam.d/sudo; then - sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo - fi + # Configure PAM + setup_pam_config - if ! sudo echo -e "\e[32m\nPerfect! Now you can use your fido2 device for sudo.\e[0m"; then - echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m" - fi + # Test with sudo + print_info "\nTesting FIDO2 authentication with sudo..." + print_info "Touch your FIDO2 key when prompted.\n" + + if sudo echo "FIDO2 authentication test successful"; then + print_success "\nPerfect! FIDO2 authentication is now configured." + print_info "You can use your FIDO2 key for sudo and polkit authentication." + else + print_error "\nVerification failed. You may want to check your configuration." fi fi diff --git a/bin/omarchy-setup-fingerprint b/bin/omarchy-setup-fingerprint index b1f29d84..422fb1e4 100755 --- a/bin/omarchy-setup-fingerprint +++ b/bin/omarchy-setup-fingerprint @@ -1,45 +1,112 @@ #!/bin/bash -if [[ "--remove" == "$1" ]]; then - echo -e "\e[32mLet's remove your fingerprint scanner from authentication.\n\e[0m" - yay -Rns --noconfirm fprintd - sudo rm -rf /etc/pam.d/polkit-1 - sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo - echo -e "\e[32mYou've successfully removed the fingerprint setup.\e[0m" -else - echo -e "\e[32mLet's setup your fingerprint scanner for authentication.\n\e[0m" - yay -S --noconfirm --needed fprintd usbutils +set -e - if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix'; then - echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m" - else - # Add fingerprint authentication as an option for sudo - if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then - sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo - fi +GREEN='\033[0;32m' +RED='\033[0;31m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color - # Add fingerprint authentication as an option for hyprpolkitagent - if [ ! -f /etc/pam.d/polkit-1 ] || ! grep -q pam_fprintd.so /etc/pam.d/polkit-1; then - sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF' +print_success() { + echo -e "${GREEN}$1${NC}" +} + +print_error() { + echo -e "${RED}$1${NC}" +} + +print_info() { + echo -e "${YELLOW}$1${NC}" +} + +check_fingerprint_hardware() { + if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity'; then + print_error "\nNo fingerprint sensor detected." + return 1 + fi + return 0 +} + +setup_pam_config() { + # Configure sudo + if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then + print_info "Configuring sudo for fingerprint authentication..." + sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo + fi + + # Configure polkit + if [ -f /etc/pam.d/polkit-1 ] && ! grep -q 'pam_fprintd.so' /etc/pam.d/polkit-1; then + print_info "Configuring polkit for fingerprint authentication..." + sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/polkit-1 + elif [ ! -f /etc/pam.d/polkit-1 ]; then + print_info "Creating polkit configuration with fingerprint authentication..." + sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF' +auth sufficient pam_fprintd.so auth required pam_unix.so -auth optional pam_fprintd.so account required pam_unix.so password required pam_unix.so session required pam_unix.so EOF - fi + fi +} - # Enroll the first finger - echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m" - sudo fprintd-enroll $USER +remove_pam_config() { + # Remove from sudo + if grep -q pam_fprintd.so /etc/pam.d/sudo; then + print_info "Removing fingerprint authentication from sudo..." + sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo + fi - echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n" + # Remove from polkit + if [ -f /etc/pam.d/polkit-1 ] && grep -Fq 'pam_fprintd.so' /etc/pam.d/polkit-1; then + print_info "Removing fingerprint authentication from polkit..." + sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/polkit-1 + fi +} +if [[ "--remove" == "$1" ]]; then + print_success "Removing fingerprint scanner from authentication.\n" + + # Remove PAM configuration + remove_pam_config + + # Uninstall packages + print_info "Removing fingerprint packages..." + sudo pacman -Rns --noconfirm fprintd + + print_success "Fingerprint authentication has been completely removed." +else + print_success "Setting up fingerprint scanner for authentication.\n" + + # Install required packages + print_info "Installing required packages..." + sudo pacman -S --noconfirm --needed fprintd usbutils + + if ! check_fingerprint_hardware; then + exit 1 + fi + + # Configure PAM + setup_pam_config + + # Enroll first fingerprint + print_success "\nLet's setup your right index finger as the first fingerprint." + print_info "Keep moving the finger around on sensor until the process completes.\n" + + if sudo fprintd-enroll "$USER"; then + print_success "\nFingerprint enrolled successfully!" + + # Verify + print_info "\nNow let's verify that it's working correctly.\n" if fprintd-verify; then - echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m" + print_success "\nPerfect! Fingerprint authentication is now configured." + print_info "You can use your fingerprint for sudo, polkit, and lock screen (Super + Escape)." else - echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m" + print_error "\nVerification failed. You may want to try enrolling again." fi + else + print_error "\nEnrollment failed. Please try again." + exit 1 fi fi diff --git a/bin/omarchy-snapshot b/bin/omarchy-snapshot new file mode 100755 index 00000000..b4d78f11 --- /dev/null +++ b/bin/omarchy-snapshot @@ -0,0 +1,26 @@ +#!/bin/bash + +COMMAND="$1" +OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/omarchy} + +if [[ -z $COMMAND ]]; then + echo "Usage: omarchy-snapshot " >&2 + exit 1 +fi + +if ! command -v snapper &>/dev/null; then + exit 127 # omarchy-update can use this to just ignore if snapper is not available +fi + +case "$COMMAND" in +create) + DESC="$(omarchy-version)" + + for config in root home; do + sudo snapper -c "$config" create -c number -d "$DESC" + done + ;; +restore) + sudo limine-snapper-restore + ;; +esac diff --git a/bin/omarchy-theme-set b/bin/omarchy-theme-set index 94221af8..eeb5009c 100755 --- a/bin/omarchy-theme-set +++ b/bin/omarchy-theme-set @@ -39,6 +39,22 @@ else gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue" fi +# Change Chromium colors +if command -v chromium &>/dev/null; then + if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then + chromium --no-startup-window --set-color-scheme="light" + else + chromium --no-startup-window --set-color-scheme="dark" + fi + + if [[ -f ~/.config/omarchy/current/theme/chromium.theme ]]; then + chromium --no-startup-window --set-theme-color="$(<~/.config/omarchy/current/theme/chromium.theme)" + else + # Use a default, neutral grey if theme doesn't have a color + chromium --no-startup-window --set-theme-color="28,32,39" + fi +fi + # Trigger alacritty config reload touch "$HOME/.config/alacritty/alacritty.toml" diff --git a/bin/omarchy-toggle-screensaver b/bin/omarchy-toggle-screensaver new file mode 100755 index 00000000..2edd4010 --- /dev/null +++ b/bin/omarchy-toggle-screensaver @@ -0,0 +1,12 @@ +#!/bin/bash + +STATE_FILE=~/.local/state/omarchy/toggles/screensaver-off + +if [[ -f $STATE_FILE ]]; then + rm -f $STATE_FILE + notify-send "󱄄 Screensaver enabled" +else + mkdir -p "$(dirname $STATE_FILE)" + touch $STATE_FILE + notify-send "󱄄 Screensaver disabled" +fi diff --git a/bin/omarchy-toggle-waybar b/bin/omarchy-toggle-waybar new file mode 100755 index 00000000..9714185f --- /dev/null +++ b/bin/omarchy-toggle-waybar @@ -0,0 +1,7 @@ +#!/bin/bash + +if pgrep -x waybar >/dev/null; then + pkill -x waybar +else + uwsm app -- waybar >/dev/null 2>&1 & +fi diff --git a/bin/omarchy-tui-install b/bin/omarchy-tui-install new file mode 100755 index 00000000..a15d364c --- /dev/null +++ b/bin/omarchy-tui-install @@ -0,0 +1,54 @@ +#!/bin/bash + +if [ "$#" -ne 4 ]; then + 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_EXEC=$(gum input --prompt "Launch Command> " --placeholder "lazydocker or bash -c 'dust; read -n 1 -s'") + WINDOW_STYLE=$(gum choose --header "Window style" float tile) + ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)") +else + APP_NAME="$1" + APP_EXEC="$2" + WINDOW_STYLE="$3" + ICON_URL="$4" +fi + +if [[ -z "$APP_NAME" || -z "$APP_EXEC" || -z "$ICON_URL" ]]; then + echo "You must set app name, app command, and icon URL!" + exit 1 +fi + +ICON_DIR="$HOME/.local/share/applications/icons" +DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop" +ICON_PATH="$ICON_DIR/$APP_NAME.png" + +mkdir -p "$ICON_DIR" + +if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then + echo "Error: Failed to download icon." + return 1 +fi + +if [[ $WINDOW_STYLE == "float" ]]; then + APP_CLASS="TUI.float" +else + APP_CLASS="TUI.tile" +fi + +cat >"$DESKTOP_FILE" </dev/null; then +if ! git -C "$OMARCHY_PATH" ls-remote &>/dev/null; then echo "Error: Unable to reach remote repository." exit 1 fi -latest_tag=$(git -C "$omarchy_path" ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1) -current_tag=$(git -C "$omarchy_path" describe --tags $(git -C "$omarchy_path" rev-list --tags --max-count=1)) +latest_tag=$(git -C "$OMARCHY_PATH" ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1) +current_tag=$(git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1)) if [[ "$current_tag" != "$latest_tag" ]]; then echo "Omarchy update available ($latest_tag)" diff --git a/bin/omarchy-update-restart b/bin/omarchy-update-restart index 5d8dec0d..513cf80b 100755 --- a/bin/omarchy-update-restart +++ b/bin/omarchy-update-restart @@ -1,9 +1,21 @@ #!/bin/bash if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then - gum confirm "New Linux kernel requires reboot. Ready?" && omarchy-state clear re*-required && sudo reboot now + gum confirm "Linux kernel has been updated. Reboot?" && omarchy-state clear re*-required && sudo reboot now + elif [ -f "$HOME/.local/state/omarchy/reboot-required" ]; then gum confirm "Updates require reboot. Ready?" && omarchy-state clear re*-required && sudo reboot now + elif [ -f "$HOME/.local/state/omarchy/relaunch-required" ]; then - gum confirm "Updates require Hyprland relaunch. Ready?" && omarchy-state clear relaunch-required && uwsm stop + gum confirm "Updates require Hyprland relaunch. Ready?" && omarchy-state clear re*-required && uwsm stop fi + +for file in "$HOME"/.local/state/omarchy/restart-*-required; do + if [ -f "$file" ]; then + filename=$(basename "$file") + service=$(echo "$filename" | sed 's/restart-\(.*\)-required/\1/') + echo "Restarting $service" + omarchy-state clear "$filename" + omarchy-restart-"$service" + fi +done diff --git a/bin/omarchy-update-system-pkgs b/bin/omarchy-update-system-pkgs index fec84a42..e3a12fa5 100755 --- a/bin/omarchy-update-system-pkgs +++ b/bin/omarchy-update-system-pkgs @@ -1,5 +1,23 @@ #!/bin/bash echo -e "\e[32m\nUpdate system packages\e[0m" -yay -Syu --noconfirm --ignore uwsm +sudo pacman -Syu --noconfirm echo + +if omarchy-pkg-aur-accessible; then + echo -e "\e[32m\nUpdate AUR packages\e[0m" + yay -Syu --noconfirm + echo +else + echo -e "\e[31m\nAUR is unavailable (so skipping updates)\e[0m" + echo +fi + +orphans=$(pacman -Qtdq) +if [[ -n $orphans ]]; then + echo -e "\e[32m\nRemove orphan system packages\e[0m" + for pkg in $orphans; do + sudo pacman -Rs --noconfirm "$pkg" || true + done + echo +fi diff --git a/bin/omarchy-webapp-install b/bin/omarchy-webapp-install index b54a881f..a75a3288 100755 --- a/bin/omarchy-webapp-install +++ b/bin/omarchy-webapp-install @@ -32,7 +32,7 @@ cat >"$DESKTOP_FILE" </dev/null -# Use custom branch if instructed -if [[ -n "$OMARCHY_REF" ]]; then +# Use custom branch if instructed, otherwise default to master +OMARCHY_REF="${OMARCHY_REF:-master}" +if [[ $OMARCHY_REF != "master" ]]; then echo -e "\eUsing branch: $OMARCHY_REF" cd ~/.local/share/omarchy git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}" diff --git a/config/brave-flags.conf b/config/brave-flags.conf new file mode 100644 index 00000000..d6d120e6 --- /dev/null +++ b/config/brave-flags.conf @@ -0,0 +1,3 @@ +--ozone-platform=wayland +--ozone-platform-hint=wayland +--enable-features=TouchpadOverscrollHistoryNavigation diff --git a/config/chromium/Default/Preferences b/config/chromium/Default/Preferences new file mode 100644 index 00000000..3b4bc82d --- /dev/null +++ b/config/chromium/Default/Preferences @@ -0,0 +1,15 @@ +{ + "extensions": { + "theme": { + "id": "", + "use_system": false, + "use_custom": false + } + }, + "browser": { + "theme": { + "color_scheme": 2, + "user_color": 2 + } + } +} diff --git a/config/fastfetch/config.jsonc b/config/fastfetch/config.jsonc index f2e4f4a6..18c8cdf9 100644 --- a/config/fastfetch/config.jsonc +++ b/config/fastfetch/config.jsonc @@ -1,9 +1,13 @@ { "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", "logo": { + "type": "file", + "source": "~/.config/omarchy/branding/about.txt", + "color": { "1": "green" }, "padding": { - "top": 5, - "right": 6 + "top": 2, + "right": 6, + "left": 2 } }, "modules": [ @@ -81,9 +85,15 @@ "break", { "type": "command", - "key": "│ ├Ø", + "key": "Ø Omarchy", "keyColor": "blue", - "text": "version=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null); echo \"Omarchy $version\"" + "text": "version=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null); echo \"$version\"" + }, + { + "type": "command", + "key": "│ ├󰸌", + "keyColor": "blue", + "text": "theme=$(omarchy-theme-current); echo -e \"$theme \\e[38m●\\e[37m●\\e[36m●\\e[35m●\\e[34m●\\e[33m●\\e[32m●\\e[31m●\"" }, { "type": "de", diff --git a/config/fcitx5/conf/xcb.conf b/config/fcitx5/conf/xcb.conf new file mode 100644 index 00000000..90f53161 --- /dev/null +++ b/config/fcitx5/conf/xcb.conf @@ -0,0 +1 @@ +Allow Overriding System XKB Settings=False diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf index f4a3ab09..6164ec0a 100644 --- a/config/hypr/bindings.conf +++ b/config/hypr/bindings.conf @@ -1,9 +1,8 @@ # Application bindings $terminal = uwsm app -- alacritty -$browser = uwsm app -- chromium --new-window --ozone-platform=wayland -$webapp = $browser --app +$browser = omarchy-launch-browser -bindd = SUPER, return, Terminal, exec, $terminal +bindd = SUPER, return, Terminal, exec, $terminal --working-directory $(omarchy-cmd-terminal-cwd) bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window bindd = SUPER, B, Browser, exec, $browser bindd = SUPER, M, Music, exec, uwsm app -- spotify @@ -14,15 +13,16 @@ bindd = SUPER, G, Signal, exec, uwsm app -- signal-desktop bindd = SUPER, O, Obsidian, exec, uwsm app -- obsidian -disable-gpu bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password -bindd = SUPER, A, ChatGPT, exec, $webapp="https://chatgpt.com" -bindd = SUPER SHIFT, A, Grok, exec, $webapp="https://grok.com" -bindd = SUPER, C, Calendar, exec, $webapp="https://app.hey.com/calendar/weeks/" -bindd = SUPER, E, Email, exec, $webapp="https://app.hey.com" -bindd = SUPER, Y, YouTube, exec, $webapp="https://youtube.com/" -bindd = SUPER SHIFT, G, WhatsApp, exec, $webapp="https://web.whatsapp.com/" -bindd = SUPER ALT, G, Google Messages, exec, $webapp="https://messages.google.com/web/conversations" -bindd = SUPER, X, X, exec, $webapp="https://x.com/" -bindd = SUPER SHIFT, X, X Post, exec, $webapp="https://x.com/compose/post" +# If your web app url contains #, type it as ## to prevent hyperland treat it as comments +bindd = SUPER, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com" +bindd = SUPER SHIFT, A, Grok, exec, omarchy-launch-webapp "https://grok.com" +bindd = SUPER, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/" +bindd = SUPER, E, Email, exec, omarchy-launch-webapp "https://app.hey.com" +bindd = SUPER, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/" +bindd = SUPER SHIFT, G, WhatsApp, exec, omarchy-launch-webapp "https://web.whatsapp.com/" +bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-webapp "https://messages.google.com/web/conversations" +bindd = SUPER, X, X, exec, omarchy-launch-webapp "https://x.com/" +bindd = SUPER SHIFT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post" # Overwrite existing bindings, like putting Omarchy Menu on Super + Space # unbind = SUPER, Space diff --git a/config/hypr/hypridle.conf b/config/hypr/hypridle.conf index 95a9de61..7b980727 100644 --- a/config/hypr/hypridle.conf +++ b/config/hypr/hypridle.conf @@ -3,13 +3,13 @@ general { before_sleep_cmd = loginctl lock-session # lock before suspend. after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. on_unlock_cmd = omarchy-restart-waybar # prevent stacking of waybar when waking + inhibit_sleep = 3 # wait until screen is locked } -# FIXME: Scrensaver depends on tte being installed -# listener { -# timeout = 150 # 2.5min -# on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already) -# } +listener { + timeout = 150 # 2.5min + on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already) +} listener { timeout = 300 # 5min diff --git a/config/hypr/input.conf b/config/hypr/input.conf index 813ad29e..397ddcf6 100644 --- a/config/hypr/input.conf +++ b/config/hypr/input.conf @@ -2,7 +2,7 @@ # See https://wiki.hypr.land/Configuring/Variables/#input input { # Use multiple keyboard layouts and switch between them with Left Alt + Right Alt - # kb_layout = us,dk + # kb_layout = us,dk,eu kb_options = compose:caps # ,grp:alts_toggle # Change speed of keyboard repeat diff --git a/config/omarchy.ttf b/config/omarchy.ttf new file mode 100644 index 00000000..273256d0 Binary files /dev/null and b/config/omarchy.ttf differ diff --git a/config/starship.toml b/config/starship.toml new file mode 100644 index 00000000..36f15d13 --- /dev/null +++ b/config/starship.toml @@ -0,0 +1,32 @@ +add_newline = true +command_timeout = 200 +format = "[$directory$git_branch$git_status]($style)$character" + +[character] +error_symbol = "[✗](bold cyan)" +success_symbol = "[❯](bold cyan)" + +[directory] +truncation_length = 2 +truncation_symbol = "…/" +repo_root_style = "bold cyan" +repo_root_format = "[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) " + +[git_branch] +format = "[$branch]($style) " +style = "italic cyan" + +[git_status] +format = '[$all_status]($style)' +style = "cyan" +ahead = "⇡${count} " +diverged = "⇕⇡${ahead_count}⇣${behind_count} " +behind = "⇣${count} " +conflicted = " " +up_to_date = " " +untracked = "? " +modified = " " +stashed = "" +staged = "" +renamed = "" +deleted = "" diff --git a/config/uwsm/env b/config/uwsm/env index b86c38b8..fa70e538 100644 --- a/config/uwsm/env +++ b/config/uwsm/env @@ -1,5 +1,6 @@ export OMARCHY_PATH=$HOME/.local/share/omarchy export PATH=$OMARCHY_PATH/bin/:$PATH +export TERMINAL=alacritty if command -v mise &> /dev/null; then eval "$(mise activate bash)" diff --git a/config/walker/config.toml b/config/walker/config.toml index fe1caf7e..cfd79aab 100644 --- a/config/walker/config.toml +++ b/config/walker/config.toml @@ -4,12 +4,14 @@ theme_base = [] theme_location = ["~/.local/share/omarchy/default/walker/themes/"] hotreload_theme = true force_keyboard_focus = true +timeout = 60 [keys.ai] run_last_response = ["ctrl e"] [list] max_entries = 200 +cycle = true [search] placeholder = " Search..." diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index ddbbfeeb..6d35d523 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -4,14 +4,8 @@ "position": "top", "spacing": 0, "height": 26, - "modules-left": [ - "custom/omarchy", - "hyprland/workspaces" - ], - "modules-center": [ - "clock", - "custom/update" - ], + "modules-left": ["custom/omarchy", "hyprland/workspaces"], + "modules-center": ["clock", "custom/update"], "modules-right": [ "group/tray-expander", "bluetooth", @@ -45,7 +39,7 @@ } }, "custom/omarchy": { - "format": "", + "format": "\ue900", "on-click": "omarchy-menu", "tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space" }, @@ -56,6 +50,7 @@ "tooltip-format": "Omarchy update available", "interval": 3600 }, + "cpu": { "interval": 5, "format": "󰍛", @@ -68,11 +63,11 @@ "on-click-right": "omarchy-cmd-tzupdate" }, "network": { - "format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"], - "format" : "{icon}", - "format-wifi" : "{icon}", - "format-ethernet" : "󰀂", - "format-disconnected" : "󰖪", + "format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"], + "format": "{icon}", + "format-wifi": "{icon}", + "format-ethernet": "󰀂", + "format-disconnected": "󰖪", "tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", "tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", "tooltip-format-disconnected": "Disconnected", @@ -83,15 +78,11 @@ "battery": { "format": "{capacity}% {icon}", "format-discharging": "{icon}", - "format-charging": "{icon}", - "format-plugged": "", + "format-charging": "{icon}", + "format-plugged": "", "format-icons": { - "charging": [ - "󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅" - ], - "default": [ - "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹" - ] + "charging": ["󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"], + "default": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] }, "format-full": "󰂅", "tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%", @@ -126,10 +117,7 @@ "transition-duration": 600, "children-class": "tray-group-item" }, - "modules": [ - "custom/expand-icon", - "tray" - ] + "modules": ["custom/expand-icon", "tray"] }, "custom/expand-icon": { "format": " ", diff --git a/config/waybar/style.css b/config/waybar/style.css index 5f790ff0..924e1851 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -36,8 +36,8 @@ #network, #bluetooth, #pulseaudio, -#clock, -#custom-omarchy { +#custom-omarchy, +#custom-update { min-width: 12px; margin: 0 7.5px; } @@ -49,3 +49,15 @@ tooltip { padding: 2px; } + +#custom-update { + font-size: 10px; +} + +#clock { + margin-left: 8.75px; +} + +.hidden { + opacity: 0; +} diff --git a/default/bash/aliases b/default/bash/aliases index 7ec9036e..d92e2ca8 100644 --- a/default/bash/aliases +++ b/default/bash/aliases @@ -11,7 +11,7 @@ zd() { elif [ -d "$1" ]; then builtin cd "$1" else - z "$@" && printf " \U000F17A9 " && pwd || echo "Error: Directory not found" + z "$@" && printf "\U000F17A9 " && pwd || echo "Error: Directory not found" fi } open() { diff --git a/default/bash/functions b/default/bash/functions index 670c77db..84ebf169 100644 --- a/default/bash/functions +++ b/default/bash/functions @@ -31,6 +31,7 @@ format-drive() { sudo parted -s "$1" mklabel gpt sudo parted -s "$1" mkpart primary ext4 1MiB 100% sudo mkfs.ext4 -L "$2" "$([[ $1 == *"nvme"* ]] && echo "${1}p1" || echo "${1}1")" + sudo chmod -R 777 "/run/media/$USER/$2" echo "Drive $1 formatted and labeled '$2'." fi fi @@ -46,7 +47,22 @@ transcode-video-4K() { ffmpeg -i $1 -c:v libx265 -preset slow -crf 24 -c:a aac -b:a 192k ${1%.*}-optimized.mp4 } -# Transcode PNG to JPG image that's great for shrinking wallpapers -transcode-png2jpg() { +# Transcode any image to JPG image that's great for shrinking wallpapers +img2jpg() { magick $1 -quality 95 -strip ${1%.*}.jpg } + +# Transcode any image to JPG image that's great for sharing online without being too big +img2jpg-small() { + magick $1 -resize 1080x\> -quality 95 -strip ${1%.*}.jpg +} + +# Transcode any image to compressed-but-lossless PNG +img2png() { + magick "$1" -strip -define png:compression-filter=5 \ + -define png:compression-level=9 \ + -define png:compression-strategy=1 \ + -define png:exclude-chunk=all \ + "${1%.*}.png" +} + diff --git a/default/bash/init b/default/bash/init index 7e1db9eb..149b16c5 100644 --- a/default/bash/init +++ b/default/bash/init @@ -2,6 +2,10 @@ if command -v mise &> /dev/null; then eval "$(mise activate bash)" fi +if command -v starship &> /dev/null; then + eval "$(starship init bash)" +fi + if command -v zoxide &> /dev/null; then eval "$(zoxide init bash)" fi diff --git a/default/hypr/apps.conf b/default/hypr/apps.conf index 69d04f7d..9833fb69 100644 --- a/default/hypr/apps.conf +++ b/default/hypr/apps.conf @@ -7,3 +7,4 @@ source = ~/.local/share/omarchy/default/hypr/apps/steam.conf source = ~/.local/share/omarchy/default/hypr/apps/system.conf source = ~/.local/share/omarchy/default/hypr/apps/walker.conf source = ~/.local/share/omarchy/default/hypr/apps/1password.conf +source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf diff --git a/default/hypr/apps/chromium.conf b/default/hypr/apps/chromium.conf index af690718..67d94210 100644 --- a/default/hypr/apps/chromium.conf +++ b/default/hypr/apps/chromium.conf @@ -2,5 +2,5 @@ windowrule = tile, class:^(Chromium)$ # Only slight opacity when unfocused -windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$ -windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube +windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable|Brave-browser|brave-browser)$ +windowrule = opacity 1 1, initialTitle:(youtube.com_/|app.zoom.us_/wc/home) diff --git a/default/hypr/apps/jetbrains.conf b/default/hypr/apps/jetbrains.conf new file mode 100644 index 00000000..d13bb16c --- /dev/null +++ b/default/hypr/apps/jetbrains.conf @@ -0,0 +1,10 @@ +# Fixing popup size issue +windowrule = size 50% 50%, class:(.*jetbrains.*)$, title:^$,floating:1 + +# Fix tooltips (always have a title of `win.`) +windowrule = noinitialfocus, class:^(.*jetbrains.*)$, title:^(win.*)$ +windowrule = nofocus, class:^(.*jetbrains.*)$, title:^(win.*)$ + +# Fix tab dragging (always have a single space character as their title) +windowrule = noinitialfocus, class:^(.*jetbrains.*)$, title:^\\s$ +windowrule = nofocus, class:^(.*jetbrains.*)$, title:^\\s$ diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index d7a84540..e5fb33c9 100644 --- a/default/hypr/apps/system.conf +++ b/default/hypr/apps/system.conf @@ -1,15 +1,10 @@ -# Float and center settings and previews -windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ -windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ -windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$ -windowrule = size 620 470, class:Omarchy -windowrule = size 700 520, class:About +# Floating windows +windowrule = float, tag:floating-window +windowrule = center, tag:floating-window +windowrule = size 800 600, tag:floating-window -# Float and center file pickers -windowrule = tag +picker, class:(xdg-desktop-portal-gtk|sublime_text) -windowrule = float, tag:picker, title:^(Open.*Files?|Save.*Files?|All Files|Save) -windowrule = center, tag:picker, title:^(Open.*Files?|Save.*Files?|All Files|Save) -windowrule = size 800 600, tag:picker +windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float) +windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors), title:^(Open.*Files?|Save.*Files?|Save.*As|All Files|Save) # Fullscreen screensaver windowrule = fullscreen, class:Screensaver diff --git a/default/hypr/apps/walker.conf b/default/hypr/apps/walker.conf index 9681c09e..eefd923c 100644 --- a/default/hypr/apps/walker.conf +++ b/default/hypr/apps/walker.conf @@ -1,2 +1,2 @@ -# Application-sepcific animation +# Application-specific animation layerrule = noanim, walker diff --git a/default/hypr/autostart.conf b/default/hypr/autostart.conf index ae9b0845..476cb142 100644 --- a/default/hypr/autostart.conf +++ b/default/hypr/autostart.conf @@ -4,6 +4,6 @@ exec-once = uwsm app -- waybar exec-once = uwsm app -- fcitx5 exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill exec-once = uwsm app -- swayosd-server -exec-once = uwsm app -- walker --gapplication-service exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+' +exec-once = omarchy-cmd-first-run diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index 0f8e77e2..2927eb34 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -9,7 +9,7 @@ bindd = SUPER, T, Top, exec, $terminal -e btop bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker bindd = SUPER, G, Messenger, exec, $messenger bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu -bindd = SUPER, slash, Pasword manager, exec, $passwordManager +bindd = SUPER, slash, Password manager, exec, $passwordManager source = ~/.local/share/omarchy/default/hypr/bindings/media.conf source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf diff --git a/default/hypr/bindings/media.conf b/default/hypr/bindings/media.conf index cb2c1f84..efedbb72 100644 --- a/default/hypr/bindings/media.conf +++ b/default/hypr/bindings/media.conf @@ -9,8 +9,17 @@ bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mu bindeld = ,XF86MonBrightnessUp, Brightness up, exec, $osdclient --brightness raise bindeld = ,XF86MonBrightnessDown, Brightness down, exec, $osdclient --brightness lower +# Precise 1% multimedia adjustments with Alt modifier +bindeld = ALT, XF86AudioRaiseVolume, Volume up precise, exec, $osdclient --output-volume +1 +bindeld = ALT, XF86AudioLowerVolume, Volume down precise, exec, $osdclient --output-volume -1 +bindeld = ALT, XF86MonBrightnessUp, Brightness up precise, exec, $osdclient --brightness +1 +bindeld = ALT, XF86MonBrightnessDown, Brightness down precise, exec, $osdclient --brightness -1 + # Requires playerctl bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous + +# Switch audio output with Super + Mute +bindld = SUPER, XF86AudioMute, Switch audio output, exec, omarchy-cmd-audio-switch diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index 748db35b..caad61a9 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -1,5 +1,6 @@ -# Close window +# Close windows bindd = SUPER, W, Close active window, killactive, +bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-cmd-close-all-windows # Control tiling bindd = SUPER, J, Toggle split, togglesplit, # dwindle @@ -37,6 +38,10 @@ bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8 bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9 bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10 +# Tab between workspaces +bind = SUPER, TAB, workspace, e+1 +bind = SUPER SHIFT, TAB, workspace, e-1 + # 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, right, Swap window to the right, swapwindow, r @@ -45,13 +50,15 @@ bindd = SUPER SHIFT, down, Swap window down, swapwindow, d # Cycle through applications on active workspace bindd = ALT, Tab, Cycle to next window, cyclenext +bindd = ALT SHIFT, Tab, Cycle to prev window, cyclenext, prev bindd = ALT, Tab, Reveal active window on top, bringactivetotop +bindd = ALT SHIFT, Tab, Reveal active window on top, bringactivetotop # Resize active window -bindd = SUPER, minus, Expand window left, resizeactive, -100 0 -bindd = SUPER, equal, Shrink window left, resizeactive, 100 0 -bindd = SUPER SHIFT, minus, Shrink window up, resizeactive, 0 -100 -bindd = SUPER SHIFT, equal, Expand window down, resizeactive, 0 100 +bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key +bindd = SUPER, code:21, Shrink window left, resizeactive, 100 0 # = key +bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100 +bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100 # Scroll through existing workspaces with SUPER + scroll bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1 diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 6263218a..65ccd0d4 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -1,7 +1,9 @@ # Menus bindd = SUPER, SPACE, Launch apps, exec, walker -p "Start…" +bindd = SUPER CTRL, E, Show clipboard, exec, walker -m Emojis bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu bindd = SUPER, ESCAPE, Power menu, exec, omarchy-menu system +bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings # Aesthetics diff --git a/default/systemd/resolved.conf b/default/systemd/resolved.conf deleted file mode 100644 index 5c4adafa..00000000 --- a/default/systemd/resolved.conf +++ /dev/null @@ -1,4 +0,0 @@ -[Resolve] -DNS=1.1.1.1 -FallbackDNS=8.8.8.8 -DNSStubListener=yes diff --git a/default/walker/themes/omarchy-default.css b/default/walker/themes/omarchy-default.css index 5e40ee4d..6e453b6e 100644 --- a/default/walker/themes/omarchy-default.css +++ b/default/walker/themes/omarchy-default.css @@ -1,5 +1,3 @@ -@import url("file://~/.config/omarchy/current/theme/walker.css"); - /* Reset all elements */ #window, #box, @@ -168,3 +166,4 @@ scrollbar { opacity: 0; } +@import url("file://~/.config/omarchy/current/theme/walker.css"); diff --git a/icon.txt b/icon.txt new file mode 100644 index 00000000..bf3ea8f4 --- /dev/null +++ b/icon.txt @@ -0,0 +1,26 @@ +██████████████████████████████████████████████████████ +██████████████████████████████████████████████████████ +████ ████ ████ +████ ████ ████ +████ █████████████████████ ████████ ████ +████ █████████████████████ ████████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████████████ ████ ████ +████████████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ██████████████████████████████████████ ████ +████ ██████████████████████████████████████ ████ +████ ████ ████ +████ ████ ████ +█████████████████████████████ ████████████████████ +█████████████████████████████ ████████████████████ diff --git a/install.sh b/install.sh index f101c34c..95035bac 100755 --- a/install.sh +++ b/install.sh @@ -1,87 +1,72 @@ #!/bin/bash # Exit immediately if a command exits with a non-zero status -set -e +set -eE export PATH="$HOME/.local/share/omarchy/bin:$PATH" OMARCHY_INSTALL=~/.local/share/omarchy/install -# Give people a chance to retry running the installation -catch_errors() { - echo -e "\n\e[31mOmarchy installation failed!\e[0m" - echo "You can retry by running: bash ~/.local/share/omarchy/install.sh" - echo "Get help from the community: https://discord.gg/tXFUdasqhY" -} - -trap catch_errors ERR - -show_logo() { - clear - # tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand} - cat <~/.local/share/omarchy/logo.txt - echo -} - -show_subtext() { - echo "$1" # | tte --frame-rate ${3:-640} ${2:-wipe} - echo -} - -# Install prerequisites +# Preparation +source $OMARCHY_INSTALL/preflight/show-env.sh +source $OMARCHY_INSTALL/preflight/trap-errors.sh source $OMARCHY_INSTALL/preflight/guard.sh -source $OMARCHY_INSTALL/preflight/aur.sh -source $OMARCHY_INSTALL/preflight/presentation.sh +source $OMARCHY_INSTALL/preflight/chroot.sh +source $OMARCHY_INSTALL/preflight/repositories.sh source $OMARCHY_INSTALL/preflight/migrations.sh +source $OMARCHY_INSTALL/preflight/first-run-mode.sh + +# Packaging +source $OMARCHY_INSTALL/packages.sh +source $OMARCHY_INSTALL/packaging/asdcontrol.sh +source $OMARCHY_INSTALL/packaging/fonts.sh +source $OMARCHY_INSTALL/packaging/lazyvim.sh +source $OMARCHY_INSTALL/packaging/webapps.sh +source $OMARCHY_INSTALL/packaging/tuis.sh # Configuration -show_logo beams 240 -show_subtext "Let's install Omarchy! [1/5]" -source $OMARCHY_INSTALL/config/identification.sh source $OMARCHY_INSTALL/config/config.sh -source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh -source $OMARCHY_INSTALL/config/fix-fkeys.sh -source $OMARCHY_INSTALL/config/network.sh -source $OMARCHY_INSTALL/config/power.sh +source $OMARCHY_INSTALL/config/theme.sh +source $OMARCHY_INSTALL/config/branding.sh +source $OMARCHY_INSTALL/config/git.sh +source $OMARCHY_INSTALL/config/gpg.sh source $OMARCHY_INSTALL/config/timezones.sh -source $OMARCHY_INSTALL/config/login.sh -source $OMARCHY_INSTALL/config/nvidia.sh +source $OMARCHY_INSTALL/config/increase-sudo-tries.sh +source $OMARCHY_INSTALL/config/increase-lockout-limit.sh +source $OMARCHY_INSTALL/config/ssh-flakiness.sh +source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh +source $OMARCHY_INSTALL/config/xcompose.sh +source $OMARCHY_INSTALL/config/mise-ruby.sh +source $OMARCHY_INSTALL/config/docker.sh +source $OMARCHY_INSTALL/config/mimetypes.sh +source $OMARCHY_INSTALL/config/hardware/network.sh +source $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh +source $OMARCHY_INSTALL/config/hardware/bluetooth.sh +source $OMARCHY_INSTALL/config/hardware/printer.sh +source $OMARCHY_INSTALL/config/hardware/usb-autosuspend.sh +source $OMARCHY_INSTALL/config/hardware/ignore-power-button.sh +source $OMARCHY_INSTALL/config/hardware/nvidia.sh -# Development -show_logo decrypt 920 -show_subtext "Installing terminal tools [2/5]" -source $OMARCHY_INSTALL/development/terminal.sh -source $OMARCHY_INSTALL/development/development.sh -source $OMARCHY_INSTALL/development/nvim.sh -source $OMARCHY_INSTALL/development/ruby.sh -source $OMARCHY_INSTALL/development/docker.sh -source $OMARCHY_INSTALL/development/firewall.sh - -# Desktop -show_logo slice 60 -show_subtext "Installing desktop tools [3/5]" -source $OMARCHY_INSTALL/desktop/desktop.sh -source $OMARCHY_INSTALL/desktop/hyprlandia.sh -source $OMARCHY_INSTALL/desktop/theme.sh -source $OMARCHY_INSTALL/desktop/bluetooth.sh -source $OMARCHY_INSTALL/desktop/asdcontrol.sh -source $OMARCHY_INSTALL/desktop/fonts.sh -source $OMARCHY_INSTALL/desktop/printer.sh - -# Apps -show_logo expand -show_subtext "Installing default applications [4/5]" -source $OMARCHY_INSTALL/apps/webapps.sh -source $OMARCHY_INSTALL/apps/xtras.sh -source $OMARCHY_INSTALL/apps/mimetypes.sh +# Login +source $OMARCHY_INSTALL/login/plymouth.sh +source $OMARCHY_INSTALL/login/limine-snapper.sh +source $OMARCHY_INSTALL/login/alt-bootloaders.sh # Updates -show_logo highlight -show_subtext "Updating system packages [5/5]" sudo updatedb -yay -Syu --noconfirm --ignore uwsm + +# Update system packages +sudo pacman -Syu --noconfirm # Reboot -show_logo laseretch 920 -show_subtext "You're done! So we'll be rebooting now..." -sleep 2 +clear +tte -i ~/.local/share/omarchy/logo.txt --frame-rate 920 laseretch +echo +echo "You're done! So we're ready to reboot now..." | tte --frame-rate 640 wipe + +if sudo test -f /etc/sudoers.d/99-omarchy-installer; then + sudo rm -f /etc/sudoers.d/99-omarchy-installer &>/dev/null + echo -e "\nRemember to remove USB installer!\n\n" +fi + +sleep 5 reboot diff --git a/install/apps/webapps.sh b/install/apps/webapps.sh deleted file mode 100644 index b979dbfe..00000000 --- a/install/apps/webapps.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -if [ -z "$OMARCHY_BARE" ]; then - omarchy-webapp-install "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png - omarchy-webapp-install "Basecamp" https://launchpad.37signals.com https://basecamp.com/assets/images/general/basecamp.png - omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png - omarchy-webapp-install "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png - omarchy-webapp-install "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png - omarchy-webapp-install "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png - omarchy-webapp-install "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png - omarchy-webapp-install "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png - omarchy-webapp-install "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png - omarchy-webapp-install "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png - omarchy-webapp-install "Figma" https://figma.com/ https://www.veryicon.com/download/png/application/app-icon-7/figma-1?s=256 - omarchy-webapp-install "Discord" https://discord.com/channels/@me https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/discord.png -fi diff --git a/install/apps/xtras.sh b/install/apps/xtras.sh deleted file mode 100644 index 19ecdd13..00000000 --- a/install/apps/xtras.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -if [ -z "$OMARCHY_BARE" ]; then - yay -S --noconfirm --needed \ - gnome-calculator gnome-keyring signal-desktop \ - obsidian-bin libreoffice obs-studio kdenlive \ - xournalpp localsend-bin - - # Packages known to be flaky or having key signing issues are run one-by-one - for pkg in pinta typora spotify zoom; do - yay -S --noconfirm --needed "$pkg" || - echo -e "\e[31mFailed to install $pkg. Continuing without!\e[0m" - done - - yay -S --noconfirm --needed 1password-beta 1password-cli || - echo -e "\e[31mFailed to install 1password. Continuing without!\e[0m" -fi - -# Copy over Omarchy applications -source omarchy-refresh-applications || true diff --git a/install/config/branding.sh b/install/config/branding.sh new file mode 100755 index 00000000..6e14fc2d --- /dev/null +++ b/install/config/branding.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# Allow the user to change the branding for fastfetch and screensaver +mkdir -p ~/.config/omarchy/branding +cp ~/.local/share/omarchy/icon.txt ~/.config/omarchy/branding/about.txt +cp ~/.local/share/omarchy/logo.txt ~/.config/omarchy/branding/screensaver.txt diff --git a/install/config/config.sh b/install/config/config.sh old mode 100644 new mode 100755 index 2f420e8d..75e694b9 --- a/install/config/config.sh +++ b/install/config/config.sh @@ -1,59 +1,8 @@ #!/bin/bash # Copy over Omarchy configs +mkdir -p ~/.config cp -R ~/.local/share/omarchy/config/* ~/.config/ # Use default bashrc from Omarchy cp ~/.local/share/omarchy/default/bashrc ~/.bashrc - -# Ensure application directory exists for update-desktop-database -mkdir -p ~/.local/share/applications - -# If bare install, allow a way for its exclusions to not get added in updates -if [ -n "$OMARCHY_BARE" ]; then - mkdir -p ~/.local/state/omarchy - touch ~/.local/state/omarchy/bare.mode -fi - -# Setup GPG configuration with multiple keyservers for better reliability -sudo mkdir -p /etc/gnupg -sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/ -sudo chmod 644 /etc/gnupg/dirmngr.conf -sudo gpgconf --kill dirmngr || true -sudo gpgconf --launch dirmngr || true - -# Increase lockout limit to 10 and decrease timeout to 2 minutes -sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth" -sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth" - -# Set Cloudflare as primary DNS (with Google as backup) -sudo cp ~/.local/share/omarchy/default/systemd/resolved.conf /etc/systemd/ - -# Solve common flakiness with SSH -echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf - -# Set common git aliases -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.st status -git config --global pull.rebase true -git config --global init.defaultBranch master - -# Set identification from install inputs -if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then - git config --global user.name "$OMARCHY_USER_NAME" -fi - -if [[ -n "${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then - git config --global user.email "$OMARCHY_USER_EMAIL" -fi - -# Set default XCompose that is triggered with CapsLock -tee ~/.XCompose >/dev/null < : "$OMARCHY_USER_NAME" - : "$OMARCHY_USER_EMAIL" -EOF diff --git a/install/config/detect-keyboard-layout.sh b/install/config/detect-keyboard-layout.sh index d80c8af7..fcee66bd 100755 --- a/install/config/detect-keyboard-layout.sh +++ b/install/config/detect-keyboard-layout.sh @@ -1,5 +1,6 @@ #!/bin/bash +# Copy over the keyboard layout that's been set in Arch during install to Hyprland conf="/etc/vconsole.conf" hyprconf="$HOME/.config/hypr/hyprland.conf" diff --git a/install/config/docker.sh b/install/config/docker.sh new file mode 100755 index 00000000..6a715a73 --- /dev/null +++ b/install/config/docker.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Configure Docker daemon: +# - limit log size to avoid running out of disk +# - use host's DNS resolver +sudo mkdir -p /etc/docker +sudo tee /etc/docker/daemon.json >/dev/null <<'EOF' +{ + "log-driver": "json-file", + "log-opts": { "max-size": "10m", "max-file": "5" }, + "dns": ["172.17.0.1"], + "bip": "172.17.0.1/16" +} +EOF + +# Expose systemd-resolved to our Docker network +sudo mkdir -p /etc/systemd/resolved.conf.d +echo -e '[Resolve]\nDNSStubListenerExtra=172.17.0.1' | sudo tee /etc/systemd/resolved.conf.d/20-docker-dns.conf >/dev/null +sudo systemctl restart systemd-resolved + +# Start Docker automatically +sudo systemctl enable docker + +# Give this user privileged Docker access +sudo usermod -aG docker ${USER} + +# Prevent Docker from preventing boot for network-online.target +sudo mkdir -p /etc/systemd/system/docker.service.d +sudo tee /etc/systemd/system/docker.service.d/no-block-boot.conf <<'EOF' +[Unit] +DefaultDependencies=no +EOF + +sudo systemctl daemon-reload diff --git a/install/config/git.sh b/install/config/git.sh new file mode 100755 index 00000000..54bb4bdc --- /dev/null +++ b/install/config/git.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Set common git aliases +git config --global alias.co checkout +git config --global alias.br branch +git config --global alias.ci commit +git config --global alias.st status +git config --global pull.rebase true +git config --global init.defaultBranch master + +# Set identification from install inputs +if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then + git config --global user.name "$OMARCHY_USER_NAME" +fi + +if [[ -n "${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then + git config --global user.email "$OMARCHY_USER_EMAIL" +fi diff --git a/install/config/gpg.sh b/install/config/gpg.sh new file mode 100755 index 00000000..174c5641 --- /dev/null +++ b/install/config/gpg.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Setup GPG configuration with multiple keyservers for better reliability +sudo mkdir -p /etc/gnupg +sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/ +sudo chmod 644 /etc/gnupg/dirmngr.conf +sudo gpgconf --kill dirmngr || true +sudo gpgconf --launch dirmngr || true diff --git a/install/config/hardware/bluetooth.sh b/install/config/hardware/bluetooth.sh new file mode 100755 index 00000000..e2c7cd78 --- /dev/null +++ b/install/config/hardware/bluetooth.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Turn on bluetooth by default +chrootable_systemctl_enable bluetooth.service diff --git a/install/config/fix-fkeys.sh b/install/config/hardware/fix-fkeys.sh old mode 100644 new mode 100755 similarity index 62% rename from install/config/fix-fkeys.sh rename to install/config/hardware/fix-fkeys.sh index 1ae71c5b..b652cbf3 --- a/install/config/fix-fkeys.sh +++ b/install/config/hardware/fix-fkeys.sh @@ -1,8 +1,6 @@ #!/bin/bash +# Ensure that F-keys on Apple-like keyboards (such as Lofree Flow84) are always F-keys if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf - - # Rely on install/login.sh to do the rebuild - # sudo mkinitcpio -P fi diff --git a/install/config/hardware/ignore-power-button.sh b/install/config/hardware/ignore-power-button.sh new file mode 100755 index 00000000..4166b9b3 --- /dev/null +++ b/install/config/hardware/ignore-power-button.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Disable shutting system down on power button to bind it to power menu afterwards +sudo sed -i 's/.*HandlePowerKey=.*/HandlePowerKey=ignore/' /etc/systemd/logind.conf + diff --git a/install/config/network.sh b/install/config/hardware/network.sh old mode 100644 new mode 100755 similarity index 80% rename from install/config/network.sh rename to install/config/hardware/network.sh index c7ef33c4..70138838 --- a/install/config/network.sh +++ b/install/config/hardware/network.sh @@ -3,8 +3,8 @@ # Install iwd explicitly if it wasn't included in archinstall # This can happen if archinstall used ethernet if ! command -v iwctl &>/dev/null; then - yay -S --noconfirm --needed iwd - sudo systemctl enable --now iwd.service + sudo pacman -S --noconfirm --needed iwd + chrootable_systemctl_enable iwd.service fi # Prevent systemd-networkd-wait-online timeout on boot diff --git a/install/config/nvidia.sh b/install/config/hardware/nvidia.sh old mode 100644 new mode 100755 similarity index 96% rename from install/config/nvidia.sh rename to install/config/hardware/nvidia.sh index e3a475a4..6623de60 --- a/install/config/nvidia.sh +++ b/install/config/hardware/nvidia.sh @@ -12,9 +12,6 @@ # --- GPU Detection --- if [ -n "$(lspci | grep -i 'nvidia')" ]; then - show_logo - show_subtext "Install NVIDIA drivers..." - # --- 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 @@ -53,7 +50,7 @@ if [ -n "$(lspci | grep -i 'nvidia')" ]; then "qt6-wayland" ) - yay -S --needed --noconfirm "${PACKAGES_TO_INSTALL[@]}" + sudo pacman -S --needed --noconfirm "${PACKAGES_TO_INSTALL[@]}" # Configure modprobe for early KMS echo "options nvidia_drm modeset=1" | sudo tee /etc/modprobe.d/nvidia.conf >/dev/null diff --git a/install/desktop/printer.sh b/install/config/hardware/printer.sh old mode 100644 new mode 100755 similarity index 65% rename from install/desktop/printer.sh rename to install/config/hardware/printer.sh index ec379a82..5a752b2d --- a/install/desktop/printer.sh +++ b/install/config/hardware/printer.sh @@ -1,16 +1,15 @@ #!/bin/bash -sudo pacman -S --noconfirm cups cups-pdf cups-filters cups-browsed system-config-printer avahi nss-mdns -sudo systemctl enable --now cups.service +chrootable_systemctl_enable cups.service # Disable multicast dns in resolved. Avahi will provide this for better network printer discovery sudo mkdir -p /etc/systemd/resolved.conf.d echo -e "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf -sudo systemctl enable --now avahi-daemon.service +chrootable_systemctl_enable avahi-daemon.service # Enable automatically adding remote printers if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf fi -sudo systemctl enable --now cups-browsed.service +chrootable_systemctl_enable cups-browsed.service diff --git a/install/config/hardware/usb-autosuspend.sh b/install/config/hardware/usb-autosuspend.sh new file mode 100755 index 00000000..a7d820ec --- /dev/null +++ b/install/config/hardware/usb-autosuspend.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# Disable USB autosuspend to prevent peripheral disconnection issues +if [[ ! -f /etc/modprobe.d/disable-usb-autosuspend.conf ]]; then + echo "options usbcore autosuspend=-1" | sudo tee /etc/modprobe.d/disable-usb-autosuspend.conf +fi \ No newline at end of file diff --git a/install/config/identification.sh b/install/config/identification.sh deleted file mode 100644 index 94e9d7b1..00000000 --- a/install/config/identification.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ") -export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ") diff --git a/install/config/increase-lockout-limit.sh b/install/config/increase-lockout-limit.sh new file mode 100755 index 00000000..1fdbf7dd --- /dev/null +++ b/install/config/increase-lockout-limit.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Increase lockout limit to 10 and decrease timeout to 2 minutes +sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth" +sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth" diff --git a/install/config/increase-sudo-tries.sh b/install/config/increase-sudo-tries.sh new file mode 100755 index 00000000..cf3d5ca8 --- /dev/null +++ b/install/config/increase-sudo-tries.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# 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 +sudo chmod 440 /etc/sudoers.d/passwd-tries diff --git a/install/apps/mimetypes.sh b/install/config/mimetypes.sh old mode 100644 new mode 100755 similarity index 97% rename from install/apps/mimetypes.sh rename to install/config/mimetypes.sh index ee867ab7..4c0b2411 --- a/install/apps/mimetypes.sh +++ b/install/config/mimetypes.sh @@ -1,5 +1,6 @@ #!/bin/bash +omarchy-refresh-applications update-desktop-database ~/.local/share/applications # Open all images with imv diff --git a/install/development/ruby.sh b/install/config/mise-ruby.sh old mode 100644 new mode 100755 similarity index 85% rename from install/development/ruby.sh rename to install/config/mise-ruby.sh index 5ec98a29..304a10dc --- a/install/development/ruby.sh +++ b/install/config/mise-ruby.sh @@ -1,7 +1,6 @@ #!/bin/bash # Install Ruby using gcc-14 for compatibility -yay -S --noconfirm --needed gcc14 mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14" # Trust .ruby-version diff --git a/install/config/power.sh b/install/config/power.sh deleted file mode 100644 index 34b48527..00000000 --- a/install/config/power.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -# Setting the performance profile can make a big difference. By default, most systems seem to start in balanced mode, -# even if they're not running off a battery. So let's make sure that's changed to performance. -yay -S --noconfirm power-profiles-daemon - -if ls /sys/class/power_supply/BAT* &>/dev/null; then - # This computer runs on a battery - powerprofilesctl set balanced || true - - # Enable battery monitoring timer for low battery notifications - systemctl --user enable --now omarchy-battery-monitor.timer || true -else - # This computer runs on power outlet - powerprofilesctl set performance || true -fi diff --git a/install/config/ssh-flakiness.sh b/install/config/ssh-flakiness.sh new file mode 100755 index 00000000..1746f59b --- /dev/null +++ b/install/config/ssh-flakiness.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Solve common flakiness with SSH +echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf diff --git a/install/desktop/theme.sh b/install/config/theme.sh old mode 100644 new mode 100755 similarity index 71% rename from install/desktop/theme.sh rename to install/config/theme.sh index 0076d192..da3f1308 --- a/install/desktop/theme.sh +++ b/install/config/theme.sh @@ -1,20 +1,5 @@ #!/bin/bash -# Use dark mode for QT apps too (like kdenlive) -if ! yay -Q kvantum-qt5 &>/dev/null; then - yay -S --noconfirm kvantum-qt5 -fi - -# Prefer dark mode everything -if ! yay -Q gnome-themes-extra &>/dev/null; then - yay -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme -fi - -# Allow icons to match the theme -if ! yay -! yaru-icon-theme &>/dev/null; then - yay -S --noconfirm yaru-icon-theme -fi - gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue" diff --git a/install/config/timezones.sh b/install/config/timezones.sh old mode 100644 new mode 100755 index d06c3d6b..7aa17fb1 --- a/install/config/timezones.sh +++ b/install/config/timezones.sh @@ -1,9 +1,7 @@ #!/bin/bash -if ! command -v tzupdate &>/dev/null; then - yay -S --noconfirm --needed tzupdate - sudo tee /etc/sudoers.d/omarchy-tzupdate >/dev/null </dev/null </dev/null < : "$OMARCHY_USER_NAME" + : "$OMARCHY_USER_EMAIL" +EOF diff --git a/install/desktop/bluetooth.sh b/install/desktop/bluetooth.sh deleted file mode 100644 index e7b5029c..00000000 --- a/install/desktop/bluetooth.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# Install bluetooth controls -yay -S --noconfirm --needed blueberry - -# Turn on bluetooth by default -sudo systemctl enable --now bluetooth.service diff --git a/install/desktop/desktop.sh b/install/desktop/desktop.sh deleted file mode 100644 index 626b6c27..00000000 --- a/install/desktop/desktop.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -yay -S --noconfirm --needed \ - brightnessctl playerctl pamixer wiremix wireplumber \ - fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \ - nautilus sushi ffmpegthumbnailer gvfs-mtp \ - slurp satty \ - mpv evince imv \ - chromium - -# Add screen recorder based on GPU -if lspci | grep -qi 'nvidia'; then - yay -S --noconfirm --needed wf-recorder -else - yay -S --noconfirm --needed wl-screenrec -fi diff --git a/install/desktop/fonts.sh b/install/desktop/fonts.sh deleted file mode 100644 index 0076417f..00000000 --- a/install/desktop/fonts.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -yay -S --noconfirm --needed ttf-font-awesome ttf-cascadia-mono-nerd ttf-ia-writer noto-fonts noto-fonts-emoji - -if [ -z "$OMARCHY_BARE" ]; then - yay -S --noconfirm --needed ttf-jetbrains-mono noto-fonts-cjk noto-fonts-extra -fi diff --git a/install/desktop/hyprlandia.sh b/install/desktop/hyprlandia.sh deleted file mode 100644 index 5a7e916b..00000000 --- a/install/desktop/hyprlandia.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -yay -S --noconfirm --needed \ - hyprland hyprshot hyprpicker hyprlock hypridle hyprsunset polkit-gnome hyprland-qtutils \ - walker-bin libqalculate waybar mako swaybg swayosd \ - xdg-desktop-portal-hyprland xdg-desktop-portal-gtk diff --git a/install/development/development.sh b/install/development/development.sh deleted file mode 100644 index 20d89573..00000000 --- a/install/development/development.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -yay -S --noconfirm --needed \ - cargo clang llvm mise \ - imagemagick \ - mariadb-libs postgresql-libs \ - github-cli \ - lazygit lazydocker-bin diff --git a/install/development/docker.sh b/install/development/docker.sh deleted file mode 100644 index 14220d98..00000000 --- a/install/development/docker.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -yay -S --noconfirm --needed docker docker-compose docker-buildx - -# Limit log size to avoid running out of disk -sudo mkdir -p /etc/docker -echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json - -# Start Docker automatically -sudo systemctl enable docker - -# Give this user privileged Docker access -sudo usermod -aG docker ${USER} - -# Prevent Docker from preventing boot for network-online.target -sudo mkdir -p /etc/systemd/system/docker.service.d -sudo tee /etc/systemd/system/docker.service.d/no-block-boot.conf <<'EOF' -[Unit] -DefaultDependencies=no -EOF - -sudo systemctl daemon-reload diff --git a/install/development/firewall.sh b/install/development/firewall.sh deleted file mode 100644 index 5510434c..00000000 --- a/install/development/firewall.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -if ! command -v ufw &>/dev/null; then - yay -S --noconfirm --needed ufw ufw-docker - - # Allow nothing in, everything out - sudo ufw default deny incoming - sudo ufw default allow outgoing - - # Allow ports for LocalSend - sudo ufw allow 53317/udp - sudo ufw allow 53317/tcp - - # Allow SSH in - sudo ufw allow 22/tcp - - # Allow Docker containers to use DNS on host - sudo ufw allow in on docker0 to any port 53 - - # Turn on the firewall - sudo ufw enable - - # Turn on Docker protections - sudo ufw-docker install - sudo ufw reload -fi diff --git a/install/development/terminal.sh b/install/development/terminal.sh deleted file mode 100644 index ce2e26f3..00000000 --- a/install/development/terminal.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -yay -S --noconfirm --needed \ - wget curl unzip inetutils impala \ - fd eza fzf ripgrep zoxide bat jq xmlstarlet \ - wl-clipboard fastfetch btop \ - man tldr less whois plocate bash-completion \ - alacritty diff --git a/install/first-run/battery-monitor.sh b/install/first-run/battery-monitor.sh new file mode 100755 index 00000000..8f49e117 --- /dev/null +++ b/install/first-run/battery-monitor.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +if ls /sys/class/power_supply/BAT* &>/dev/null; then + # This computer runs on a battery + powerprofilesctl set balanced || true + + # Enable battery monitoring timer for low battery notifications + systemctl --user enable --now omarchy-battery-monitor.timer +else + # This computer runs on power outlet + powerprofilesctl set performance || true +fi diff --git a/install/first-run/firewall.sh b/install/first-run/firewall.sh new file mode 100755 index 00000000..efd1159f --- /dev/null +++ b/install/first-run/firewall.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Allow nothing in, everything out +sudo ufw default deny incoming +sudo ufw default allow outgoing + +# Allow ports for LocalSend +sudo ufw allow 53317/udp +sudo ufw allow 53317/tcp + +# Allow SSH in +sudo ufw allow 22/tcp + +# Allow Docker containers to use DNS on host +sudo ufw allow in proto udp from 172.16.0.0/12 to 172.17.0.1 port 53 comment 'allow-docker-dns' + +# Turn on the firewall +sudo ufw --force enable + +# Turn on Docker protections +sudo ufw-docker install +sudo ufw reload diff --git a/install/login/alt-bootloaders.sh b/install/login/alt-bootloaders.sh new file mode 100755 index 00000000..7476ec7d --- /dev/null +++ b/install/login/alt-bootloaders.sh @@ -0,0 +1,117 @@ +#!/bin/bash + +if ! command -v limine &>/dev/null; then + # Add kernel hooks + if ! grep -Eq '^HOOKS=.*plymouth' /etc/mkinitcpio.conf; then + # Backup original mkinitcpio.conf just in case + backup_timestamp=$(date +"%Y%m%d%H%M%S") + sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}" + + # Add plymouth to HOOKS array after 'base udev' or 'base systemd' + if grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base systemd"; then + sudo sed -i '/^HOOKS=/s/base systemd/base systemd plymouth/' /etc/mkinitcpio.conf + elif grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base udev"; then + sudo sed -i '/^HOOKS=/s/base udev/base udev plymouth/' /etc/mkinitcpio.conf + else + echo "Couldn't add the Plymouth hook" + fi + + # Regenerate initramfs + sudo mkinitcpio -P + fi + + # Add kernel parameters for Plymouth + if [ -d "/boot/loader/entries" ]; then # systemd-boot + echo "Detected systemd-boot" + + for entry in /boot/loader/entries/*.conf; do + if [ -f "$entry" ]; then + # Skip fallback entries + if [[ "$(basename "$entry")" == *"fallback"* ]]; then + echo "Skipped: $(basename "$entry") (fallback entry)" + continue + fi + + # Skip if splash it already present for some reason + if ! grep -q "splash" "$entry"; then + sudo sed -i '/^options/ s/$/ splash quiet/' "$entry" + else + echo "Skipped: $(basename "$entry") (splash already present)" + fi + fi + done + elif [ -f "/etc/default/grub" ]; then # Grub + echo "Detected grub" + + # Backup GRUB config before modifying + backup_timestamp=$(date +"%Y%m%d%H%M%S") + sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}" + + # Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT + if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then + # Get current GRUB_CMDLINE_LINUX_DEFAULT value + current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2) + + # Add splash and quiet if not present + new_cmdline="$current_cmdline" + if [[ ! "$current_cmdline" =~ splash ]]; then + new_cmdline="$new_cmdline splash" + fi + if [[ ! "$current_cmdline" =~ quiet ]]; then + new_cmdline="$new_cmdline quiet" + fi + + # Trim any leading/trailing spaces + new_cmdline=$(echo "$new_cmdline" | xargs) + + sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub + + # Regenerate grub config + sudo grub-mkconfig -o /boot/grub/grub.cfg + else + echo "GRUB already configured with splash kernel parameters" + fi + elif [ -d "/etc/cmdline.d" ]; then # UKI + echo "Detected a UKI setup" + # Relying on mkinitcpio to assemble a UKI + # https://wiki.archlinux.org/title/Unified_kernel_image + if ! grep -q splash /etc/cmdline.d/*.conf; then + # Need splash, create the omarchy file + echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf + fi + if ! grep -q quiet /etc/cmdline.d/*.conf; then + # Need quiet, create or append the omarchy file + echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf + fi + elif [ -f "/etc/kernel/cmdline" ]; then # UKI Alternate + # Alternate UKI kernel cmdline location + echo "Detected a UKI setup" + + # Backup kernel cmdline config before modifying + backup_timestamp=$(date +"%Y%m%d%H%M%S") + sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}" + + current_cmdline=$(cat /etc/kernel/cmdline) + + # Add splash and quiet if not present + new_cmdline="$current_cmdline" + if [[ ! "$current_cmdline" =~ splash ]]; then + new_cmdline="$new_cmdline splash" + fi + if [[ ! "$current_cmdline" =~ quiet ]]; then + new_cmdline="$new_cmdline quiet" + fi + + # Trim any leading/trailing spaces + new_cmdline=$(echo "$new_cmdline" | xargs) + + # Write new file + echo $new_cmdline | sudo tee /etc/kernel/cmdline + else + echo "" + echo " None of systemd-boot, GRUB, or UKI detected. Please manually add these kernel parameters:" + echo " - splash (to see the graphical splash screen)" + echo " - quiet (for silent boot)" + echo "" + fi +fi diff --git a/install/login/limine-snapper.sh b/install/login/limine-snapper.sh new file mode 100755 index 00000000..2fe8ce0c --- /dev/null +++ b/install/login/limine-snapper.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +if command -v limine &>/dev/null; then + sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf </dev/null +HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs) +EOF + + [[ -f /boot/EFI/limine/limine.conf ]] && EFI=true + + # Conf location is different between EFI and BIOS + [[ -n "$EFI" ]] && limine_config="/boot/EFI/limine/limine.conf" || limine_config="/boot/limine/limine.conf" + + CMDLINE=$(grep "^[[:space:]]*cmdline:" "$limine_config" | head -1 | sed 's/^[[:space:]]*cmdline:[[:space:]]*//') + + sudo tee /etc/default/limine </dev/null +TARGET_OS_NAME="Omarchy" + +ESP_PATH="/boot" + +KERNEL_CMDLINE[default]="$CMDLINE" +KERNEL_CMDLINE[default]+="quiet splash" + +ENABLE_UKI=yes + +ENABLE_LIMINE_FALLBACK=yes + +# Find and add other bootloaders +FIND_BOOTLOADERS=yes + +BOOT_ORDER="*, *fallback, Snapshots" + +MAX_SNAPSHOT_ENTRIES=5 + +SNAPSHOT_FORMAT_CHOICE=5 +EOF + + # UKI and EFI fallback are EFI only + if [[ -z $EFI ]]; then + sudo sed -i '/^ENABLE_UKI=/d; /^ENABLE_LIMINE_FALLBACK=/d' /etc/default/limine + fi + + # We overwrite the whole thing knowing the limine-update will add the entries for us + sudo tee /boot/limine.conf </dev/null +### Read more at config document: https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md +#timeout: 3 +default_entry: 2 +interface_branding: Omarchy Bootloader +interface_branding_color: 2 +hash_mismatch_panic: no + +term_background: 1a1b26 +backdrop: 1a1b26 + +# Terminal colors (Tokyo Night palette) +term_palette: 15161e;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;a9b1d6 +term_palette_bright: 414868;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;c0caf5 + +# Text colors +term_foreground: c0caf5 +term_foreground_bright: c0caf5 +term_background_bright: 24283b + +EOF + + sudo pacman -S --noconfirm --needed limine-snapper-sync limine-mkinitcpio-hook + sudo limine-update + + # Match Snapper configs if not installing from the ISO + if [ -z "${OMARCHY_CHROOT_INSTALL:-}" ]; then + if ! sudo snapper list-configs 2>/dev/null | grep -q "root"; then + sudo snapper -c root create-config / + fi + + if ! sudo snapper list-configs 2>/dev/null | grep -q "home"; then + sudo snapper -c home create-config /home + fi + fi + + # Tweak default Snapper configs + 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_IMPORTANT="10"/NUMBER_LIMIT_IMPORTANT="5"/' /etc/snapper/configs/{root,home} + + chrootable_systemctl_enable limine-snapper-sync.service +fi + +# Add UKI entry to UEFI machines to skip bootloader showing on normal boot +if [ -n "$EFI" ] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy; then + sudo efibootmgr --create \ + --disk "$(findmnt -n -o SOURCE /boot | sed 's/p\?[0-9]*$//')" \ + --part "$(findmnt -n -o SOURCE /boot | grep -o 'p\?[0-9]*$' | sed 's/^p//')" \ + --label "Omarchy" \ + --loader "\\EFI\\Linux\\$(cat /etc/machine-id)_linux.efi" +fi diff --git a/install/config/login.sh b/install/login/plymouth.sh old mode 100644 new mode 100755 similarity index 51% rename from install/config/login.sh rename to install/login/plymouth.sh index d92d97d5..37c0eaf7 --- a/install/config/login.sh +++ b/install/login/plymouth.sh @@ -1,128 +1,11 @@ #!/bin/bash # Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security -if ! command -v uwsm &>/dev/null || ! command -v plymouth &>/dev/null; then - sudo pacman -U --noconfirm https://archive.archlinux.org/packages/u/uwsm/uwsm-0.23.0-1-any.pkg.tar.zst - yay -S --noconfirm --needed plymouth -fi # ============================================================================== # PLYMOUTH SETUP # ============================================================================== -if ! grep -Eq '^HOOKS=.*plymouth' /etc/mkinitcpio.conf; then - # Backup original mkinitcpio.conf just in case - backup_timestamp=$(date +"%Y%m%d%H%M%S") - sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}" - - # Add plymouth to HOOKS array after 'base udev' or 'base systemd' - if grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base systemd"; then - sudo sed -i '/^HOOKS=/s/base systemd/base systemd plymouth/' /etc/mkinitcpio.conf - elif grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base udev"; then - sudo sed -i '/^HOOKS=/s/base udev/base udev plymouth/' /etc/mkinitcpio.conf - else - echo "Couldn't add the Plymouth hook" - fi - - # Regenerate initramfs - sudo mkinitcpio -P -fi - -# Add kernel parameters for Plymouth -if [ -d "/boot/loader/entries" ]; then # systemd-boot - echo "Detected systemd-boot" - - for entry in /boot/loader/entries/*.conf; do - if [ -f "$entry" ]; then - # Skip fallback entries - if [[ "$(basename "$entry")" == *"fallback"* ]]; then - echo "Skipped: $(basename "$entry") (fallback entry)" - continue - fi - - # Skip if splash it already present for some reason - if ! grep -q "splash" "$entry"; then - sudo sed -i '/^options/ s/$/ splash quiet/' "$entry" - else - echo "Skipped: $(basename "$entry") (splash already present)" - fi - fi - done -elif [ -f "/etc/default/grub" ]; then # Grub - echo "Detected grub" - - # Backup GRUB config before modifying - backup_timestamp=$(date +"%Y%m%d%H%M%S") - sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}" - - # Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT - if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then - # Get current GRUB_CMDLINE_LINUX_DEFAULT value - current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2) - - # Add splash and quiet if not present - new_cmdline="$current_cmdline" - if [[ ! "$current_cmdline" =~ splash ]]; then - new_cmdline="$new_cmdline splash" - fi - if [[ ! "$current_cmdline" =~ quiet ]]; then - new_cmdline="$new_cmdline quiet" - fi - - # Trim any leading/trailing spaces - new_cmdline=$(echo "$new_cmdline" | xargs) - - sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub - - # Regenerate grub config - sudo grub-mkconfig -o /boot/grub/grub.cfg - else - echo "GRUB already configured with splash kernel parameters" - fi -elif [ -d "/etc/cmdline.d" ]; then # UKI - echo "Detected a UKI setup" - # Relying on mkinitcpio to assemble a UKI - # https://wiki.archlinux.org/title/Unified_kernel_image - if ! grep -q splash /etc/cmdline.d/*.conf; then - # Need splash, create the omarchy file - echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf - fi - if ! grep -q quiet /etc/cmdline.d/*.conf; then - # Need quiet, create or append the omarchy file - echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf - fi -elif [ -f "/etc/kernel/cmdline" ]; then # UKI Alternate - # Alternate UKI kernel cmdline location - echo "Detected a UKI setup" - - # Backup kernel cmdline config before modifying - backup_timestamp=$(date +"%Y%m%d%H%M%S") - sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}" - - current_cmdline=$(cat /etc/kernel/cmdline) - - # Add splash and quiet if not present - new_cmdline="$current_cmdline" - if [[ ! "$current_cmdline" =~ splash ]]; then - new_cmdline="$new_cmdline splash" - fi - if [[ ! "$current_cmdline" =~ quiet ]]; then - new_cmdline="$new_cmdline quiet" - fi - - # Trim any leading/trailing spaces - new_cmdline=$(echo "$new_cmdline" | xargs) - - # Write new file - echo $new_cmdline | sudo tee /etc/kernel/cmdline -else - echo "" - echo " None of systemd-boot, GRUB, or UKI detected. Please manually add these kernel parameters:" - echo " - splash (to see the graphical splash screen)" - echo " - quiet (for silent boot)" - echo "" -fi - if [ "$(plymouth-set-default-theme)" != "omarchy" ]; then sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/ sudo plymouth-set-default-theme -R omarchy @@ -227,6 +110,8 @@ Type=simple ExecStart=/usr/local/bin/seamless-login uwsm start -- hyprland.desktop Restart=always RestartSec=2 +StartLimitIntervalSec=30 +StartLimitBurst=2 User=$USER TTYPath=/dev/tty1 TTYReset=yes diff --git a/install/packages.sh b/install/packages.sh new file mode 100644 index 00000000..7800d238 --- /dev/null +++ b/install/packages.sh @@ -0,0 +1,122 @@ +sudo pacman -S --noconfirm --needed \ + 1password-beta \ + 1password-cli \ + alacritty \ + avahi \ + bash-completion \ + bat \ + blueberry \ + brightnessctl \ + btop \ + cargo \ + clang \ + cups \ + cups-browsed \ + cups-filters \ + cups-pdf \ + docker \ + docker-buildx \ + docker-compose \ + dust \ + evince \ + eza \ + fastfetch \ + fcitx5 \ + fcitx5-gtk \ + fcitx5-qt \ + fd \ + ffmpegthumbnailer \ + fzf \ + gcc14 \ + github-cli \ + gnome-calculator \ + gnome-keyring \ + gnome-themes-extra \ + gum \ + gvfs-mtp \ + hypridle \ + hyprland \ + hyprland-qtutils \ + hyprlock \ + hyprpicker \ + hyprshot \ + hyprsunset \ + imagemagick \ + impala \ + imv \ + inetutils \ + jq \ + kdenlive \ + kvantum-qt5 \ + lazydocker \ + lazygit \ + less \ + libqalculate \ + libreoffice \ + llvm \ + localsend \ + luarocks \ + mako \ + man \ + mariadb-libs \ + mise \ + mpv \ + nautilus \ + noto-fonts \ + noto-fonts-cjk \ + noto-fonts-emoji \ + noto-fonts-extra \ + nss-mdns \ + nvim \ + obs-studio \ + obsidian \ + omarchy-chromium \ + pamixer \ + pinta \ + playerctl \ + plocate \ + plymouth \ + polkit-gnome \ + postgresql-libs \ + power-profiles-daemon \ + python-gobject \ + python-poetry-core \ + python-terminaltexteffects \ + ripgrep \ + satty \ + signal-desktop \ + slurp \ + spotify \ + starship \ + sushi \ + swaybg \ + swayosd \ + system-config-printer \ + tldr \ + tree-sitter-cli \ + ttf-cascadia-mono-nerd \ + ttf-font-awesome \ + ttf-ia-writer \ + ttf-jetbrains-mono \ + typora \ + tzupdate \ + ufw \ + ufw-docker \ + unzip \ + uwsm \ + walker-bin \ + waybar \ + wf-recorder \ + whois \ + wiremix \ + wireplumber \ + wl-clip-persist \ + wl-clipboard \ + wl-screenrec \ + xdg-desktop-portal-gtk \ + xdg-desktop-portal-hyprland \ + xmlstarlet \ + xournalpp \ + yaru-icon-theme \ + yay \ + zoxide diff --git a/install/desktop/asdcontrol.sh b/install/packaging/asdcontrol.sh old mode 100644 new mode 100755 similarity index 85% rename from install/desktop/asdcontrol.sh rename to install/packaging/asdcontrol.sh index b74eabf9..ff950c64 --- a/install/desktop/asdcontrol.sh +++ b/install/packaging/asdcontrol.sh @@ -1,7 +1,7 @@ #!/bin/bash # Install asdcontrol for controlling brightness on Apple Displays -if [ -z "$OMARCHY_BARE" ] && ! command -v asdcontrol &>/dev/null; then +if ! command -v asdcontrol &>/dev/null; then git clone https://github.com/nikosdion/asdcontrol.git /tmp/asdcontrol cd /tmp/asdcontrol make diff --git a/install/packaging/fonts.sh b/install/packaging/fonts.sh new file mode 100755 index 00000000..01f31edb --- /dev/null +++ b/install/packaging/fonts.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# Omarchy logo in a font for Waybar use +mkdir -p ~/.local/share/fonts +cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/ +fc-cache diff --git a/install/development/nvim.sh b/install/packaging/lazyvim.sh old mode 100644 new mode 100755 similarity index 63% rename from install/development/nvim.sh rename to install/packaging/lazyvim.sh index e8e8560a..7fad269d --- a/install/development/nvim.sh +++ b/install/packaging/lazyvim.sh @@ -1,10 +1,6 @@ #!/bin/bash -if ! command -v nvim &>/dev/null; then - yay -S --noconfirm --needed nvim luarocks tree-sitter-cli - - # Install LazyVim - rm -rf ~/.config/nvim +if [[ ! -d "$HOME/.config/nvim" ]]; then git clone https://github.com/LazyVim/starter ~/.config/nvim cp -R ~/.local/share/omarchy/config/nvim/* ~/.config/nvim/ rm -rf ~/.config/nvim/.git diff --git a/install/packaging/tuis.sh b/install/packaging/tuis.sh new file mode 100755 index 00000000..0aea639a --- /dev/null +++ b/install/packaging/tuis.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +omarchy-tui-install "Disk Usage" "bash -c 'dust -r; read -n 1 -s'" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/qdirstat.png +omarchy-tui-install "Docker" "lazydocker" tile https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/docker.png diff --git a/install/packaging/webapps.sh b/install/packaging/webapps.sh new file mode 100755 index 00000000..ac6b3baf --- /dev/null +++ b/install/packaging/webapps.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +omarchy-webapp-install "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png +omarchy-webapp-install "Basecamp" https://launchpad.37signals.com https://basecamp.com/assets/images/general/basecamp.png +omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png +omarchy-webapp-install "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png +omarchy-webapp-install "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png +omarchy-webapp-install "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png +omarchy-webapp-install "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png +omarchy-webapp-install "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png +omarchy-webapp-install "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png +omarchy-webapp-install "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png +omarchy-webapp-install "Figma" https://figma.com/ https://www.veryicon.com/download/png/application/app-icon-7/figma-1?s=256 +omarchy-webapp-install "Discord" https://discord.com/channels/@me https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/discord.png +omarchy-webapp-install "Zoom" https://app.zoom.us/wc/home https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/zoom.png diff --git a/install/preflight/aur.sh b/install/preflight/aur.sh deleted file mode 100644 index 525b17c1..00000000 --- a/install/preflight/aur.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash - -# Only add Chaotic-AUR if the architecture is x86_64 so ARM users can build the packages -if [[ "$(uname -m)" == "x86_64" ]] && ! command -v yay &>/dev/null; then - # Try installing Chaotic-AUR keyring and mirrorlist - if ! pacman-key --list-keys 3056513887B78AEB >/dev/null 2>&1 && - sudo pacman-key --recv-key 3056513887B78AEB && - sudo pacman-key --lsign-key 3056513887B78AEB && - sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' && - sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'; then - - # Add Chaotic-AUR repo to pacman config - if ! grep -q "chaotic-aur" /etc/pacman.conf; then - echo -e '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf >/dev/null - fi - - # Install yay directly from Chaotic-AUR - sudo pacman -Sy --needed --noconfirm yay - else - echo "Failed to install Chaotic-AUR, so won't include it in pacman config!" - fi -fi - -# Manually install yay from AUR if not already available -if ! command -v yay &>/dev/null; then - # Install build tools - sudo pacman -Sy --needed --noconfirm base-devel - cd /tmp - rm -rf yay-bin - git clone https://aur.archlinux.org/yay-bin.git - cd yay-bin - makepkg -si --noconfirm - cd - - rm -rf yay-bin - cd ~ -fi - -# Add fun and color to the pacman installer -if ! grep -q "ILoveCandy" /etc/pacman.conf; then - sudo sed -i '/^\[options\]/a Color\nILoveCandy' /etc/pacman.conf -fi diff --git a/install/preflight/chroot.sh b/install/preflight/chroot.sh new file mode 100755 index 00000000..4a6d5b82 --- /dev/null +++ b/install/preflight/chroot.sh @@ -0,0 +1,8 @@ +# Starting the installer with OMARCHY_CHROOT_INSTALL=1 will put it into chroot mode +chrootable_systemctl_enable() { + if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ]; then + sudo systemctl enable $1 + else + sudo systemctl enable --now $1 + fi +} diff --git a/install/preflight/first-run-mode.sh b/install/preflight/first-run-mode.sh new file mode 100755 index 00000000..49eee6f4 --- /dev/null +++ b/install/preflight/first-run-mode.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# Set first-run mode marker so we can install stuff post-installation +mkdir -p ~/.local/state/omarchy +touch ~/.local/state/omarchy/first-run.mode + +# Setup sudo-less access for first-run +sudo tee /etc/sudoers.d/first-run >/dev/null </dev/null + +# Only add Chaotic-AUR if the architecture is x86_64 so ARM users can build the packages +if [[ "$(uname -m)" == "x86_64" ]] && [ -z "$DISABLE_CHAOTIC" ]; then + # Try installing Chaotic-AUR keyring and mirrorlist + if ! pacman-key --list-keys 3056513887B78AEB >/dev/null 2>&1 && + sudo pacman-key --recv-key 3056513887B78AEB && + sudo pacman-key --lsign-key 3056513887B78AEB && + sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' && + sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'; then + + # Add Chaotic-AUR repo to pacman config + if ! grep -q "chaotic-aur" /etc/pacman.conf; then + echo -e '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf >/dev/null + fi + + # Refresh all repos + sudo pacman -Sy + else + echo -e "Failed to install Chaotic-AUR, so won't include it in pacman config!" + fi +fi + +# Allow repository index updates without sudo +sudo tee /etc/sudoers.d/repositories >/dev/null </dev/null; then # Add missing installation of bat - yay -S --noconfirm --needed bat + sudo pacman -S --noconfirm --needed bat fi diff --git a/migrations/1751510848.sh b/migrations/1751510848.sh index 4888bb2f..8bdc855c 100644 --- a/migrations/1751510848.sh +++ b/migrations/1751510848.sh @@ -1,5 +1,5 @@ echo "Installing missing fd terminal tool for finding files" if ! command -v fd &>/dev/null; then - yay -S --noconfirm --needed fd + sudo pacman -S --noconfirm --needed fd fi diff --git a/migrations/1751667620.sh b/migrations/1751667620.sh index 227006ff..a45252e7 100644 --- a/migrations/1751667620.sh +++ b/migrations/1751667620.sh @@ -1,8 +1,8 @@ echo "Switching from vlc to mpv for the default video player" if ! command -v mpv &>/dev/null; then - yay -Rns --noconfirm vlc + sudo pacman -Rns --noconfirm vlc rm ~/.local/share/applications/vlc.desktop - yay -S --noconfirm mpv + sudo pacman -S --noconfirm mpv xdg-mime default mpv.desktop video/mp4 xdg-mime default mpv.desktop video/x-msvideo xdg-mime default mpv.desktop video/x-matroska diff --git a/migrations/1751672984.sh b/migrations/1751672984.sh index 056cff72..9b0308a6 100644 --- a/migrations/1751672984.sh +++ b/migrations/1751672984.sh @@ -1,5 +1,5 @@ echo "Add LocalSend as new default application" if ! command -v localsend &>/dev/null; then - yay -S --noconfirm --needed localsend-bin + sudo pacman -S --noconfirm --needed localsend fi diff --git a/migrations/1751679069.sh b/migrations/1751679069.sh index 57feb128..a2f437f3 100644 --- a/migrations/1751679069.sh +++ b/migrations/1751679069.sh @@ -1,5 +1,5 @@ echo "Install ffmpegthumbnailer for video thumbnails in the file manager" if ! command -v ffmpegthumbnailer &>/dev/null; then - yay -S --noconfirm --needed ffmpegthumbnailer + sudo pacman -S --noconfirm --needed ffmpegthumbnailer fi diff --git a/migrations/1751821819.sh b/migrations/1751821819.sh index a34d82e7..f8d616f9 100644 --- a/migrations/1751821819.sh +++ b/migrations/1751821819.sh @@ -1,5 +1,5 @@ echo "Install bash-completion" if ! pacman -Q bash-completion &>/dev/null; then - yay -S --noconfirm --needed bash-completion + sudo pacman -S --noconfirm --needed bash-completion fi diff --git a/migrations/1751887718.sh b/migrations/1751887718.sh index d62fbdd0..ac1894f5 100644 --- a/migrations/1751887718.sh +++ b/migrations/1751887718.sh @@ -1,6 +1,6 @@ echo "Install Impala as new wifi selection TUI" if ! command -v impala &>/dev/null; then - yay -S --noconfirm --needed impala + sudo pacman -S --noconfirm --needed impala echo "You need to update the Waybar config to use Impala Wi-Fi selector in top bar." omarchy-refresh-waybar fi diff --git a/migrations/1752081088.sh b/migrations/1752081088.sh index d72201fc..6eb49a27 100644 --- a/migrations/1752081088.sh +++ b/migrations/1752081088.sh @@ -1,2 +1,2 @@ echo "Permanently fix F-keys on Apple-mode keyboards (like Lofree Flow84)" -source ~/.local/share/omarchy/install/config/fix-fkeys.sh +source ~/.local/share/omarchy/install/config/hardware/fix-fkeys.sh diff --git a/migrations/1752082381.sh b/migrations/1752082381.sh index a3b937de..561fa7e7 100644 --- a/migrations/1752082381.sh +++ b/migrations/1752082381.sh @@ -1,5 +1,5 @@ echo "Adding gnome-keyring to make 1password work with 2FA codes" if ! command -v gnome-keyring &>/dev/null; then - yay -S --noconfirm --needed gnome-keyring + sudo pacman -S --noconfirm --needed gnome-keyring fi diff --git a/migrations/1752091783.sh b/migrations/1752091783.sh index 22625fd5..6f273b0b 100644 --- a/migrations/1752091783.sh +++ b/migrations/1752091783.sh @@ -1,2 +1,4 @@ echo "Install Plymouth splash screen" -source "$HOME/.local/share/omarchy/install/config/login.sh" + +sudo pacman -Sy --needed --noconfirm uwsm plymouth +source "$HOME/.local/share/omarchy/install/login/plymouth.sh" diff --git a/migrations/1752104271.sh b/migrations/1752104271.sh index b00e99a9..a602fe38 100644 --- a/migrations/1752104271.sh +++ b/migrations/1752104271.sh @@ -1,8 +1,8 @@ echo "Switching to polkit-gnome for better fingerprint authentication compatibility" if ! command -v /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &>/dev/null; then - yay -S --noconfirm --needed polkit-gnome + sudo pacman -S --noconfirm --needed polkit-gnome systemctl --user stop hyprpolkitagent systemctl --user disable hyprpolkitagent - yay -Rns --noconfirm hyprpolkitagent + sudo pacman -Rns --noconfirm hyprpolkitagent setsid /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & fi diff --git a/migrations/1752292967.sh b/migrations/1752292967.sh index ec8643ab..ad649ced 100644 --- a/migrations/1752292967.sh +++ b/migrations/1752292967.sh @@ -14,5 +14,5 @@ if ! command -v uwsm &>/dev/null; then sed -i 's/^GTK_IM_MODULE=fcitx$//' "$HOME/.config/environment.d/fcitx.conf" fi - source ~/.local/share/omarchy/install/config/login.sh + source ~/.local/share/omarchy/install/login/plymouth.sh fi diff --git a/migrations/1752678932.sh b/migrations/1752678932.sh index 29e1e492..1aa8c858 100644 --- a/migrations/1752678932.sh +++ b/migrations/1752678932.sh @@ -1,5 +1,5 @@ echo "Install missing docker-buildx package for out-of-the-box Kamal compatibility" if ! docker buildx version &>/dev/null; then - yay -S --noconfirm --needed docker-buildx + sudo pacman -S --noconfirm --needed docker-buildx fi diff --git a/migrations/1752709610.sh b/migrations/1752709610.sh deleted file mode 100644 index 7d1136f0..00000000 --- a/migrations/1752709610.sh +++ /dev/null @@ -1,2 +0,0 @@ -echo "Enable ufw firewall" -source ~/.local/share/omarchy/install/development/firewall.sh diff --git a/migrations/1752885858.sh b/migrations/1752885858.sh index 900d3cf7..87208786 100644 --- a/migrations/1752885858.sh +++ b/migrations/1752885858.sh @@ -1,5 +1,5 @@ echo "Install slurp + wl-screenrec for new ALT+PrintScreen screen recorder" if ! command -v wl-screenrec &>/dev/null || ! command -v slurp &>/dev/null; then - yay -S --noconfirm --needed slurp wl-screenrec + sudo pacman -S --noconfirm --needed slurp wl-screenrec fi diff --git a/migrations/1752896442.sh b/migrations/1752896442.sh index 012acfc5..1b154e3c 100644 --- a/migrations/1752896442.sh +++ b/migrations/1752896442.sh @@ -1,8 +1,8 @@ echo "Replace volume control GUI with a TUI" if ! command -v wiremix &>/dev/null; then - yay -S --noconfirm --needed wiremix - yay -Rns --noconfirm pavucontrol + sudo pacman -S --noconfirm --needed wiremix + sudo pacman -Rns --noconfirm pavucontrol omarchy-refresh-applications omarchy-refresh-waybar diff --git a/migrations/1752897642.sh b/migrations/1752897642.sh index 034b78fa..e1f844dd 100644 --- a/migrations/1752897642.sh +++ b/migrations/1752897642.sh @@ -1,4 +1,4 @@ echo "Remove needless fcitx5-configtool package" -if yay -Qe fcitx5-configtool &>/dev/null; then - yay -Rns --noconfirm fcitx5-configtool +if pacman -Qe fcitx5-configtool &>/dev/null; then + sudo pacman -Rns --noconfirm fcitx5-configtool fi diff --git a/migrations/1752955912.sh b/migrations/1752955912.sh index 8c59fb22..0933cb10 100644 --- a/migrations/1752955912.sh +++ b/migrations/1752955912.sh @@ -1,5 +1,5 @@ echo "Install satty for the new screenshot flow" if ! command -v satty &>/dev/null; then - yay -S --noconfirm --needed satty + sudo pacman -S --noconfirm --needed satty fi diff --git a/migrations/1752981883.sh b/migrations/1752981883.sh index 73ba0417..0730188e 100644 --- a/migrations/1752981883.sh +++ b/migrations/1752981883.sh @@ -1,13 +1,11 @@ echo "Replace wofi with walker as the default launcher" if ! command -v walker &>/dev/null; then - yay -Sy --noconfirm --needed walker-bin libqalculate + sudo pacman -Sy --noconfirm --needed walker-bin libqalculate - yay -Rns --noconfirm wofi + sudo pacman -Rns --noconfirm wofi rm -rf ~/.config/wofi mkdir -p ~/.config/walker cp -r ~/.local/share/omarchy/config/walker/* ~/.config/walker/ - - setsid uwsm app -- walker --gapplication-service & fi diff --git a/migrations/1752983008.sh b/migrations/1752983008.sh deleted file mode 100644 index a18b072e..00000000 --- a/migrations/1752983008.sh +++ /dev/null @@ -1,7 +0,0 @@ -if [[ ! -f ~/.local/state/omarchy/bare.mode ]]; then - echo "Add missing installation of Zoom" - - if ! command -v zoom &>/dev/null; then - yay -S --noconfirm --needed zoom - fi -fi diff --git a/migrations/1753138691.sh b/migrations/1753138691.sh index 04012e49..53f54719 100644 --- a/migrations/1753138691.sh +++ b/migrations/1753138691.sh @@ -1,6 +1,6 @@ echo "Install swayOSD to show volume status" if ! command -v swayosd-server &>/dev/null; then - yay -S --noconfirm --needed swayosd + sudo pacman -S --noconfirm --needed swayosd setsid uwsm app -- swayosd-server &>/dev/null & fi diff --git a/migrations/1753176520.sh b/migrations/1753176520.sh index 8b211871..e26abf2f 100644 --- a/migrations/1753176520.sh +++ b/migrations/1753176520.sh @@ -2,10 +2,6 @@ echo "Install wf-recorder for screen recording for nvidia" if lspci | grep -qi 'nvidia'; then if ! command -v wf-recorder &>/dev/null; then - yay -S --noconfirm --needed wf-recorder - fi - - if command -v wl-screenrec &>/dev/null; then - yay -R --noconfirm wl-screenrec + sudo pacman -S --noconfirm --needed wf-recorder fi fi diff --git a/migrations/1753468218.sh b/migrations/1753468218.sh index bf2fab82..8fa3ba58 100644 --- a/migrations/1753468218.sh +++ b/migrations/1753468218.sh @@ -1,4 +1,5 @@ echo "Add Terminal Text Effects for rizzing Omarchy" -if ! yay -Qe python-terminaltexteffects &>/dev/null; then - yay -S --noconfirm --needed python-terminaltexteffects + +if ! pacman -Q python-terminaltexteffects &>/dev/null; then + sudo pacman -S --noconfirm python-terminaltexteffects fi diff --git a/migrations/1753908454.sh b/migrations/1753908454.sh index fdbde67f..8b603247 100644 --- a/migrations/1753908454.sh +++ b/migrations/1753908454.sh @@ -1,12 +1,12 @@ echo "Migrate from manually downloaded fonts to font packages" -if ! yay -Q ttf-cascadia-mono-nerd &>/dev/null; then - yay -S --noconfirm ttf-cascadia-mono-nerd +if ! pacman -Q ttf-cascadia-mono-nerd &>/dev/null; then + sudo pacman -S --noconfirm ttf-cascadia-mono-nerd rm -rf ~/.local/share/fonts/Caskaydia* fc-cache fi -if ! yay -Q ttf-ia-writer &>/dev/null; then - yay -S --noconfirm ttf-ia-writer +if ! pacman -Q ttf-ia-writer &>/dev/null; then + sudo pacman -S --noconfirm ttf-ia-writer rm -rf ~/.local/share/fonts/iAWriterMonoS* fc-cache fi diff --git a/migrations/1754047941.sh b/migrations/1754047941.sh index 39ddd154..2e51f3ee 100644 --- a/migrations/1754047941.sh +++ b/migrations/1754047941.sh @@ -1,7 +1,7 @@ echo "Add icon theme coloring" -if ! yay -! yaru-icon-theme &>/dev/null; then - yay -S --noconfirm yaru-icon-theme +if ! pacman -Q yaru-icon-theme &>/dev/null; then + sudo pacman -S --noconfirm yaru-icon-theme if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)" diff --git a/migrations/1754109724.sh b/migrations/1754109724.sh index b8ff9096..dc39bbd3 100644 --- a/migrations/1754109724.sh +++ b/migrations/1754109724.sh @@ -1,6 +1,6 @@ echo "Add hyprsunset blue light filter" if ! command -v hyprsunset &>/dev/null; then - yay -S --noconfirm --needed hyprsunset + sudo pacman -S --noconfirm --needed hyprsunset fi omarchy-refresh-hyprsunset diff --git a/migrations/1754221967.sh b/migrations/1754221967.sh index 8225c6df..7a135079 100644 --- a/migrations/1754221967.sh +++ b/migrations/1754221967.sh @@ -1,2 +1,2 @@ echo "Add support for accessing Android phone data via file manager" -yay -S --noconfirm --needed gvfs-mtp +sudo pacman -S --noconfirm --needed gvfs-mtp diff --git a/migrations/1754332200.sh b/migrations/1754332200.sh index b70623b3..fc9c3503 100644 --- a/migrations/1754332200.sh +++ b/migrations/1754332200.sh @@ -1,2 +1,2 @@ echo "Remove old Omarchy TUI app now that we have the Omarchy Menu" -rm ~/.local/share/applications/omarchy.desktop +rm -rf ~/.local/share/applications/omarchy.desktop diff --git a/migrations/1754509222.sh b/migrations/1754509222.sh index 799cac38..8ad7ad45 100644 --- a/migrations/1754509222.sh +++ b/migrations/1754509222.sh @@ -1,3 +1,3 @@ echo "Add xmlstarlet needed for updating fonts via Omarchy menu" -yay -Sy --noconfirm --needed xmlstarlet +sudo pacman -Sy --noconfirm --needed xmlstarlet diff --git a/migrations/1754515289.sh b/migrations/1754515289.sh index 9d1d3986..17a3d565 100644 --- a/migrations/1754515289.sh +++ b/migrations/1754515289.sh @@ -1,4 +1,4 @@ echo "Update and restart Walker to resolve stuck Omarchy menu" -yay -Sy --noconfirm walker-bin +sudo pacman -Sy --noconfirm walker-bin omarchy-restart-walker diff --git a/migrations/1754668999.sh b/migrations/1754668999.sh index 8a4dcfb5..b7966ed9 100644 --- a/migrations/1754668999.sh +++ b/migrations/1754668999.sh @@ -1,8 +1,4 @@ -echo "Set default DNS to Cloudflare (backup to Google) and tune MTU probing for more reliable SSH" - -# Set Cloudflare as primary DNS (with Google as backup) -sudo cp ~/.local/share/omarchy/default/systemd/resolved.conf /etc/systemd/ -sudo systemctl restart systemd-resolved +echo "Tune MTU probing for more reliable SSH" # Solve common flakiness with SSH echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf diff --git a/migrations/1754860578.sh b/migrations/1754860578.sh new file mode 100644 index 00000000..afd4beb8 --- /dev/null +++ b/migrations/1754860578.sh @@ -0,0 +1,26 @@ +echo "Update polkit policy to yield to fingerprint and fido2" +# If fprint exists in polkit, it was wrong and needs reset +if [ -f /etc/pam.d/polkit-1 ] && grep -Fq 'pam_fprintd.so' /etc/pam.d/polkit-1; then + sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF' +auth sufficient pam_fprintd.so +auth required pam_unix.so + +account required pam_unix.so +password required pam_unix.so +session required pam_unix.so +EOF +fi + +# If fido2 is in sudo, it won't be in polkit either way +if grep -q pam_u2f.so /etc/pam.d/sudo && [ -f /etc/pam.d/polkit-1 ] && ! grep -q 'pam_u2f.so' /etc/pam.d/polkit-1; then + sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/polkit-1 +elif grep -q pam_u2f.so /etc/pam.d/sudo && [ ! -f /etc/pam.d/polkit-1 ]; then + sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF' +auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2 +auth required pam_unix.so + +account required pam_unix.so +password required pam_unix.so +session required pam_unix.so +EOF +fi diff --git a/migrations/1754922805.sh b/migrations/1754922805.sh deleted file mode 100644 index 38de50cd..00000000 --- a/migrations/1754922805.sh +++ /dev/null @@ -1,3 +0,0 @@ -echo "Replace missing icon for Audio Settings in application launcher" - -cp $OMARCHY_PATH/applications/wiremix.desktop ~/.local/share/applications/ diff --git a/migrations/1754929475.sh b/migrations/1754929475.sh new file mode 100644 index 00000000..f6089a89 --- /dev/null +++ b/migrations/1754929475.sh @@ -0,0 +1,31 @@ +echo "Add start burst limit to login" +if [ -f /etc/systemd/system/omarchy-seamless-login.service ]; then + cat </dev/null; then + echo "$NEW_CONFIG" | sudo tee /etc/docker/daemon.json >/dev/null +fi + +# Expose systemd-resolved to our Docker network +echo -e '[Resolve]\nDNSStubListenerExtra=172.17.0.1' | sudo tee /etc/systemd/resolved.conf.d/20-docker-dns.conf >/dev/null + +sudo systemctl restart systemd-resolved +sudo systemctl restart docker diff --git a/migrations/1754996869.sh b/migrations/1754996869.sh new file mode 100644 index 00000000..d2be16bb --- /dev/null +++ b/migrations/1754996869.sh @@ -0,0 +1,3 @@ +echo "Increase sudo attempts limit to 10" + +source $OMARCHY_PATH/install/config/increase-sudo-tries.sh diff --git a/migrations/1755109182.sh b/migrations/1755109182.sh new file mode 100755 index 00000000..352e342a --- /dev/null +++ b/migrations/1755109182.sh @@ -0,0 +1,32 @@ +echo "Reset DNS configuration to DHCP (remove forced Cloudflare DNS)" + +# Reset DNS to use DHCP by default instead of forcing Cloudflare +# This preserves local development environments (.local domains, etc.) +# Users can still opt-in to Cloudflare DNS using: omarchy-setup-dns cloudflare + +if [ -f /etc/systemd/resolved.conf ]; then + # Backup current config with timestamp + backup_timestamp=$(date +"%Y%m%d%H%M%S") + sudo cp /etc/systemd/resolved.conf "/etc/systemd/resolved.conf.bak.${backup_timestamp}" + + # Remove explicit DNS entries to use DHCP + sudo sed -i '/^DNS=/d' /etc/systemd/resolved.conf + sudo sed -i '/^FallbackDNS=/d' /etc/systemd/resolved.conf + + # Add empty DNS entries to ensure DHCP is used + echo "DNS=" | sudo tee -a /etc/systemd/resolved.conf >/dev/null + echo "FallbackDNS=" | sudo tee -a /etc/systemd/resolved.conf >/dev/null + + # Remove any forced DNS config from systemd-networkd + if [ -f /etc/systemd/network/99-omarchy-dns.network ]; then + sudo rm -f /etc/systemd/network/99-omarchy-dns.network + sudo systemctl restart systemd-networkd + fi + + # Restart systemd-resolved to apply changes + sudo systemctl restart systemd-resolved + + echo "DNS configuration reset to use DHCP (router DNS)" + echo "To use Cloudflare DNS, run: omarchy-setup-dns Cloudflare" +fi + diff --git a/migrations/1755139080.sh b/migrations/1755139080.sh new file mode 100644 index 00000000..76325707 --- /dev/null +++ b/migrations/1755139080.sh @@ -0,0 +1,9 @@ +echo "Ensure fcitx5 does not overwrite xkb layout" + +FCITX5_CONF_DIR="$HOME/.config/fcitx5/conf" +FCITX5_XCB_CONF="$FCITX5_CONF_DIR/xcb.conf" + +if [[ ! -f $FCITX5_XCB_CONF ]]; then + mkdir -p "$FCITX5_CONF_DIR" + cp "$OMARCHY_PATH/config/fcitx5/conf/xcb.conf" "$FCITX5_XCB_CONF" +fi diff --git a/migrations/1755164105.sh b/migrations/1755164105.sh new file mode 100644 index 00000000..17dd2a71 --- /dev/null +++ b/migrations/1755164105.sh @@ -0,0 +1,24 @@ +echo "Switch to Omarchy Chromium for synchronized theme switching" + +set_theme_colors() { + if [[ -f ~/.config/omarchy/current/theme/chromium.theme ]] && command -v chromium &>/dev/null; then + chromium --no-startup-window --set-theme-color="$(<~/.config/omarchy/current/theme/chromium.theme)" + else + # Use a default, neutral grey if theme doesn't have a color + chromium --no-startup-window --set-theme-color="28,32,39" + fi +} + +if command -v chromium &>/dev/null; then + sudo pacman -Rns --noconfirm chromium || true + sudo pacman -Sy --noconfirm omarchy-chromium + + if pgrep -x chromium; then + if gum confirm "Chromium must be restarted. Ready?"; then + pkill -x chromium + set_theme_colors + fi + else + set_theme_colors + fi +fi diff --git a/migrations/1755208929.sh b/migrations/1755208929.sh new file mode 100644 index 00000000..527f7c0e --- /dev/null +++ b/migrations/1755208929.sh @@ -0,0 +1,4 @@ +echo "Change behaviour of XF86PowerOff button to show omarchy system menu insead of shutting down immediately" + +source $OMARCHY_PATH/install/config/hardware/ignore-power-button.sh +setsid systemd-inhibit --what=handle-power-key --why="Temporary disable power button before restart" sleep infinity & diff --git a/migrations/1755340533.sh b/migrations/1755340533.sh new file mode 100644 index 00000000..b94ec59c --- /dev/null +++ b/migrations/1755340533.sh @@ -0,0 +1,5 @@ +echo "Add .config/brave-flags.conf by default to ensure Brave runs under Wayland" + +if [[ ! -f ~/.config/brave-flags.conf ]]; then + cp $OMARCHY_PATH/config/brave-flags.conf ~/.config/ +fi diff --git a/migrations/1755436367.sh b/migrations/1755436367.sh new file mode 100644 index 00000000..b3de9b4b --- /dev/null +++ b/migrations/1755436367.sh @@ -0,0 +1,6 @@ +echo "Add minimal starship prompt to terminal" + +if ! command -v starship &>/dev/null; then + sudo pacman -S --noconfirm starship + cp $OMARCHY_PATH/config/starship.toml ~/.config/starship.toml +fi diff --git a/migrations/1755455095.sh b/migrations/1755455095.sh new file mode 100644 index 00000000..4aed9d56 --- /dev/null +++ b/migrations/1755455095.sh @@ -0,0 +1,9 @@ +echo "Ensure TTE and dependencies are installed" + +if ! pacman -Q python-poetry-core &>/dev/null; then + sudo pacman -S --noconfirm python-poetry-core +fi + +if ! pacman -Q python-terminaltexteffects &>/dev/null; then + sudo pacman -S --noconfirm python-terminaltexteffects +fi diff --git a/migrations/1755459930.sh b/migrations/1755459930.sh new file mode 100644 index 00000000..2b9c2f31 --- /dev/null +++ b/migrations/1755459930.sh @@ -0,0 +1,5 @@ +echo "Add potentially missing dependency for power profile controls" + +if ! pacman -Q python-gobject &>/dev/null; then + sudo pacman -S --noconfirm python-gobject +fi diff --git a/migrations/1755494432.sh b/migrations/1755494432.sh new file mode 100644 index 00000000..04bbe297 --- /dev/null +++ b/migrations/1755494432.sh @@ -0,0 +1,3 @@ +echo "Disable USB autosuspend" + +$OMARCHY_PATH/install/config/hardware/usb-autosuspend.sh diff --git a/migrations/1755507891.sh b/migrations/1755507891.sh new file mode 100755 index 00000000..28114400 --- /dev/null +++ b/migrations/1755507891.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +echo "Migrating to use omarchy-launch-webapp and omarchy-launch-browser" +for desktop_file in ~/.local/share/applications/*.desktop; do + if grep -q 'Exec=chromium --new-window --ozone-platform=wayland --app=' "$desktop_file"; then + url=$(grep '^Exec=' "$desktop_file" | sed -n 's/.*--app="\?\([^"]*\)"\?.*/\1/p') + + if [[ -n "$url" ]]; then + sed -i "s|^Exec=.*|Exec=omarchy-launch-webapp \"$url\"|" "$desktop_file" + fi + fi +done + +echo "Updating Hyprland bindings" +HYPR_BINDINGS_FILE="$HOME/.config/hypr/bindings.conf" +if [ -f "$HYPR_BINDINGS_FILE" ]; then + sed -i 's/\$browser =.*chromium.*$/\$browser = omarchy-launch-browser/' "$HYPR_BINDINGS_FILE" + sed -i 's/\$webapp="/omarchy-launch-webapp "/g' "$HYPR_BINDINGS_FILE" + sed -i '/^\$webapp = \$browser --app/d' "$HYPR_BINDINGS_FILE" +fi + diff --git a/migrations/1755512354.sh b/migrations/1755512354.sh new file mode 100644 index 00000000..ffbee83f --- /dev/null +++ b/migrations/1755512354.sh @@ -0,0 +1,3 @@ +echo "Update fastfetch config to include current theme name and colors" + +omarchy-refresh-config fastfetch/config.jsonc diff --git a/migrations/1755527220.sh b/migrations/1755527220.sh new file mode 100644 index 00000000..845c3fe8 --- /dev/null +++ b/migrations/1755527220.sh @@ -0,0 +1,3 @@ +echo "Turn on the screensaver by default again now that TTE has been fixed" + +omarchy-refresh-hypridle diff --git a/migrations/1755548643.sh b/migrations/1755548643.sh new file mode 100644 index 00000000..3f5367b9 --- /dev/null +++ b/migrations/1755548643.sh @@ -0,0 +1,5 @@ +echo "Install wf-recorder for intel based device" + +if lspci | grep -Eqi 'nvidia|intel.*graphics'; then + sudo pacman -S --noconfirm --needed wf-recorder +fi diff --git a/migrations/1755795450.sh b/migrations/1755795450.sh new file mode 100644 index 00000000..96df3fcd --- /dev/null +++ b/migrations/1755795450.sh @@ -0,0 +1,3 @@ +echo "Ensure latest uwsm is installed" + +sudo pacman -Sy --noconfirm uwsm diff --git a/migrations/1755865046.sh b/migrations/1755865046.sh new file mode 100644 index 00000000..b07766a5 --- /dev/null +++ b/migrations/1755865046.sh @@ -0,0 +1,6 @@ +echo "Switch from lazydocker-bin to lazydocker official" + +if pacman -Q lazydocker-bin >/dev/null; then + sudo pacman -Rns --noconfirm lazydocker-bin + sudo pacman -S --noconfirm lazydocker +fi diff --git a/migrations/1755867743.sh b/migrations/1755867743.sh new file mode 100644 index 00000000..4da313ab --- /dev/null +++ b/migrations/1755867743.sh @@ -0,0 +1,4 @@ +echo "Copy Omarchy logo to ~/.config/omarchy/branding/screensaver.txt so screensaver can be personalized" + +mkdir -p ~/.config/omarchy/branding +cp $OMARCHY_PATH/logo.txt ~/.config/omarchy/branding/screensaver.txt diff --git a/migrations/1755870033.sh b/migrations/1755870033.sh new file mode 100644 index 00000000..e1a0be0d --- /dev/null +++ b/migrations/1755870033.sh @@ -0,0 +1,3 @@ +echo "Use current terminal shell cwd for new terminal working directories" + +sed -i 's|bindd = SUPER, return, Terminal, exec, \$terminal|bindd = SUPER, return, Terminal, exec, $terminal --working-directory $(omarchy-cmd-terminal-cwd)|' ~/.config/hypr/bindings.conf diff --git a/migrations/1755878717.sh b/migrations/1755878717.sh new file mode 100644 index 00000000..164fe6a6 --- /dev/null +++ b/migrations/1755878717.sh @@ -0,0 +1,5 @@ +echo "Ensure Docker DNS requests are not blocked by ufw firewall" + +sudo ufw disable +sudo ufw allow in proto udp from 172.16.0.0/12 to 172.17.0.1 port 53 comment 'allow-docker-dns' +sudo ufw enable diff --git a/migrations/1755904244.sh b/migrations/1755904244.sh new file mode 100644 index 00000000..4d935cf2 --- /dev/null +++ b/migrations/1755904244.sh @@ -0,0 +1,6 @@ +echo "Update fastfetch config with new Omarchy logo" + +omarchy-refresh-config fastfetch/config.jsonc + +mkdir -p ~/.config/omarchy/branding +cp $OMARCHY_PATH/icon.txt ~/.config/omarchy/branding/about.txt diff --git a/migrations/1755920552.sh b/migrations/1755920552.sh new file mode 100644 index 00000000..665da17c --- /dev/null +++ b/migrations/1755920552.sh @@ -0,0 +1,3 @@ +echo "Use verbose package lists for pacman" + +sudo sed -i '/^ILoveCandy$/a VerbosePkgLists' /etc/pacman.conf diff --git a/migrations/1755930114.sh b/migrations/1755930114.sh new file mode 100644 index 00000000..90d44e5e --- /dev/null +++ b/migrations/1755930114.sh @@ -0,0 +1,8 @@ +echo "Add new Omarchy Menu icon to Waybar" + +mkdir -p ~/.local/share/fonts +cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/ +fc-cache + +echo +gum confirm "Replace current Waybar config (backup will be made)?" && omarchy-refresh-waybar diff --git a/migrations/1756060611.sh b/migrations/1756060611.sh new file mode 100644 index 00000000..fd226207 --- /dev/null +++ b/migrations/1756060611.sh @@ -0,0 +1,23 @@ +echo "Migrate AUR packages to official repos where possible" + +reinstall_package_opr() { + if pacman -Q $1 >/dev/null; then + sudo pacman -Rns --noconfirm $1 + sudo pacman -S --noconfirm ${2:-$1} + fi +} + +if pacman -Q yay-bin-debug >/dev/null; then + sudo pacman -Rns --noconfirm yay-bin-debug +fi + +reinstall_package_opr yay-bin yay +reinstall_package_opr obsidian-bin obsidian +reinstall_package_opr localsend-bin localsend +reinstall_package_opr omarchy-chromium-bin omarchy-chromium +reinstall_package_opr walker-bin +reinstall_package_opr wl-screenrec +reinstall_package_opr python-terminaltexteffects +reinstall_package_opr tzupdate +reinstall_package_opr typora +reinstall_package_opr ttf-ia-writer diff --git a/migrations/1756062808.sh b/migrations/1756062808.sh new file mode 100644 index 00000000..36183207 --- /dev/null +++ b/migrations/1756062808.sh @@ -0,0 +1,2 @@ +echo "Update Hypridle to prevent flash of unlocked screen after sleep" +omarchy-refresh-hypridle diff --git a/migrations/1756103168.sh b/migrations/1756103168.sh new file mode 100644 index 00000000..bef59f4e --- /dev/null +++ b/migrations/1756103168.sh @@ -0,0 +1,6 @@ +echo "Allow pacman -Sy without sudo to easier installs" + +sudo tee /etc/sudoers.d/repositories >/dev/null </dev/null; then + sudo pacman -Rns --noconfirm zoom + omarchy-webapp-install "Zoom" https://app.zoom.us/wc/home https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/zoom.png +fi diff --git a/themes/catppuccin-latte/chromium.theme b/themes/catppuccin-latte/chromium.theme new file mode 100644 index 00000000..8bd675bc --- /dev/null +++ b/themes/catppuccin-latte/chromium.theme @@ -0,0 +1 @@ +239,241,245 diff --git a/themes/catppuccin-latte/mako.ini b/themes/catppuccin-latte/mako.ini index d19a1c3c..ce8b8f35 100644 --- a/themes/catppuccin-latte/mako.ini +++ b/themes/catppuccin-latte/mako.ini @@ -20,3 +20,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/catppuccin/chromium.theme b/themes/catppuccin/chromium.theme new file mode 100644 index 00000000..1d965999 --- /dev/null +++ b/themes/catppuccin/chromium.theme @@ -0,0 +1 @@ +24,24,36 diff --git a/themes/catppuccin/mako.ini b/themes/catppuccin/mako.ini index 1b13e795..e1caf538 100644 --- a/themes/catppuccin/mako.ini +++ b/themes/catppuccin/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/everforest/chromium.theme b/themes/everforest/chromium.theme new file mode 100644 index 00000000..381b5ba6 --- /dev/null +++ b/themes/everforest/chromium.theme @@ -0,0 +1 @@ +45,53,59 diff --git a/themes/everforest/mako.ini b/themes/everforest/mako.ini index 3c1cc74c..a0836101 100644 --- a/themes/everforest/mako.ini +++ b/themes/everforest/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/gruvbox/chromium.theme b/themes/gruvbox/chromium.theme new file mode 100644 index 00000000..40520c92 --- /dev/null +++ b/themes/gruvbox/chromium.theme @@ -0,0 +1 @@ +40,40,40 diff --git a/themes/gruvbox/mako.ini b/themes/gruvbox/mako.ini index f0106a9b..2d70b15b 100644 --- a/themes/gruvbox/mako.ini +++ b/themes/gruvbox/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/kanagawa/chromium.theme b/themes/kanagawa/chromium.theme new file mode 100644 index 00000000..ca40205b --- /dev/null +++ b/themes/kanagawa/chromium.theme @@ -0,0 +1 @@ +31,31,40 diff --git a/themes/kanagawa/mako.ini b/themes/kanagawa/mako.ini index 27495bda..d3ad11c3 100644 --- a/themes/kanagawa/mako.ini +++ b/themes/kanagawa/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/matte-black/chromium.theme b/themes/matte-black/chromium.theme new file mode 100644 index 00000000..6e77e856 --- /dev/null +++ b/themes/matte-black/chromium.theme @@ -0,0 +1 @@ +30,30,30 diff --git a/themes/matte-black/mako.ini b/themes/matte-black/mako.ini index 723e855b..1af552ef 100644 --- a/themes/matte-black/mako.ini +++ b/themes/matte-black/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/nord/backgrounds/2-nord.png b/themes/nord/backgrounds/2-nord.png new file mode 100644 index 00000000..412eb52c Binary files /dev/null and b/themes/nord/backgrounds/2-nord.png differ diff --git a/themes/nord/chromium.theme b/themes/nord/chromium.theme new file mode 100644 index 00000000..33a45e46 --- /dev/null +++ b/themes/nord/chromium.theme @@ -0,0 +1 @@ +46,52,64 diff --git a/themes/nord/mako.ini b/themes/nord/mako.ini index 0a7dadd0..8c3c3193 100644 --- a/themes/nord/mako.ini +++ b/themes/nord/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/osaka-jade/backgrounds/osaka-jade-bg.jpg b/themes/osaka-jade/backgrounds/1-osaka-jade-bg.jpg similarity index 100% rename from themes/osaka-jade/backgrounds/osaka-jade-bg.jpg rename to themes/osaka-jade/backgrounds/1-osaka-jade-bg.jpg diff --git a/themes/osaka-jade/backgrounds/osaka-jade-bg-2.jpg b/themes/osaka-jade/backgrounds/2-osaka-jade-bg.jpg similarity index 100% rename from themes/osaka-jade/backgrounds/osaka-jade-bg-2.jpg rename to themes/osaka-jade/backgrounds/2-osaka-jade-bg.jpg diff --git a/themes/osaka-jade/backgrounds/osaka-jade-bg-3.jpg b/themes/osaka-jade/backgrounds/3-osaka-jade-bg.jpg similarity index 100% rename from themes/osaka-jade/backgrounds/osaka-jade-bg-3.jpg rename to themes/osaka-jade/backgrounds/3-osaka-jade-bg.jpg diff --git a/themes/osaka-jade/chromium.theme b/themes/osaka-jade/chromium.theme new file mode 100644 index 00000000..6524c764 --- /dev/null +++ b/themes/osaka-jade/chromium.theme @@ -0,0 +1 @@ +17,34,28 diff --git a/themes/osaka-jade/mako.ini b/themes/osaka-jade/mako.ini index c179cd51..c45635de 100644 --- a/themes/osaka-jade/mako.ini +++ b/themes/osaka-jade/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/ristretto/alacritty.toml b/themes/ristretto/alacritty.toml index 9bfae023..c716798a 100644 --- a/themes/ristretto/alacritty.toml +++ b/themes/ristretto/alacritty.toml @@ -1,7 +1,7 @@ [colors] [colors.normal] -black = "#2c2525" +black = "#72696a" red = "#fd6883" green = "#adda78" yellow = "#f9cc6c" @@ -11,7 +11,7 @@ cyan = "#85dacc" white = "#e6d9db" [colors.bright] -black = "#463a3a" +black = "#948a8b" red = "#ff8297" green = "#c8e292" yellow = "#fcd675" diff --git a/themes/ristretto/backgrounds/2-ristretto.jpg b/themes/ristretto/backgrounds/2-ristretto.jpg new file mode 100644 index 00000000..faf63eab Binary files /dev/null and b/themes/ristretto/backgrounds/2-ristretto.jpg differ diff --git a/themes/ristretto/backgrounds/3-ristretto.jpg b/themes/ristretto/backgrounds/3-ristretto.jpg new file mode 100644 index 00000000..385b01d9 Binary files /dev/null and b/themes/ristretto/backgrounds/3-ristretto.jpg differ diff --git a/themes/ristretto/btop.theme b/themes/ristretto/btop.theme index c241495e..b058a7fc 100644 --- a/themes/ristretto/btop.theme +++ b/themes/ristretto/btop.theme @@ -10,7 +10,7 @@ theme[main_fg]="#e6d9db" # Title color for boxes theme[title]="#e6d9db" -# Higlight color for keyboard shortcuts +# Highlight color for keyboard shortcuts theme[hi_fg]="#fd6883" # Background color of selected item in processes box diff --git a/themes/ristretto/chromium.theme b/themes/ristretto/chromium.theme new file mode 100644 index 00000000..4b5c8eb0 --- /dev/null +++ b/themes/ristretto/chromium.theme @@ -0,0 +1 @@ +37,33,30 diff --git a/themes/ristretto/mako.ini b/themes/ristretto/mako.ini index 036d9b34..7af1812b 100644 --- a/themes/ristretto/mako.ini +++ b/themes/ristretto/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/rose-pine/backgrounds/background.jpg b/themes/rose-pine/backgrounds/1-rose-pine.jpg similarity index 100% rename from themes/rose-pine/backgrounds/background.jpg rename to themes/rose-pine/backgrounds/1-rose-pine.jpg diff --git a/themes/rose-pine/backgrounds/2-wave-light.png b/themes/rose-pine/backgrounds/2-wave-light.png new file mode 100644 index 00000000..53e136c5 Binary files /dev/null and b/themes/rose-pine/backgrounds/2-wave-light.png differ diff --git a/themes/rose-pine/backgrounds/3-leafy-dawn-omarchy.png b/themes/rose-pine/backgrounds/3-leafy-dawn-omarchy.png new file mode 100644 index 00000000..f19c3ff6 Binary files /dev/null and b/themes/rose-pine/backgrounds/3-leafy-dawn-omarchy.png differ diff --git a/themes/rose-pine/chromium.theme b/themes/rose-pine/chromium.theme new file mode 100644 index 00000000..072dd44c --- /dev/null +++ b/themes/rose-pine/chromium.theme @@ -0,0 +1 @@ +210,196,219 diff --git a/themes/rose-pine/mako.ini b/themes/rose-pine/mako.ini index cab1a2e3..65aef345 100644 --- a/themes/rose-pine/mako.ini +++ b/themes/rose-pine/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0 diff --git a/themes/tokyo-night/backgrounds/3--Milad-Fakurian-Abstract-Purple-Blue.jpg b/themes/tokyo-night/backgrounds/3-Milad-Fakurian-Abstract-Purple-Blue.jpg similarity index 100% rename from themes/tokyo-night/backgrounds/3--Milad-Fakurian-Abstract-Purple-Blue.jpg rename to themes/tokyo-night/backgrounds/3-Milad-Fakurian-Abstract-Purple-Blue.jpg diff --git a/themes/tokyo-night/chromium.theme b/themes/tokyo-night/chromium.theme new file mode 100644 index 00000000..bf2774da --- /dev/null +++ b/themes/tokyo-night/chromium.theme @@ -0,0 +1 @@ +26,27,38 diff --git a/themes/tokyo-night/mako.ini b/themes/tokyo-night/mako.ini index 51af6272..bf76a33b 100644 --- a/themes/tokyo-night/mako.ini +++ b/themes/tokyo-night/mako.ini @@ -19,3 +19,6 @@ invisible=true [mode=do-not-disturb app-name=notify-send] invisible=false + +[urgency=critical] +default-timeout=0