98 Commits
v1.6.1 ... dev

Author SHA1 Message Date
a801fde7b9 Recommend starship.rs for prompt 2025-07-27 14:10:04 -04:00
35a603d0d2 Don't force 2 2025-07-27 13:10:51 -04:00
e446c4c71e Improve the examples and include the fractional scaling example 2025-07-27 12:33:54 -04:00
2953db18d9 Reveal a fully .bashrc that provides examples of what to overwrite 2025-07-27 10:45:22 -04:00
6e664c84a9 Merge pull request #369 from basecamp/update-boot-ansi
Update boot.sh ANSI
2025-07-26 22:02:09 -04:00
44925a6085 More readable 2025-07-26 21:58:09 -04:00
a0c90fb3db Not needed 2025-07-26 21:57:27 -04:00
008fab9df3 Turn dazzle into a full-blown screensaver 2025-07-26 21:53:13 -04:00
ffd136cdc6 Add a fun dazzle with the Omarchy logo that just keeps looping 2025-07-26 21:10:52 -04:00
0ff139860d Update boot.sh ANSI 2025-07-26 17:04:50 -07:00
42886f86bb Ordering 2025-07-26 18:49:33 -04:00
24e3f752ba Float and center About 2025-07-26 18:49:22 -04:00
64c6e872fc Match Omarchy TUI window to the slimmer logo 2025-07-26 18:38:55 -04:00
b50a4e7a74 No color works better with more themes 2025-07-26 18:31:11 -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
674c5bfdda Use Arch icon for this instead too for now 2025-07-24 18:11:03 -04:00
6cd8955409 Merge pull request #322 from benhoman/screen-cmd-output-dir
allow override of screenshot/screenrecord output
2025-07-24 18:07:38 -04:00
db63219398 A few more color corrections 2025-07-24 18:05:08 -04:00
42d80f2ce7 Consistent colors 2025-07-24 18:03:00 -04:00
4578d4e418 Cleanup files from needless comments 2025-07-24 18:02:00 -04:00
7242a57c18 Fix more swayosd colors 2025-07-24 18:00:00 -04:00
2d9ed8720b Match color to mako 2025-07-24 17:39:06 -04:00
205bcd7be8 Hyprland fullscreen may conflict with the app-specific fullscreen, so need a separate key
This is the case with Typora which will retain its ugly menu bar when
Hyprland does the fullscreening, but be beautifully bare when its doing
its own fullscreening. The best would be if we could make F11 work such
that the app got a shot at fullscreening first, then if it wasn't
capable, we let Hyprland do it. But not sure there's a way to do that?
2025-07-24 16:13:36 -04:00
70da2ecbe8 allow override of screenshot/screenrecord output 2025-07-24 11:39:12 -04: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
d2fffc40ea Add migration to prevent Waybar stacking 2025-07-23 16:26:13 -04:00
8884cc7a5c Prevent stacking of waybars after unlock by SIGUSR2'ing it
Bit crude, but better than a full kill.
Closes #196
2025-07-23 16:22:14 -04:00
81 changed files with 604 additions and 572 deletions

14
ansi.sh
View File

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

View File

@ -4,8 +4,9 @@ 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
echo " $OMARCHY_VERSION" tte -i ~/.local/share/omarchy/logo.txt --frame-rate 640 --no-color expand
echo " $OMARCHY_VERSION"
} }
main_menu() { main_menu() {
@ -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,8 +2,16 @@
# Set recorder based on GPU # Set recorder based on GPU
[[ -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="$HOME/Videos/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4" filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
notify-send "Screen recording starting..." -t 1000 notify-send "Screen recording starting..." -t 1000
sleep 1 sleep 1
@ -17,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

10
bin/omarchy-cmd-screensaver Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash
trap "exit" SIGINT
while true; do
effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
tte -i ~/.local/share/omarchy/logo.txt \
--frame-rate 240 --canvas-width 0 --canvas-height 0 --anchor-canvas c --anchor-text c \
"$effect"
done

View File

@ -1,8 +1,16 @@
#!/bin/bash #!/bin/bash
hyprshot -m ${1:-region} --raw | [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
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 ~/Pictures/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 \
--actions-on-enter save-to-clipboard \ --actions-on-enter save-to-clipboard \
--save-after-copy \ --save-after-copy \

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"

5
bin/omarchy-launch-screensaver Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
pkill -f "alacritty --class Screensaver" ||
alacritty --class Screensaver --title Screensaver -o 'colors.primary.background="#000000"' \
-e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver

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

20
boot.sh
View File

@ -1,15 +1,17 @@
#!/bin/bash #!/bin/bash
ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ 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

@ -2,6 +2,7 @@ general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend. before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
on_unlock_cmd = pkill -SIGUSR2 waybar # prevent stacking of waybar when waking
} }
listener { listener {

View File

@ -1,17 +1,20 @@
# See https://wiki.hyprland.org/Configuring/Monitors/ # See https://wiki.hyprland.org/Configuring/Monitors/
# List current monitors and resolutions possible: hyprctl monitors
# Change to 1 if on a 1x display (then change last "auto" to 1 in monitor=)
# Change to something like 1.75 for fractional scaling (can work well with 1.66667 monitor scaling)
# Note: You must relaunch Hyprland after changing any env like this (use Super+Esc, then Relaunch)
env = GDK_SCALE,2
# Use single default monitor (see all monitors with: hyprctl monitors)
# Format: monitor = [port], resolution, position, scale # Format: monitor = [port], resolution, position, scale
# You must relaunch Hyprland after changing any envs (use Super+Esc, then Relaunch)
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
env = GDK_SCALE,2
monitor=,preferred,auto,auto monitor=,preferred,auto,auto
# Exmaple for fractional scaling that works well with GDK_SCALE,1.75 # Good compromise for 27" or 32" 4K monitors (but fractional!)
# env = GDK_SCALE,1.75
# monitor=,preferred,auto,1.666667 # monitor=,preferred,auto,1.666667
# Straight 1x setup for low-resolution displays like 1080p or 1440p
# env = GDK_SCALE,1
# monitor=,preferred,auto,1
# Example for Framework 13 w/ 6K XDR Apple display # Example for Framework 13 w/ 6K XDR Apple display
# monitor = DP-5, 6016x3384@60.00, auto, 2 # monitor = DP-5, 6016x3384@60, auto, 2
# monitor = eDP-1, 2880x1920@120.00, auto, 2 # monitor = eDP-1, 2880x1920@120, auto, 2

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

14
default/bashrc Normal file
View File

@ -0,0 +1,14 @@
# All the default Omarchy aliases and functions
# (don't mess with these directly, just overwrite them here!)
source ~/.local/share/omarchy/default/bash/rc
# Add your own exports, aliases, and functions here.
#
# Make an alias for invoking commands you use constantly
# alias p='python'
#
# Use VSCode instead of neovim as your default editor
# export EDITOR="code"
#
# Set a custom prompt with the directory revealed (alternatively use https://starship.rs)
# PS1="\W \[\e]0;\w\a\]$PS1"

View File

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

View File

@ -32,5 +32,8 @@ bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot outp
bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
# Screensaver
bind = SUPER ALT, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver
# Color picker # Color picker
bind = SUPER, PRINT, exec, hyprpicker -a bind = SUPER, PRINT, exec, hyprpicker -a

View File

@ -5,19 +5,24 @@ windowrule = suppressevent maximize, class:.*
windowrule = tile, class:^(Chromium)$ windowrule = tile, class:^(Chromium)$
# Float and center settings and previews # Float and center settings and previews
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$ windowrule = float, class:^(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 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$
windowrule = size 645 450, class:Omarchy windowrule = size 590 400, class:Omarchy
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$ windowrule = size 700 470 class:About
# Float and center file pickers # Float and center file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
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)$
# Fullscreen screensaver
windowrule = fullscreen, class:Screensaver
# Just dash of opacity # Just dash of opacity
windowrule = opacity 0.97 0.9, class:.* windowrule = opacity 0.97 0.9, class:.*
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$ windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$

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

@ -12,5 +12,5 @@ if [ -z "$OMARCHY_BARE" ]; then
web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
web2app "Omarchy Manual" https://manuals.omamix.org/2/the-omarchy-manual https://manuals.omamix.org/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6NDgsInB1ciI6ImJsb2JfaWQifX0=--c26606490139480f5bcb3cf91b09fc45825007f6/omarchy.jpg?disposition=attachment web2app "Omarchy Manual" https://manuals.omamix.org/2/the-omarchy-manual https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/arch-linux.png
fi fi

View File

@ -4,11 +4,17 @@
cp -R ~/.local/share/omarchy/config/* ~/.config/ cp -R ~/.local/share/omarchy/config/* ~/.config/
# Use default bashrc from Omarchy # Use default bashrc from Omarchy
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc cp ~/.local/share/omarchy/default/bashrc ~/.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 @@
echo "Add missing installation of Zoom" if [[ ! -f ~/.local/state/omarchy/bare.mode ]]; then
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

8
migrations/1753302134.sh Normal file
View File

@ -0,0 +1,8 @@
echo "Reload Waybar on unlock to prevent stacking"
if ! grep -q 'on_unlock_cmd *= *pkill -SIGUSR2 waybar' ~/.config/hypr/hypridle.conf; then
sed -i '/^general[[:space:]]*{/,/^}/ {
/on_unlock_cmd *=/d
/^}$/ i\ on_unlock_cmd = pkill -SIGUSR2 waybar # prevent stacking of waybar when waking
}' ~/.config/hypr/hypridle.conf
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,8 +1,4 @@
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
$latte_blue = rgb(1e66f5)
general { general {
col.active_border = $latte_blue col.active_border = rgb(1e66f5)
} }

View File

@ -1,5 +1,5 @@
text-color=#4c4f69 text-color=#4c4f69
border-color=#dce0e8 border-color=#1e66f5
background-color=#eff1f5 background-color=#eff1f5
width=420 width=420
height=110 height=110

View File

@ -1,6 +1,5 @@
@define-color background-color #eff1f5; @define-color background-color #eff1f5;
@define-color border-color #4c4f69; @define-color border-color #1e66f5;
@define-color label #4c4f69; @define-color label #4c4f69;
@define-color image #4c4f69; @define-color image #4c4f69;
@define-color progress #4c4f69; @define-color progress #4c4f69;

View File

@ -1,4 +1,3 @@
general { general {
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgb(c6d0f5) col.active_border = rgb(c6d0f5)
} }

View File

@ -1,6 +1,5 @@
@define-color background-color #24273a; @define-color background-color #24273a;
@define-color border-color #c6d0f5; @define-color border-color #c6d0f5;
@define-color label #c6d0f5; @define-color label #cad3f5;
@define-color image #c6d0f5; @define-color image #cad3f5;
@define-color progress #c6d0f5; @define-color progress #cad3f5;

View File

@ -1,4 +1,3 @@
general { general {
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgb(d3c6aa) col.active_border = rgb(d3c6aa)
} }

View File

@ -1,4 +1,3 @@
general { general {
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgb(a89984) col.active_border = rgb(a89984)
} }

View File

@ -1,5 +1,5 @@
@define-color background-color #282828; @define-color background-color #282828;
@define-color border-color #ebdbb2; @define-color border-color #a89984;
@define-color label #ebdbb2; @define-color label #ebdbb2;
@define-color image #ebdbb2; @define-color image #ebdbb2;
@define-color progress #ebdbb2; @define-color progress #ebdbb2;

View File

@ -1,4 +1,3 @@
general { general {
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgb(dcd7ba) col.active_border = rgb(dcd7ba)
} }

View File

@ -1,4 +1,3 @@
general { general {
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgb(8A8A8D) col.active_border = rgb(8A8A8D)
} }

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,
} }

View File

@ -1,6 +1,6 @@
@define-color background-color #121212; @define-color background-color #121212;
@define-color border-color #EAEAEA; @define-color border-color #8A8A8D;
@define-color label #EAEAEA; @define-color label #8A8A8D;
@define-color image #EAEAEA; @define-color image #8A8A8D;
@define-color progress #EAEAEA; @define-color progress #8A8A8D;

View File

@ -1,4 +1,3 @@
general { general {
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgb(D8DEE9) col.active_border = rgb(D8DEE9)
} }

View File

@ -1,4 +1,3 @@
general { general {
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgb(575279) col.active_border = rgb(575279)
} }

View File

@ -1,5 +1,4 @@
general { general {
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
} }

View File

@ -1,6 +1,6 @@
@define-color background-color #1a1b26; @define-color background-color #1a1b26;
@define-color border-color #33ccff; @define-color border-color #33ccff;
@define-color label #33ccff; @define-color label #a9b1d6;
@define-color image #33ccff; @define-color image #a9b1d6;
@define-color progress #33ccff; @define-color progress #a9b1d6;