31 Commits

Author SHA1 Message Date
David Heinemeier Hansson
7d427faad0 It's not reliable enough yet 2025-08-22 16:39:07 +02:00
Viktor
53217c4c83
Add safeguard to prevent omarchy-update from beginning an update during an AUR outage/DDOS (#823)
* Add safeguard to prevent omarchy-update from beginning an update during an AUR ddos

* Fix spacing

* Update omarchy-update

Return a non-zero error code when failing to reach AUR

* Add user-agent string 

Good courtesy that makes it easier for the AUR folks to interpret the HEAD requests and tell us if there is an issue.

* Ensure entire icon will fit

* Migration to fit entire icon for update-available in waybar

* feat: add precise media control shortcut

* Fix a handful of typos

* Add state based app restarts for migrations (#637)

* Look for app restart state files and restart them after update

* Convert existing migrations to set states

* Revert "Convert existing migrations to set states"

This reverts commit 1eb8a56b075cab5652a028202dc9dc81e556c4dc.

* Fix waybar update icon spacing (#672)

* Fix waybar update icon spacing

Remove clock from margin rule and add custom-update to prevent horizontal cutoff and reduce excessive spacing between clock and update icon.

* making the update icon smaller, looks better in the center

* Fixed this in CSS instead

* We now have a global $OMARCHY_PATH

* Fix screen recording on Intel graphics (#669)

* Fix screen recording on Intel graphics

Use wf-recorder for Intel graphics instead of wl-screenrec due to VAAPI compatibility issues that prevent recording from starting.

* combining greps for nvidia and intel graphics

* Update omarchy-cmd-screenrecord

* Force working version of uwsm until we get the fixed one from upstream

* Split upgrading system packages into two steps

* uwsm was already fixed upstream with 0.23.2

* Add burst limit to login to prevent endless retries (#690)

* Fix kernel update detection for alternative kernel variants (#585)

* Fix omarchy-update kernel update message to support alternative kernel variants

* fix: omarchy-update-restart kernel update message to support alternative kernel variants

* Add elan to the keywords used to detect if a fingerprint reader exists (#692)

* fix pgrep and pkill (#687)

* Make a function to create a smaller webshare version

* Set sudo max tries to 10, binary for easy lockout reset (#686)

* set sudo max fail count to 10, bin for easy reset

* Slim down

Let the failure just fail in the shell

* Rename to be more descriptive

* No need for the 00- prefix

* Add migration to raise sudo try limit

---------

Co-authored-by: Manuel <manuel.ramsaier@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Install `gum` prior to the preflight guard (#684)

* Use `read` instead of `gum` in the preflight guard

* Revert "Use `read` instead of `gum` in the preflight guard"

This reverts commit 759dbb70454dccc27b78b198bf077e076750fefc.

* Install `gum`, if required, at the beginning of `install.sh`

* `gum` is already installed by the `presentation.sh` stage

* Use existing structure

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Always install `base-devel` in case `yay` needs to build a package (#710)

* chore: Enable Walker list cycling (#709)

Enable the `cycle` behaviour for Walker lists; this allows one to
quickly jump from the default-selected first item in a list, to the
last item, simply by pressing the "up" arrow key (or other key
sequence bound to "previous").

Refs: https://github.com/abenz1267/walker/wiki/Basic-Configuration

* Add one wallpaper for nord (#707)

* Use `pacman` instead of `yay` to install `gum` (#705)

* Direct access to Walker clipboard + emojis with hotkey

* Turn off the walker service until the memory leak is fixed

See https://github.com/basecamp/omarchy/issues/698

* Can't use clipboard module when Walker is not running as a service

See https://github.com/basecamp/omarchy/issues/698

* pacman needs sudo

* Add disable chaotic aur env flag (#746)

* Add missing modifier combinations to omarchy-menu-keybindings (#715)

While these aren't currently used directly in the Omarchy code, when the
user adds custom bindings they are not properly displayed by the
omarchy-menu-keybindings script.

Co-authored-by: Chris Miller <chris@diddado.com>

* Make this resilient to file already being removed

* Use omarchy-chromium-bin to give live theme changes

* Transcoding is really from any image format

* Include Brave in the same opacity treatment as chromium

* Only ask for the identification if it has not already been provided

* Need to make the new disk writeable too

* Stop using tte until package is fixed

* Use host's DNS resolver in Docker containers (#812)

* Symlink /etc/resolve.conf to systemd-resolved's stub

Since systemd-resolved is managing the DNS configuration, ensure that
/etc/resolv.conf uses it.

* Use systemd-resolved from Docker containers

* No longer needed now that we have .config/chromium-flags.conf

* Add brave-flags.conf as a new default to ensure that anyone using Brave as their browser runs it under wayland

* Must restart waybar when timezone is changed to have it reflect immediately

* Add migration for adding .config/brave-flags.conf

* Only do system package updates if there is a network connection

This prepares us for offline ISO install

* Catch both cases of brave-browser identification

* Skip pinta until we can resolve the certificate issue on manual build

cc @Torxed

* Add dust to reveal used space

Co-authored-by: @tobi

* Add minimal starship prompt to terminal

Co-authored-by: @tobi

* Always noconfirm

* If NOT starship, install it

* Add `--force` when enabling ufw to bypass prompt (#794)

* Add current theme to fastfetch config (#889)

* Turn off tte until the package is fixed

* Turn off auto-launching screensaver until tte is fixed

* Add current theme to fastfetch config

fastfetch has a module for displaying colors, which is often used by
default. It shows the current colors in use by the terminal. Given that
themes are core to Omarchy, I thought it made sense to show the current
theme in fastfetch. I've also added a compressed version of the palette
(similar to the circle config of the colors module).

* Add migration

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Don't fail in case chromium package is not there

In case another package has been used to provide chromium

* No prefix needed

* Lines up better with the new starship prompt

* fix: missing python-poetry-core make Omarchy install fail (#862)

* fix: missing python-poetry-core

* added migration

* Flesh out migration to fix all tte issues

* Turn TTE back on

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Add color to install / remove to differentiate (#858)

* Add color to install / remove to differentiate

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Ensure Zoom is not made transparent

* Ensure the directory is present

* No double logo

* fix: add python-object to make installation  of Omarchy work (#806)

* Explicitly add python-object to make powerprofile work

* added migration

* Explain the why, not the how

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Turn screensaver back on now that we have fixed the tte install

* Add migration to turn on screensaver again

* Even more minimal and theme matching

* Use italic instead of bold for git branch

* Minimal git status too

* Correct spacing

* Less aggressive untracked icon

* Consistent color before the >

* Stick to color

* Really just stick to one color everywhere

* Force the link

* Make resilient towards it already being the same file

* Offer install scripts a way to know if they're in chroot

* Different iwd needed on chroot install

* Address installation inside a chroot

* Can't reuse when needing to set for user

* Simplify

No other args

* Get the latest indexes if online

* Now available as an official package instead of AUR

* Add single server for mirrorlist for now

* Try a different mirror for testing and need to use pacman for pkg update before we have yay

* Use same shebang as everywhere

* Let it roll for testing

* Add debug to failure

* Force wifi to unblock when we go to set it up

Wifi can sometimes get turned off by computers when running on low power
or in some sleep modes

* Fix positive exit

* Put chroot provision into its own preflight

* Restore to the global mirror

* Clean up after ISO install without sudo

* Reduce ceremony -- a start and an end is enough

* If we installed from the installer, we should remind user to unplug USB

* Extra CR not needed

* Bring uwsm out of the doghouse

* Ensure latest uwsm is installed now that we have lifted the lock

* Fix JetBrains IDEs flickering and focus issues in Hyprland (#888)

* Fix JetBrains IDEs flickering and focus issues in Hyprland

Add window rules to prevent tooltip and tab dragging flickering issues
in JetBrains IDEs when running under Hyprland compositor.

* Fix JetBrains IDEs flickering and focus issues in Hyprland

Add window rules to prevent tooltip and tab dragging flickering issues
in JetBrains IDEs when running under Hyprland compositor.

Uses the new windowrule syntax (Hyprland v0.48.0+) instead of deprecated windowrulev2.

# Conflicts:
#	default/hypr/apps/jetbrains.conf

* Fix JetBrains floating popup size issue in Hyprland

* Style

---------

Co-authored-by: Mike Veerman <mike@nonect.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Don't need wget, since curl is already part of arch

* This is still a problem

* Feature/screensaver toggle instead of launch (#784)

* sceensaver-toggle and run if enabled using state file

* replace commands in menu and hyperidle

* migration file

* sed corrections

* added backup of changed files in migration

* review comments implemented

* hypridle config restore

* Use normal path style

* Use nerdfont icon for notification

* Make executable

* Allow a force start of screensaver so it can run even when disabled when manually triggered

* Add screensaver to system menu now that the toggle actually means toggle

* Known path without expansion spaces

* It should be an error return when it doesn't start

---------

Co-authored-by: Manuel <manuel.ramsaier@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Add 60 second inactivity timeout to Walker launcher (#701)

* Add 60 second timeout to Walker launcher

This will close the launcher after 60 seconds of inactivity.

* Update 1754929737.sh

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* adding mongodb docker install (#972)

* Add suggestion for eu keyboard layout for iso

Closes #937
Co-authored-by: @chriopter

* Add Super + Tab to go forward through workspaces and Super + Shift + Tab to go backwards

Co-authored-by: @rafaelbernard
Closes #652

* move import to bottom (#917)

* Add missing package for Intel Graphics Card based device (#910)

* Add missing package for Intel Graphics Card based device

* Add migration to add the missing package

* Fix USB autosuspend causing peripheral disconnection issues (#906)

* Fix USB autosuspend causing peripheral disconnection issues

Add configuration to disable USB autosuspend by setting usbcore.autosuspend=-1
in modprobe.d configuration. This prevents USB devices from being automatically
suspended which can cause keyboards, mice, and other peripherals to disconnect
unexpectedly.

* Add migration to apply autosuspend to existing systems

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* retry cmd on failed install should take into consideration bare mode (#904)

* retry cmd on failed install should take into consideration bare mode

* A little duplication beats too much indirection

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Switch from lazydocker-bin to lazydocker

It's now in the official repo as a compiled version!

* add reverse window cycling with cycleprev (#874)

* add reverse window cycling with cycleprev

* Include the bringactivetotop fix

---------

Co-authored-by: observable <x@observable.art>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Stop using SIGUSR1 with Waybar to prevent stacking

Closes #873

* Omarchy install - capture install log (#868)

* Omarchy install log

* Slim down the logging setup a bit, put it in a known directory, tell user about it

* Stick to what was

* Not needed here

* Prefer the duplication

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Allow customizing the screensaver logo (#863)

* check for custom screensaver logo or fall back to default

* move logo location to omarchy config folder

* fix missed location check

* add menu item to copy logo.txt and open in editor

* move to setup menu

* Just always use a user-editable screensaver.txt file

* No longer needed

* Be clearer

---------

Co-authored-by: Christopher Moore <cmoore@yozu.co.uk>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Visual improvements for pkg-install and pkg-remove (#852)

* Shorten it up a bit

* Extract precondition into its own file and use it for the package installer too

* But don't actually fail unless it is down!

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Michal Zaborowski <zaborowskimchl@gmail.com>
Co-authored-by: Richard Macklin <code@rmacklin.dev>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: Alan Sikora <alansikora@gmail.com>
Co-authored-by: Eric Swanson <960576+ericrswanny@users.noreply.github.com>
Co-authored-by: not-NEK0 <86556080+not-NEK0@users.noreply.github.com>
Co-authored-by: Maximiliano Guzenski <maxguzenski@gmail.com>
Co-authored-by: Manuel <manuel.ramsaier89@gmail.com>
Co-authored-by: Manuel <manuel.ramsaier@gmail.com>
Co-authored-by: Dylan Bridgman <light@ether.org.za>
Co-authored-by: Simon Dawson <spdawson@gmail.com>
Co-authored-by: Swarnim <134050970+Swarnim114@users.noreply.github.com>
Co-authored-by: Bruce <hi+gh@bruceroettgers.eu>
Co-authored-by: Chris Miller <github@reaperville.com>
Co-authored-by: Chris Miller <chris@diddado.com>
Co-authored-by: Kevin McConnell <kevin.mcconnell@gmail.com>
Co-authored-by: Gary Rennie <gazler@gmail.com>
Co-authored-by: Shigeto Kumagai <shk@all.daynight.jp>
Co-authored-by: David Anderson <kataqatsi@gmail.com>
Co-authored-by: MikeVeerman <mike.veerman@gmail.com>
Co-authored-by: Mike Veerman <mike@nonect.com>
Co-authored-by: Rob Zolkos <rob@zolkos.com>
Co-authored-by: Valberto Enoc <valbertoenoc@gmail.com>
Co-authored-by: Saeed Vaziry <61919774+saeedvaziry@users.noreply.github.com>
Co-authored-by: Brosseau Valentin <c4software@gmail.com>
Co-authored-by: jw <jw@codasite.ai>
Co-authored-by: michaldziurowski <mdziurowski@gmail.com>
Co-authored-by: Observable Art <123117871+iamobservable@users.noreply.github.com>
Co-authored-by: observable <x@observable.art>
Co-authored-by: Chris24680 <moore12321@gmail.com>
Co-authored-by: Christopher Moore <cmoore@yozu.co.uk>
Co-authored-by: Luis Daniel Casais <71148501+rajayonin@users.noreply.github.com>
2025-08-22 15:27:58 +02:00
David Heinemeier Hansson
e0edb8c660 Restart Waybar so update-available icon does not hang around
Co-authored-by: @LeonardoTrapani
Closes #541
2025-08-11 16:58:01 +02:00
David Heinemeier Hansson
d9d847fd71 Break-out omarchy-update so we can update each step independently and have changes apply to the active update 2025-08-10 20:23:29 +02:00
David Heinemeier Hansson
a5dacd5c1d We need relaunches or reboots 2025-08-10 20:14:41 +02:00
David Heinemeier Hansson
8d20626534 Better spacing 2025-08-10 20:12:20 +02:00
David Heinemeier Hansson
7e4da388bf Be brief (then message will also fit in the window!) 2025-08-10 20:04:22 +02:00
Ryan Hughes
b2eb1b08a4
Add ~/.local/share/omarchy/bin to systemwide PATH (#602)
* Add omarchy to system path

* Remove unnecessary duplicate

* Remove path def since it's global now

* Migration for system-wide path

* Remove debug code

* Refresh after update

* Add common state script

* Restart on state detected

* Set state instead

* Export own path for menu
2025-08-10 19:58:44 +02:00
David Heinemeier Hansson
9d561fe34d Use a headline to explain what is already up to date 2025-08-08 18:07:22 +02:00
David Heinemeier Hansson
567b05c489 Use present_terminal in omarchy-menu to do fancy command presentation
Then the individual commands can be clean
2025-08-08 15:08:27 +02:00
David Heinemeier Hansson
8170cb9ed4 Unified done showing and command style 2025-08-04 20:51:43 +02:00
David Heinemeier Hansson
62975f0a23 Prepare for use in the new menu system 2025-08-04 18:26:08 +02:00
David Heinemeier Hansson
e923be3f0b Split omarchy-migrate into its own command
So it can be updated independently and apply quicker
2025-08-02 22:07:42 +02:00
David Heinemeier Hansson
f729004306
Show indicator if update is available (#456)
* Show indicator if update is available

* Language
2025-08-02 21:48:06 +02:00
David Heinemeier Hansson
34f24cb38a Offer to reboot after Linux kernel has been updated
Closes #377
2025-08-02 14:26:08 +02:00
David Heinemeier Hansson
74552b9f6e Just use set -e instead of manually checking for return values 2025-07-30 18:43:10 +02:00
Andy Davis
49c154cb1f
Track migrations via state files to avoid running migrations that have already been performed. (#411) 2025-07-30 18:40:59 +02:00
David Heinemeier Hansson
f0a9271506 Correct the order 2025-07-22 19:09:09 -04:00
David Heinemeier Hansson
faaf672eb4 Alert that we are updating system packages 2025-07-22 19:08:41 -04:00
David Heinemeier Hansson
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
Richard Macklin
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
Richard Macklin
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
Richard Macklin
cc0ac314ef Use git pull --autostash in omarchy-update
This is a minor follow-up to dcc40719793d52d43698108a0b0784c2f3b48655
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
David Heinemeier Hansson
25459cb539 Confirm before updating system packages 2025-07-17 09:39:42 -07:00
David Heinemeier Hansson
dcc4071979 Stash/pop any local changes before pulling updates
More user customizations will survive without commits.
2025-07-17 09:39:31 -07:00
David Heinemeier Hansson
55f30eba66 No need to confirm the upgrade 2025-07-09 19:49:10 -07:00
David Heinemeier Hansson
8fb9b51d03 Update system packages when updating omarchy 2025-07-09 18:33:06 -07:00
David Heinemeier Hansson
e7766926d9 Make it easier to read 2025-07-09 19:12:26 -04:00
David Heinemeier Hansson
dedc08a76e Allow you to easily run all migrations by passing "all"
Helpful for testing or if something went wrong
2025-06-29 12:49:51 -07:00
David Heinemeier Hansson
2a2a77685c Add migration system and fix bluetooth service + missing bat 2025-06-28 11:46:28 -07:00
David Heinemeier Hansson
55a3130218 Update Omarchy via git pull 2025-06-25 16:47:23 -07:00