* Update location of sourced install script
* Add OMARCHY_PATH for easy access
* Formatting
* Enable using finder in walker (#396)
* Enable using finder in walker
* capitalize name property
* Hot reload theme for quick switching
* Use fonts from AUR instead of downloading them directly like an animal
* Include the common JetBrains substitution
* Add a very basic font selector for terminal
* Give the new font selector a bit of room to breathe
* Swap Spotify GUI to TUI
* Correct package name
* Add theme update script (#391)
* Move updating themes from Updates to theme menu
Yeah, it could go in either spot, but since we have one entire category
dedicated to themes, lets keep it there.
* Revert "Correct package name"
This reverts commit 4c46c2208a.
* Revert "Swap Spotify GUI to TUI"
This reverts commit b09d2d68cd.
* Added backup timestamps to various omarchy-refresh-* files to prevent clobbering (#402)
* Added backup timestamps to omarchy-refresh-[hyprlock|swayosd|walker|waybar] scripts to prevent data loss if ran multiple times
* Added new script (omarchy-refresh-config) for refreshing various config files with automated backup creation
* update plymouth logo (#406)
* Track migrations via state files to avoid running migrations that have already been performed. (#411)
* Just use set -e instead of manually checking for return values
* Fix migration
* Unused
* Migrate fonts to packages
* No longer needed
* Use fd for better performance on walker finder
* Add walker config refresh to enable the finder
* Dropbox is now an optional setup
---------
Co-authored-by: Shigeto Kumagai <shk@all.daynight.jp>
Co-authored-by: Mohamedsayhii <63726183+Mohamedsayhii@users.noreply.github.com>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: Andy Davis <developer.andy@gmail.com>
Co-authored-by: Taha <paprikataha@gmail.com>
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`!
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.
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