270 Commits

Author SHA1 Message Date
65577c1757 Merge branch 'dev' 2025-07-26 18:31:22 -04:00
b50a4e7a74 No color works better with more themes 2025-07-26 18:31:11 -04:00
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
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
a4e7f41798 Merge pull request #305 from basecamp/dev
Omarchy v1.6.1
2025-07-23 14:56:04 -04:00
8908ce91f8 Trailing slash 2025-07-23 14:55:00 -04:00
5458b46584 Merge pull request #304 from basecamp/increase-pamlockout-limit
Increase pamlimit lockout
2025-07-23 14:39:22 -04:00
9b7908d17b Ensure we restart swayosd after setting up theming 2025-07-23 13:03:47 -04:00
a12cd97922 Increase pamlimit lockout 2025-07-23 12:59:32 -04:00
9231148cd7 Increase pamlimit lockout 2025-07-23 12:36:57 -04:00
c4c9cdc0f6 Only load inputrc for interactive terminals
Fixes claude-code warnings and is more proper anyway.
Closes #282
2025-07-23 12:03:53 -04:00
98f848d4a0 Fix the vibe coding hallucinations from swayosd theming 2025-07-23 11:53:04 -04:00
c36d76bb1c Merge pull request #288 from aifrim/swayosd-cfg
full swayosd integration
2025-07-23 11:46:15 -04:00
71ccf9a367 Merge pull request #294 from precision/dev
Update media bindings to only display OSD on the focused display
2025-07-23 11:42:33 -04:00
e1f2cc4d3d Merge pull request #297 from spdawson/feat/add-mariadb-to-docker-databases
Add MariaDB to Docker databases
2025-07-23 11:42:02 -04:00
08f187b4ea Include satty in the list of windows that get a minimum size
Fixes #299
Co-authored-by: @mtk3d
2025-07-23 11:39:39 -04:00
35e1d1233e Merge pull request #302 from ludo237/master
fix: walker css url
2025-07-23 11:38:10 -04:00
8f569921b3 Merge pull request #295 from abenz1267/dev
force package database refresh after adding multilib repo
2025-07-23 11:37:51 -04:00
3933cd7c89 fix: walker css url
there is an extra `/` that should not be ehre
2025-07-23 15:15:53 +02:00
ceb44d7aa1 feat: Add MariaDB to Docker databases 2025-07-23 10:36:36 +01:00
fd56404407 force package database refresh after adding multilib repo 2025-07-23 09:43:51 +02:00
d2763225c3 Update the media bindings to only display on the currently focused
monitor.

sway-osd can also do playerctl
2025-07-22 23:28:17 -04:00
2b2103fb66 Put Sunset Lake first for Tokyo Night 2025-07-22 22:19:29 -04:00
11dfeae901 Merge pull request #246 from basecamp/dev
Omarchy v1.6.0
2025-07-22 16:24:55 -07:00
8c0ac90fe4 Remember to disown! 2025-07-22 19:17:41 -04:00
d83a87a01c Don't hang the terminal 2025-07-22 19:09:47 -04:00
f0a9271506 Correct the order 2025-07-22 19:09:09 -04:00
faaf672eb4 Alert that we are updating system packages 2025-07-22 19:08:41 -04:00
0058023e85 Revert "Try to work around hanging"
This reverts commit 1976eafbcd.
2025-07-22 19:07:27 -04:00
4fedfbe9f1 Maybe it's hanging on dependencies? 2025-07-22 19:07:01 -04:00
1976eafbcd Try to work around hanging 2025-07-22 19:07:01 -04:00
1ebf88bac0 full swayosd integration 2025-07-23 01:51:04 +03:00
cce56a2684 Nicer sorting in Walker 2025-07-22 18:41:17 -04:00
c4b45779fe Use current background link 2025-07-22 18:33:25 -04:00
d706eda676 Unused 2025-07-22 18:26:34 -04:00
7c75cbbcd5 Ensure indexes are up to date from boot.sh instead 2025-07-22 18:08:31 -04:00
69e48758fd Can't actually update all packages before we are ready to reboot
Since kernel etc that needs a restart might have updated
2025-07-22 18:06:38 -04:00
2332a4f6db Don't update index during the normal run
Since we did that at the start
2025-07-22 18:03:05 -04:00
bacaabe4a1 We don't have yay yet 2025-07-22 17:53:58 -04:00
60f5a3b063 Merge branch 'master' into dev 2025-07-22 14:53:27 -07:00
7a7a08f9c3 Drop the entire first run idea for now 2025-07-22 17:51:34 -04:00
4421f20e82 Reduce first run to just showing the manual for now 2025-07-22 17:49:08 -04:00
071be3abcb Setup Docker DBs from TUI 2025-07-22 17:47:45 -04:00
771313b836 Update all the built-in packages from the ISO 2025-07-22 17:47:34 -04:00
dbe3ec8b2f Safe to use this again then 2025-07-22 17:36:14 -04:00
5be61c17a1 Go back to ANSI header now that we dont open a browser until the end 2025-07-22 17:34:52 -04:00
98f5669637 Remove GH Setup for now too 2025-07-22 17:33:43 -04:00
bcf0e1ebf9 Save the Dropbox setup until we have an answer to GDK_SCALE 2025-07-22 17:27:23 -04:00
f06e11ac47 Focus back on the installer after opening the manual 2025-07-22 16:54:08 -04:00
03192de90e Use a header that won't fold on a small screen 2025-07-22 16:38:33 -04:00
c0bb83e76c Detect and apply keyboard layout configured during Arch installation (#286)
* Detect and apply keyboard layout configured during Arch installation

* align the identation
2025-07-22 16:08:53 -04:00
5e4c309b2c Do dropbox first so we have the browser if we need it 2025-07-22 13:58:35 -04:00
a691a50559 Scaling workaround 2025-07-22 13:48:00 -04:00
778a69897b Fix path 2025-07-22 13:37:04 -04:00
ff77d4731f Allow it to start before existing 2025-07-22 13:23:59 -04:00
ec4efb304c Didn't actually like that 2025-07-22 13:20:57 -04:00
1d4991426e More shushing 2025-07-22 13:16:37 -04:00
c31250d7c0 Also can't use logo here or we're squishing 2025-07-22 13:12:35 -04:00
f36402b2c9 Clear before launching 2025-07-22 13:11:10 -04:00
ecf65b0499 Still need to keep it quiet 2025-07-22 13:10:47 -04:00
65ba4cc576 Might squish the logo when we open Docker or Manual 2025-07-22 13:09:01 -04:00
56999c0ae5 Use the Omarchy Manual webapp for launching 2025-07-22 13:06:35 -04:00
e3e46e1383 Install Omarchy Manual as its own web app 2025-07-22 13:06:05 -04:00
28bec8c7d2 Launch the Docker app if we installed Docker DBs 2025-07-22 13:03:14 -04:00
484b98ae43 No confirm please 2025-07-22 13:02:01 -04:00
14d9cd452c Explain the gum picker 2025-07-22 13:01:19 -04:00
8071642b66 Use consistent conditional 2025-07-22 12:37:57 -04:00
ba1e50daa9 Keep it simple 2025-07-22 12:36:56 -04:00
1c69965819 Restart walker when we refresh the config 2025-07-22 11:21:50 -04:00
ea903c7d65 Cleanup the screenrecording script 2025-07-22 08:58:20 -05:00
6d8a1e3bcf wf-recorder instead of wl-screenrec (NVIDIA support for screen recording) (#278)
* use wf-recorder instead of wl-screenrec

wl-screenrec does not support NVIDIA drivers as of now

* install wf-recorder and migration for it

* use wl-screenrec for non-nvidia and wf-recorder otherwise

* useless comment

* only use one of the screen recording features
2025-07-22 08:47:25 -05:00
a94ee3dee8 Remove 1px border from hyprshot screenshots
Closes #277
Co-authored-by: @al3rez
2025-07-22 08:44:17 -05:00
a117f5a36a Open current directory on n alone while still allowing opening direct files too 2025-07-22 07:53:01 -05:00
d5b9a5f223 Update envs.conf (#281) 2025-07-22 07:44:36 -05:00
b656ea0625 Prevent messing with the list (#276) 2025-07-21 21:21:55 -04:00
611668783b Make sure we have jq for initial monitor setup 2025-07-21 20:42:39 -04:00
cd0565a57f Explain where to find Dropbox icon 2025-07-21 20:38:54 -04:00
e464f19bff Not starting right
Emacs people can figure themselves out
2025-07-21 20:34:09 -04:00
2567baf00e Clear so not smushed 2025-07-21 20:31:05 -04:00
84065dd767 Cleanup terminal after each step 2025-07-21 20:29:43 -04:00
377522f804 Try a simpler setup flow 2025-07-21 20:12:58 -04:00
a7b423a2c4 No redirect since stderr has the code 2025-07-21 20:11:41 -04:00
853d46854f Even if you kill it, you're done 2025-07-21 20:11:32 -04:00
785d575ecc Fix installation references 2025-07-21 19:58:54 -04:00
f346c78826 Quiet stderr 2025-07-21 19:55:40 -04:00
47584de6db Let it tile so browsers open neatly next to it 2025-07-21 19:05:32 -04:00
b150a1f068 Start the server as well 2025-07-21 19:01:00 -04:00
9cbe88d43d Move to the front and wrap in a no-op for when its there 2025-07-21 18:59:40 -04:00
790e90515e Add swayosd for on-screen volume and brightness indicators (#274)
* Make these executable

* Replace pavucontrol with wiremix (#225)

Add to install

* Revert "Replace pavucontrol with wiremix (#225)"

This reverts commit 620b397859.

* Add swayOSD to show brightness and volume status

* Add swayOSD migration

* Move swayosd from desktop to hyperlandia

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Roeland <roel4d@webding.org>
2025-07-21 18:58:11 -04:00
24aa77a6cf Add F11 keybind to toggle fullscreen for active window in hyprland (#273) 2025-07-21 18:54:30 -04:00
ac3aadd93a Correct path here too 2025-07-21 18:50:48 -04:00
95c6882e54 Ensure first-run flow isn't run for existing installations 2025-07-21 18:47:06 -04:00
cdc9f8606e Go to the Omarchy directory first 2025-07-21 18:45:31 -04:00
ae2e626c0e Use familiar emoji leader key of : instead of . 2025-07-21 18:44:06 -04:00
3518062c1f Fix bin references 2025-07-21 18:39:24 -04:00
83a8f42bd7 Open the manual as the last step 2025-07-21 18:27:15 -04:00
6a3ce098e9 Use a common namespace for cmds 2025-07-21 18:26:09 -04:00
d1ba090bec Its obvious 2025-07-21 18:13:53 -04:00
04ec2ba84d Reuse the Omarchy title so we get the same float 2025-07-21 18:13:37 -04:00
273c261b3e Give a little more breathing room 2025-07-21 18:13:26 -04:00
fa5b13a284 Finalize the first-run flow 2025-07-21 18:05:48 -04:00
22ff741c7f Hurray 2025-07-21 17:57:29 -04:00
702c6f015e Accommodate more themes 2025-07-21 17:55:21 -04:00
602009ebf3 Add a first-run flow 2025-07-21 17:46:37 -04:00
16e9553a40 Remove all noise 2025-07-21 16:28:07 -05:00
98b5c862bc Breaks the ini 2025-07-21 16:27:00 -05:00
0c6719becc No longer using current/backgrounds 2025-07-21 17:12:16 -04:00
e8c23532b3 Reuse ansi art and clear install when we ask for input 2025-07-21 16:22:28 -04:00
a7fb87f08b Need to put remove somewhere else -- not common enough to gum this up 2025-07-21 16:10:26 -04:00
e898ae327f Use dropbox-cli so it doesn't quit when the terminal does 2025-07-21 16:09:08 -04:00
b21a236bf3 Fixup the Dropbox setup flow 2025-07-21 16:05:29 -04:00
6ef2ce0088 Enable caps lock again as default xcompose key 2025-07-21 15:45:44 -04:00
5d09154079 Start walker service after doing installation 2025-07-20 22:19:22 -05:00
f083d3e9ec fix the low contrast colors for comments in NeoVim for matte black theme (#268) 2025-07-20 22:00:48 -05:00
f60e66cfdf Move Dropbox to a setup script 2025-07-20 21:51:46 -05:00
fcf00494bb Now that Dropbox has its own service starter, use another example 2025-07-20 21:43:29 -05:00
e7da208505 Fix using backgrounds from inside the themes 2025-07-20 21:30:06 -05:00
3415fef297 Go back to just always updating system packages
Otherwise we can't depend on having the same minimum versions
2025-07-20 21:24:10 -05:00
61a7aee377 Ensure this isnt run over and over also 2025-07-20 21:21:28 -05:00
f781a805c9 Install missing Dropbox dependencies if Dropbox is there 2025-07-20 21:19:34 -05:00
9c01775287 Better to use the refresh commands so you don't forget to write the migration 2025-07-20 21:16:04 -05:00
b8b3548019 Update waybar.css to fix waybar dancing workspace numbers with a migration 2025-07-20 21:09:07 -05:00
3634235eee Move from permission setup to .bak process
Means less interaction for folks just riding on the default train
without overwriting the work of people who've made changes.
2025-07-20 21:07:59 -05:00
1f1660f5e4 One smaller for less spacing 2025-07-20 20:41:24 -05:00
35fb85ea5a Revert "Temporary fix for waybar stacking on waking from sleep"
This reverts commit b967223d3c.
2025-07-20 20:22:52 -05:00
b967223d3c Temporary fix for waybar stacking on waking from sleep
Sledge hammer fix by restarting the waybar, but it'll do the job until
we find a better fix for #196
2025-07-20 20:14:57 -05:00
af72a45dbd Remove non-existent vibe-code hallucinated options and clean up theme files 2025-07-20 18:07:15 -05:00
f81983ec50 Fix detection of "new migrations" in omarchy-update (#219)
Previously, `omarchy-update` used the timestamp of the most recent git
commit to determine which migrations are "new" and should be executed.

Unfortunately, that strategy can (and did) fail in certain scenarios. If
a migration was generated at time T1 but not merged until time T3, and
meanwhile omarchy's `master` branch was updated to a new release with
commit timestamp T2 (where T1 < T2 < T3), then anyone who runs
`omarchy-update` between T2 and T3 would end up with `last_updated_at`
equal to T2; thus, on their next `omarchy-update` it would fail to
detect the migration with timestamp T1 as a "new" migration that should
be executed.

This commit changes the strategy for detecting "new" migrations to avoid
that problem. Rather than recording the most recent commit's timestamp,
we record its SHA. Then, after pulling the new changes, we can leverage
`git diff --name-only --diff-filter=A $SHA.. migrations/*.sh`
to return precisely the list of migration files that were introduced by
our `git pull`. It doesn't matter if any of those migrations have a
timestamp that was earlier than the timestamp of the commit we started
on - we will always execute *every* migration that didn't exist before
our `git pull`!
2025-07-20 17:55:22 -05:00
dca7e9a8e8 Also don't do these migrations if they were already completed 2025-07-20 17:52:32 -05:00
e2c94acd94 Add min-width to workspace numbers (#252) 2025-07-20 17:45:58 -05:00
5b42501c9f Same style as others with description always 2025-07-20 17:44:08 -05:00
ecc9a46bff Wrap a little better 2025-07-20 17:43:17 -05:00
fafe78d80f add missing installation of zoom (#262) 2025-07-20 17:40:45 -05:00
9b8569e537 Make migrations faster to skip if they've already been run 2025-07-20 17:36:29 -05:00
5b3c324350 Change default launcher from Wofi to Walker (#218)
* Change launcher from wofi -> walker

* Add migration

* More wofi -> walker locations

* Add rose pine theme

* Rename refresh script

* Minor improvements to walker + add uwsm

* Back out running as service

* Make these executable

* Add plugins dir for now to resolve open issue 355 from v0.13.0 release

* Replace pavucontrol with wiremix (#225)

Add to install

* Revert "Replace pavucontrol with wiremix (#225)"

This reverts commit 620b397859.

* Fix reference

* Add libqalculate so calc works out of the box

* Actually add libqalculate

* Re-add media

* Add catppuccin-latte

* Final cleanup

* Remove partially baked theme

* Remove failing migration

* Remove failing migration

* Fix refresh script

* Simplify css setup

* Rearrange walker theme files

* Change theme name

* Remove unnecessary file

* Clear everything

* Only worry about the config file now

* Disable load in animation for walker

* Run walker as service

* Make sure we have fresh package db

* Add keybindings theme

* Remove history

* Explain section

* Assume wofi is gone, only run if walker isn't there

* Move as the latest

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Roeland <roel4d@webding.org>
2025-07-20 16:17:42 -05:00
df13763d42 Better extraction 2025-07-19 22:43:28 -05:00
81727a20ce Install everything needed for full Dropbox + split out other potentially flaky installs 2025-07-19 22:43:09 -05:00
aac9e158d1 Migration to add libappindicator-gtk3 2025-07-19 22:25:32 -05:00
b98634d06b Need libappindicator-gtk3 for Dropbox tray icon to work right 2025-07-19 22:24:42 -05:00
309c35c866 Extract shared function 2025-07-19 17:02:52 -05:00
4427c0bb28 Add full screen recording as an option 2025-07-19 16:58:22 -05:00
30b3af58e5 Use same naming convention as new screenshot flow 2025-07-19 16:49:50 -05:00
6b947ffb45 Add satty to the default screenshot flow 2025-07-19 16:49:39 -05:00
f569c4e365 Moving away from SIGUSER2 didn't help with the stacking, so return it 2025-07-19 15:11:52 -05:00
cf71a3f101 Ensure apps started with uwsm stay managed by uwsm on restarts 2025-07-19 15:11:32 -05:00
ceedf474cb Include failed attempt counter and notice when you are locked out for 10 mins
Closes #229
Co-authored-by: @jhosdev
2025-07-19 12:34:34 -05:00
178f97a6e3 We don't need the GUI for fcitx5
The fewer packages the better
2025-07-18 23:33:08 -05:00
f99277ad71 Remove needless comments 2025-07-18 23:00:42 -05:00
ca69f15709 Not needed 2025-07-18 22:58:48 -05:00
2e874adb50 Add simple screen recordings (#235)
* Add simple screen recording tool

* Need slurp too
2025-07-18 22:55:28 -05:00
3b0fd13be1 Set class/title in case we want to do window settings on it 2025-07-18 22:54:42 -05:00
f8a7e1c7eb Finish transition from audio settings GUI to TUI 2025-07-18 22:54:17 -05:00
ee5785855a Replace pavucontrol with wiremix (#225)
Add to install
2025-07-18 22:40:42 -05:00
da597ac567 Revert "Replace pavucontrol with wiremix (#225)"
This reverts commit 620b397859.
2025-07-18 22:39:25 -05:00
620b397859 Replace pavucontrol with wiremix (#225)
Add to install
2025-07-18 22:38:45 -05:00
03053626e3 Make these executable 2025-07-18 17:49:56 -07:00
7f681c71fb Extra CR 2025-07-18 17:44:18 -07:00
d76d31a5af Make these executable too 2025-07-18 17:43:20 -07:00
3c156ab059 Better error handling and make these full scripts 2025-07-18 17:43:01 -07:00
dbfad74ba3 Better error catching 2025-07-18 17:33:51 -07:00
56e1ba9c5d Merge branch 'master' into dev 2025-07-18 17:18:02 -07:00
68a188d299 Offer community help link 2025-07-18 17:17:42 -07:00
4df7fcb716 Merge pull request #233 from alansikora/alan/setup-fixes
Setup is failing
2025-07-18 17:13:10 -07:00
913675bd5e Creating plymouth-quit.service.d before running tee 2025-07-18 21:05:38 -03:00
56e25bd02c Update docker.sh 2025-07-18 21:05:29 -03:00
2b0c56bbb1 Merge pull request #220 from rmacklin/reset-any-stash-conflicts-before-proceeding-in-omarchy-update
Reset any stash changes before proceeding if there were conflicts
2025-07-18 14:40:39 -07:00
f388e90d3b Add migration for new Catppuccin Latte theme 2025-07-18 14:35:37 -07:00
cd915557ae Merge pull request #212 from ryanyogan/omarchy-catppuccin-latte-theme
Omarchy Theme ~ Adds Catppuccin Latte
2025-07-18 14:32:51 -07:00
96e87d8e7e Minify without quality loss 2025-07-18 14:31:57 -07:00
be751a3dde Merge pull request #223 from ryanrhughes/improve-boot-times
Improve boot times
2025-07-18 14:26:27 -07:00
786b0b2205 adds a light pastel background and official btop theme 2025-07-18 10:12:28 -05:00
ced618318d Mask 2025-07-18 05:12:36 -04:00
f5553a8d30 Update 1752797704.sh
MASK
2025-07-18 05:11:51 -04:00
e34dbe7d50 Create directories 2025-07-18 04:40:41 -04:00
19d45670ce Change when plymouth is dismissed and prevent docker blocking 2025-07-18 04:37:47 -04:00
4bb8afde02 Reset any stash changes before proceeding if there were conflicts
If the worktree has conflicts after applying the user's changes from the
autostash, we should reset them before proceeding to ensure we are in
a working state. When there are conflicts, git still keeps the stash
entry, so the user will still be able to manually re-pop the stash and
resolve the conflicts after `omarchy-update` has finished.

In the case of conflicts, the output will look something like this (I've
omitted most of the normal `git pull` output, hence the `[...]`):

```
Updating 729cd6a..45b5d3e
Created autostash: 91853c4
Fast-forward
 bin/omarchy                                                                |  10 +++++++---
 [...]
 create mode 100644 themes/tokyo-night/backgrounds/2--Milad-Fakurian-Abstract-Purple-Blue.jpg
Applying autostash resulted in conflicts.
Your changes are safe in the stash.
You can run "git stash pop" or "git stash drop" at any time.
bin/omarchy:65: leftover conflict marker
```

before proceeding with the rest of the `omarchy-update` script from a
clean state. So the user will see 1) that there were conflicts when
applying the autostashed changes, 2) that their changes are still safe
in the stash, and 3) which files (and lines) had conflict markers.
2025-07-17 23:06:25 -07:00
49efa1c3f1 Add third Tokyo Night background 2025-07-17 22:35:02 -07:00
87e55b193b Merge pull request #215 from rmacklin/use-pull-autostash
Use `git pull --autostash` in `omarchy-update`
2025-07-18 00:42:16 -04:00
5252990396 increases the theme menu width for additional characters 2025-07-17 21:49:46 -05:00
276886af8e adds catppuccin logo 2025-07-17 21:35:22 -05:00
0e0741feb7 adds official catppuccin alacritty theme 2025-07-17 21:24:25 -05:00
cc0ac314ef Use git pull --autostash in omarchy-update
This is a minor follow-up to dcc4071979
to leverage the `--autostash` flag of `git pull` which does the same
thing we were doing in three separate commands.

This also avoids the possibility of popping something from the stash
that `omarchy-update` didn't actually stash. In other words, if the
initial `git stash` was a no-op (because there were no changes in the
working tree), it's actually not desirable for `omarchy-update` to
`git stash pop` at the end, since that potentially pops something the
user had manually stashed (we only want `omarchy-update` to pop its own
stash entry). Using `--autostash` handles this correctly.

Ref:
https://git-scm.com/docs/git-pull#Documentation/git-pull.txt---autostash
2025-07-17 19:13:35 -07:00
98c269e6d5 adds catppuccin from base catppuccin theme 2025-07-17 21:11:34 -05:00
d200cec03c removes not-needed styles 2025-07-17 19:14:15 -05:00
2bcff1662b removes personal neovim configs 2025-07-17 18:50:58 -05:00
4097582572 Merge branch 'basecamp:dev' into dev 2025-07-17 18:36:03 -05:00
03a541a9a2 [THEME] // Adds initial catppuccin-latte base styles 2025-07-17 17:11:34 -05:00
186 changed files with 1942 additions and 943 deletions

51
applications/mpv.desktop Normal file
View File

@ -0,0 +1,51 @@
[Desktop Entry]
Type=Application
Name=Media Player
Name[ar]=مشغل وسائط mpv
Name[ca]=Reproductor multimèdia mpv
Name[cs]=mpv přehrávač
Name[da]=mpv-medieafspiller
Name[fr]=Lecteur multimédia mpv
Name[it]=Lettore multimediale mpv
Name[ja]=mpv メディアプレイヤー
Name[pl]=Odtwarzacz mpv
Name[ru]=Проигрыватель mpv
Name[tr]=mpv Ortam Oynatıcı
Name[zh_CN]=mpv 媒体播放器
Name[zh_TW]=mpv 媒體播放器
GenericName=Multimedia player
GenericName[ar]=مُشَغِّل وسائط متعددة
GenericName[cs]=Multimediální přehrávač
GenericName[da]=Multimedieafspiller
GenericName[fr]=Lecteur multimédia
GenericName[it]=Lettore multimediale
GenericName[ja]=マルチメディアプレイヤー
GenericName[ru]=Мультимедийный проигрыватель
GenericName[tr]=Çoklu ortam oynatıcı
GenericName[zh_CN]=多媒体播放器
GenericName[zh_TW]=多媒體播放器
Comment=Play movies and songs
Comment[ar]=شَغِّل الأفلام والأغاني
Comment[ca]=Reproduïu vídeos i cançons
Comment[cs]=Přehrává filmy a hudbu
Comment[da]=Afspil film og sange
Comment[de]=Filme und Musik abspielen
Comment[es]=Reproduzca vídeos y canciones
Comment[fr]=Lire des vidéos et des musiques
Comment[ja]=映画や音楽を再生する
Comment[it]=Riproduci video e canzoni
Comment[pl]=Odtwarzaj filmy i muzykę
Comment[ru]=Воспроизведение фильмов и музыки
Comment[tr]=Filmleri ve şarkıları oynatın
Comment[zh_CN]=播放电影和歌曲
Comment[zh_TW]=播放電影和歌曲
Icon=mpv
TryExec=mpv
Exec=mpv --player-operation-mode=pseudo-gui -- %U
Terminal=false
Categories=AudioVideo;Audio;Video;Player;TV;
MimeType=application/ogg;application/x-ogg;application/mxf;application/sdp;application/smil;application/x-smil;application/streamingmedia;application/x-streamingmedia;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/aac;audio/x-aac;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/aiff;audio/x-aiff;audio/m4a;audio/x-m4a;application/x-extension-m4a;audio/mp1;audio/x-mp1;audio/mp2;audio/x-mp2;audio/mp3;audio/x-mp3;audio/mpeg;audio/mpeg2;audio/mpeg3;audio/mpegurl;audio/x-mpegurl;audio/mpg;audio/x-mpg;audio/rn-mpeg;audio/musepack;audio/x-musepack;audio/ogg;audio/scpls;audio/x-scpls;audio/vnd.rn-realaudio;audio/wav;audio/x-pn-wav;audio/x-pn-windows-pcm;audio/x-realaudio;audio/x-pn-realaudio;audio/x-ms-wma;audio/x-pls;audio/x-wav;video/mpeg;video/x-mpeg2;video/x-mpeg3;video/mp4v-es;video/x-m4v;video/mp4;application/x-extension-mp4;video/divx;video/vnd.divx;video/msvideo;video/x-msvideo;video/ogg;video/quicktime;video/vnd.rn-realvideo;video/x-ms-afs;video/x-ms-asf;audio/x-ms-asf;application/vnd.ms-asf;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvxvideo;video/x-avi;video/avi;video/x-flic;video/fli;video/x-flc;video/flv;video/x-flv;video/x-theora;video/x-theora+ogg;video/x-matroska;video/mkv;audio/x-matroska;application/x-matroska;video/webm;audio/webm;audio/vorbis;audio/x-vorbis;audio/x-vorbis+ogg;video/x-ogm;video/x-ogm+ogg;application/x-ogm;application/x-ogm-audio;application/x-ogm-video;application/x-shorten;audio/x-shorten;audio/x-ape;audio/x-wavpack;audio/x-tta;audio/AMR;audio/ac3;audio/eac3;audio/amr-wb;video/mp2t;audio/flac;audio/mp4;application/x-mpegurl;video/vnd.mpegurl;application/vnd.apple.mpegurl;audio/x-pn-au;video/3gp;video/3gpp;video/3gpp2;audio/3gpp;audio/3gpp2;video/dv;audio/dv;audio/opus;audio/vnd.dts;audio/vnd.dts.hd;audio/x-adpcm;application/x-cue;audio/m3u;audio/vnd.wave;video/vnd.avi;
X-KDE-Protocols=appending,file,ftp,hls,http,https,mms,mpv,rtmp,rtmps,rtmpt,rtmpts,rtp,rtsp,rtsps,sftp,srt,srtp,webdav,webdavs
StartupWMClass=mpv
Keywords=mpv;media;player;video;audio;tv;
Keywords[ar]=mpv;إم بي في;ام بي في;وسائط;مشغل;فيديو;مرئية;صوتي;تلفاز;

View File

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

View File

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

View File

@ -5,17 +5,7 @@ PATH="$PATH:$HOME/.local/share/omarchy/bin"
show_ascii_art() { show_ascii_art() {
clear clear
cat <<'EOF' tte -i ~/.local/share/omarchy/logo.txt --frame-rate 640 --no-color expand
▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀▀▀ ███ ▀▀███▀▀▀▀███▀ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ █▄ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
███ ███
EOF
echo " $OMARCHY_VERSION" echo " $OMARCHY_VERSION"
} }
@ -35,12 +25,13 @@ main_menu() {
update_menu() { update_menu() {
show_ascii_art show_ascii_art
local menu=("Omarchy" "Waybar" "Wofi" "Plymouth" "Desktop apps" "Back") local menu=("Omarchy" "Waybar" "Walker" "Plymouth" "SwayOSD" "Desktop apps" "Back")
local commands=( local commands=(
"omarchy-update" "omarchy-update"
"omarchy-refresh-waybar" "omarchy-refresh-waybar"
"omarchy-refresh-wofi" "omarchy-refresh-walker"
"omarchy-refresh-plymouth" "omarchy-refresh-plymouth"
"omarchy-refresh-swayosd"
"omarchy-refresh-applications" "omarchy-refresh-applications"
"main_menu" "main_menu"
) )
@ -105,12 +96,13 @@ remove_theme_prompt() {
setup_menu() { setup_menu() {
show_ascii_art show_ascii_art
local menu=("Add fingerprint sensor" "Remove fingerprint sensor" "Add Fido2 device" "Remove Fido2 device" "Back") local menu=("Dropbox" "Steam" "Docker DBs" "Fingerprint sensor" "Fido2 device" "Back")
local commands=( local commands=(
"omarchy-setup-dropbox"
"omarchy-setup-steam"
"setup_docker_dbs"
"omarchy-setup-fingerprint" "omarchy-setup-fingerprint"
"omarchy-setup-fingerprint --remove"
"omarchy-setup-fido2" "omarchy-setup-fido2"
"omarchy-setup-fido2 --remove"
"main_menu" "main_menu"
) )
local choice local choice
@ -129,6 +121,24 @@ setup_menu() {
done done
} }
setup_docker_dbs() {
options=("MariaDB" "MySQL" "Redis" "PostgreSQL")
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
if [[ -n "$choices" ]]; then
for db in $choices; do
case $db in
MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;;
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
done
fi
main_menu
}
open_manual() { open_manual() {
setsid chromium --new-window --ozone-platform=wayland --app="https://manuals.omamix.org/2/the-omarchy-manual" >/dev/null 2>&1 & setsid chromium --new-window --ozone-platform=wayland --app="https://manuals.omamix.org/2/the-omarchy-manual" >/dev/null 2>&1 &
clear clear

34
bin/omarchy-cmd-screenrecord Executable file
View File

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

17
bin/omarchy-cmd-screenshot Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
[[ -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 - \
--output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \
--early-exit \
--actions-on-enter save-to-clipboard \
--save-after-copy \
--copy-command 'wl-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"

View File

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

View File

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

View File

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

View File

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

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

11
bin/omarchy-refresh-hyprlock Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
# Overwrite local Hyprlock settings with the latest in Omarchy, but create a backup if it differs
cp -f ~/.config/hypr/hyprlock.conf ~/.config/hypr/hyprlock.conf.bak 2>/dev/null
cp -f ~/.local/share/omarchy/config/hypr/hyprlock.conf ~/.config/hypr/ 2>/dev/null
if cmp -s ~/.config/hypr/hyprlock.conf.bak ~/.config/hypr/hyprlock.conf; then
rm ~/.config/hypr/hyprlock.conf.bak
else
echo -e "\e[31mExisting .config/hypr/hyprlock.conf replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi

13
bin/omarchy-refresh-swayosd Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
cp -f ~/.config/swayosd/config.toml ~/.config/swayosd/config.toml.bak 2>/dev/null
cp -f ~/.local/share/omarchy/config/swayosd/config.toml ~/.config/swayosd/ 3>/dev/null
if cmp -s ~/.config/swayosd/config.toml.bak ~/.config/swayosd/config.toml; then
rm ~/.config/swayosd//config.toml.bak
else
echo -e "\e[31mExisting .config/swayosd/config.toml replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null &

13
bin/omarchy-refresh-walker Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
cp -f ~/.config/walker/config.toml ~/.config/walker/config.toml.bak 2>/dev/null
cp -f ~/.local/share/omarchy/config/walker/config.toml ~/.config/walker/ 2>/dev/null
if cmp -s ~/.config/walker/config.toml.bak ~/.config/walker/config.toml; then
rm ~/.config/walker/config.toml.bak
else
echo -e "\e[31mExisting .config/walker/config.toml replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
pkill walker
uwsm app -- walker --gapplication-service &

View File

@ -1,11 +1,25 @@
#!/bin/bash #!/bin/bash
if gum confirm "Refresh Waybar config? This will replace your current settings with Omarchy defaults."; then # Backup existing settings
# Overwrite local waybar settings with the latest in Omarchy cp -f ~/.config/waybar/config.jsonc ~/.config/waybar/config.jsonc.bak 2>/dev/null
cp -f ~/.local/share/omarchy/config/waybar/config.jsonc ~/.config/waybar/ 2>/dev/null cp -f ~/.config/waybar/style.css ~/.config/waybar/style.css.bak 2>/dev/null
cp -f ~/.local/share/omarchy/config/waybar/style.css ~/.config/waybar/ 2>/dev/null
# Restart waybar # Overwrite local waybar settings with the latest in Omarchy
pkill waybar cp -f ~/.local/share/omarchy/config/waybar/config.jsonc ~/.config/waybar/ 2>/dev/null
setsid waybar >/dev/null 2>&1 & cp -f ~/.local/share/omarchy/config/waybar/style.css ~/.config/waybar/ 2>/dev/null
# Remove identical backup files
if cmp -s ~/.config/waybar/config.jsonc.bak ~/.config/waybar/config.jsonc; then
rm ~/.config/waybar/config.jsonc.bak
else
echo -e "\e[31mExisting .config/waybar/config.jsonc replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi fi
if cmp -s ~/.config/waybar/style.css.bak ~/.config/waybar/style.css; then
rm ~/.config/waybar/style.css.bak
else
echo -e "\e[31mExisting .config/waybar/style.css replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
# Restart waybar
pkill -SIGUSR2 waybar

View File

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

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

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

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

@ -2,7 +2,7 @@
# Cycles through the background images available # Cycles through the background images available
BACKGROUNDS_DIR="$HOME/.config/omarchy/current/backgrounds/" BACKGROUNDS_DIR="$HOME/.config/omarchy/current/theme/backgrounds/"
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background" CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
mapfile -d '' -t BACKGROUNDS < <(find "$BACKGROUNDS_DIR" -type f -print0 | sort -z) mapfile -d '' -t BACKGROUNDS < <(find "$BACKGROUNDS_DIR" -type f -print0 | sort -z)
@ -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
setsid swaybg --color '#000000' >/dev/null 2>&2 & 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
setsid swaybg -i "$NEW_BACKGROUND" -m fill >/dev/null 2>&2 & 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

@ -18,14 +18,8 @@ mapfile -t themes < <(
done | sort done | sort
) )
# Show Wofi menu (with markup support) # Show Walker menu
selection=$(printf '%s\n' "${themes[@]}" | wofi \ selection=$(printf '%s\n' "${themes[@]}" | walker --dmenu --theme dmenu_250 2>/dev/null)
--show dmenu \
--allow-markup \
--width 150 \
--height 400 \
-O alphabetical \
--style ~/.config/wofi/select.css 2>/dev/null)
# Remove any Pango markup before converting back to filename # Remove any Pango markup before converting back to filename
clean_selection=$(echo "$selection" | sed -E 's/<[^>]+>//g') clean_selection=$(echo "$selection" | sed -E 's/<[^>]+>//g')

View File

@ -14,12 +14,6 @@ CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
THEME_NAME="$1" THEME_NAME="$1"
THEME_PATH="$THEMES_DIR/$THEME_NAME" THEME_PATH="$THEMES_DIR/$THEME_NAME"
if [[ -d "$HOME/.config/omarchy/themes/$THEME_NAME/backgrounds" ]]; then
BACKGROUND_PATH="$HOME/.config/omarchy/themes/$THEME_NAME/backgrounds"
else
BACKGROUND_PATH="$HOME/.config/omarchy/backgrounds/$THEME_NAME"
fi
# Check if the theme entered exists # Check if the theme entered exists
if [[ ! -d "$THEME_PATH" ]]; then if [[ ! -d "$THEME_PATH" ]]; then
echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR" >&2 echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR" >&2
@ -27,7 +21,6 @@ if [[ ! -d "$THEME_PATH" ]]; then
fi fi
# Update theme symlinks # Update theme symlinks
ln -nsf "$BACKGROUND_PATH" "$HOME/.config/omarchy/current/backgrounds"
ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR" ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR"
# Change gnome modes # Change gnome modes
@ -42,12 +35,11 @@ fi
# Trigger alacritty config reload # Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml" touch "$HOME/.config/alacritty/alacritty.toml"
# Trigger btop config reload
pkill -SIGUSR2 btop
# Restart components to apply new theme # Restart components to apply new theme
pkill waybar pkill -SIGUSR2 btop
setsid waybar >/dev/null 2>&1 & pkill -SIGUSR2 waybar
pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null &
makoctl reload makoctl reload
hyprctl reload hyprctl reload

View File

@ -4,6 +4,6 @@ if pgrep -x hypridle >/dev/null; then
pkill -x hypridle pkill -x hypridle
notify-send "Stop locking computer when idle" notify-send "Stop locking computer when idle"
else else
setsid hypridle &>/dev/null & uwsm app -- hypridle >/dev/null 2>&1 &
notify-send "Now locking computer when idle" notify-send "Now locking computer when idle"
fi fi

View File

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

9
boot.sh Normal file → Executable file
View File

@ -1,4 +1,6 @@
ascii_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄ #!/bin/bash
ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄ ███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███ ███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
@ -8,9 +10,10 @@ ascii_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀ ▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
███ ███ ' ███ ███ '
echo -e "\n$ascii_art\n" clear
echo -e "\n$ansi_art\n"
pacman -Q git &>/dev/null || sudo pacman -Sy --noconfirm --needed git sudo pacman -Sy --noconfirm --needed git
echo -e "\nCloning Omarchy..." echo -e "\nCloning Omarchy..."
rm -rf ~/.local/share/omarchy/ rm -rf ~/.local/share/omarchy/

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

@ -45,7 +45,7 @@ bind = SUPER, X, exec, $webapp="https://x.com/"
bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post" bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
# Extra autostart processes # Extra autostart processes
# exec-once = dropbox-cli start # exec-once = uwsm app -- my-service
# Extra env variables # Extra env variables
# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch) # Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch)
@ -56,7 +56,7 @@ bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
input { input {
# Use multiple keyboard layouts and switch between them with Alt + Space # Use multiple keyboard layouts and switch between them with Alt + Space
# kb_layout = us,dk # kb_layout = us,dk
# kb_options = compose:caps,grp:alt_space_toggle kb_options = compose:caps # ,grp:alt_space_toggle
# Change speed of keyboard repeat # Change speed of keyboard repeat
repeat_rate = 40 repeat_rate = 40

View File

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

View File

@ -0,0 +1,4 @@
[server]
show_percentage = true
max_volume = 150
style = "./style.css"

28
config/swayosd/style.css Normal file
View File

@ -0,0 +1,28 @@
@import "../omarchy/current/theme/swayosd.css";
window {
border-radius: 0;
opacity: 0.97;
border: 2px solid @border-color;
background-color: @background-color;
}
label {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 11pt;
color: @label;
}
image {
color: @image;
}
progressbar {
border-radius: 0;
}
progress {
background-color: @progress;
}

292
config/walker/config.toml Normal file
View File

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

View File

@ -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": ["󰤯","󰤟","󰤢","󰤥","󰤨"],
@ -96,7 +97,7 @@
}, },
"pulseaudio": { "pulseaudio": {
"format": "{icon}", "format": "{icon}",
"on-click": "pavucontrol", "on-click": "alacritty --class=Wiremix -e wiremix",
"on-click-right": "pamixer -t", "on-click-right": "pamixer -t",
"tooltip-format": "Playing at {volume}%", "tooltip-format": "Playing at {volume}%",
"scroll-step": 5, "scroll-step": 5,

View File

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

View File

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

View File

@ -1,11 +0,0 @@
/* Use by power menu, theme selector, and other menus without visible search bar */
@import ".config/wofi/style.css";
#input {
display: none;
opacity: 0;
margin-top: -200px;
}
@import ".config/omarchy/current/theme/wofi.css";

View File

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

View File

@ -24,10 +24,10 @@ alias ...='cd ../..'
alias ....='cd ../../..' alias ....='cd ../../..'
# Tools # Tools
alias n='nvim'
alias g='git' alias g='git'
alias d='docker' alias d='docker'
alias r='rails' alias r='rails'
n() { if [ "$#" -eq 0 ]; then nvim .; else nvim "$@"; fi; }
# Git # Git
alias gcm='git commit -m' alias gcm='git commit -m'

View File

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

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

@ -4,4 +4,4 @@ source ~/.local/share/omarchy/default/bash/functions
source ~/.local/share/omarchy/default/bash/prompt source ~/.local/share/omarchy/default/bash/prompt
source ~/.local/share/omarchy/default/bash/init source ~/.local/share/omarchy/default/bash/init
source ~/.local/share/omarchy/default/bash/envs source ~/.local/share/omarchy/default/bash/envs
bind -f ~/.local/share/omarchy/default/bash/inputrc [[ $- == *i* ]] && bind -f ~/.local/share/omarchy/default/bash/inputrc

View File

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

View File

@ -1,13 +1,16 @@
# Laptop multimedia keys for volume and LCD brightness # Only display the OSD on the currently focused monitor
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ $osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Laptop multimedia keys for volume and LCD brightness (with OSD)
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle bindel = ,XF86AudioRaiseVolume, exec, $osdclient --output-volume raise
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+ bindel = ,XF86AudioLowerVolume, exec, $osdclient --output-volume lower
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%- bindel = ,XF86AudioMute, exec, $osdclient --output-volume mute-toggle
bindel = ,XF86AudioMicMute, exec, $osdclient --input-volume mute-toggle
bindel = ,XF86MonBrightnessUp, exec, $osdclient --brightness raise
bindel = ,XF86MonBrightnessDown, exec, $osdclient --brightness lower
# Requires playerctl # Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next bindl = , XF86AudioNext, exec, $osdclient --playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause bindl = , XF86AudioPause, exec, $osdclient --playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause bindl = , XF86AudioPlay, exec, $osdclient --playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous bindl = , XF86AudioPrev, exec, $osdclient --playerctl previous

View File

@ -5,6 +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 = 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

@ -1,11 +1,11 @@
# Launching # Launching
bind = SUPER, space, exec, pkill wofi || wofi --show drun -O alphabetical bind = SUPER, space, exec, walker
bind = SUPER, K, exec, pkill wofi || ~/.local/share/omarchy/bin/omarchy-menu-keybindings bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings
# Aesthetics # Aesthetics
bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar
bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next
bind = SUPER SHIFT CTRL, SPACE, exec, pkill wofi || ~/.local/share/omarchy/bin/omarchy-theme-menu bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu
# Notifications # Notifications
bind = SUPER, comma, exec, makoctl dismiss bind = SUPER, comma, exec, makoctl dismiss
@ -13,20 +13,24 @@ bind = SUPER SHIFT, comma, exec, makoctl dismiss --all
bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications" bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
# Power menu controls lock, suspend, relaunch, restart, shutdown # Power menu controls lock, suspend, relaunch, restart, shutdown
bind = SUPER, ESCAPE, exec, pkill wofi || ~/.local/share/omarchy/bin/omarchy-menu-power bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-menu-power
# Toggle idling # Toggle idling
bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle
# Control Apple Display brightness # Control Apple Display brightness
bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-apple-display-brightness -5000 bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000
bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-apple-display-brightness +5000 bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000
bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-apple-display-brightness +60000 bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000
# Screenshots # Screenshots
bind = , PRINT, exec, hyprshot -m region bind = , PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot
bind = SHIFT, PRINT, exec, hyprshot -m window bind = SHIFT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window
bind = CTRL, PRINT, exec, hyprshot -m output bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output
# Screenshots
bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
# Color picker # Color picker
bind = SUPER, PRINT, exec, hyprpicker -a bind = SUPER, PRINT, exec, hyprpicker -a

View File

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

View File

@ -69,6 +69,12 @@ animations {
animation = workspaces, 0, 0, ease animation = workspaces, 0, 0, ease
} }
# Application-sepcific animation
layerrule=noanim,walker
# Remove 1px border around hyprshot screenshots
layerrule = noanim, selection
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ # Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only" # "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that. # uncomment all if you wish to use that.

View File

@ -5,17 +5,18 @@ 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:^(org.pulseaudio.pavucontrol|blueberry.py|Impala|org.gnome.NautilusPreviewer|Omarchy)$ windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$
windowrule = size 800 600, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala|org.gnome.NautilusPreviewer)$ windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$
windowrule = size 645 350, class:Omarchy windowrule = size 645 450, class:Omarchy
windowrule = center, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala|org.gnome.NautilusPreviewer|Omarchy)$ windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$
# Float and center file pickers # Float and center file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
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
@ -27,6 +28,3 @@ windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$
# Fix some dragging issues with XWayland # Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# Proper background blur for wofi
layerrule = blur,wofi

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

82
install.sh Normal file → Executable file
View File

@ -1,16 +1,82 @@
#!/bin/bash
# Exit immediately if a command exits with a non-zero status # Exit immediately if a command exits with a non-zero status
set -e set -e
OMARCHY_INSTALL=~/.local/share/omarchy/install
# Give people a chance to retry running the installation # Give people a chance to retry running the installation
trap 'echo "Omarchy installation failed! You can retry by running: source ~/.local/share/omarchy/install.sh"' ERR catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
echo "You can retry by running: bash ~/.local/share/omarchy/install.sh"
echo "Get help from the community: https://discord.gg/tXFUdasqhY"
}
# Install everything trap catch_errors ERR
for f in ~/.local/share/omarchy/install/*.sh; do
echo -e "\nRunning installer: $f"
source "$f"
done
# Ensure locate is up to date now that everything has been installed show_logo() {
clear
tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
echo
}
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
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,4 +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://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/arch-linux.png
fi fi

20
install/apps/xtras.sh Normal file
View File

@ -0,0 +1,20 @@
#!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed \
gnome-calculator gnome-keyring signal-desktop \
obsidian-bin libreoffice obs-studio kdenlive \
xournalpp localsend-bin
# Packages known to be flaky or having key signing issues are run one-by-one
for pkg in pinta typora spotify zoom; do
yay -S --noconfirm --needed "$pkg" ||
echo -e "\e[31mFailed to install $pkg. Continuing without!\e[0m"
done
yay -S --noconfirm --needed 1password-beta 1password-cli ||
echo -e "\e[31mFailed to install 1password. Continuing without!\e[0m"
fi
# Copy over Omarchy applications
source ~/.local/share/omarchy/bin/omarchy-refresh-applications || true

View File

@ -3,9 +3,18 @@
# Copy over Omarchy configs # Copy over Omarchy configs
cp -R ~/.local/share/omarchy/config/* ~/.config/ cp -R ~/.local/share/omarchy/config/* ~/.config/
# Use default bashrc from Omarchy
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/
@ -13,8 +22,9 @@ sudo chmod 644 /etc/gnupg/dirmngr.conf
sudo gpgconf --kill dirmngr || true sudo gpgconf --kill dirmngr || true
sudo gpgconf --launch dirmngr || true sudo gpgconf --launch dirmngr || true
# Use default bashrc from Omarchy # Increase lockout limit to 10 and decrease timeout to 2 minutes
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
# Set common git aliases # Set common git aliases
git config --global alias.co checkout git config --global alias.co checkout

View File

@ -0,0 +1,15 @@
#!/bin/bash
conf="/etc/vconsole.conf"
hyprconf="$HOME/.config/hypr/hyprland.conf"
layout=$(grep '^XKBLAYOUT=' "$conf" | cut -d= -f2 | tr -d '"')
variant=$(grep '^XKBVARIANT=' "$conf" | cut -d= -f2 | tr -d '"')
if [[ -n "$layout" ]]; then
sed -i "/^[[:space:]]*kb_options *=/i\ kb_layout = $layout" "$hyprconf"
fi
if [[ -n "$variant" ]]; then
sed -i "/^[[:space:]]*kb_options *=/i\ kb_variant = $variant" "$hyprconf"
fi

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,9 +1,4 @@
#!/bin/bash #!/bin/bash
# Need gum to query for input
yay -S --noconfirm --needed gum
# Configure identification
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
@ -35,6 +38,9 @@ if [ -n "$(lspci | grep -i 'nvidia')" ]; then
sudo sed -i '/^#\[multilib\]/,/^#Include/ s/^#//' /etc/pacman.conf sudo sed -i '/^#\[multilib\]/,/^#Include/ s/^#//' /etc/pacman.conf
fi fi
# force package database refresh
sudo pacman -Syy
# Install packages # Install packages
PACKAGES_TO_INSTALL=( PACKAGES_TO_INSTALL=(
"${KERNEL_HEADERS}" "${KERNEL_HEADERS}"
@ -47,7 +53,7 @@ if [ -n "$(lspci | grep -i 'nvidia')" ]; then
"qt6-wayland" "qt6-wayland"
) )
yay -Syu --needed --noconfirm "${PACKAGES_TO_INSTALL[@]}" yay -S --needed --noconfirm "${PACKAGES_TO_INSTALL[@]}"
# Configure modprobe for early KMS # Configure modprobe for early KMS
echo "options nvidia_drm modeset=1" | sudo tee /etc/modprobe.d/nvidia.conf >/dev/null echo "options nvidia_drm modeset=1" | sudo tee /etc/modprobe.d/nvidia.conf >/dev/null

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,8 +0,0 @@
#!/bin/bash
yay -S --noconfirm --needed \
brightnessctl playerctl pamixer pavucontrol wireplumber \
fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool wl-clip-persist \
nautilus sushi ffmpegthumbnailer \
mpv evince imv \
chromium

View File

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

View File

@ -1,9 +1,9 @@
#!/bin/bash #!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then if [ -z "$OMARCHY_BARE" ]; then
yay -Sy --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra yay -S --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra
else else
yay -Sy --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji yay -S --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji
fi fi
mkdir -p ~/.local/share/fonts mkdir -p ~/.local/share/fonts

View File

@ -2,5 +2,5 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \ hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \
wofi waybar mako swaybg \ walker-bin libqalculate waybar mako swaybg swayosd \
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-desktop-portal-hyprland xdg-desktop-portal-gtk

View File

@ -1,21 +1,26 @@
#!/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
ln -snf ~/.config/omarchy/themes/tokyo-night ~/.config/omarchy/current/theme ln -snf ~/.config/omarchy/themes/tokyo-night ~/.config/omarchy/current/theme
ln -snf ~/.config/omarchy/current/theme/backgrounds/1-Pawel-Czerwinski-Abstract-Purple-Blue.jpg ~/.config/omarchy/current/background ln -snf ~/.config/omarchy/current/theme/backgrounds/1-scenery-pink-lakeside-sunset-lake-landscape-scenic-panorama-7680x3215-144.png ~/.config/omarchy/current/background
# Set specific app links for current theme # Set specific app links for current theme
ln -snf ~/.config/omarchy/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua ln -snf ~/.config/omarchy/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua

View File

@ -13,6 +13,7 @@ sudo systemctl enable docker
sudo usermod -aG docker ${USER} sudo usermod -aG docker ${USER}
# Prevent Docker from preventing boot for network-online.target # Prevent Docker from preventing boot for network-online.target
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/no-block-boot.conf <<'EOF' sudo tee /etc/systemd/system/docker.service.d/no-block-boot.conf <<'EOF'
[Unit] [Unit]
DefaultDependencies=no DefaultDependencies=no

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
if ! command -v ufw &>/dev/null; then if ! command -v ufw &>/dev/null; then
yay -Sy --noconfirm --needed ufw ufw-docker yay -S --noconfirm --needed ufw ufw-docker
# Allow nothing in, everything out # Allow nothing in, everything out
sudo ufw default deny incoming sudo ufw default deny incoming

View File

@ -2,7 +2,7 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
wget curl unzip inetutils impala \ wget curl unzip inetutils impala \
fd eza fzf ripgrep zoxide bat \ fd eza fzf ripgrep zoxide bat jq \
wl-clipboard fastfetch btop \ wl-clipboard fastfetch btop \
man tldr less whois plocate bash-completion \ man tldr less whois plocate bash-completion \
alacritty alacritty

View File

@ -1,125 +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 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

View File

@ -1,20 +0,0 @@
#!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed \
gnome-calculator gnome-keyring signal-desktop \
obsidian-bin libreoffice obs-studio kdenlive \
xournalpp localsend-bin
yay -S --noconfirm --needed pinta ||
echo -e "\e[31mFailed to install Pinta. Continuing without!\e[0m"
yay -S --noconfirm --needed typora ||
echo -e "\e[31mFailed to install Typora. Continuing without!\e[0m"
yay -S --noconfirm --needed spotify dropbox-cli 1password-beta 1password-cli ||
echo -e "\e[31mFailed to install Spotify, Dropbox, and/or 1password because of a keyserver problem. Continuing without!\e[0m"
fi
# Copy over Omarchy applications
source ~/.local/share/omarchy/bin/omarchy-refresh-applications || true

10
logo.txt Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,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

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

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