74 Commits

Author SHA1 Message Date
b322d1cb47 Merge pull request #356 from basecamp/dev
Omarchy v1.6.2
2025-07-26 17:17:21 -04:00
d503b0cc37 Fix path 2025-07-26 17:14:31 -04:00
eeb784d087 Fix path here too 2025-07-26 16:49:43 -04:00
07a16487c0 Fix paths 2025-07-26 16:48:45 -04:00
c814aa534d Install if MISSING 2025-07-26 16:47:25 -04:00
6de445a2a6 Spelling 2025-07-26 16:37:49 -04:00
73d8c70e06 Ensure we detach from the session so swaybg doesn't die with it 2025-07-26 16:36:42 -04:00
e3bf801654 Don't add this twice on rerunning either 2025-07-26 15:58:38 -04:00
b4d75729d9 Don't add the keys twice 2025-07-26 15:53:53 -04:00
68a221e456 Simplify and make it idempotent 2025-07-26 15:52:00 -04:00
42963368c0 Reference correct file 2025-07-26 15:43:29 -04:00
cf688baa34 We don't have this any more 2025-07-26 15:42:59 -04:00
0a8a502cf2 Add migration to refresh walker to get the = leader key for calculator 2025-07-26 15:37:28 -04:00
9844d4ab22 Merge pull request #362 from ryanrhughes/add-prefix-to-walker-calc
Add "=" as default walker prefix
2025-07-26 15:32:54 -04:00
cec5482483 Merge pull request #361 from basecamp/adjust-logo-assets
Adjust logo assets
2025-07-26 13:23:20 -04:00
bd43aee907 Merge pull request #348 from ryanrhughes/combine-plymouth-and-login
Combine plymouth and login installers
2025-07-26 13:22:44 -04:00
6afbff2c27 Add "=" as default walker prefix 2025-07-26 13:12:28 -04:00
cc79664efc Combined login will run refresh commands 2025-07-26 13:09:28 -04:00
162952f102 Run combined login now 2025-07-26 13:09:28 -04:00
f693c33310 Combine plymouth and login 2025-07-26 13:09:28 -04:00
32aa290af5 Update logo svg 2025-07-26 10:02:50 -07:00
fbdbf852eb Update logo txt 2025-07-26 10:02:29 -07:00
5b654d0282 Be careful not to exit the entire migration runner 2025-07-26 13:02:22 -04:00
4929d3e201 Merge pull request #351 from JaxonWright/bare-improvements
Improvements to Bare Install
2025-07-26 13:01:31 -04:00
29bfeba5cc Merge pull request #357 from rmacklin/fix-step-total
Fix step total in install.sh subtexts
2025-07-26 12:55:43 -04:00
4e9e13f88d Merge pull request #359 from saullrb/dev
Better handle chaotic aur installation
2025-07-26 12:55:26 -04:00
7f3af84a60 #330: update "add missing installation of Zoom" migration to skip if bare install 2025-07-26 12:41:22 -04:00
62fb66a74a omarchy-refresh-applications(#330/#341): do not copy xtras .desktop declarations if in bare mode 2025-07-26 12:41:22 -04:00
cb48956a37 config.sh(#330): if bare install, create bare.mode file to allow updates to skip steps not applicable to bare installs 2025-07-26 12:41:22 -04:00
4e4e82c5b9 fix chaotic aur installation 2025-07-26 13:17:13 -03:00
302e92860e Fix step total in install.sh subtexts 2025-07-26 09:00:20 -07:00
eace29af7d Allow updating timezone from right-clicking the clock
Closes #314
2025-07-26 11:15:08 -04:00
51e2fa8598 Merge pull request #349 from ryanrhughes/update-theme-sh
Convert installers yay and check for existence to make re-runs faster
2025-07-26 09:55:08 -04:00
c081078e72 Protect pacman config from adopting broken mirror setup 2025-07-26 09:52:11 -04:00
3c2559297d Convert to yay and check for existence 2025-07-25 22:16:50 -04:00
4aa6b6c1f9 Merge pull request #342 from michaldziurowski/fix-videos-dir-for-screenrec
take into consideration xdg dirs for screenshot and screen recording
2025-07-25 22:15:38 -04:00
896ad9d97a Merge pull request #344 from ryanrhughes/prevent-screenshot-stacking
Prevent screenshot selection stacking
2025-07-25 22:14:59 -04:00
83d43a7d8d Merge pull request #347 from tahayvr/new-omarchy-logo
Update Omarchy logo
2025-07-25 22:13:09 -04:00
1fa2b62fba Make it safe to rerun the theme.sh installer
Closes #343
2025-07-25 22:09:32 -04:00
d9f9f5212e Don't need that twice 2025-07-25 21:58:51 -04:00
ba75889154 Slow it down a little 2025-07-25 21:57:28 -04:00
d6ba2af917 Spelling 2025-07-25 21:54:03 -04:00
2f12cdc751 Fix spelling 2025-07-25 21:35:39 -04:00
363a9ae4dc update logo.txt with new logo 2025-07-25 17:47:30 -07:00
eefb4638e9 add omarchy.svg to root of repo 2025-07-25 17:40:14 -07:00
bb2d21c3b7 Merge branch 'dev' into prevent-screenshot-stacking 2025-07-25 19:22:09 -04:00
ac935bdaed Kill selection if already active 2025-07-25 18:12:08 -04:00
f25be1d075 Fix path 2025-07-25 16:56:53 -04:00
8336788e0a So 1/5 is right 2025-07-25 16:54:51 -04:00
d60563fe92 Need to happen as part of the destkop 2025-07-25 16:54:02 -04:00
1066415576 Bring back the first art 2025-07-25 16:49:29 -04:00
b5f60f78a8 Structure the installers explicitly with clearly defined segments 2025-07-25 16:48:53 -04:00
92c1db9176 take into consideration xdg dirs for screenshot and screen recording 2025-07-25 21:43:37 +02:00
25acc313b1 Just straight reboot when we're done
Script will abort anyway if there were any issues along the way
2025-07-25 15:43:21 -04:00
0ead8947f7 Add logo to logical substeps 2025-07-25 15:42:27 -04:00
37f4d4a411 More tweaks to the animations 2025-07-25 15:30:49 -04:00
c4a08c3c25 Try to do another header 2025-07-25 15:27:10 -04:00
0c36142f8a Default to expand but allow others 2025-07-25 15:26:38 -04:00
65a5bbad82 Setup presentation tooling and functions as a separate step 2025-07-25 15:25:39 -04:00
165c940df2 A bit more effects 2025-07-25 15:21:36 -04:00
824ba78000 Let's try just showing the logo at identification time 2025-07-25 15:14:05 -04:00
6d3df204bc Use terminal text effects for extra rizz 2025-07-25 15:05:41 -04:00
1c14b8eba2 Have to check for the right command 2025-07-25 14:30:18 -04:00
e01c1bb139 It's all setup 2025-07-25 14:29:08 -04:00
466fe6caba Merge pull request #321 from saullrb/dev
Add Chaotic-AUR setup
2025-07-25 14:28:25 -04:00
10f71885b2 No longer needed 2025-07-25 13:43:32 -04:00
19c0d2887e Reorder 2025-07-25 13:04:53 -04:00
f2b58c2b8e Add dedicated omarchy-setup-steam script 2025-07-25 13:02:55 -04:00
46d135025e Center steam window to prevent it from being off screen 2025-07-25 13:02:55 -04:00
46e972172c Merge pull request #337 from anagrius/master
Fix fzf completion path for Arch Linux
2025-07-25 12:41:33 -04:00
79df336854 Merge pull request #333 from tahayvr/matteblack-plugin
matteblack.nvim is now a neovim colorscheme
2025-07-25 12:40:56 -04:00
0d6ea40252 Fix fzf completion path for Arch Linux
Update fzf completion source path from /usr/share/bash-completion/completions/fzf
to /usr/share/fzf/completion.bash to match the actual file location on Arch Linux.
2025-07-25 18:20:51 +02:00
a76c7ee33b add matteblack plugin for neovim 2025-07-24 17:45:31 -07:00
66b0fa0227 add chaotic aur
add chaotic aur repo

add noconfirm

only add chaotic aur for x86-64 arch
2025-07-24 07:55:56 -03:00
58 changed files with 511 additions and 518 deletions

14
ansi.sh
View File

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

View File

@ -4,7 +4,8 @@ OMARCHY_VERSION=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/de
PATH="$PATH:$HOME/.local/share/omarchy/bin" PATH="$PATH:$HOME/.local/share/omarchy/bin"
show_ascii_art() { show_ascii_art() {
source ~/.local/share/omarchy/ansi.sh clear
tte -i ~/.local/share/omarchy/logo.txt --frame-rate 640 expand
echo " $OMARCHY_VERSION" echo " $OMARCHY_VERSION"
} }
@ -95,9 +96,10 @@ remove_theme_prompt() {
setup_menu() { setup_menu() {
show_ascii_art show_ascii_art
local menu=("Dropbox" "Docker DBs" "Fingerprint sensor" "Fido2 device" "Back") local menu=("Dropbox" "Steam" "Docker DBs" "Fingerprint sensor" "Fido2 device" "Back")
local commands=( local commands=(
"omarchy-setup-dropbox" "omarchy-setup-dropbox"
"omarchy-setup-steam"
"setup_docker_dbs" "setup_docker_dbs"
"omarchy-setup-fingerprint" "omarchy-setup-fingerprint"
"omarchy-setup-fido2" "omarchy-setup-fido2"
@ -126,10 +128,10 @@ setup_docker_dbs() {
if [[ -n "$choices" ]]; then if [[ -n "$choices" ]]; then
for db in $choices; do for db in $choices; do
case $db in case $db in
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 ;;
MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;; MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;;
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 ;; 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 ;;
esac esac
done done
fi fi

View File

@ -2,7 +2,13 @@
# Set recorder based on GPU # Set recorder based on GPU
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-$HOME/Videos}" [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"
if [[ ! -d "$OUTPUT_DIR" ]]; then
notify-send "Screen recording directory does not exist: $OUTPUT_DIR" -u critical -t 3000
exit 1
fi
screenrecording() { screenrecording() {
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4" filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
@ -19,7 +25,7 @@ screenrecording() {
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then
pkill -x wl-screenrec pkill -x wl-screenrec
pkill -x wf-recorder pkill -x wf-recorder
notify-send "Screen recording saved to ~/Videos" -t 2000 notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
elif [[ "$1" == "output" ]]; then elif [[ "$1" == "output" ]]; then
screenrecording screenrecording
else else

View File

@ -1,8 +1,14 @@
#!/bin/bash #!/bin/bash
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-$HOME/Pictures}" [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
hyprshot -m ${1:-region} --raw | if [[ ! -d "$OUTPUT_DIR" ]]; then
notify-send "Screenshot directory does not exist: $OUTPUT_DIR" -u critical -t 3000
exit 1
fi
pkill slurp || hyprshot -m ${1:-region} --raw |
satty --filename - \ satty --filename - \
--output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \ --output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \
--early-exit \ --early-exit \

5
bin/omarchy-cmd-tzupdate Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
sudo tzupdate
new_timezone=$(timedatectl show -p Timezone --value)
notify-send "Timezone has been set to $new_timezone"

View File

@ -10,7 +10,8 @@ mkdir -p ~/.local/share/applications
cp ~/.local/share/omarchy/applications/*.desktop ~/.local/share/applications/ cp ~/.local/share/omarchy/applications/*.desktop ~/.local/share/applications/
cp ~/.local/share/omarchy/applications/hidden/*.desktop ~/.local/share/applications/ cp ~/.local/share/omarchy/applications/hidden/*.desktop ~/.local/share/applications/
if [ -z "$OMARCHY_BARE" ]; then # 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/ cp ~/.local/share/omarchy/applications/xtras/*.desktop ~/.local/share/applications/
fi fi

9
bin/omarchy-setup-steam Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
echo "Adding multilib repository for 32-bit compatibility"
sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf
sudo pacman -Sy
echo "Now pick dependencies matching your graphics card"
yay -S steam
gtk-launch steam >/dev/null 2>&1 &

View File

@ -11,7 +11,7 @@ TOTAL=${#BACKGROUNDS[@]}
if [[ $TOTAL -eq 0 ]]; then if [[ $TOTAL -eq 0 ]]; then
notify-send "No background was found for theme" -t 2000 notify-send "No background was found for theme" -t 2000
pkill -x swaybg pkill -x swaybg
uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 & setsid uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
else else
# Get current background from symlink # Get current background from symlink
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
@ -44,5 +44,5 @@ else
# Relaunch swaybg # Relaunch swaybg
pkill -x swaybg pkill -x swaybg
uwsm app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 & setsid uwsm app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
fi fi

View File

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

View File

@ -10,6 +10,7 @@ ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀ ▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
███ ███ ' ███ ███ '
clear
echo -e "\n$ansi_art\n" echo -e "\n$ansi_art\n"
sudo pacman -Sy --noconfirm --needed git sudo pacman -Sy --noconfirm --needed git

View File

@ -139,6 +139,7 @@ name = "Calculator"
icon = "accessories-calculator" icon = "accessories-calculator"
placeholder = "Calculator" placeholder = "Calculator"
min_chars = 3 # Min chars to calculate. 3 allows "3+3" min_chars = 3 # Min chars to calculate. 3 allows "3+3"
prefix = "="
[builtins.windows] [builtins.windows]
weight = 5 weight = 5

View File

@ -50,7 +50,8 @@
"clock": { "clock": {
"format": "{:%A %H:%M}", "format": "{:%A %H:%M}",
"format-alt": "{:%d %B W%V %Y}", "format-alt": "{:%d %B W%V %Y}",
"tooltip": false "tooltip": false,
"on-click-right": "~/.local/share/omarchy/bin/omarchy-cmd-tzupdate"
}, },
"network": { "network": {
"format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"], "format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],

View File

@ -7,8 +7,8 @@ if command -v zoxide &> /dev/null; then
fi fi
if command -v fzf &> /dev/null; then if command -v fzf &> /dev/null; then
if [[ -f /usr/share/bash-completion/completions/fzf ]]; then if [[ -f /usr/share/fzf/completion.bash ]]; then
source /usr/share/bash-completion/completions/fzf source /usr/share/fzf/completion.bash
fi fi
if [[ -f /usr/share/fzf/key-bindings.bash ]]; then if [[ -f /usr/share/fzf/key-bindings.bash ]]; then
source /usr/share/fzf/key-bindings.bash source /usr/share/fzf/key-bindings.bash

View File

@ -15,7 +15,8 @@ windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Fil
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
# Float Steam, fullscreen RetroArch # Float Steam, fullscreen RetroArch
windowrule = float, class:^(steam)$ windowrule = float, class:steam
windowrule = center, class:steam
windowrule = fullscreen, class:^(com.libretro.RetroArch)$ windowrule = fullscreen, class:^(com.libretro.RetroArch)$
# Just dash of opacity # Just dash of opacity

View File

@ -3,6 +3,8 @@
# Exit immediately if a command exits with a non-zero status # Exit immediately if a command exits with a non-zero status
set -e set -e
OMARCHY_INSTALL=~/.local/share/omarchy/install
# Give people a chance to retry running the installation # Give people a chance to retry running the installation
catch_errors() { catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m" echo -e "\n\e[31mOmarchy installation failed!\e[0m"
@ -12,16 +14,69 @@ catch_errors() {
trap catch_errors ERR trap catch_errors ERR
# Install everything show_logo() {
for f in ~/.local/share/omarchy/install/*.sh; do clear
echo -e "\nRunning installer: $f" tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
source "$f" echo
done }
# Ensure locate is up to date now that everything has been installed show_subtext() {
echo "$1" | tte --frame-rate ${3:-640} ${2:-wipe}
echo
}
# Install prerequisites
source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/presentation.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/login.sh
source $OMARCHY_INSTALL/config/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
# Updates
show_logo highlight
show_subtext "Updating system packages [5/5]"
sudo updatedb sudo updatedb
# Update all built-in packages
sudo pacman -Syu --noconfirm sudo pacman -Syu --noconfirm
gum confirm "Reboot to apply all settings?" && reboot # Reboot
show_logo laseretch 920
show_subtext "You're done! So we'll be rebooting now..."
sleep 2
reboot

View File

@ -1,16 +0,0 @@
#!/bin/bash
sudo pacman -S --needed --noconfirm base-devel
if ! command -v yay &>/dev/null; then
cd /tmp
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si --noconfirm
cd -
rm -rf yay-bin
cd ~
# Add fun and color to the pacman installer
sudo sed -i '/^\[options\]/a Color\nILoveCandy' /etc/pacman.conf
fi

View File

@ -9,6 +9,12 @@ echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
# Ensure application directory exists for update-desktop-database # Ensure application directory exists for update-desktop-database
mkdir -p ~/.local/share/applications 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 # Setup GPG configuration with multiple keyservers for better reliability
sudo mkdir -p /etc/gnupg sudo mkdir -p /etc/gnupg
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/ sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/

View File

@ -3,6 +3,6 @@
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
# Rely on install/plymouth.sh to do the rebuild # Rely on install/login.sh to do the rebuild
# sudo mkinitcpio -P # sudo mkinitcpio -P
fi fi

View File

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

267
install/config/login.sh Normal file
View File

@ -0,0 +1,267 @@
#!/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
yay -S --noconfirm --needed uwsm 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
fi
# ==============================================================================
# SEAMLESS LOGIN
# ==============================================================================
if [ ! -x /usr/local/bin/seamless-login ]; then
# Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop
cat <<'CCODE' >/tmp/seamless-login.c
/*
* Seamless Login - Minimal SDDM-style Plymouth transition
* Replicates SDDM's VT management for seamless auto-login
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
#include <linux/vt.h>
#include <sys/wait.h>
#include <string.h>
int main(int argc, char *argv[]) {
int vt_fd;
int vt_num = 1; // TTY1
char vt_path[32];
if (argc < 2) {
fprintf(stderr, "Usage: %s <session_command>\n", argv[0]);
return 1;
}
// Open the VT (simple approach like SDDM)
snprintf(vt_path, sizeof(vt_path), "/dev/tty%d", vt_num);
vt_fd = open(vt_path, O_RDWR);
if (vt_fd < 0) {
perror("Failed to open VT");
return 1;
}
// Activate the VT
if (ioctl(vt_fd, VT_ACTIVATE, vt_num) < 0) {
perror("VT_ACTIVATE failed");
close(vt_fd);
return 1;
}
// Wait for VT to be active
if (ioctl(vt_fd, VT_WAITACTIVE, vt_num) < 0) {
perror("VT_WAITACTIVE failed");
close(vt_fd);
return 1;
}
// Critical: Set graphics mode to prevent console text
if (ioctl(vt_fd, KDSETMODE, KD_GRAPHICS) < 0) {
perror("KDSETMODE KD_GRAPHICS failed");
close(vt_fd);
return 1;
}
// Clear VT and close (like SDDM does)
const char *clear_seq = "\33[H\33[2J";
if (write(vt_fd, clear_seq, strlen(clear_seq)) < 0) {
perror("Failed to clear VT");
}
close(vt_fd);
// Set working directory to user's home
const char *home = getenv("HOME");
if (home) chdir(home);
// Now execute the session command
execvp(argv[1], &argv[1]);
perror("Failed to exec session");
return 1;
}
CCODE
gcc -o /tmp/seamless-login /tmp/seamless-login.c
sudo mv /tmp/seamless-login /usr/local/bin/seamless-login
sudo chmod +x /usr/local/bin/seamless-login
rm /tmp/seamless-login.c
fi
if [ ! -f /etc/systemd/system/omarchy-seamless-login.service ]; then
cat <<EOF | sudo tee /etc/systemd/system/omarchy-seamless-login.service
[Unit]
Description=Omarchy Seamless Auto-Login
Documentation=https://github.com/basecamp/omarchy
Conflicts=getty@tty1.service
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service systemd-logind.service
PartOf=graphical.target
[Service]
Type=simple
ExecStart=/usr/local/bin/seamless-login uwsm start -- hyprland.desktop
Restart=always
RestartSec=2
User=$USER
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
StandardInput=tty
StandardOutput=journal
StandardError=journal+console
PAMName=login
[Install]
WantedBy=graphical.target
EOF
fi
if [ ! -f /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf ]; then
# Make plymouth remain until graphical.target
sudo mkdir -p /etc/systemd/system/plymouth-quit.service.d
sudo tee /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf <<'EOF'
[Unit]
After=multi-user.target
EOF
fi
# Mask plymouth-quit-wait.service only if not already masked
if ! systemctl is-enabled plymouth-quit-wait.service | grep -q masked; then
sudo systemctl mask plymouth-quit-wait.service
sudo systemctl daemon-reload
fi
# Enable omarchy-seamless-login.service only if not already enabled
if ! systemctl is-enabled omarchy-seamless-login.service | grep -q enabled; then
sudo systemctl enable omarchy-seamless-login.service
fi
# Disable getty@tty1.service only if not already disabled
if ! systemctl is-enabled getty@tty1.service | grep -q disabled; then
sudo systemctl disable getty@tty1.service
fi

View File

@ -12,6 +12,9 @@
# --- GPU Detection --- # --- GPU Detection ---
if [ -n "$(lspci | grep -i 'nvidia')" ]; then if [ -n "$(lspci | grep -i 'nvidia')" ]; then
show_logo
show_subtext "Install NVIDIA drivers..."
# --- Driver Selection --- # --- Driver Selection ---
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules # 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 if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then

View File

@ -0,0 +1,9 @@
#!/bin/bash
if [[ ! -f /etc/sudoers.d/omarchy-tzupdate ]]; then
yay -S --noconfirm --needed tzupdate
sudo tee /etc/sudoers.d/omarchy-tzupdate >/dev/null <<EOF
%wheel ALL=(root) NOPASSWD: /usr/bin/tzupdate, /usr/bin/timedatectl
EOF
sudo chmod 0440 /etc/sudoers.d/omarchy-tzupdate
fi

View File

@ -1,16 +1,21 @@
#!/bin/bash #!/bin/bash
# Use dark mode for QT apps too (like kdenlive) # Use dark mode for QT apps too (like kdenlive)
sudo pacman -S --noconfirm kvantum-qt5 if ! yay -Q kvantum-qt5 &>/dev/null; then
yay -S --noconfirm kvantum-qt5
fi
# Prefer dark mode everything # Prefer dark mode everything
sudo pacman -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme if ! yay -Q gnome-themes-extra &>/dev/null; then
yay -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme
fi
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
# Setup theme links # Setup theme links
mkdir -p ~/.config/omarchy/themes mkdir -p ~/.config/omarchy/themes
for f in ~/.local/share/omarchy/themes/*; do ln -s "$f" ~/.config/omarchy/themes/; done for f in ~/.local/share/omarchy/themes/*; do ln -nfs "$f" ~/.config/omarchy/themes/; done
# Set initial theme # Set initial theme
mkdir -p ~/.config/omarchy/current mkdir -p ~/.config/omarchy/current

View File

@ -1,126 +0,0 @@
#!/bin/bash
# Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security
yay -S --noconfirm --needed uwsm
# Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop
cat <<'CCODE' >/tmp/seamless-login.c
/*
* Seamless Login - Minimal SDDM-style Plymouth transition
* Replicates SDDM's VT management for seamless auto-login
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
#include <linux/vt.h>
#include <sys/wait.h>
#include <string.h>
int main(int argc, char *argv[]) {
int vt_fd;
int vt_num = 1; // TTY1
char vt_path[32];
if (argc < 2) {
fprintf(stderr, "Usage: %s <session_command>\n", argv[0]);
return 1;
}
// Open the VT (simple approach like SDDM)
snprintf(vt_path, sizeof(vt_path), "/dev/tty%d", vt_num);
vt_fd = open(vt_path, O_RDWR);
if (vt_fd < 0) {
perror("Failed to open VT");
return 1;
}
// Activate the VT
if (ioctl(vt_fd, VT_ACTIVATE, vt_num) < 0) {
perror("VT_ACTIVATE failed");
close(vt_fd);
return 1;
}
// Wait for VT to be active
if (ioctl(vt_fd, VT_WAITACTIVE, vt_num) < 0) {
perror("VT_WAITACTIVE failed");
close(vt_fd);
return 1;
}
// Critical: Set graphics mode to prevent console text
if (ioctl(vt_fd, KDSETMODE, KD_GRAPHICS) < 0) {
perror("KDSETMODE KD_GRAPHICS failed");
close(vt_fd);
return 1;
}
// Clear VT and close (like SDDM does)
const char *clear_seq = "\33[H\33[2J";
if (write(vt_fd, clear_seq, strlen(clear_seq)) < 0) {
perror("Failed to clear VT");
}
close(vt_fd);
// Set working directory to user's home
const char *home = getenv("HOME");
if (home) chdir(home);
// Now execute the session command
execvp(argv[1], &argv[1]);
perror("Failed to exec session");
return 1;
}
CCODE
gcc -o /tmp/seamless-login /tmp/seamless-login.c
sudo mv /tmp/seamless-login /usr/local/bin/seamless-login
sudo chmod +x /usr/local/bin/seamless-login
rm /tmp/seamless-login.c
cat <<EOF | sudo tee /etc/systemd/system/omarchy-seamless-login.service
[Unit]
Description=Omarchy Seamless Auto-Login
Documentation=https://github.com/basecamp/omarchy
Conflicts=getty@tty1.service
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service systemd-logind.service
PartOf=graphical.target
[Service]
Type=simple
ExecStart=/usr/local/bin/seamless-login uwsm start -- hyprland.desktop
Restart=always
RestartSec=2
User=$USER
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
StandardInput=tty
StandardOutput=journal
StandardError=journal+console
PAMName=login
[Install]
WantedBy=graphical.target
EOF
# Make plymouth remain until graphical.target
sudo mkdir -p /etc/systemd/system/plymouth-quit.service.d
sudo tee /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf <<'EOF'
[Unit]
After=multi-user.target
EOF
# Prevent plymouth-quit-wait.service
sudo systemctl mask plymouth-quit-wait.service
sudo systemctl daemon-reload
sudo systemctl enable omarchy-seamless-login.service
# Disable getty@tty1 to prevent conflicts
sudo systemctl disable getty@tty1.service

View File

@ -1,121 +0,0 @@
#!/bin/bash
if ! command -v plymouth &>/dev/null; then
yay -S --noconfirm --needed plymouth
# Skip if plymouth already exists for some reason
# 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
# Add kernel parameters for Plymouth (systemd-boot only)
if [ -d "/boot/loader/entries" ]; then
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
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
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
# 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 "Neither systemd-boot nor GRUB detected. Please manually add these kernel parameters:"
echo " - splash (to see the graphical splash screen)"
echo " - quiet (for silent boot)"
echo ""
fi
# Copy and set the Plymouth theme
sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme -R omarchy
fi

41
install/preflight/aur.sh Normal file
View File

@ -0,0 +1,41 @@
#!/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

View File

@ -0,0 +1,3 @@
#!/bin/bash
yay -S --noconfirm --needed gum python-terminaltexteffects

10
logo.txt Normal file
View File

@ -0,0 +1,10 @@
▄▄▄
▄█████▄ ▄███████████▄ ▄███████ ▄███████ ▄███████ ▄█ █▄ ▄█ █▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███
███ ███ ███ ███ ███ ▄███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███▄▄▄███
███ ███ ███ ███ ███ ▀███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ███ ███ ██████████ ███ █▄ ███ ███ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀█████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ███████▀ ███ █▀ ▀█████▀
███ █▀

View File

@ -1,2 +1,2 @@
echo "Permanently fix F-keys on Apple-mode keyboards (like Lofree Flow84)" echo "Permanently fix F-keys on Apple-mode keyboards (like Lofree Flow84)"
source ~/.local/share/omarchy/install/fix-fkeys.sh source ~/.local/share/omarchy/install/config/fix-fkeys.sh

View File

@ -1,2 +1,2 @@
echo "Install Plymouth splash screen" echo "Install Plymouth splash screen"
source "$HOME/.local/share/omarchy/install/plymouth.sh" source "$HOME/.local/share/omarchy/install/login.sh"

View File

@ -14,6 +14,5 @@ if ! command -v uwsm &>/dev/null; then
sed -i 's/^GTK_IM_MODULE=fcitx$//' "$HOME/.config/environment.d/fcitx.conf" sed -i 's/^GTK_IM_MODULE=fcitx$//' "$HOME/.config/environment.d/fcitx.conf"
fi fi
omarchy-refresh-plymouth -y source ~/.local/share/omarchy/install/config/login.sh
source ~/.local/share/omarchy/install/login.sh
fi fi

View File

@ -1,2 +1,2 @@
echo "Enable ufw firewall" echo "Enable ufw firewall"
source ~/.local/share/omarchy/install/firewall.sh source ~/.local/share/omarchy/install/development/firewall.sh

View File

@ -1,5 +1,7 @@
if [[ ! -f ~/.local/state/omarchy/bare.mode ]]; then
echo "Add missing installation of Zoom" echo "Add missing installation of Zoom"
if ! command -v zoom &>/dev/null; then if ! command -v zoom &>/dev/null; then
yay -S --noconfirm --needed zoom yay -S --noconfirm --needed zoom
fi fi
fi

View File

@ -1,6 +1,6 @@
echo "Install swayOSD to show volume status" echo "Install swayOSD to show volume status"
if ! command -v swayosd &>/dev/null; then if ! command -v swayosd-server &>/dev/null; then
yay -S --noconfirm --needed swayosd yay -S --noconfirm --needed swayosd
setsid uwsm app -- swayosd-server &>/dev/null & setsid uwsm app -- swayosd-server &>/dev/null &
fi fi

20
migrations/1753352057.sh Executable file
View File

@ -0,0 +1,20 @@
echo "Add Chaotic-AUR to get compiled binaries"
if [[ "$(uname -m)" == "x86_64" ]] && ! grep -q '^\[chaotic-aur\]' /etc/pacman.conf; then
# Try installing Chaotic-AUR keyring and mirrorlist
if 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
echo -e '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf >/dev/null
# Refresh pacman package databases
sudo pacman -Sy
chaotic_ok=1
else
echo "Failed to install Chaotic-AUR, so won't include it in pacman config!"
fi
fi

4
migrations/1753468218.sh Normal file
View File

@ -0,0 +1,4 @@
echo "Add Terminal Text Effects for rizzing Omarchy"
if ! yay -Qe python-terminaltexteffects &>/dev/null; then
yay -S --noconfirm --needed python-terminaltexteffects
fi

5
migrations/1753495989.sh Normal file
View File

@ -0,0 +1,5 @@
echo "Allow updating of timezone by right-clicking on the clock (or running omarchy-cmd-tzupdate)"
if [[ ! -f /etc/sudoers.d/omarchy-tzupdate ]]; then
bash ~/.local/share/omarchy/install/config/timezones.sh
omarchy-refresh-waybar
fi

4
migrations/1753558374.sh Normal file
View File

@ -0,0 +1,4 @@
echo "Update Walker config to include = as the leader key for the calculator"
if ! grep -q 'prefix = "="' ~/.config/walker/config.toml; then
omarchy-refresh-walker
fi

1
omarchy.svg Normal file
View File

@ -0,0 +1 @@
<svg fill="none" height="285" viewBox="0 0 1215 285" width="1215" xmlns="http://www.w3.org/2000/svg"><g fill="#000"><path clip-rule="evenodd" d="m720 120h-15v15h-14.998v14.999l-60.002.001v15.002l90-.002v.002h.002l-.002 89.998h-15v15h-13v15h-17v-89.998h-45v90l-45-.002v-89.998h-14.998v-30h14.998v-15.002h-14.998v-30.001h14.998v-75h15v-14.997h15v-15.002h105.002zm-90-.001h45v-74.997h-45z" fill-rule="evenodd"/><path clip-rule="evenodd" d="m105 30.002h15v14.997h15v180.001h-15v15h-15v15.002h-75v-15.002h-15v-15h-15v-180.001h15v-14.997h15v-15.002h75zm-60 194.998h45v-179.998h-45z" fill-rule="evenodd"/><path d="m300 15h60v15h15v14.999h15v180.001h-15v15h-15v15h-15l-.004-209.998h-44.994v-.002h-.002v210.002h-45v-210h-44.998v179.997h-.002v30.003h-15v-15.002h-15v-15h-14.998v-180.001h14.998v-14.999h15v-15h60v-15h45z"/><path clip-rule="evenodd" d="m555 225h-15v15h-15v15h-15v-105.001l-44.998.001v105.002h-45.002v-105.002h-15v-30.001h15v-75h15.002v-14.997h15v-15.002h105zm-89.998-105.001h44.998v-74.997h-44.998z" fill-rule="evenodd"/><path d="m885 75h-15v15h-15v15h-15v-59.998h-45v179.998h45v-59.998h15v14.997h15v15.001h15v30h-15v15h-15v15.002l-105-.002v-210.001h14.998v-14.997h15.002v-15.002h105z"/><path d="m960 119.999h45v-104.999h15v15h15v14.999h15v75.001h15v15h-15v90h-15v15h-15v15h-15v-105h-45v105.002l-45-.002v-105h-30v-15h15v-15.001h15v-75h15v-14.997h15v-15.002h15z"/><path d="m1125 119.999h45v-104.999h15v15h15v15h15v180h-15v15h-15v15.002l-75-.002v-15h-15v-15h-15v-45.001h15v-14.997-.002h30v60h45v-75h-90v-105.001h15v-14.997h15v-15.002h15z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,192 +1,9 @@
return { return {
"EdenEast/nightfox.nvim", { "tahayvr/matteblack.nvim", lazy = false, priority = 1000 },
lazy = false, {
priority = 1000, "LazyVim/LazyVim",
dependencies = { opts = {
"folke/snacks.nvim", colorscheme = "matteblack",
"nvim-tree/nvim-web-devicons",
"nvim-lualine/lualine.nvim",
}, },
config = function()
local nightfox = require('nightfox')
local Shade = require('nightfox.lib.shade')
local c = require('nightfox.lib.color')
local matte_black_palette = {
-- Base "Matte Black" Palette Overrides
bg0 = "#0D0D0D", bg1 = "#121212", bg2 = "#1E1E1E", bg3 = "#2C2C2C", bg4 = "#333333",
fg0 = "#FFFFFF", fg1 = "#EAEAEA", fg2 = "#BEBEBE", fg3 = "#8A8A8D",
sel0 = "#2C2C2C",
sel1 = c.from_hex("#2C2C2C"):blend(c.from_hex("#F59E0B"), 0.2):to_css(),
comment = "#8A8A8D",
red = Shade.new("#D35F5F", c.from_hex("#D35F5F"):lighten(8):to_css(), "#B91C1C"),
orange = Shade.new("#F59E0B", "#FFC107", c.from_hex("#F59E0B"):lighten(-8):to_css()),
yellow = Shade.new("#FFC107", c.from_hex("#FFC107"):lighten(10):to_css(), "#F59E0B"),
white = Shade.new("#EAEAEA", "#FFFFFF", "#BEBEBE"),
black = Shade.new("#333333", "#8A8A8D", "#1E1E1E"),
green = Shade.new("#8A9A7B", "#A5B799", "#6F7C62"),
cyan = Shade.new("#88AABB", "#A2C4D3", "#6E8A99"),
blue = Shade.new("#8A9FBE", "#A4BBDD", "#7084A1"),
magenta = Shade.new("#C1A1C1", "#D9B9D9", "#A989A9"),
pink = Shade.new("#D398A7", "#EBC0CB", "#B97E8D"),
-- Lualine Palette Extensions
lualine_normal_bg = "#F59E0B",
lualine_insert_bg = "#B91C1C",
lualine_visual_bg = "#C1A1C1",
lualine_command_bg = "#F59E0B",
lualine_inactive_bg = c.from_hex("#121212"):lighten(5):to_css(),
-- Treesitter Palette Extensions
ts_parameter = "#D398A7",
ts_property = "#EAEAEA",
}
local final_palettes = {
carbonfox = require('nightfox.lib.collect').deep_extend(
require('nightfox.palette').load('carbonfox'),
matte_black_palette
)
}
local specs = {
carbonfox = {
syntax = {
keyword = "red", -- "local", "function", "if"
conditional = "red",
statement = "red",
func = "orange",
string = "orange.dim",
number = "orange",
operator = "yellow",
variable = "white",
ident = "white.dim",
const = "white",
type = "white",
field = "white.dim",
comment = "comment",
},
diag = {
error = "red",
warn = "red",
info = "cyan",
hint = "magenta",
}
}
}
local groups = {
all = {
-- Base Groups
Whitespace = { fg = "palette.black.bright" },
NonText = { fg = "palette.black.bright" },
IncSearch = { bg = "palette.sel1" },
CursorLine = { bg = "palette.bg2" },
Normal = { fg = "palette.fg1" },
-- Noice Cmdline Overrides
NoiceCmdlinePopupBorder = { fg = "palette.fg3" },
NoiceCmdlinePopupTitle = { fg = "palette.fg3", style = "bold" },
NoiceCmdlinePopupBorderSearch = { fg = "palette.fg3" },
NoiceCmdlinePopupTitleSearch = { fg = "palette.fg3", style = "bold" },
NoiceCmdLineIcon = { fg = "palette.red" },
-- Neo-tree overrides
NeoTreeNormal = { bg = "palette.bg0" },
NeoTreeNormalNC = { link = "NeoTreeNormal" },
NeoTreeDirectoryName = { fg = "palette.fg3" },
NeoTreeDirectoryIcon = { fg = "palette.fg3" },
NeoTreeRootName = { fg = "palette.orange", style = "bold" },
NeoTreeGitAdded = { fg = "palette.green" },
NeoTreeGitModified = { fg = "palette.yellow" },
NeoTreeGitDeleted = { fg = "palette.red" },
NeoTreeGitIgnored = { fg = "palette.comment" },
NeoTreeC = { fg = "palette.orange", bg = "palette.sel0" },
-- Dashboard overrides
SnacksDashboardHeader = { fg = "palette.fg3" },
SnacksDashboardIcon = { fg = "palette.fg1" },
SnacksDashboardDir = { fg = "palette.orange" },
SnacksDashboardFile = { fg = "palette.fg3" },
SnacksDashboardFooter = { fg = "palette.fg3" },
SnacksDashboardKey = { fg = "palette.orange" },
SnacksDashboardDesc = { fg = "palette.fg1" },
SnacksDashboardSpecial = { fg = "palette.fg1" },
-- Treesitter overrides
["@comment"] = { fg = "palette.comment", style = "italic" },
["@keyword"] = { fg = "palette.red", style = "bold" },
["@keyword.function"] = { fg = "palette.red", style = "bold" },
["@keyword.operator"] = { fg = "palette.red", style = "bold" },
["@function"] = { fg = "palette.orange", style = "bold" },
["@function.builtin"] = { fg = "palette.orange", style = "bold" },
["@function.call"] = { fg = "palette.orange" },
["@string"] = { fg = "palette.orange" },
["@number"] = { fg = "palette.orange" },
["@operator"] = { fg = "palette.yellow" },
["@variable"] = { fg = "palette.white" },
["@constant"] = { fg = "palette.white" },
["@type"] = { fg = "palette.white.dim" },
["@variable.parameter"] = { fg = "palette.ts_parameter", style = "italic" },
["@property"] = { fg = "palette.ts_property" },
["@field"] = { fg = "palette.ts_property" },
}
}
nightfox.setup({
options = {
style = "carbonfox",
terminal_colors = true,
dim_inactive = true,
styles = { comments = "italic", functions = "bold", keywords = "bold" },
modules = {
neotree = true,
treesitter = true,
},
},
palettes = final_palettes,
specs = specs,
groups = groups
})
vim.cmd("colorscheme carbonfox")
-- Lualine overrides
local lualine_theme = {
normal = {
a = { fg = matte_black_palette.bg0, bg = matte_black_palette.lualine_normal_bg, gui = "bold" },
b = { fg = matte_black_palette.fg1, bg = matte_black_palette.lualine_inactive_bg },
c = { fg = matte_black_palette.fg2, bg = matte_black_palette.lualine_inactive_bg },
},
insert = {
a = { fg = matte_black_palette.bg0, bg = matte_black_palette.lualine_insert_bg, gui = "bold" },
b = { fg = matte_black_palette.fg1, bg = matte_black_palette.lualine_inactive_bg },
c = { fg = matte_black_palette.fg2, bg = matte_black_palette.lualine_inactive_bg },
},
visual = {
a = { fg = matte_black_palette.bg0, bg = matte_black_palette.lualine_visual_bg, gui = "bold" },
b = { fg = matte_black_palette.fg1, bg = matte_black_palette.lualine_inactive_bg },
c = { fg = matte_black_palette.fg2, bg = matte_black_palette.lualine_inactive_bg },
},
command = {
a = { fg = matte_black_palette.bg0, bg = matte_black_palette.lualine_command_bg, gui = "bold" },
b = { fg = matte_black_palette.fg1, bg = matte_black_palette.lualine_inactive_bg },
c = { fg = matte_black_palette.fg2, bg = matte_black_palette.lualine_inactive_bg },
},
inactive = {
a = { fg = matte_black_palette.fg3, bg = matte_black_palette.lualine_inactive_bg },
b = { fg = matte_black_palette.fg3, bg = matte_black_palette.lualine_inactive_bg },
c = { fg = matte_black_palette.comment, bg = matte_black_palette.lualine_inactive_bg },
}, },
} }
require('lualine').setup({
options = {
theme = lualine_theme,
},
})
end,
}