Make setup ISO-only
Remove legacy online installer entrypoints, collapse migrations for 4.0, and move setup responsibilities into target-side system, hardware, and user commands.
This commit is contained in:
440 files changed
+785
-4917
No files matched your search
@@ -74,18 +74,19 @@ Example:
|
|||||||
|
|
||||||
# Install Scripts
|
# Install Scripts
|
||||||
|
|
||||||
Install entry points (`install.sh`, `boot.sh`) use `#!/bin/bash`. Many scripts under `install/` are sourced via `run_logged` and intentionally do not have shebangs.
|
The ISO owns installation orchestration. This repo ships target-side setup commands and reusable setup leaves:
|
||||||
|
|
||||||
Install stage files follow this pattern:
|
- `bin/omarchy-setup-system` runs root-owned system setup during ISO finalization.
|
||||||
|
- `bin/omarchy-setup-hardware` runs idempotent hardware-specific setup and is called by `omarchy-setup-system`.
|
||||||
|
- `bin/omarchy-setup-user` runs user setup for the initial user and future users.
|
||||||
|
- leaf scripts under `install/` are sourced by `run_logged $OMARCHY_INSTALL/path/to/script.sh` and intentionally do not have shebangs.
|
||||||
|
- avoid `exit` in sourced setup scripts unless intentionally aborting setup.
|
||||||
|
- use `$OMARCHY_INSTALL` and `$OMARCHY_PATH` instead of hard-coded Omarchy paths.
|
||||||
|
- keep root-scoped hardware setup under `install/hardware/` and orchestrate it through `install/hardware/all.sh`.
|
||||||
|
- keep every per-user setup leaf under `install/user/` (including `install/user/hardware/` and `install/user/first-run/`) so it is clear what must run for each user.
|
||||||
|
- prefer helper commands for package and command checks where available.
|
||||||
|
|
||||||
- `install/*/all.sh` lists scripts in execution order
|
Raw `command -v`, `pacman`, and `pacman-key` are acceptable in package-helper contexts where direct package-manager behavior is the point of the script.
|
||||||
- leaf scripts are sourced by `run_logged $OMARCHY_INSTALL/path/to/script.sh`
|
|
||||||
- avoid `exit` in sourced install scripts unless intentionally aborting the install
|
|
||||||
- use `$OMARCHY_INSTALL` and `$OMARCHY_PATH` instead of hard-coded Omarchy paths
|
|
||||||
- keep hardware-specific logic under `install/config/hardware/`
|
|
||||||
- prefer helper commands for package and command checks where available
|
|
||||||
|
|
||||||
Raw `command -v`, `pacman`, and `pacman-key` are acceptable in bootstrap/preflight/package-helper contexts where the helper commands may not be available yet or where direct package-manager behavior is the point of the script.
|
|
||||||
|
|
||||||
# Helper Commands
|
# Helper Commands
|
||||||
|
|
||||||
@@ -98,7 +99,7 @@ Use these instead of raw shell commands:
|
|||||||
- `omarchy-notification-send` - send desktop notifications; do not call `notify-send` directly
|
- `omarchy-notification-send` - send desktop notifications; do not call `notify-send` directly
|
||||||
- `omarchy-hw-asus-rog` - detect ASUS ROG hardware (and similar `hw-*` commands)
|
- `omarchy-hw-asus-rog` - detect ASUS ROG hardware (and similar `hw-*` commands)
|
||||||
|
|
||||||
Exceptions are allowed for bootstrap, preflight, migration, and package-helper scripts where the helper may not be available yet, where the helper itself is being implemented, or where direct package-manager behavior is required.
|
Exceptions are allowed for migration and package-helper scripts where the helper may not be available yet, where the helper itself is being implemented, or where direct package-manager behavior is required.
|
||||||
|
|
||||||
# Config Structure
|
# Config Structure
|
||||||
|
|
||||||
@@ -170,7 +171,7 @@ To copy a default config to user config with automatic backup:
|
|||||||
omarchy-refresh-config hypr/hyprlock.conf
|
omarchy-refresh-config hypr/hyprlock.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
This copies `~/.local/share/omarchy/config/hypr/hyprlock.conf` to `~/.config/hypr/hyprlock.conf`.
|
This copies `$OMARCHY_PATH/config/hypr/hyprlock.conf` to `~/.config/hypr/hyprlock.conf`.
|
||||||
|
|
||||||
# Migrations
|
# Migrations
|
||||||
|
|
||||||
@@ -183,6 +184,6 @@ New migration format:
|
|||||||
- Use `$OMARCHY_PATH` to reference the omarchy directory
|
- Use `$OMARCHY_PATH` to reference the omarchy directory
|
||||||
- Prefer helper commands such as `omarchy-cmd-present`, `omarchy-cmd-missing`, `omarchy-pkg-present`, and `omarchy-pkg-missing`
|
- Prefer helper commands such as `omarchy-cmd-present`, `omarchy-cmd-missing`, `omarchy-pkg-present`, and `omarchy-pkg-missing`
|
||||||
|
|
||||||
Some older migrations predate these rules. Do not copy older migrations that start with shebangs, omit the leading `echo`, or hard-code `~/.local/share/omarchy`.
|
Omarchy 4.0 intentionally collapses historical migrations into a single package-layout migration. Do not add compatibility migrations for old installer layouts.
|
||||||
|
|
||||||
Migrations may use raw `pacman`, `command -v`, or direct config edits when needed for historical compatibility or one-off repair work.
|
Migrations may use raw `pacman`, `command -v`, or direct config edits when needed for one-off repair work.
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
# Installer Revamp Review Crosswalk
|
|
||||||
|
|
||||||
This branch is easiest to review as a behavior migration: each row below maps an old install script/behavior to its new owner and phase.
|
|
||||||
|
|
||||||
## Install architecture
|
|
||||||
|
|
||||||
| Phase | Entry point | Runs as | Runs when | Owns |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| System install | `system-finalize.sh` -> `install/system/all.sh` | root with `OMARCHY_INSTALL_USER` set to the non-root target user | once at install/finalize time | machine config, services, login manager, root-owned post-install cleanup |
|
|
||||||
| User setup | `omarchy-setup-user` -> `install/user/all.sh` | target user | install user during `finalize.sh`, and every future user on first login | home config, AI skills, XDG dirs, app launchers, user services, user/session hardware tweaks |
|
|
||||||
| User finalization | `finalize.sh` | target user | once during install | marks shipped migrations done, creates offline first-run marker, calls `omarchy-setup-user --force`, shows finish/reboot UI |
|
|
||||||
| First run system one-shot | `omarchy-first-run` when `~/.local/state/omarchy/first-run.mode` exists | install user with temporary sudoers | first graphical login after offline install | firewall/DNS/icon-cache/voxtype work that needs a live boot |
|
|
||||||
| First run user one-shot | `omarchy-first-run` when `first-run-user.done` is missing | current user | first graphical login for every user | session-only user tasks: monitor recovery, GNOME settings, primary paste, welcome, Wi-Fi |
|
|
||||||
| Package-owned defaults | `etc/**`, `config/**`, `applications/**`, `default/**` via `omarchy-settings` / `omarchy` packages | pacman | package install/upgrade | static `/etc`, `/etc/skel`, `/usr/share/omarchy` defaults |
|
|
||||||
|
|
||||||
Rules of thumb:
|
|
||||||
|
|
||||||
- `install/system/**` should not write a user's home directory except through explicit target-user metadata like `OMARCHY_INSTALL_USER`.
|
|
||||||
- `omarchy-setup-user` is the canonical path for current and future users. `/etc/skel` seeds new homes, but setup-user keeps existing users and first-login users aligned. The runtime `omarchy` package depends on `omarchy-installer` so `/usr/share/omarchy/install/user/**` is present for future users.
|
|
||||||
- `install/user/**` contains reusable user setup pieces, but callers should normally invoke `omarchy-setup-user` rather than source those files directly.
|
|
||||||
|
|
||||||
## Crosswalk
|
|
||||||
|
|
||||||
| Old file / behavior | New owner(s) | Phase | Review status / verification |
|
|
||||||
|---|---|---|---|
|
|
||||||
| `install.sh` ran package install then directly entered `finalize.sh`. | `install.sh` now runs root `system-finalize.sh` with `OMARCHY_INSTALL_USER=$USER`, then user `finalize.sh`. Offline callers must do the same root-before-user handoff. | system -> user | `rg 'system-finalize|OMARCHY_INSTALL_USER|finalize.sh' install.sh system-finalize.sh` |
|
|
||||||
| `finalize.sh` ran all system/user/post-install phases. | `system-finalize.sh` owns system phases; `finalize.sh` now calls `omarchy-setup-user --force` and `post-install/finished.sh`. | split | `rg 'omarchy-setup-user|finished.sh|system/all' finalize.sh system-finalize.sh` |
|
|
||||||
| `install/packaging/all.sh` mixed hardware package work and user app setup. | `install/packaging/system.sh` for hardware-gated packages; `install/packaging/user.sh` for user package setup (`nvim`). App launchers/npm wrappers are driven through `omarchy-refresh-applications` in setup-user. | split | `cat install/packaging/{all,system,user}.sh` |
|
|
||||||
| `install/config/config.sh` copied `config/**` and bashrc into the install user's home. | `omarchy-settings` seeds `/etc/skel`; `omarchy-setup-user` copies `config/**`, `.bashrc`, and `.bash_profile` for existing/current users. | user setup + package/skel | `rg 'cp -R .*config|bashrc' bin/omarchy-setup-user` |
|
|
||||||
| `install/config/theme.sh` mixed system icon/Chromium setup and user theme setup. | `install/config/theme-system.sh` and `install/config/theme-user.sh`. | split | `cat install/config/theme-{system,user}.sh` |
|
|
||||||
| `install/first-run/gnome-theme.sh` mixed user `gsettings` with root icon-cache refresh. | `install/first-run/gnome-theme-system.sh` and `install/first-run/gnome-theme-user.sh`. | first-run split | `cat install/first-run/gnome-theme-{system,user}.sh` |
|
|
||||||
| `install/config/branding.sh` copied branding into the user config. | `/etc/skel/.config/omarchy/branding` via package plus refresh in `omarchy-setup-user`. | package + user setup | `rg 'branding' bin/omarchy-setup-user /home/ryan/Work/omarchy/omarchy-pkgs/pkgbuilds/omarchy-settings/PKGBUILD` |
|
|
||||||
| `install/config/omarchy-ai-skill.sh` symlinked assistant skills. | `omarchy-setup-user`. | per-user | `rg 'skills/omarchy' bin/omarchy-setup-user` |
|
|
||||||
| `install/config/omarchy-toggles.sh` seeded toggle flags. | `omarchy-setup-user`; `omarchy-refresh-hyprland` also refreshes flags when resetting Hypr configs. | per-user | `rg 'flags.lua|toggles' bin/omarchy-setup-user bin/omarchy-refresh-hyprland` |
|
|
||||||
| `install/config/detect-keyboard-layout.sh` inserted `/etc/vconsole.conf` layout into Hypr config. | `omarchy-setup-user`; `omarchy-refresh-hyprland` contains the same idempotent refresh behavior. | per-user | `rg 'XKBLAYOUT|kb_layout' bin/omarchy-setup-user bin/omarchy-refresh-hyprland` |
|
|
||||||
| `install/config/user-dirs.sh` created XDG dirs/bookmarks. | `omarchy-setup-user` with idempotent bookmark insertion. | per-user | `rg 'xdg-user-dirs|bookmarks' bin/omarchy-setup-user` |
|
|
||||||
| `install/config/mimetypes.sh` set app/MIME defaults. | `omarchy-refresh-applications` plus `xdg-settings` / `xdg-mime` in `omarchy-setup-user`. | per-user | `rg 'omarchy-refresh-applications|xdg-mime|xdg-settings' bin/omarchy-setup-user` |
|
|
||||||
| `install/config/nautilus-python.sh` copied Nautilus extensions. | `omarchy-setup-user`. | per-user | `rg 'nautilus-python' bin/omarchy-setup-user` |
|
|
||||||
| `install/config/localdb.sh` ran `updatedb`. | `install/post-install/localdb.sh`. | system post-install | `cat install/post-install/localdb.sh` |
|
|
||||||
| `install/config/docker.sh` restarted/daemon-reloaded Docker bits and added current user to docker. | Package-owned Docker/resolved config in `etc/**`; `docker.sh` keeps the install-user group membership. | system + package | `cat install/config/docker.sh etc/docker/daemon.json etc/systemd/system/docker.service.d/no-block-boot.conf` |
|
|
||||||
| `install/config/enable-services.sh` and service enables scattered elsewhere. | `install/config/enable-services.sh` is the centralized service-enable step for bluetooth/cups/avahi/docker/NetworkManager/power-profiles/sddm. | system | `rg 'systemctl enable' install` |
|
|
||||||
| `install/config/hardware/network.sh` enabled NetworkManager and disabled iwd/wait-online. | NetworkManager enable moved to `enable-services.sh`; `network.sh` only disables iwd and masks wait-online. | system | `cat install/config/enable-services.sh install/config/hardware/network.sh` |
|
|
||||||
| `install/config/hardware/bluetooth.sh` mixed `/etc/bluetooth` with user WirePlumber and `bt-agent`. | `bluetooth.sh` keeps system AutoEnable; `bluetooth-user.sh` handles user WirePlumber and user service; `/etc/skel` symlink seeds future users. | split | `cat install/config/hardware/bluetooth{,-user}.sh; find config/systemd/user -maxdepth 3 -type l -ls` |
|
|
||||||
| `install/config/hardware/nvidia.sh` installed drivers, wrote `/etc`, and appended user Hypr env vars. | `nvidia.sh` keeps driver/system config; `nvidia-user.sh` appends user env vars idempotently. | split | `cat install/config/hardware/nvidia{,-user}.sh` |
|
|
||||||
| ASUS audio mixer/mic scripts ran in system config. | Moved to `install/config/user.sh`; behavior preserved in `asus/fix-audio-mixer.sh` and `asus/fix-mic.sh`. | per-user/session | `rg 'fix-audio-mixer|fix-mic' install/config/user.sh install/config/hardware/asus` |
|
|
||||||
| Framework AMD F13 audio input ran in system config. | Moved to `install/config/user.sh`; `framework/fix-f13-amd-audio-input.sh` preserves the `pactl` profile fix. | per-user/session | `rg 'fix-f13|pactl' install/config/user.sh install/config/hardware/framework` |
|
|
||||||
| `install/config/hardware/fix-synaptic-touchpad.sh` was removed in the split. | Restored and called from `install/config/all.sh`. | system hardware | `rg 'fix-synaptic-touchpad' install/config/all.sh install/config/hardware/fix-synaptic-touchpad.sh` |
|
|
||||||
| `install/config/lockscreen-pam.sh` delegated to `omarchy-setup-lock`. | Kept as `omarchy-setup-lock`; `omarchy-setup-lock` now honors `OMARCHY_INSTALL_USER`. | system helper | `cat install/config/lockscreen-pam.sh; rg 'OMARCHY_INSTALL_USER' bin/omarchy-setup-lock` |
|
|
||||||
| `install/config/increase-fd-limit.sh` wrote systemd manager nofile drop-ins. | Package-owned `etc/systemd/system.conf.d/20-omarchy-nofile.conf` and `etc/systemd/user.conf.d/20-omarchy-nofile.conf`; legacy `99` files removed by `post-install/legacy-cleanup.sh`. | package + cleanup | `cat etc/systemd/{system.conf.d,user.conf.d}/20-omarchy-nofile.conf install/post-install/legacy-cleanup.sh` |
|
|
||||||
| `install/config/increase-file-watchers.sh` ran `sysctl --system`. | Package-owned `etc/sysctl.d/90-omarchy-file-watchers.conf`; install is followed by reboot. | package | `cat etc/sysctl.d/90-omarchy-file-watchers.conf` |
|
|
||||||
| `install/config/fast-shutdown.sh` only reloaded systemd after drop-ins. | Package-owned faster-shutdown drop-ins; install is followed by reboot. | package | `cat etc/systemd/system.conf.d/10-faster-shutdown.conf etc/systemd/system/user@.service.d/10-faster-shutdown.conf` |
|
|
||||||
| `install/config/powerprofilesctl-rules.sh` and `wifi-powersave-rules.sh` wrote/reloaded udev rules. | Package-owned `etc/udev/rules.d/99-omarchy-*.rules`; `post-install/legacy-cleanup.sh` removes old non-namespaced rules; `post-install/udev.sh` reloads/triggers. | package + post-install | `cat etc/udev/rules.d/99-omarchy-*.rules install/post-install/{legacy-cleanup,udev}.sh` |
|
|
||||||
| `install/config/gpg.sh` copied GnuPG config and restarted dirmngr. | Package-owned `etc/gnupg/dirmngr.conf`; live dirmngr restart removed. | package | `cat etc/gnupg/dirmngr.conf` |
|
|
||||||
| `install/config/pi.sh` activated Pi theme. | No direct install path remains; theme changes still run Pi retint hooks when applicable. | intentionally removed / review | `rg 'omarchy-theme-set-pi' bin install migrations` |
|
|
||||||
| `install/login/all.sh` mixed default keyring with SDDM/login manager work. | `install/login/system.sh` owns SDDM/hibernation/limine; `install/login/default-keyring.sh` runs through user setup and is idempotent. | split | `cat install/login/system.sh install/login/default-keyring.sh` |
|
|
||||||
| `install/login/sddm.sh` wrote/copied static SDDM config/assets, autologin, PAM tweaks, and enabled service. | Static SDDM drop-ins live under `etc/sddm.conf.d`; theme/session assets are package-owned; `sddm.sh` now manages only autologin, legacy `hyprland.conf` cleanup, and PAM tweaks; service enable moved to `enable-services.sh`. | package + system | `cat etc/sddm.conf.d/*.conf install/login/sddm.sh install/config/enable-services.sh` |
|
|
||||||
| `install/post-install/allow-reboot.sh` created online reboot sudoers. | Kept, now also grants one-time cleanup; `omarchy-first-run` calls `cleanup-reboot-sudoers.sh` with `sudo -n` so future users are not prompted. | online post-install + first-run cleanup | `cat install/post-install/allow-reboot.sh install/first-run/cleanup-reboot-sudoers.sh` |
|
|
||||||
|
|
||||||
## Deleted migration/helper policy
|
|
||||||
|
|
||||||
Old migrations that only sourced helpers now replaced by package-owned files were removed with their helpers. Legacy cleanup that still matters moved into `install/post-install/legacy-cleanup.sh`:
|
|
||||||
|
|
||||||
- old udev rule names: `/etc/udev/rules.d/99-power-profile.rules`, `/etc/udev/rules.d/99-wifi-powersave.rules`
|
|
||||||
- old nofile drop-in names: `/etc/systemd/system.conf.d/99-omarchy-nofile.conf`, `/etc/systemd/user.conf.d/99-omarchy-nofile.conf`
|
|
||||||
|
|
||||||
## Review commit plan
|
|
||||||
|
|
||||||
The branch should be reviewed in this order:
|
|
||||||
|
|
||||||
1. `installer: split root and user finalization`
|
|
||||||
- `install.sh`, `system-finalize.sh`, `finalize.sh`, `install/system/all.sh`, `install/user/all.sh`, helper/root-aware changes.
|
|
||||||
2. `setup: make omarchy-setup-user canonical for users`
|
|
||||||
- `bin/omarchy-setup-user`, `bin/omarchy-first-run`, user setup idempotency fixes, `default-keyring`, `cleanup-reboot-sudoers`.
|
|
||||||
3. `install: split packaging phases`
|
|
||||||
- `install/packaging/{all,system,user}.sh` and app setup routing through `omarchy-refresh-applications`.
|
|
||||||
4. `install: split theme and first-run theme setup`
|
|
||||||
- `theme.sh` -> `theme-system.sh` / `theme-user.sh`; `gnome-theme.sh` -> first-run system/user split.
|
|
||||||
5. `install: move static system config to package-owned files`
|
|
||||||
- `etc/**` additions, removal of no-op helpers/migrations, post-install legacy cleanup/udev/localdb.
|
|
||||||
6. `install: split user-scoped hardware/session config`
|
|
||||||
- bluetooth/nvidia split, ASUS/Framework user audio fixes, Synaptics restoration.
|
|
||||||
7. `install: split SDDM config from autologin`
|
|
||||||
- package-owned SDDM drop-ins, trimmed `sddm.sh`, centralized service enable.
|
|
||||||
8. `docs: add installer review crosswalk`
|
|
||||||
- this file.
|
|
||||||
|
|
||||||
## Follow-up checks
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git status --porcelain=v1 --untracked-files=all
|
|
||||||
rg 'systemctl enable' install
|
|
||||||
rg 'fast-shutdown|increase-file-watchers|powerprofilesctl-rules|wifi-powersave-rules|increase-fd-limit' install migrations bin || true
|
|
||||||
bash -n install.sh system-finalize.sh finalize.sh bin/omarchy-setup-user bin/omarchy-first-run
|
|
||||||
bash test/offline-finalizer-bootstrap-test.sh
|
|
||||||
```
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Basecamp
|
||||||
|
Exec=omarchy-launch-webapp https://launchpad.37signals.com
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=basecamp
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=ChatGPT
|
||||||
|
Exec=omarchy-launch-webapp https://chatgpt.com/
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=chatgpt
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Discord
|
||||||
|
Exec=omarchy-launch-webapp https://discord.com/channels/@me
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=discord
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Disk Usage
|
||||||
|
Exec=xdg-terminal-exec --app-id=TUI.float -e bash -c "dust -r; read -n 1 -s"
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=disk-usage
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Docker
|
||||||
|
Exec=xdg-terminal-exec --app-id=TUI.tile -e lazydocker
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=docker
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Figma
|
||||||
|
Exec=omarchy-launch-webapp https://figma.com/
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=figma
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Fizzy
|
||||||
|
Exec=omarchy-launch-webapp https://app.fizzy.do/
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=fizzy
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=GitHub
|
||||||
|
Exec=omarchy-launch-webapp https://github.com/
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=github
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Google Contacts
|
||||||
|
Exec=omarchy-launch-webapp https://contacts.google.com/
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=google-contacts
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Google Maps
|
||||||
|
Exec=omarchy-launch-webapp https://maps.google.com
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=google-maps
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Google Messages
|
||||||
|
Exec=omarchy-launch-webapp https://messages.google.com/web/conversations
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=google-messages
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Google Photos
|
||||||
|
Exec=omarchy-launch-webapp https://photos.google.com/
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=google-photos
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=HEY
|
||||||
|
Exec=omarchy-webapp-handler-hey %u
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=hey
|
||||||
|
StartupNotify=true
|
||||||
|
MimeType=x-scheme-handler/mailto
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=WhatsApp
|
||||||
|
Exec=omarchy-launch-webapp https://web.whatsapp.com/
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=whatsapp
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=X
|
||||||
|
Exec=omarchy-launch-webapp https://x.com/
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=x
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=YouTube
|
||||||
|
Exec=omarchy-launch-webapp https://youtube.com/
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=youtube
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Zoom
|
||||||
|
Exec=omarchy-webapp-handler-zoom %u
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=zoom
|
||||||
|
StartupNotify=true
|
||||||
|
MimeType=x-scheme-handler/zoommtg;x-scheme-handler/zoomus
|
||||||
@@ -4,7 +4,7 @@ Name=Battle.net
|
|||||||
GenericName=Game Launcher
|
GenericName=Game Launcher
|
||||||
Comment=Blizzard game launcher (umu-launcher + GE-Proton)
|
Comment=Blizzard game launcher (umu-launcher + GE-Proton)
|
||||||
Exec=omarchy-launch-battlenet
|
Exec=omarchy-launch-battlenet
|
||||||
Icon=Battle.net
|
Icon=battle-net
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Categories=Game;
|
Categories=Game;
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# omarchy:summary=Set the branch for Omarchy's git repository.
|
|
||||||
# omarchy:args=<master|rc|dev>
|
|
||||||
|
|
||||||
if (($# == 0)); then
|
|
||||||
echo "Usage: omarchy-branch-set [master|rc|dev]"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
branch="$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $branch != "master" && $branch != "rc" && $branch != "dev" ]]; then
|
|
||||||
echo "Error: Invalid branch '$branch'. Must be one of: master, rc, dev"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
git -C $OMARCHY_PATH switch $branch
|
|
||||||
@@ -1,22 +1,21 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Set the Omarchy channel, which dictates what git branch and package repository is used.
|
# omarchy:summary=Set the Omarchy package channel.
|
||||||
# omarchy:args=<stable|rc|edge|dev>
|
# omarchy:args=<stable|rc|edge|dev>
|
||||||
# omarchy:requires-sudo=true
|
# omarchy:requires-sudo=true
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
if (($# == 0)); then
|
if (($# == 0)); then
|
||||||
echo "Usage: omarchy-channel-set [stable|rc|edge|dev]"
|
echo "Usage: omarchy-channel-set [stable|rc|edge|dev]"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
|
||||||
channel="$1"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
channel="$1"
|
||||||
case "$channel" in
|
case "$channel" in
|
||||||
"stable") omarchy-branch-set "master" && omarchy-refresh-pacman "stable" ;;
|
stable|rc|edge) omarchy-refresh-pacman "$channel" ;;
|
||||||
"rc") omarchy-branch-set "rc" && omarchy-refresh-pacman "rc" ;;
|
dev) omarchy-refresh-pacman edge ;;
|
||||||
"edge") omarchy-branch-set "master" && omarchy-refresh-pacman "edge" ;;
|
*) echo "Unknown channel: $channel"; exit 1 ;;
|
||||||
"dev") omarchy-branch-set "dev" && omarchy-refresh-pacman "edge" ;;
|
|
||||||
*) echo "Unknown channel: $channel"; exit 1; ;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
omarchy-update -y
|
omarchy-update -y
|
||||||
+1
-1
@@ -37,7 +37,7 @@ fi
|
|||||||
cat > "$LOG_FILE" <<EOF
|
cat > "$LOG_FILE" <<EOF
|
||||||
Date: $(date)
|
Date: $(date)
|
||||||
Hostname: $(hostname)
|
Hostname: $(hostname)
|
||||||
Omarchy Branch: $(git -C "$OMARCHY_PATH" branch --show-current 2>/dev/null || echo "unknown")
|
Omarchy Package: $(pacman -Q omarchy 2>/dev/null || echo "unknown")
|
||||||
|
|
||||||
=========================================
|
=========================================
|
||||||
SYSTEM INFORMATION
|
SYSTEM INFORMATION
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Creates a new Omarchy migration named after the unix timestamp of the last commit.
|
# omarchy:summary=Create a new Omarchy migration in the current source tree.
|
||||||
|
|
||||||
cd ~/.local/share/omarchy
|
set -euo pipefail
|
||||||
migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh"
|
|
||||||
touch $migration_file
|
|
||||||
|
|
||||||
if [[ $1 != "--no-edit" ]]; then
|
cd "${OMARCHY_PATH:-$(pwd)}"
|
||||||
nvim $migration_file
|
mkdir -p migrations
|
||||||
|
migration_file="migrations/$(git log -1 --format=%cd --date=unix).sh"
|
||||||
|
touch "$migration_file"
|
||||||
|
|
||||||
|
if [[ ${1:-} != "--no-edit" ]]; then
|
||||||
|
nvim "$migration_file"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $migration_file
|
printf '%s\n' "$PWD/$migration_file"
|
||||||
@@ -38,7 +38,7 @@ target=$(realpath -e "$1" 2>/dev/null) || {
|
|||||||
|
|
||||||
for required in bin default shell; do
|
for required in bin default shell; do
|
||||||
if [[ ! -d "$target/$required" ]]; then
|
if [[ ! -d "$target/$required" ]]; then
|
||||||
echo "Warning: $target/$required not found — does this look like an omarchy-installer checkout?" >&2
|
echo "Warning: $target/$required not found — does this look like an Omarchy source checkout?" >&2
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ if [[ ${1:-} == "-h" || ${1:-} == "--help" ]]; then
|
|||||||
cat <<USAGE
|
cat <<USAGE
|
||||||
Usage: omarchy dev pkg-test [package-name] [path-to-checkout]
|
Usage: omarchy dev pkg-test [package-name] [path-to-checkout]
|
||||||
|
|
||||||
Builds and installs an Omarchy package from a local omarchy-installer
|
Builds and installs an Omarchy package from a local Omarchy source
|
||||||
checkout. Use when changes need to land at fixed system paths (/etc/,
|
checkout. Use when changes need to land at fixed system paths (/etc/,
|
||||||
/usr/lib/systemd/, udev rule bodies, plymouth) that omarchy-dev-link
|
/usr/lib/systemd/, udev rule bodies, plymouth) that omarchy-dev-link
|
||||||
can't shadow.
|
can't shadow.
|
||||||
|
|||||||
+8
-30
@@ -1,45 +1,23 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Finish the installation of Omarchy with items that can only be done after logging in.
|
# omarchy:summary=Finish first-login setup for Omarchy.
|
||||||
# omarchy:requires-sudo=true
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Always: refresh per-user defaults (skel-derived configs, AI skills, XDG
|
|
||||||
# dirs, branding, MIME defaults, etc.). Idempotent via its own marker.
|
|
||||||
omarchy-setup-user || true
|
omarchy-setup-user || true
|
||||||
|
|
||||||
# Online installs grant a one-time passwordless reboot from the installer.
|
|
||||||
# Clean it up after first login without prompting future users for sudo.
|
|
||||||
bash "$OMARCHY_PATH/install/first-run/cleanup-reboot-sudoers.sh"
|
|
||||||
|
|
||||||
state_dir=~/.local/state/omarchy
|
state_dir=~/.local/state/omarchy
|
||||||
mkdir -p "$state_dir"
|
mkdir -p "$state_dir"
|
||||||
|
|
||||||
# System-wide one-shot. Gated on first-run.mode (created by finalize.sh during
|
|
||||||
# ISO installs). The install user is the only one whose /etc/sudoers.d/first-run
|
|
||||||
# shim grants the passwordless commands these scripts need, so only that user
|
|
||||||
# clears this marker.
|
|
||||||
SYSTEM_MARKER="$state_dir/first-run.mode"
|
|
||||||
if [[ -f $SYSTEM_MARKER ]]; then
|
|
||||||
rm -f "$SYSTEM_MARKER"
|
|
||||||
|
|
||||||
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
|
|
||||||
bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh"
|
|
||||||
bash "$OMARCHY_PATH/install/first-run/gnome-theme-system.sh"
|
|
||||||
omarchy-hook-install post-update "$OMARCHY_PATH/install/first-run/install-voxtype.hook"
|
|
||||||
sudo rm -f /etc/sudoers.d/first-run
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Per-user one-shot. Runs on the first login for every user, including any
|
|
||||||
# users created after install. Touches only $HOME / user dbus, no sudo.
|
|
||||||
USER_MARKER="$state_dir/first-run-user.done"
|
USER_MARKER="$state_dir/first-run-user.done"
|
||||||
if [[ ! -f $USER_MARKER ]]; then
|
if [[ ! -f $USER_MARKER ]]; then
|
||||||
bash "$OMARCHY_PATH/install/first-run/recover-internal-monitor.sh"
|
omarchy-hook-install post-update "$OMARCHY_PATH/install/user/first-run/install-voxtype.hook"
|
||||||
bash "$OMARCHY_PATH/install/first-run/gnome-theme-user.sh"
|
|
||||||
bash "$OMARCHY_PATH/install/first-run/gtk-primary-paste.sh"
|
bash "$OMARCHY_PATH/install/user/hardware/recover-internal-monitor.sh"
|
||||||
bash "$OMARCHY_PATH/install/first-run/welcome.sh"
|
bash "$OMARCHY_PATH/install/user/first-run/gnome-theme.sh"
|
||||||
bash "$OMARCHY_PATH/install/first-run/wifi.sh"
|
bash "$OMARCHY_PATH/install/user/first-run/gtk-primary-paste.sh"
|
||||||
|
bash "$OMARCHY_PATH/install/user/first-run/welcome.sh"
|
||||||
|
bash "$OMARCHY_PATH/install/user/first-run/wifi.sh"
|
||||||
|
|
||||||
touch "$USER_MARKER"
|
touch "$USER_MARKER"
|
||||||
fi
|
fi
|
||||||
@@ -51,11 +51,7 @@ desktop_name="$game_name"
|
|||||||
desktop_id=$(printf '%s' "$desktop_name" | tr '[:upper:]' '[:lower:]' | tr -cs '[:alnum:]' '-' | sed 's/^-//; s/-$//')
|
desktop_id=$(printf '%s' "$desktop_name" | tr '[:upper:]' '[:lower:]' | tr -cs '[:alnum:]' '-' | sed 's/^-//; s/-$//')
|
||||||
desktop_dir="$HOME/.local/share/applications"
|
desktop_dir="$HOME/.local/share/applications"
|
||||||
desktop_file="$desktop_dir/$desktop_id.desktop"
|
desktop_file="$desktop_dir/$desktop_id.desktop"
|
||||||
icon_dir="$desktop_dir/icons"
|
mkdir -p "$desktop_dir"
|
||||||
icon_path="$icon_dir/Retro Gaming.png"
|
|
||||||
|
|
||||||
mkdir -p "$desktop_dir" "$icon_dir"
|
|
||||||
[[ -f $icon_path ]] || cp "$OMARCHY_PATH/applications/icons/Retro Gaming.png" "$icon_path"
|
|
||||||
|
|
||||||
cat >"$desktop_file" <<EOF
|
cat >"$desktop_file" <<EOF
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
@@ -65,7 +61,7 @@ Comment=Play $game_name with RetroArch
|
|||||||
Exec=retroarch -L "$core_path" "$game_path"
|
Exec=retroarch -L "$core_path" "$game_path"
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Icon=$icon_path
|
Icon=retro-gaming
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
Categories=Game;Emulator;
|
Categories=Game;Emulator;
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ if [[ -f $MKINITCPIO_CONF ]] && grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF";
|
|||||||
echo "Fixing empty resume_offset ($RESUME_OFFSET)"
|
echo "Fixing empty resume_offset ($RESUME_OFFSET)"
|
||||||
sudo sed -i "s/resume_offset=\"$/resume_offset=$RESUME_OFFSET\"/" "$RESUME_DROP_IN"
|
sudo sed -i "s/resume_offset=\"$/resume_offset=$RESUME_OFFSET\"/" "$RESUME_DROP_IN"
|
||||||
if ! $NO_REBUILD; then
|
if ! $NO_REBUILD; then
|
||||||
sudo sed -i "s/resume_offset=\"$/resume_offset=$RESUME_OFFSET\"/" /etc/default/limine
|
|
||||||
sudo limine-mkinitcpio
|
sudo limine-mkinitcpio
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -102,7 +101,6 @@ if [[ ! -f $RESUME_DROP_IN ]]; then
|
|||||||
if [[ -n $RESUME_OFFSET ]]; then
|
if [[ -n $RESUME_OFFSET ]]; then
|
||||||
sudo mkdir -p /etc/limine-entry-tool.d
|
sudo mkdir -p /etc/limine-entry-tool.d
|
||||||
echo "KERNEL_CMDLINE[default]+=\" resume=$RESUME_DEVICE resume_offset=$RESUME_OFFSET\"" | sudo tee "$RESUME_DROP_IN" >/dev/null
|
echo "KERNEL_CMDLINE[default]+=\" resume=$RESUME_DEVICE resume_offset=$RESUME_OFFSET\"" | sudo tee "$RESUME_DROP_IN" >/dev/null
|
||||||
$NO_REBUILD || sudo tee -a /etc/default/limine < "$RESUME_DROP_IN" >/dev/null
|
|
||||||
else
|
else
|
||||||
echo "Warning: Could not determine resume offset for $SWAP_FILE" >&2
|
echo "Warning: Could not determine resume offset for $SWAP_FILE" >&2
|
||||||
fi
|
fi
|
||||||
@@ -115,7 +113,6 @@ if grep -q "\[s2idle\]" /sys/power/mem_sleep 2>/dev/null; then
|
|||||||
echo "Enabling ACPI RTC alarm for s2idle suspend"
|
echo "Enabling ACPI RTC alarm for s2idle suspend"
|
||||||
sudo mkdir -p /etc/limine-entry-tool.d
|
sudo mkdir -p /etc/limine-entry-tool.d
|
||||||
echo 'KERNEL_CMDLINE[default]+=" rtc_cmos.use_acpi_alarm=1"' | sudo tee "$LIMINE_DROP_IN" >/dev/null
|
echo 'KERNEL_CMDLINE[default]+=" rtc_cmos.use_acpi_alarm=1"' | sudo tee "$LIMINE_DROP_IN" >/dev/null
|
||||||
$NO_REBUILD || sudo tee -a /etc/default/limine < "$LIMINE_DROP_IN" >/dev/null
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# omarchy:summary=Online Omarchy install (on an existing Arch system)
|
|
||||||
# omarchy:group=install
|
|
||||||
|
|
||||||
set -eEo pipefail
|
|
||||||
|
|
||||||
# Online entry point. The ISO install is driven by omarchy-iso's Python
|
|
||||||
# orchestrator instead, which arch-chroots into /mnt and runs finalize.sh
|
|
||||||
# directly — never touches this script.
|
|
||||||
exec bash "${OMARCHY_PATH:-/usr/share/omarchy}/install.sh" "$@"
|
|
||||||
@@ -63,12 +63,9 @@ EOF
|
|||||||
launched_installer=1
|
launched_installer=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p "$HOME/.local/share/applications" "$HOME/.local/share/icons/hicolor/48x48/apps"
|
mkdir -p "$HOME/.local/share/applications"
|
||||||
install -m 644 "$OMARCHY_PATH/applications/battlenet.desktop" \
|
install -m 644 "$OMARCHY_PATH/applications/battlenet.desktop" \
|
||||||
"$HOME/.local/share/applications/battlenet.desktop"
|
"$HOME/.local/share/applications/battlenet.desktop"
|
||||||
install -m 644 "$OMARCHY_PATH/applications/icons/Battle.net.png" \
|
|
||||||
"$HOME/.local/share/icons/hicolor/48x48/apps/Battle.net.png"
|
|
||||||
gtk-update-icon-cache "$HOME/.local/share/icons/hicolor" &>/dev/null || true
|
|
||||||
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
|
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
|
||||||
|
|
||||||
if (( launched_installer )); then
|
if (( launched_installer )); then
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# omarchy:summary=Print the OMARCHY_INSTALL_MODE in the current env
|
|
||||||
# omarchy:group=install
|
|
||||||
|
|
||||||
# install.sh exports this during the install flow. Not persisted post-install,
|
|
||||||
# so this prints 'unknown' outside the installer.
|
|
||||||
echo "${OMARCHY_INSTALL_MODE:-unknown}"
|
|
||||||
@@ -13,8 +13,6 @@ SUNSHINE_ADMIN_APP="Sunshine Admin"
|
|||||||
SUNSHINE_ADMIN_URL="https://localhost:47990"
|
SUNSHINE_ADMIN_URL="https://localhost:47990"
|
||||||
SUNSHINE_ADMIN_EXEC="omarchy-launch-webapp $SUNSHINE_ADMIN_URL --ignore-certificate-errors"
|
SUNSHINE_ADMIN_EXEC="omarchy-launch-webapp $SUNSHINE_ADMIN_URL --ignore-certificate-errors"
|
||||||
SUNSHINE_ICON_SOURCE="/usr/share/sunshine/web/images/logo-sunshine-45.png"
|
SUNSHINE_ICON_SOURCE="/usr/share/sunshine/web/images/logo-sunshine-45.png"
|
||||||
SUNSHINE_ICON_NAME="Sunshine Admin.png"
|
|
||||||
WEBAPP_ICON_DIR="$HOME/.local/share/applications/icons"
|
|
||||||
HYPR_AUTOSTART_FILE="$HOME/.config/hypr/autostart.lua"
|
HYPR_AUTOSTART_FILE="$HOME/.config/hypr/autostart.lua"
|
||||||
HYPR_AUTOSTART_ENTRY='o.launch_on_start("sunshine")'
|
HYPR_AUTOSTART_ENTRY='o.launch_on_start("sunshine")'
|
||||||
|
|
||||||
@@ -59,9 +57,7 @@ open_ufw_ports() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install_admin_webapp() {
|
install_admin_webapp() {
|
||||||
mkdir -p "$WEBAPP_ICON_DIR"
|
omarchy-webapp-install "$SUNSHINE_ADMIN_APP" "$SUNSHINE_ADMIN_URL" "$SUNSHINE_ICON_SOURCE" "$SUNSHINE_ADMIN_EXEC"
|
||||||
cp "$SUNSHINE_ICON_SOURCE" "$WEBAPP_ICON_DIR/$SUNSHINE_ICON_NAME"
|
|
||||||
omarchy-webapp-install "$SUNSHINE_ADMIN_APP" "$SUNSHINE_ADMIN_URL" "$SUNSHINE_ICON_NAME" "$SUNSHINE_ADMIN_EXEC"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enable_hyprland_autostart() {
|
enable_hyprland_autostart() {
|
||||||
|
|||||||
+7
-16
@@ -1,28 +1,19 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Run all pending migrations to bring the system in line with the installed version.
|
# omarchy:summary=Run pending Omarchy migrations for the current user.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
STATE_DIR="$HOME/.local/state/omarchy/migrations"
|
STATE_DIR="$HOME/.local/state/omarchy/migrations"
|
||||||
mkdir -p "$STATE_DIR"
|
mkdir -p "$STATE_DIR"
|
||||||
|
|
||||||
# Skipped migrations are tracked separately
|
for file in "$OMARCHY_PATH"/migrations/*.sh; do
|
||||||
mkdir -p "$STATE_DIR/skipped"
|
[[ -f $file ]] || continue
|
||||||
|
|
||||||
# Run any pending migrations
|
|
||||||
for file in $OMARCHY_PATH/migrations/*.sh; do
|
|
||||||
filename=$(basename "$file")
|
filename=$(basename "$file")
|
||||||
|
|
||||||
if [[ ! -f $STATE_DIR/$filename && ! -f $STATE_DIR/skipped/$filename ]]; then
|
if [[ ! -f $STATE_DIR/$filename ]]; then
|
||||||
echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"
|
echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"
|
||||||
|
bash "$file"
|
||||||
if bash $file; then
|
|
||||||
touch "$STATE_DIR/$filename"
|
touch "$STATE_DIR/$filename"
|
||||||
else
|
|
||||||
if gum confirm "Migration ${filename%.sh} failed. Skip and continue?"; then
|
|
||||||
touch "$STATE_DIR/skipped/$filename"
|
|
||||||
else
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -1,10 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Ensure all default .desktop, web apps, TUIs, and mise wrappers are installed.
|
# omarchy:summary=Ensure default application launchers and mise wrappers are installed.
|
||||||
|
|
||||||
mkdir -p ~/.local/share/icons/hicolor/48x48/apps/
|
|
||||||
cp "$OMARCHY_PATH"/applications/icons/*.png ~/.local/share/icons/hicolor/48x48/apps/
|
|
||||||
gtk-update-icon-cache ~/.local/share/icons/hicolor &>/dev/null
|
|
||||||
|
|
||||||
# Copy .desktop declarations
|
# Copy .desktop declarations
|
||||||
mkdir -p ~/.local/share/applications
|
mkdir -p ~/.local/share/applications
|
||||||
@@ -14,10 +10,8 @@ if omarchy-cmd-present alacritty; then
|
|||||||
cp "$OMARCHY_PATH/default/alacritty/Alacritty.desktop" ~/.local/share/applications/
|
cp "$OMARCHY_PATH/default/alacritty/Alacritty.desktop" ~/.local/share/applications/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Refresh the webapps, TUIs, and mise wrappers
|
if [[ -f "$OMARCHY_PATH/install/user/mise.sh" ]]; then
|
||||||
bash "$OMARCHY_PATH/install/packaging/icons.sh"
|
bash "$OMARCHY_PATH/install/user/mise.sh"
|
||||||
bash "$OMARCHY_PATH/install/packaging/webapps.sh"
|
fi
|
||||||
bash "$OMARCHY_PATH/install/packaging/tuis.sh"
|
|
||||||
bash "$OMARCHY_PATH/install/packaging/mise.sh"
|
|
||||||
|
|
||||||
update-desktop-database ~/.local/share/applications
|
update-desktop-database ~/.local/share/applications
|
||||||
@@ -5,12 +5,9 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Attempt to reinstall all default Omarchy packages and reset all the default configs.
|
echo -e "This will reinstall all default Omarchy packages and reset default configs.\nWarning: user config changes will be overwritten.\n"
|
||||||
|
|
||||||
echo -e "This will reinstall all the default Omarchy packages and reset all default configs.\nWarning: All user changes to configs will be lost.\n"
|
if gum confirm "Are you sure you want to reinstall and lose config changes?"; then
|
||||||
|
|
||||||
if gum confirm "Are you sure you want to reinstall and lose all config changes?"; then
|
|
||||||
omarchy-reinstall-git
|
|
||||||
omarchy-reinstall-pkgs
|
omarchy-reinstall-pkgs
|
||||||
omarchy-reinstall-configs
|
omarchy-reinstall-configs
|
||||||
|
|
||||||
|
|||||||
@@ -5,24 +5,18 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Overwrite all user configs with the Omarchy defaults.
|
|
||||||
|
|
||||||
if (( EUID == 0 )); then
|
if (( EUID == 0 )); then
|
||||||
echo "Error: This script should not be run as root"
|
echo "Error: This script should not be run as root"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Resetting all Omarchy configs"
|
echo "Resetting all Omarchy configs"
|
||||||
cp -R $OMARCHY_PATH/config/* ~/.config/
|
omarchy-setup-user --force
|
||||||
cp $OMARCHY_PATH/default/bashrc ~/.bashrc
|
|
||||||
echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' | tee ~/.bash_profile >/dev/null
|
|
||||||
|
|
||||||
env OMARCHY_PATH="$OMARCHY_PATH" OMARCHY_INSTALL_MODE=online bash -c '
|
|
||||||
source "$OMARCHY_PATH/install/helpers/mode.sh"
|
|
||||||
detect_install_mode
|
|
||||||
source "$OMARCHY_PATH/install/config/theme-user.sh"
|
|
||||||
'
|
|
||||||
|
|
||||||
omarchy-refresh-limine
|
omarchy-refresh-limine
|
||||||
omarchy-refresh-plymouth
|
omarchy-refresh-plymouth
|
||||||
omarchy-nvim-setup
|
|
||||||
|
if omarchy-cmd-present omarchy-nvim-refresh; then
|
||||||
|
omarchy-nvim-refresh
|
||||||
|
elif omarchy-cmd-present omarchy-nvim-setup; then
|
||||||
|
omarchy-nvim-setup --force
|
||||||
|
fi
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# omarchy:summary=Reinstall the stable Omarchy source directory from git
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Reinstall the Omarchy configuration directory from the git source.
|
|
||||||
|
|
||||||
git clone --depth=1 --branch master "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null
|
|
||||||
mv $OMARCHY_PATH ~/.local/share/omarchy-old
|
|
||||||
mv ~/.local/share/omarchy-new $OMARCHY_PATH
|
|
||||||
@@ -12,9 +12,7 @@ sleep 1
|
|||||||
|
|
||||||
rm -rf "$PREFIX"
|
rm -rf "$PREFIX"
|
||||||
rm -f "$HOME/.local/share/applications/battlenet.desktop"
|
rm -f "$HOME/.local/share/applications/battlenet.desktop"
|
||||||
rm -f "$HOME/.local/share/icons/hicolor/48x48/apps/Battle.net.png"
|
|
||||||
rm -f "$HOME/.cache/omarchy/Battle.net-Setup.exe"
|
rm -f "$HOME/.cache/omarchy/Battle.net-Setup.exe"
|
||||||
gtk-update-icon-cache "$HOME/.local/share/icons/hicolor" &>/dev/null || true
|
|
||||||
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
|
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|||||||
Executable
+62
@@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Apply Omarchy hardware-specific packages and system configuration
|
||||||
|
# omarchy:group=setup
|
||||||
|
# omarchy:requires-sudo=true
|
||||||
|
# omarchy:examples=omarchy setup hardware --install-user dhh
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<USAGE
|
||||||
|
Usage: omarchy setup hardware --install-user USER
|
||||||
|
|
||||||
|
Runs idempotent hardware detection/setup for the installed machine. This is
|
||||||
|
called by omarchy-setup-system during ISO finalization and can be rerun later
|
||||||
|
for diagnostics or after hardware/package updates.
|
||||||
|
USAGE
|
||||||
|
}
|
||||||
|
|
||||||
|
install_user="${OMARCHY_INSTALL_USER:-}"
|
||||||
|
while (($#)); do
|
||||||
|
case "$1" in
|
||||||
|
--install-user)
|
||||||
|
install_user="${2:-}"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1" >&2
|
||||||
|
usage >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if (( EUID != 0 )); then
|
||||||
|
echo "Error: omarchy-setup-hardware must run as root" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $install_user || $install_user == "root" ]]; then
|
||||||
|
echo "Error: --install-user must name the target non-root user" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! getent passwd "$install_user" >/dev/null; then
|
||||||
|
echo "Error: user '$install_user' does not exist" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export OMARCHY_INSTALL_USER="$install_user"
|
||||||
|
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
|
||||||
|
export OMARCHY_INSTALL="${OMARCHY_INSTALL:-$OMARCHY_PATH/install}"
|
||||||
|
export OMARCHY_INSTALL_LOG_FILE="${OMARCHY_INSTALL_LOG_FILE:-/var/log/omarchy-install.log}"
|
||||||
|
export PATH="$OMARCHY_PATH/bin:$PATH"
|
||||||
|
|
||||||
|
source "$OMARCHY_INSTALL/helpers/logging.sh"
|
||||||
|
source "$OMARCHY_INSTALL/helpers/chroot.sh"
|
||||||
|
source "$OMARCHY_INSTALL/hardware/all.sh"
|
||||||
Executable
+94
@@ -0,0 +1,94 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Apply Omarchy system setup in the installed target
|
||||||
|
# omarchy:group=setup
|
||||||
|
# omarchy:requires-sudo=true
|
||||||
|
# omarchy:examples=omarchy setup system --install-user dhh --first-install
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<USAGE
|
||||||
|
Usage: omarchy setup system --install-user USER [--first-install|--upgrade]
|
||||||
|
|
||||||
|
Runs root-owned Omarchy system setup. The ISO calls this in the target chroot
|
||||||
|
after packages are installed and the target user exists. It also calls
|
||||||
|
omarchy-setup-hardware, so hardware setup cannot be accidentally skipped.
|
||||||
|
USAGE
|
||||||
|
}
|
||||||
|
|
||||||
|
install_user="${OMARCHY_INSTALL_USER:-}"
|
||||||
|
first_install=0
|
||||||
|
upgrade=0
|
||||||
|
|
||||||
|
while (($#)); do
|
||||||
|
case "$1" in
|
||||||
|
--install-user)
|
||||||
|
install_user="${2:-}"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--first-install)
|
||||||
|
first_install=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--upgrade)
|
||||||
|
upgrade=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1" >&2
|
||||||
|
usage >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if (( EUID != 0 )); then
|
||||||
|
echo "Error: omarchy-setup-system must run as root" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $install_user || $install_user == "root" ]]; then
|
||||||
|
echo "Error: --install-user must name the target non-root user" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! getent passwd "$install_user" >/dev/null; then
|
||||||
|
echo "Error: user '$install_user' does not exist" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export OMARCHY_INSTALL_USER="$install_user"
|
||||||
|
export OMARCHY_FIRST_INSTALL="$first_install"
|
||||||
|
export OMARCHY_UPGRADE="$upgrade"
|
||||||
|
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
|
||||||
|
export OMARCHY_INSTALL="${OMARCHY_INSTALL:-$OMARCHY_PATH/install}"
|
||||||
|
export OMARCHY_INSTALL_LOG_FILE="${OMARCHY_INSTALL_LOG_FILE:-/var/log/omarchy-install.log}"
|
||||||
|
export PATH="$OMARCHY_PATH/bin:$PATH"
|
||||||
|
|
||||||
|
source "$OMARCHY_INSTALL/helpers/logging.sh"
|
||||||
|
source "$OMARCHY_INSTALL/helpers/chroot.sh"
|
||||||
|
start_install_log
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/config/theme-system.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/config/increase-lockout-limit.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/config/lockscreen-pam.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/config/docker.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/config/enable-services.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/config/firewall.sh"
|
||||||
|
|
||||||
|
omarchy-setup-hardware --install-user "$install_user"
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/login/sddm.sh"
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/post-install/dns-resolver.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/post-install/pacman.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/post-install/udev.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/post-install/localdb.sh"
|
||||||
|
|
||||||
|
stop_install_log
|
||||||
+77
-34
@@ -6,28 +6,51 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<USAGE
|
||||||
|
Usage: omarchy setup user [--force] [--first-install]
|
||||||
|
|
||||||
|
Idempotent user-level setup: copies/symlinks defaults from \$OMARCHY_PATH
|
||||||
|
into \$HOME, installs user services/session defaults, refreshes app launchers,
|
||||||
|
and applies user-scoped hardware/session tweaks.
|
||||||
|
|
||||||
|
--first-install is used by the ISO in the target chroot. It marks shipped
|
||||||
|
migrations complete for the freshly-created user and enables the first graphical
|
||||||
|
login one-shot.
|
||||||
|
|
||||||
|
Idempotency marker: ~/.local/state/omarchy/setup-user.done
|
||||||
|
USAGE
|
||||||
|
}
|
||||||
|
|
||||||
if (( EUID == 0 )); then
|
if (( EUID == 0 )); then
|
||||||
echo "Error: run omarchy-setup-user as the user being configured, not as root." >&2
|
echo "Error: run omarchy-setup-user as the user being configured, not as root." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
force=0
|
force=0
|
||||||
if [[ ${1:-} == "--force" ]]; then
|
first_install=0
|
||||||
|
while (($#)); do
|
||||||
|
case "$1" in
|
||||||
|
--force)
|
||||||
force=1
|
force=1
|
||||||
elif [[ ${1:-} == "-h" || ${1:-} == "--help" ]]; then
|
shift
|
||||||
cat <<USAGE
|
;;
|
||||||
Usage: omarchy setup user [--force]
|
--first-install)
|
||||||
|
first_install=1
|
||||||
Idempotent user-level setup: copies/symlinks defaults from \$OMARCHY_PATH
|
force=1
|
||||||
into \$HOME (config files, AI skills, nautilus extensions, branding, MIME
|
shift
|
||||||
defaults, etc.). Runs automatically on first user login via the omarchy
|
;;
|
||||||
first-run flow; rerun manually after creating a new user, or with --force
|
-h|--help)
|
||||||
to refresh after a dev-link.
|
usage
|
||||||
|
|
||||||
Idempotency marker: ~/.local/state/omarchy/setup-user.done
|
|
||||||
USAGE
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1" >&2
|
||||||
|
usage >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
state_dir="$HOME/.local/state/omarchy"
|
state_dir="$HOME/.local/state/omarchy"
|
||||||
marker="$state_dir/setup-user.done"
|
marker="$state_dir/setup-user.done"
|
||||||
@@ -40,15 +63,11 @@ fi
|
|||||||
|
|
||||||
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
|
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
|
||||||
export OMARCHY_INSTALL="${OMARCHY_INSTALL:-$OMARCHY_PATH/install}"
|
export OMARCHY_INSTALL="${OMARCHY_INSTALL:-$OMARCHY_PATH/install}"
|
||||||
|
export OMARCHY_SETUP_CONTEXT="${OMARCHY_SETUP_CONTEXT:-runtime}"
|
||||||
export PATH="$OMARCHY_PATH/bin:$PATH"
|
export PATH="$OMARCHY_PATH/bin:$PATH"
|
||||||
|
|
||||||
if [[ -f $OMARCHY_INSTALL/helpers/mode.sh ]]; then
|
if (( first_install )); then
|
||||||
source "$OMARCHY_INSTALL/helpers/mode.sh"
|
export OMARCHY_SETUP_CONTEXT=iso-chroot
|
||||||
detect_install_mode
|
|
||||||
export_legacy_mode_flags
|
|
||||||
else
|
|
||||||
install_mode_is() { [[ ${OMARCHY_INSTALL_MODE:-online} == "$1" ]]; }
|
|
||||||
export -f install_mode_is
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n ${OMARCHY_INSTALL_LOG_FILE:-} && -f $OMARCHY_INSTALL/helpers/logging.sh ]]; then
|
if [[ -n ${OMARCHY_INSTALL_LOG_FILE:-} && -f $OMARCHY_INSTALL/helpers/logging.sh ]]; then
|
||||||
@@ -60,38 +79,60 @@ else
|
|||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Copy over Omarchy configs for this user. /etc/skel handles newly-created
|
omarchy_user_systemctl_enable() {
|
||||||
# users, but existing users installing Omarchy need the same defaults seeded.
|
local unit="$1" unit_path target
|
||||||
|
local -a targets=()
|
||||||
|
|
||||||
|
if systemctl --user enable "$unit" >/dev/null 2>&1; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ISO chroot setup has no running user systemd manager. Enabling a user unit
|
||||||
|
# is just creating the [Install] WantedBy symlinks, so do that directly.
|
||||||
|
unit_path="$HOME/.config/systemd/user/$unit"
|
||||||
|
if [[ -f $unit_path ]]; then
|
||||||
|
mapfile -t targets < <(awk -F= '
|
||||||
|
/^\[Install\]/ { in_install=1; next }
|
||||||
|
/^\[/ { in_install=0 }
|
||||||
|
in_install && $1 == "WantedBy" {
|
||||||
|
n=split($2, values, /[[:space:]]+/)
|
||||||
|
for (i = 1; i <= n; i++) if (values[i] != "") print values[i]
|
||||||
|
}
|
||||||
|
' "$unit_path")
|
||||||
|
fi
|
||||||
|
((${#targets[@]})) || targets=(default.target)
|
||||||
|
|
||||||
|
for target in "${targets[@]}"; do
|
||||||
|
mkdir -p "$HOME/.config/systemd/user/$target.wants"
|
||||||
|
ln -sfn "../$unit" "$HOME/.config/systemd/user/$target.wants/$unit"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
export -f omarchy_user_systemctl_enable
|
||||||
|
|
||||||
mkdir -p ~/.config
|
mkdir -p ~/.config
|
||||||
cp -R "$OMARCHY_PATH/config/." ~/.config/
|
cp -R "$OMARCHY_PATH/config/." ~/.config/
|
||||||
cp "$OMARCHY_PATH/default/bashrc" ~/.bashrc
|
cp "$OMARCHY_PATH/default/bashrc" ~/.bashrc
|
||||||
echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' > ~/.bash_profile
|
echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' > ~/.bash_profile
|
||||||
|
|
||||||
# AI assistant skill symlinks. Each agent has its own conventional skills
|
|
||||||
# directory; we drop an 'omarchy' entry into each so the skill is loaded.
|
|
||||||
mkdir -p ~/.agents/skills ~/.claude/skills ~/.codex/skills ~/.pi/agent/skills
|
mkdir -p ~/.agents/skills ~/.claude/skills ~/.codex/skills ~/.pi/agent/skills
|
||||||
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.agents/skills/omarchy
|
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.agents/skills/omarchy
|
||||||
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.claude/skills/omarchy
|
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.claude/skills/omarchy
|
||||||
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.codex/skills/omarchy
|
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.codex/skills/omarchy
|
||||||
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.pi/agent/skills/omarchy
|
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.pi/agent/skills/omarchy
|
||||||
|
|
||||||
# Toggle state and flags
|
|
||||||
mkdir -p ~/.local/state/omarchy/toggles/hypr
|
mkdir -p ~/.local/state/omarchy/toggles/hypr
|
||||||
cp "$OMARCHY_PATH/default/hypr/toggles/flags.lua" ~/.local/state/omarchy/toggles/hypr/
|
cp "$OMARCHY_PATH/default/hypr/toggles/flags.lua" ~/.local/state/omarchy/toggles/hypr/
|
||||||
|
|
||||||
# Nautilus python extensions
|
|
||||||
mkdir -p "$HOME/.local/share/nautilus-python/extensions"
|
mkdir -p "$HOME/.local/share/nautilus-python/extensions"
|
||||||
cp "$OMARCHY_PATH/default/nautilus-python/extensions/localsend.py" \
|
cp "$OMARCHY_PATH/default/nautilus-python/extensions/localsend.py" \
|
||||||
"$HOME/.local/share/nautilus-python/extensions/"
|
"$HOME/.local/share/nautilus-python/extensions/"
|
||||||
cp "$OMARCHY_PATH/default/nautilus-python/extensions/transcode.py" \
|
cp "$OMARCHY_PATH/default/nautilus-python/extensions/transcode.py" \
|
||||||
"$HOME/.local/share/nautilus-python/extensions/"
|
"$HOME/.local/share/nautilus-python/extensions/"
|
||||||
|
|
||||||
# Branding (fastfetch about + screensaver text)
|
|
||||||
mkdir -p ~/.config/omarchy/branding
|
mkdir -p ~/.config/omarchy/branding
|
||||||
cp "$OMARCHY_PATH/icon.txt" ~/.config/omarchy/branding/about.txt
|
cp "$OMARCHY_PATH/icon.txt" ~/.config/omarchy/branding/about.txt
|
||||||
cp "$OMARCHY_PATH/logo.txt" ~/.config/omarchy/branding/screensaver.txt
|
cp "$OMARCHY_PATH/logo.txt" ~/.config/omarchy/branding/screensaver.txt
|
||||||
|
|
||||||
# XDG user dirs (folder layout, gtk bookmarks)
|
|
||||||
mkdir -p ~/Downloads ~/Pictures ~/Videos ~/.config/gtk-3.0
|
mkdir -p ~/Downloads ~/Pictures ~/Videos ~/.config/gtk-3.0
|
||||||
xdg-user-dirs-update --set TEMPLATES "$HOME"
|
xdg-user-dirs-update --set TEMPLATES "$HOME"
|
||||||
xdg-user-dirs-update --set PUBLICSHARE "$HOME"
|
xdg-user-dirs-update --set PUBLICSHARE "$HOME"
|
||||||
@@ -103,7 +144,6 @@ for dir in Downloads Projects Pictures Videos; do
|
|||||||
grep -qxF "$bookmark" ~/.config/gtk-3.0/bookmarks || echo "$bookmark" >>~/.config/gtk-3.0/bookmarks
|
grep -qxF "$bookmark" ~/.config/gtk-3.0/bookmarks || echo "$bookmark" >>~/.config/gtk-3.0/bookmarks
|
||||||
done
|
done
|
||||||
|
|
||||||
# Hyprland keyboard layout from /etc/vconsole.conf
|
|
||||||
conf=/etc/vconsole.conf
|
conf=/etc/vconsole.conf
|
||||||
hyprlua="$HOME/.config/hypr/input.lua"
|
hyprlua="$HOME/.config/hypr/input.lua"
|
||||||
if [[ -f $conf && -f $hyprlua ]]; then
|
if [[ -f $conf && -f $hyprlua ]]; then
|
||||||
@@ -120,15 +160,18 @@ if [[ -f $conf && -f $hyprlua ]]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Reusable per-user install phase: theme, shell/user services, default keyring,
|
|
||||||
# hardware-specific user session fixes, and other current-user setup.
|
|
||||||
source "$OMARCHY_INSTALL/user/all.sh"
|
source "$OMARCHY_INSTALL/user/all.sh"
|
||||||
|
|
||||||
# Application catalog + MIME defaults. Run after mise/node setup from user/all
|
|
||||||
# so npm-backed wrappers can be installed for each user.
|
|
||||||
omarchy-refresh-applications
|
omarchy-refresh-applications
|
||||||
xdg-settings set default-web-browser chromium.desktop
|
xdg-settings set default-web-browser chromium.desktop
|
||||||
xdg-mime default HEY.desktop x-scheme-handler/mailto
|
xdg-mime default HEY.desktop x-scheme-handler/mailto
|
||||||
|
|
||||||
|
if (( first_install )); then
|
||||||
|
mkdir -p "$state_dir/migrations"
|
||||||
|
for migration in "$OMARCHY_PATH"/migrations/*.sh; do
|
||||||
|
[[ -f $migration ]] && touch "$state_dir/migrations/$(basename "$migration")"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
touch "$marker"
|
touch "$marker"
|
||||||
echo "User setup complete."
|
echo "User setup complete."
|
||||||
@@ -7,11 +7,13 @@
|
|||||||
monitor_command='exec dbus-monitor --system "type='\''signal'\'',sender='\''org.freedesktop.login1'\'',interface='\''org.freedesktop.login1.Manager'\'',member='\''PrepareForSleep'\''"'
|
monitor_command='exec dbus-monitor --system "type='\''signal'\'',sender='\''org.freedesktop.login1'\'',interface='\''org.freedesktop.login1.Manager'\'',member='\''PrepareForSleep'\''"'
|
||||||
|
|
||||||
consume_sleep_events() {
|
consume_sleep_events() {
|
||||||
local line
|
local line sleep_lock
|
||||||
|
sleep_lock=$(command -v omarchy-system-sleep-lock || true)
|
||||||
|
sleep_lock=${sleep_lock:-/usr/bin/omarchy-system-sleep-lock}
|
||||||
|
|
||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
if [[ $line == *"boolean true"* ]]; then
|
if [[ $line == *"boolean true"* ]]; then
|
||||||
"$OMARCHY_PATH/bin/omarchy-system-sleep-lock"
|
"$sleep_lock"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -22,9 +24,12 @@ if [[ ${1:-} == "--consume" ]]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
sleep_monitor=$(command -v omarchy-system-sleep-monitor || true)
|
||||||
|
sleep_monitor=${sleep_monitor:-/usr/bin/omarchy-system-sleep-monitor}
|
||||||
|
|
||||||
exec systemd-inhibit \
|
exec systemd-inhibit \
|
||||||
--what=sleep \
|
--what=sleep \
|
||||||
--mode=delay \
|
--mode=delay \
|
||||||
--who=Omarchy \
|
--who=Omarchy \
|
||||||
--why="Lock screen before suspend" \
|
--why="Lock screen before suspend" \
|
||||||
bash -lc "$monitor_command | \"$OMARCHY_PATH/bin/omarchy-system-sleep-monitor\" --consume"
|
bash -lc "$monitor_command | \"$sleep_monitor\" --consume"
|
||||||
@@ -110,6 +110,10 @@ set_theme_background() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
|
THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
|
||||||
|
THEME_HEADLESS=0
|
||||||
|
if [[ ${OMARCHY_THEME_HEADLESS:-} == "1" || ${OMARCHY_THEME_OFFLINE:-} == "1" ]]; then
|
||||||
|
THEME_HEADLESS=1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ ! -d $OMARCHY_THEMES_PATH/$THEME_NAME ]] && [[ ! -d $USER_THEMES_PATH/$THEME_NAME ]]; then
|
if [[ ! -d $OMARCHY_THEMES_PATH/$THEME_NAME ]] && [[ ! -d $USER_THEMES_PATH/$THEME_NAME ]]; then
|
||||||
echo "Theme '$THEME_NAME' does not exist"
|
echo "Theme '$THEME_NAME' does not exist"
|
||||||
@@ -139,7 +143,7 @@ fi
|
|||||||
omarchy-theme-set-templates
|
omarchy-theme-set-templates
|
||||||
|
|
||||||
OLD_BACKGROUND_SNAPSHOT=""
|
OLD_BACKGROUND_SNAPSHOT=""
|
||||||
if [[ $OMARCHY_THEME_SKIP_BACKGROUND != "1" ]]; then
|
if [[ $THEME_HEADLESS != "1" && $OMARCHY_THEME_SKIP_BACKGROUND != "1" ]]; then
|
||||||
OLD_BACKGROUND_SNAPSHOT=$(snapshot_current_background)
|
OLD_BACKGROUND_SNAPSHOT=$(snapshot_current_background)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -154,7 +158,7 @@ echo "$THEME_NAME" >"$HOME/.config/omarchy/current/theme.name"
|
|||||||
# the theme hooks run.
|
# the theme hooks run.
|
||||||
colors_payload=$([[ -f $CURRENT_THEME_PATH/colors.toml ]] && base64 -w 0 "$CURRENT_THEME_PATH/colors.toml")
|
colors_payload=$([[ -f $CURRENT_THEME_PATH/colors.toml ]] && base64 -w 0 "$CURRENT_THEME_PATH/colors.toml")
|
||||||
shell_payload=$([[ -f $CURRENT_THEME_PATH/shell.toml ]] && base64 -w 0 "$CURRENT_THEME_PATH/shell.toml")
|
shell_payload=$([[ -f $CURRENT_THEME_PATH/shell.toml ]] && base64 -w 0 "$CURRENT_THEME_PATH/shell.toml")
|
||||||
if [[ ${OMARCHY_THEME_OFFLINE:-} == "1" ]]; then
|
if [[ $THEME_HEADLESS == "1" ]]; then
|
||||||
: # No shell/session bus exists during ISO chroot finalization.
|
: # No shell/session bus exists during ISO chroot finalization.
|
||||||
elif [[ $OMARCHY_THEME_SKIP_BACKGROUND == "1" ]]; then
|
elif [[ $OMARCHY_THEME_SKIP_BACKGROUND == "1" ]]; then
|
||||||
shell_ipc shell applyTheme "$colors_payload" "$shell_payload" || true
|
shell_ipc shell applyTheme "$colors_payload" "$shell_payload" || true
|
||||||
@@ -183,7 +187,7 @@ post_theme_commands=(
|
|||||||
omarchy-theme-set-keyboard
|
omarchy-theme-set-keyboard
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ ${OMARCHY_THEME_OFFLINE:-} != "1" ]]; then
|
if [[ $THEME_HEADLESS != "1" ]]; then
|
||||||
run_parallel "${post_theme_commands[@]}"
|
run_parallel "${post_theme_commands[@]}"
|
||||||
|
|
||||||
# Call hook on theme set
|
# Call hook on theme set
|
||||||
|
|||||||
+48
-12
@@ -1,40 +1,76 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Create a desktop launcher for a terminal UI app
|
# omarchy:summary=Create a desktop launcher for a terminal UI app
|
||||||
# omarchy:args=[name command window-style icon-url]
|
# omarchy:args=[name command window-style icon-url-or-name]
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
ICON_DIR="$HOME/.local/share/icons/hicolor/256x256/apps"
|
||||||
|
|
||||||
|
safe_icon_name() {
|
||||||
|
printf '%s\n' "$1" \
|
||||||
|
| tr '[:upper:]' '[:lower:]' \
|
||||||
|
| sed 's/[^[:alnum:]]\+/-/g; s/^-//; s/-$//'
|
||||||
|
}
|
||||||
|
|
||||||
|
icon_name_from_ref() {
|
||||||
|
local ref="$1"
|
||||||
|
local name
|
||||||
|
name=$(basename "$ref")
|
||||||
|
|
||||||
|
if [[ $name == *.* ]]; then
|
||||||
|
safe_icon_name "${name%.*}"
|
||||||
|
else
|
||||||
|
printf '%s\n' "$name"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_user_icon() {
|
||||||
|
local source="$1"
|
||||||
|
local name="$2"
|
||||||
|
local ext="${source##*.}"
|
||||||
|
|
||||||
|
[[ $ext == "$source" ]] && ext="png"
|
||||||
|
mkdir -p "$ICON_DIR"
|
||||||
|
cp "$source" "$ICON_DIR/$name.$ext"
|
||||||
|
gtk-update-icon-cache "$HOME/.local/share/icons/hicolor" &>/dev/null || true
|
||||||
|
printf '%s\n' "$name"
|
||||||
|
}
|
||||||
|
|
||||||
if (( $# != 4 )); then
|
if (( $# != 4 )); then
|
||||||
echo -e "\e[32mLet's create a TUI shortcut you can start with the app launcher.\n\e[0m"
|
echo -e "\e[32mLet's create a TUI shortcut you can start with the app launcher.\n\e[0m"
|
||||||
APP_NAME=$(gum input --prompt "Name> " --placeholder "My TUI")
|
APP_NAME=$(gum input --prompt "Name> " --placeholder "My TUI")
|
||||||
APP_EXEC=$(gum input --prompt "Launch Command> " --placeholder "lazydocker or bash -c 'dust; read -n 1 -s'")
|
APP_EXEC=$(gum input --prompt "Launch Command> " --placeholder "lazydocker or bash -c 'dust; read -n 1 -s'")
|
||||||
WINDOW_STYLE=$(gum choose --header "Window style" float tile)
|
WINDOW_STYLE=$(gum choose --header "Window style" float tile)
|
||||||
ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG or SVG!)")
|
ICON_REF=$(gum input --prompt "Icon URL/name> " --placeholder "See https://dashboardicons.com or enter an installed icon name")
|
||||||
else
|
else
|
||||||
APP_NAME="$1"
|
APP_NAME="$1"
|
||||||
APP_EXEC="$2"
|
APP_EXEC="$2"
|
||||||
WINDOW_STYLE="$3"
|
WINDOW_STYLE="$3"
|
||||||
ICON_URL="$4"
|
ICON_REF="$4"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z $APP_NAME || -z $APP_EXEC || -z $ICON_URL ]]; then
|
if [[ -z $APP_NAME || -z $APP_EXEC || -z $ICON_REF ]]; then
|
||||||
echo "You must set app name, app command, and icon URL!"
|
echo "You must set app name, app command, and icon URL/name!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
|
||||||
DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop"
|
DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop"
|
||||||
|
mkdir -p "$(dirname "$DESKTOP_FILE")"
|
||||||
|
|
||||||
if [[ ! $ICON_URL =~ ^https?:// ]] && [[ -f $ICON_URL ]]; then
|
if [[ $ICON_REF =~ ^https?:// ]]; then
|
||||||
ICON_PATH="$ICON_URL"
|
ICON_VALUE=$(safe_icon_name "$APP_NAME")
|
||||||
else
|
|
||||||
ICON_PATH="$ICON_DIR/$APP_NAME.png"
|
|
||||||
mkdir -p "$ICON_DIR"
|
mkdir -p "$ICON_DIR"
|
||||||
if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then
|
if ! curl -sL -o "$ICON_DIR/$ICON_VALUE.png" "$ICON_REF"; then
|
||||||
echo "Error: Failed to download icon."
|
echo "Error: Failed to download icon."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
gtk-update-icon-cache "$HOME/.local/share/icons/hicolor" &>/dev/null || true
|
||||||
|
elif [[ -f $ICON_REF ]]; then
|
||||||
|
ICON_VALUE=$(install_user_icon "$ICON_REF" "$(safe_icon_name "$APP_NAME")")
|
||||||
|
else
|
||||||
|
# Bundled Omarchy icons are package-owned under /usr/share/icons/hicolor.
|
||||||
|
ICON_VALUE=$(icon_name_from_ref "$ICON_REF")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $WINDOW_STYLE == "float" ]]; then
|
if [[ $WINDOW_STYLE == "float" ]]; then
|
||||||
@@ -51,7 +87,7 @@ Comment=$APP_NAME
|
|||||||
Exec=xdg-terminal-exec --app-id=$APP_CLASS -e $APP_EXEC
|
Exec=xdg-terminal-exec --app-id=$APP_CLASS -e $APP_EXEC
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Icon=$ICON_PATH
|
Icon=$ICON_VALUE
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
ICON_DIR="$HOME/.local/share/icons/hicolor/256x256/apps"
|
||||||
|
OLD_ICON_DIR="$HOME/.local/share/applications/icons"
|
||||||
DESKTOP_DIR="$HOME/.local/share/applications/"
|
DESKTOP_DIR="$HOME/.local/share/applications/"
|
||||||
|
|
||||||
if (( $# == 0 )); then
|
if (( $# == 0 )); then
|
||||||
@@ -32,6 +33,7 @@ if [[ -z $APP_NAME ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
icon_name=$(printf '%s\n' "$APP_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^[:alnum:]]\+/-/g; s/^-//; s/-$//')
|
||||||
rm -f "$DESKTOP_DIR/$APP_NAME.desktop"
|
rm -f "$DESKTOP_DIR/$APP_NAME.desktop"
|
||||||
rm -f "$ICON_DIR/$APP_NAME.png"
|
rm -f "$ICON_DIR/$icon_name.png" "$ICON_DIR/$APP_NAME.png" "$OLD_ICON_DIR/$APP_NAME.png"
|
||||||
omarchy-notification-send -g "TUI removed" "$APP_NAME"
|
omarchy-notification-send -g "TUI removed" "$APP_NAME"
|
||||||
@@ -5,7 +5,8 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
APP_DIR="${1:-$HOME/.local/share/applications}"
|
APP_DIR="${1:-$HOME/.local/share/applications}"
|
||||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
ICON_DIR="$HOME/.local/share/icons/hicolor/256x256/apps"
|
||||||
|
OLD_ICON_DIR="$HOME/.local/share/applications/icons"
|
||||||
|
|
||||||
echo "Scanning for TUIs in $APP_DIR..."
|
echo "Scanning for TUIs in $APP_DIR..."
|
||||||
|
|
||||||
@@ -23,9 +24,10 @@ fi
|
|||||||
|
|
||||||
for file in "${tui_desktop_files[@]}"; do
|
for file in "${tui_desktop_files[@]}"; do
|
||||||
app_name=$(basename "$file" .desktop)
|
app_name=$(basename "$file" .desktop)
|
||||||
|
icon_name=$(printf '%s\n' "$app_name" | tr '[:upper:]' '[:lower:]' | sed 's/[^[:alnum:]]\+/-/g; s/^-//; s/-$//')
|
||||||
echo "Removing TUI: $app_name"
|
echo "Removing TUI: $app_name"
|
||||||
rm -f "$file"
|
rm -f "$file"
|
||||||
rm -f "$ICON_DIR/$app_name.png"
|
rm -f "$ICON_DIR/$icon_name.png" "$ICON_DIR/$app_name.png" "$OLD_ICON_DIR/$app_name.png"
|
||||||
done
|
done
|
||||||
|
|
||||||
if command -v update-desktop-database &>/dev/null; then
|
if command -v update-desktop-database &>/dev/null; then
|
||||||
|
|||||||
+1
-4
@@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Run the update inside a PTY so pacman/yay keep showing download progress
|
|
||||||
# while still logging the full session for later analysis.
|
|
||||||
if [[ -z $OMARCHY_UPDATE_LOGGED ]]; then
|
if [[ -z $OMARCHY_UPDATE_LOGGED ]]; then
|
||||||
script_command=$(printf '%q ' "$0" "$@")
|
script_command=$(printf '%q ' "$0" "$@")
|
||||||
exec env OMARCHY_UPDATE_LOGGED=1 script -qefc "$script_command" "/tmp/omarchy-update.log"
|
exec env OMARCHY_UPDATE_LOGGED=1 script -qefc "$script_command" "/tmp/omarchy-update.log"
|
||||||
@@ -16,8 +14,7 @@ fi
|
|||||||
|
|
||||||
trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR
|
trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR
|
||||||
|
|
||||||
if [[ $1 == "-y" ]] || omarchy-update-confirm; then
|
if [[ ${1:-} == "-y" ]] || omarchy-update-confirm; then
|
||||||
omarchy-snapshot create || (($? == 127))
|
omarchy-snapshot create || (($? == 127))
|
||||||
omarchy-update-git
|
|
||||||
omarchy-update-perform
|
omarchy-update-perform
|
||||||
fi
|
fi
|
||||||
@@ -1,24 +1,15 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Get remote tag
|
# omarchy:summary=Check whether the Omarchy package has an available update.
|
||||||
|
|
||||||
latest_tag=$(git -C "$OMARCHY_PATH" ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1)
|
set -e
|
||||||
if [[ -z $latest_tag ]]; then
|
|
||||||
echo "Error: Could not retrieve latest tag."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get local tag
|
if pacman -Qu omarchy >/tmp/omarchy-update-available.$$ 2>/dev/null; then
|
||||||
current_tag=$(git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1))
|
cat /tmp/omarchy-update-available.$$
|
||||||
if [[ -z $current_tag ]]; then
|
rm -f /tmp/omarchy-update-available.$$
|
||||||
echo "Error: Could not retrieve current tag."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $current_tag != $latest_tag ]]; then
|
|
||||||
echo "Omarchy update available ($latest_tag)"
|
|
||||||
exit 0
|
exit 0
|
||||||
else
|
|
||||||
echo "Omarchy is up to date ($current_tag)"
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f /tmp/omarchy-update-available.$$
|
||||||
|
echo "Omarchy is up to date"
|
||||||
|
exit 1
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# omarchy:summary=Switch Omarchy branches and update from the selected branch
|
|
||||||
# omarchy:args=<branch>
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if (($# == 0)); then
|
|
||||||
echo "Usage: omarchy-update-branch [master|dev]"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
branch="$1"
|
|
||||||
|
|
||||||
# Snapshot before switching branch
|
|
||||||
omarchy-snapshot create || (( $? == 127 ))
|
|
||||||
|
|
||||||
if ! git -C "$OMARCHY_PATH" diff --quiet || ! git -C "$OMARCHY_PATH" diff --cached --quiet; then
|
|
||||||
stashed=true
|
|
||||||
git -C "$OMARCHY_PATH" stash push -u -m "Autostash before switching to $branch"
|
|
||||||
else
|
|
||||||
stashed=false
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Switch branches
|
|
||||||
git -C "$OMARCHY_PATH" switch "$branch"
|
|
||||||
|
|
||||||
# Reapply stash if we made one
|
|
||||||
if [[ $stashed == "true" ]]; then
|
|
||||||
if ! git -C "$OMARCHY_PATH" stash pop; then
|
|
||||||
echo "⚠️ Conflicts when applying stash — stash kept"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Update the system from the new branch
|
|
||||||
omarchy-update-perform
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# omarchy:summary=Pull the latest Omarchy git changes
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo -e "\e[32mUpdate Omarchy\e[0m"
|
|
||||||
|
|
||||||
omarchy-update-time
|
|
||||||
|
|
||||||
# Suppress Hyprland config errors while git updates default config files mid-pull
|
|
||||||
hyprctl keyword debug:suppress_errors true &>/dev/null || true
|
|
||||||
hyprctl eval 'hl.config({ debug = { suppress_errors = true } })' &>/dev/null || true
|
|
||||||
|
|
||||||
git -C $OMARCHY_PATH pull --autostash
|
|
||||||
git -C $OMARCHY_PATH --no-pager diff --check || git -C $OMARCHY_PATH reset --merge
|
|
||||||
|
|
||||||
hyprctl reload &>/dev/null || true
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# omarchy:summary=Print the current Omarchy git branch
|
|
||||||
|
|
||||||
echo $(git -C "$OMARCHY_PATH" rev-parse --abbrev-ref HEAD)
|
|
||||||
+48
-12
@@ -1,11 +1,41 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Create a desktop launcher for a web app
|
# omarchy:summary=Create a desktop launcher for a web app
|
||||||
# omarchy:args=[name url icon [custom-exec] [mime-types]]
|
# omarchy:args=[name url icon-url-or-name [custom-exec] [mime-types]]
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
ICON_DIR="$HOME/.local/share/icons/hicolor/256x256/apps"
|
||||||
|
|
||||||
|
safe_icon_name() {
|
||||||
|
printf '%s\n' "$1" \
|
||||||
|
| tr '[:upper:]' '[:lower:]' \
|
||||||
|
| sed 's/[^[:alnum:]]\+/-/g; s/^-//; s/-$//'
|
||||||
|
}
|
||||||
|
|
||||||
|
icon_name_from_ref() {
|
||||||
|
local ref="$1"
|
||||||
|
local name
|
||||||
|
name=$(basename "$ref")
|
||||||
|
|
||||||
|
if [[ $name == *.* ]]; then
|
||||||
|
safe_icon_name "${name%.*}"
|
||||||
|
else
|
||||||
|
printf '%s\n' "$name"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_user_icon() {
|
||||||
|
local source="$1"
|
||||||
|
local name="$2"
|
||||||
|
local ext="${source##*.}"
|
||||||
|
|
||||||
|
[[ $ext == "$source" ]] && ext="png"
|
||||||
|
mkdir -p "$ICON_DIR"
|
||||||
|
cp "$source" "$ICON_DIR/$name.$ext"
|
||||||
|
gtk-update-icon-cache "$HOME/.local/share/icons/hicolor" &>/dev/null || true
|
||||||
|
printf '%s\n' "$name"
|
||||||
|
}
|
||||||
|
|
||||||
if (( $# < 3 )); then
|
if (( $# < 3 )); then
|
||||||
echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m"
|
echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m"
|
||||||
@@ -18,10 +48,12 @@ if (( $# < 3 )); then
|
|||||||
# Try to fetch favicon automatically first.
|
# Try to fetch favicon automatically first.
|
||||||
FAVICON_URL="https://www.google.com/s2/favicons?domain=${APP_URL}&sz=128"
|
FAVICON_URL="https://www.google.com/s2/favicons?domain=${APP_URL}&sz=128"
|
||||||
mkdir -p "$ICON_DIR"
|
mkdir -p "$ICON_DIR"
|
||||||
if curl -fsSL -o "$ICON_DIR/$APP_NAME.png" "$FAVICON_URL" && [[ -s $ICON_DIR/$APP_NAME.png ]]; then
|
ICON_VALUE=$(safe_icon_name "$APP_NAME")
|
||||||
ICON_REF="$APP_NAME.png"
|
if curl -fsSL -o "$ICON_DIR/$ICON_VALUE.png" "$FAVICON_URL" && [[ -s $ICON_DIR/$ICON_VALUE.png ]]; then
|
||||||
|
gtk-update-icon-cache "$HOME/.local/share/icons/hicolor" &>/dev/null || true
|
||||||
|
ICON_REF="$ICON_VALUE"
|
||||||
else
|
else
|
||||||
ICON_REF=$(gum input --prompt "Icon URL> " --placeholder "Could not fetch favicon automatically. Enter PNG icon URL (see https://dashboardicons.com)")
|
ICON_REF=$(gum input --prompt "Icon URL/name> " --placeholder "Could not fetch favicon automatically. Enter PNG icon URL or icon name")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CUSTOM_EXEC=""
|
CUSTOM_EXEC=""
|
||||||
@@ -45,21 +77,24 @@ if [[ -z $APP_NAME || -z $APP_URL ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Resolve icon from URL or from a local icon name.
|
|
||||||
mkdir -p "$ICON_DIR"
|
|
||||||
|
|
||||||
if [[ -z $ICON_REF ]]; then
|
if [[ -z $ICON_REF ]]; then
|
||||||
ICON_REF="https://www.google.com/s2/favicons?domain=${APP_URL}&sz=128"
|
ICON_REF="https://www.google.com/s2/favicons?domain=${APP_URL}&sz=128"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $ICON_REF =~ ^https?:// ]]; then
|
if [[ $ICON_REF =~ ^https?:// ]]; then
|
||||||
ICON_PATH="$ICON_DIR/$APP_NAME.png"
|
ICON_VALUE=$(safe_icon_name "$APP_NAME")
|
||||||
if ! curl -fsSL -o "$ICON_PATH" "$ICON_REF" || [[ ! -s $ICON_PATH ]]; then
|
mkdir -p "$ICON_DIR"
|
||||||
|
if ! curl -fsSL -o "$ICON_DIR/$ICON_VALUE.png" "$ICON_REF" || [[ ! -s $ICON_DIR/$ICON_VALUE.png ]]; then
|
||||||
echo "Error: Failed to download icon."
|
echo "Error: Failed to download icon."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
gtk-update-icon-cache "$HOME/.local/share/icons/hicolor" &>/dev/null || true
|
||||||
|
elif [[ -f $ICON_REF ]]; then
|
||||||
|
ICON_VALUE=$(install_user_icon "$ICON_REF" "$(safe_icon_name "$APP_NAME")")
|
||||||
else
|
else
|
||||||
ICON_PATH="$ICON_DIR/$ICON_REF"
|
# Bundled Omarchy icons are package-owned under /usr/share/icons/hicolor.
|
||||||
|
# Accept either "HEY" or the historical "HEY.png" argument form.
|
||||||
|
ICON_VALUE=$(icon_name_from_ref "$ICON_REF")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use custom exec if provided, otherwise default behavior
|
# Use custom exec if provided, otherwise default behavior
|
||||||
@@ -67,6 +102,7 @@ EXEC_COMMAND="${CUSTOM_EXEC:-omarchy-launch-webapp $APP_URL}"
|
|||||||
|
|
||||||
# Create application .desktop file
|
# Create application .desktop file
|
||||||
DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop"
|
DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop"
|
||||||
|
mkdir -p "$(dirname "$DESKTOP_FILE")"
|
||||||
|
|
||||||
cat >"$DESKTOP_FILE" <<EOF
|
cat >"$DESKTOP_FILE" <<EOF
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
@@ -76,7 +112,7 @@ Comment=$APP_NAME
|
|||||||
Exec=$EXEC_COMMAND
|
Exec=$EXEC_COMMAND
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Icon=$ICON_PATH
|
Icon=$ICON_VALUE
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
ICON_DIR="$HOME/.local/share/icons/hicolor/256x256/apps"
|
||||||
|
OLD_ICON_DIR="$HOME/.local/share/applications/icons"
|
||||||
DESKTOP_DIR="$HOME/.local/share/applications/"
|
DESKTOP_DIR="$HOME/.local/share/applications/"
|
||||||
|
|
||||||
if (( $# == 0 )); then
|
if (( $# == 0 )); then
|
||||||
@@ -32,8 +33,9 @@ if [[ -z $APP_NAME ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
icon_name=$(printf '%s\n' "$APP_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^[:alnum:]]\+/-/g; s/^-//; s/-$//')
|
||||||
rm -f "$DESKTOP_DIR/$APP_NAME.desktop"
|
rm -f "$DESKTOP_DIR/$APP_NAME.desktop"
|
||||||
rm -f "$ICON_DIR/$APP_NAME.png"
|
rm -f "$ICON_DIR/$icon_name.png" "$ICON_DIR/$APP_NAME.png" "$OLD_ICON_DIR/$APP_NAME.png"
|
||||||
|
|
||||||
omarchy-notification-send -g "Web app removed" "$APP_NAME"
|
omarchy-notification-send -g "Web app removed" "$APP_NAME"
|
||||||
update-desktop-database "$DESKTOP_DIR" &>/dev/null
|
update-desktop-database "$DESKTOP_DIR" &>/dev/null
|
||||||
@@ -5,7 +5,8 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
APP_DIR="${1:-$HOME/.local/share/applications}"
|
APP_DIR="${1:-$HOME/.local/share/applications}"
|
||||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
ICON_DIR="$HOME/.local/share/icons/hicolor/256x256/apps"
|
||||||
|
OLD_ICON_DIR="$HOME/.local/share/applications/icons"
|
||||||
|
|
||||||
echo "Scanning for web apps in $APP_DIR..."
|
echo "Scanning for web apps in $APP_DIR..."
|
||||||
|
|
||||||
@@ -23,9 +24,10 @@ fi
|
|||||||
|
|
||||||
for file in "${webapp_desktop_files[@]}"; do
|
for file in "${webapp_desktop_files[@]}"; do
|
||||||
app_name=$(basename "$file" .desktop)
|
app_name=$(basename "$file" .desktop)
|
||||||
|
icon_name=$(printf '%s\n' "$app_name" | tr '[:upper:]' '[:lower:]' | sed 's/[^[:alnum:]]\+/-/g; s/^-//; s/-$//')
|
||||||
echo "Removing web app: $app_name"
|
echo "Removing web app: $app_name"
|
||||||
rm -f "$file"
|
rm -f "$file"
|
||||||
rm -f "$ICON_DIR/$app_name.png"
|
rm -f "$ICON_DIR/$icon_name.png" "$ICON_DIR/$app_name.png" "$OLD_ICON_DIR/$app_name.png"
|
||||||
done
|
done
|
||||||
|
|
||||||
if command -v update-desktop-database &>/dev/null; then
|
if command -v update-desktop-database &>/dev/null; then
|
||||||
|
|||||||
@@ -44,19 +44,14 @@ install_windows() {
|
|||||||
|
|
||||||
mkdir -p "$HOME/.windows"
|
mkdir -p "$HOME/.windows"
|
||||||
mkdir -p "$HOME/.config/windows"
|
mkdir -p "$HOME/.config/windows"
|
||||||
mkdir -p "$HOME/.local/share/applications/icons"
|
mkdir -p "$HOME/.local/share/applications"
|
||||||
|
|
||||||
# Install Windows VM icon and desktop file
|
|
||||||
if [[ -f $OMARCHY_PATH/applications/icons/windows.png ]]; then
|
|
||||||
cp "$OMARCHY_PATH/applications/icons/windows.png" "$HOME/.local/share/applications/icons/windows.png"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat << EOF | tee "$HOME/.local/share/applications/windows-vm.desktop" > /dev/null
|
cat << EOF | tee "$HOME/.local/share/applications/windows-vm.desktop" > /dev/null
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Windows
|
Name=Windows
|
||||||
Comment=Start Windows VM via Docker and connect with RDP
|
Comment=Start Windows VM via Docker and connect with RDP
|
||||||
Exec=uwsm app -- omarchy-windows-vm launch
|
Exec=uwsm app -- omarchy-windows-vm launch
|
||||||
Icon=$HOME/.local/share/applications/icons/windows.png
|
Icon=windows
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=System;Virtualization;
|
Categories=System;Virtualization;
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Curl-able Omarchy bootstrap. Configures the omarchy pacman repo on a fresh
|
|
||||||
# Arch system, installs the omarchy-installer package (which pulls omarchy,
|
|
||||||
# omarchy-settings, and omarchy-limine via depends), then hands off to
|
|
||||||
# `omarchy install`.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# curl -sSL https://omarchy.org/boot.sh | bash
|
|
||||||
# curl -sSL https://omarchy.org/boot.sh | OMARCHY_REF=dev bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
ansi_art=' ▄▄▄
|
|
||||||
▄█████▄ ▄███████████▄ ▄███████ ▄███████ ▄███████ ▄█ █▄ ▄█ █▄
|
|
||||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
|
||||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███
|
|
||||||
███ ███ ███ ███ ███ ▄███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███▄▄▄███
|
|
||||||
███ ███ ███ ███ ███ ▀███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ▀▀▀▀▀▀███
|
|
||||||
███ ███ ███ ███ ███ ███ ███ ██████████ ███ █▄ ███ ███ ▄██ ███
|
|
||||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
|
||||||
▀█████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ███████▀ ███ █▀ ▀█████▀
|
|
||||||
███ █▀ '
|
|
||||||
clear
|
|
||||||
echo -e "\n$ansi_art\n"
|
|
||||||
|
|
||||||
# Pick the omarchy package channel. stable is the default; dev/rc are for
|
|
||||||
# pre-release testing.
|
|
||||||
case "${OMARCHY_REF:-master}" in
|
|
||||||
dev) channel=edge ;;
|
|
||||||
rc) channel=rc ;;
|
|
||||||
*) channel=stable ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo "Configuring omarchy [${channel}] pacman repo..."
|
|
||||||
sudo tee /etc/pacman.d/omarchy.conf >/dev/null <<EOF
|
|
||||||
[omarchy]
|
|
||||||
SigLevel = Optional TrustAll
|
|
||||||
Server = https://pkgs.omarchy.org/${channel}/\$arch
|
|
||||||
EOF
|
|
||||||
if ! grep -q '^Include = /etc/pacman.d/omarchy.conf' /etc/pacman.conf; then
|
|
||||||
echo -e "\nInclude = /etc/pacman.d/omarchy.conf" | sudo tee -a /etc/pacman.conf >/dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Refreshing pacman databases..."
|
|
||||||
sudo pacman -Sy --noconfirm
|
|
||||||
|
|
||||||
echo "Installing omarchy-installer..."
|
|
||||||
# Only install the runner here — install.sh pulls the full omarchy runtime
|
|
||||||
# itself once it knows the mode and has logged in.
|
|
||||||
sudo pacman -S --noconfirm --needed omarchy-keyring omarchy-installer
|
|
||||||
|
|
||||||
echo -e "\nInstallation starting..."
|
|
||||||
exec omarchy-install
|
|
||||||
@@ -68,12 +68,6 @@
|
|||||||
"keyColor": "blue",
|
"keyColor": "blue",
|
||||||
"text": "version=$(omarchy-version); echo \"Omarchy $version\""
|
"text": "version=$(omarchy-version); echo \"Omarchy $version\""
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "command",
|
|
||||||
"key": "│ ├",
|
|
||||||
"keyColor": "blue",
|
|
||||||
"text": "branch=$(omarchy-version-branch); echo \"$branch\""
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "command",
|
"type": "command",
|
||||||
"key": "│ ├",
|
"key": "│ ├",
|
||||||
|
|||||||
@@ -12,10 +12,7 @@ application/pdf=org.gnome.Evince.desktop
|
|||||||
|
|
||||||
x-scheme-handler/http=chromium.desktop
|
x-scheme-handler/http=chromium.desktop
|
||||||
x-scheme-handler/https=chromium.desktop
|
x-scheme-handler/https=chromium.desktop
|
||||||
|
x-scheme-handler/mailto=HEY.desktop
|
||||||
# Note: x-scheme-handler/mailto -> HEY.desktop is set at install time by
|
|
||||||
# install/config/mimetypes.sh because HEY.desktop is generated by
|
|
||||||
# install/packaging/webapps.sh, not shipped as a /etc/skel file.
|
|
||||||
|
|
||||||
video/mp4=mpv.desktop
|
video/mp4=mpv.desktop
|
||||||
video/x-msvideo=mpv.desktop
|
video/x-msvideo=mpv.desktop
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Requires=dbus.socket
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStart=%h/.local/share/omarchy/bin/omarchy-system-sleep-monitor
|
ExecStart=/usr/bin/omarchy-system-sleep-monitor
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=2
|
RestartSec=2
|
||||||
|
|
||||||
|
|||||||
+3
-4
@@ -1,10 +1,9 @@
|
|||||||
# Changes require a restart to take effect.
|
# Changes require a restart to take effect.
|
||||||
|
|
||||||
# Source /etc/omarchy.conf so omarchy-dev-link (which writes
|
# Source /etc/omarchy.conf so omarchy-dev-link (which writes
|
||||||
# OMARCHY_PATH=<checkout> there) wins over the default. install.sh's
|
# OMARCHY_PATH=<checkout> there) wins over the packaged default. UWSM doesn't
|
||||||
# script-mode export still wins because the file uses the same :- guard.
|
# source /etc/profile.d/, so this duplicates that logic for the Hyprland
|
||||||
# UWSM doesn't source /etc/profile.d/, so this duplicates that logic for the
|
# session.
|
||||||
# Hyprland session.
|
|
||||||
[ -f /etc/omarchy.conf ] && . /etc/omarchy.conf
|
[ -f /etc/omarchy.conf ] && . /etc/omarchy.conf
|
||||||
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
|
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
|
||||||
export PATH="$OMARCHY_PATH/bin:$PATH:$HOME/.local/bin"
|
export PATH="$OMARCHY_PATH/bin:$PATH:$HOME/.local/bin"
|
||||||
|
|||||||
+2
-2
@@ -7,8 +7,8 @@ export MANROFFOPT="-c"
|
|||||||
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
|
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
|
||||||
|
|
||||||
# Duplicated from .config/uwsm/env so SSH/non-login shells also see the
|
# Duplicated from .config/uwsm/env so SSH/non-login shells also see the
|
||||||
# override. /etc/omarchy.conf wins (omarchy-dev-link writes it);
|
# override. /etc/omarchy.conf wins (omarchy-dev-link writes it); otherwise
|
||||||
# install.sh's script-mode export wins over that via the :- guard.
|
# the packaged runtime under /usr/share/omarchy is used.
|
||||||
[ -f /etc/omarchy.conf ] && . /etc/omarchy.conf
|
[ -f /etc/omarchy.conf ] && . /etc/omarchy.conf
|
||||||
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
|
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
|
||||||
export PATH="$OMARCHY_PATH/bin:$PATH:$HOME/.local/bin"
|
export PATH="$OMARCHY_PATH/bin:$PATH:$HOME/.local/bin"
|
||||||
@@ -1,20 +1,3 @@
|
|||||||
TARGET_OS_NAME="Omarchy"
|
|
||||||
|
|
||||||
ESP_PATH="/boot"
|
ESP_PATH="/boot"
|
||||||
|
|
||||||
KERNEL_CMDLINE[default]+="@@CMDLINE@@"
|
KERNEL_CMDLINE[default]+="@@CMDLINE@@"
|
||||||
KERNEL_CMDLINE[default]+=" quiet splash loglevel=0 systemd.show_status=false rd.udev.log_level=0 vt.global_cursor_default=0"
|
|
||||||
|
|
||||||
ENABLE_UKI=yes
|
|
||||||
CUSTOM_UKI_NAME="omarchy"
|
|
||||||
|
|
||||||
ENABLE_LIMINE_FALLBACK=yes
|
|
||||||
|
|
||||||
# Find and add other bootloaders
|
|
||||||
FIND_BOOTLOADERS=yes
|
|
||||||
|
|
||||||
BOOT_ORDER="*, *fallback, Snapshots"
|
|
||||||
|
|
||||||
MAX_SNAPSHOT_ENTRIES=5
|
|
||||||
|
|
||||||
SNAPSHOT_FORMAT_CHOICE=5
|
|
||||||
@@ -8,7 +8,7 @@ description: >
|
|||||||
blur, opacity, omarchy-shell, bar, terminal config, themes, background,
|
blur, opacity, omarchy-shell, bar, terminal config, themes, background,
|
||||||
night light, idle, lock screen, screenshots, reminders, layer rules, workspace
|
night light, idle, lock screen, screenshots, reminders, layer rules, workspace
|
||||||
settings, display config, and user-facing omarchy commands. Excludes Omarchy
|
settings, display config, and user-facing omarchy commands. Excludes Omarchy
|
||||||
source development in ~/.local/share/omarchy/ and `omarchy dev` workflows.
|
source development through `omarchy dev link` workflows.
|
||||||
---
|
---
|
||||||
|
|
||||||
# Omarchy Skill
|
# Omarchy Skill
|
||||||
@@ -34,11 +34,11 @@ It is not for contributing to Omarchy source code.
|
|||||||
|
|
||||||
**If you're about to edit a config file in ~/.config/ on this system, STOP and use this skill first.**
|
**If you're about to edit a config file in ~/.config/ on this system, STOP and use this skill first.**
|
||||||
|
|
||||||
**Do NOT use this skill for Omarchy development tasks** (editing files in `~/.local/share/omarchy/`, creating migrations, or running `omarchy dev ...` workflows).
|
**Do NOT use this skill for Omarchy development tasks** (editing the Omarchy source tree, creating migrations, or running `omarchy dev ...` workflows).
|
||||||
|
|
||||||
## Critical Safety Rules
|
## Critical Safety Rules
|
||||||
|
|
||||||
**For end-user customization tasks, NEVER modify anything in `~/.local/share/omarchy/`** - but READING is safe and encouraged.
|
**For end-user customization tasks, NEVER modify anything in `/usr/share/omarchy/`** - but READING is safe and encouraged.
|
||||||
|
|
||||||
This directory contains Omarchy's source files managed by git. Any changes will be:
|
This directory contains Omarchy's source files managed by git. Any changes will be:
|
||||||
- Lost on next `omarchy update`
|
- Lost on next `omarchy update`
|
||||||
@@ -46,7 +46,7 @@ This directory contains Omarchy's source files managed by git. Any changes will
|
|||||||
- Break the system's update mechanism
|
- Break the system's update mechanism
|
||||||
|
|
||||||
```
|
```
|
||||||
~/.local/share/omarchy/ # READ-ONLY - NEVER EDIT (reading is OK)
|
/usr/share/omarchy/ # READ-ONLY - NEVER EDIT (reading is OK)
|
||||||
├── bin/ # Source scripts (symlinked to PATH)
|
├── bin/ # Source scripts (symlinked to PATH)
|
||||||
├── config/ # Default config templates
|
├── config/ # Default config templates
|
||||||
├── themes/ # Stock themes
|
├── themes/ # Stock themes
|
||||||
@@ -56,11 +56,11 @@ This directory contains Omarchy's source files managed by git. Any changes will
|
|||||||
└── install/ # Installation scripts
|
└── install/ # Installation scripts
|
||||||
```
|
```
|
||||||
|
|
||||||
**Reading `~/.local/share/omarchy/` is SAFE and useful** - do it freely to:
|
**Reading `/usr/share/omarchy/` is SAFE and useful** - do it freely to:
|
||||||
- Understand how omarchy commands work: `omarchy theme set --help` or `cat $(which omarchy-theme-set)`
|
- Understand how omarchy commands work: `omarchy theme set --help` or `cat $(which omarchy-theme-set)`
|
||||||
- See default configs before customizing: `cat ~/.local/share/omarchy/config/omarchy/shell.json`
|
- See default configs before customizing: `cat /usr/share/omarchy/config/omarchy/shell.json`
|
||||||
- Check stock theme files to copy for customization
|
- Check stock theme files to copy for customization
|
||||||
- Reference default hyprland settings: `cat ~/.local/share/omarchy/default/hypr/*`
|
- Reference default hyprland settings: `cat /usr/share/omarchy/default/hypr/*`
|
||||||
|
|
||||||
**Always use these safe locations instead:**
|
**Always use these safe locations instead:**
|
||||||
- `~/.config/` - User configuration (safe to edit)
|
- `~/.config/` - User configuration (safe to edit)
|
||||||
@@ -154,7 +154,7 @@ inside a single long-running Quickshell process (`omarchy-shell`).
|
|||||||
|
|
||||||
```
|
```
|
||||||
~/.config/omarchy/shell.json # User overrides: bar.position, bar.layout, plugins[]
|
~/.config/omarchy/shell.json # User overrides: bar.position, bar.layout, plugins[]
|
||||||
~/.local/share/omarchy/config/omarchy/shell.json # Canonical defaults
|
/usr/share/omarchy/config/omarchy/shell.json # Canonical defaults
|
||||||
```
|
```
|
||||||
|
|
||||||
The shell hot-reloads `shell.json` on save — no restart needed for layout
|
The shell hot-reloads `shell.json` on save — no restart needed for layout
|
||||||
@@ -208,7 +208,7 @@ cp ~/.config/hypr/bindings.conf ~/.config/hypr/bindings.conf.bak.$(date +%s)
|
|||||||
### Pattern 2: Make a new theme
|
### Pattern 2: Make a new theme
|
||||||
|
|
||||||
1. Create a directory under ~/.config/omarchy/themes.
|
1. Create a directory under ~/.config/omarchy/themes.
|
||||||
2. See how an existing theme is done via ~/.local/share/omarchy/themes/catppuccin.
|
2. See how an existing theme is done via /usr/share/omarchy/themes/catppuccin.
|
||||||
3. Download a matching background (or several) from the internet and put them in ~/.config/omarchy/themes/[name-of-new-theme]
|
3. Download a matching background (or several) from the internet and put them in ~/.config/omarchy/themes/[name-of-new-theme]
|
||||||
4. When done with the theme, run `omarchy theme set "Name of new theme"`
|
4. When done with the theme, run `omarchy theme set "Name of new theme"`
|
||||||
|
|
||||||
@@ -243,7 +243,7 @@ omarchy refresh hyprland
|
|||||||
|
|
||||||
# The refresh command:
|
# The refresh command:
|
||||||
# 1. Backs up current config with timestamp
|
# 1. Backs up current config with timestamp
|
||||||
# 2. Copies default from ~/.local/share/omarchy/config/
|
# 2. Copies default from /usr/share/omarchy/config/
|
||||||
# 3. Restarts the component
|
# 3. Restarts the component
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -354,7 +354,7 @@ omarchy reinstall
|
|||||||
When user requests system changes:
|
When user requests system changes:
|
||||||
|
|
||||||
1. **Is it a stock omarchy command?** Use it directly
|
1. **Is it a stock omarchy command?** Use it directly
|
||||||
2. **Is it a config edit?** Edit in `~/.config/`, never `~/.local/share/omarchy/`
|
2. **Is it a config edit?** Edit in `~/.config/`, never `/usr/share/omarchy/`
|
||||||
3. **Is it a theme customization?** Create a NEW custom theme directory
|
3. **Is it a theme customization?** Create a NEW custom theme directory
|
||||||
4. **Is it automation?** Use hooks in `~/.config/omarchy/hooks/`
|
4. **Is it automation?** Use hooks in `~/.config/omarchy/hooks/`
|
||||||
5. **Is it a package install?** Use `omarchy pkg add <pkgs...>` (or `omarchy pkg aur add <pkgs...>` for AUR-only packages)
|
5. **Is it a package install?** Use `omarchy pkg add <pkgs...>` (or `omarchy pkg aur add <pkgs...>` for AUR-only packages)
|
||||||
@@ -374,7 +374,7 @@ omarchy reminder clear
|
|||||||
## Out of Scope
|
## Out of Scope
|
||||||
|
|
||||||
This skill intentionally does not cover Omarchy source development. Do not use this skill for:
|
This skill intentionally does not cover Omarchy source development. Do not use this skill for:
|
||||||
- Editing files in `~/.local/share/omarchy/` (`bin/`, `config/`, `default/`, `shell/`, `themes/`, `migrations/`, etc.)
|
- Editing files in `/usr/share/omarchy/` (`bin/`, `config/`, `default/`, `shell/`, `themes/`, `migrations/`, etc.)
|
||||||
- Creating or editing migrations
|
- Creating or editing migrations
|
||||||
- Running `omarchy dev ...` commands
|
- Running `omarchy dev ...` commands
|
||||||
|
|
||||||
|
|||||||
-64
@@ -1,64 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# The in-target portion of an Omarchy install. This is intentionally boring:
|
|
||||||
# the caller has already prepared the system; all this script does is run the
|
|
||||||
# target-side setup scripts. The ISO parent owns UI/error handling, while the
|
|
||||||
# online path re-establishes its tty-backed traps below.
|
|
||||||
|
|
||||||
export OMARCHY_INSTALL_LOG_FILE="${OMARCHY_INSTALL_LOG_FILE:-/var/log/omarchy-install.log}"
|
|
||||||
|
|
||||||
if [[ ${OMARCHY_INSTALL_DEBUG:-} == "1" ]]; then
|
|
||||||
if [[ -n ${OMARCHY_CHROOT_FINALIZER:-} || ${OMARCHY_INSTALL_MODE:-} == "offline" ]]; then
|
|
||||||
if { mkdir -p "$(dirname "$OMARCHY_INSTALL_LOG_FILE")" && touch "$OMARCHY_INSTALL_LOG_FILE"; } 2>/dev/null; then
|
|
||||||
exec >>"$OMARCHY_INSTALL_LOG_FILE" 2>&1
|
|
||||||
else
|
|
||||||
echo "[finalize-debug] WARNING: cannot write $OMARCHY_INSTALL_LOG_FILE; tracing to inherited stderr" >&2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
export PS4='+ ${BASH_SOURCE[0]##*/}:${LINENO}:${FUNCNAME[0]:-main}: '
|
|
||||||
echo "[finalize-debug] tracing enabled for $$ at $(date -Is)"
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
set -eEo pipefail
|
|
||||||
|
|
||||||
_OMARCHY_INSTALLER_DIR=$(dirname "$(realpath "${BASH_SOURCE[0]}")")
|
|
||||||
export OMARCHY_PATH="${OMARCHY_PATH:-$_OMARCHY_INSTALLER_DIR}"
|
|
||||||
export OMARCHY_INSTALL="${OMARCHY_INSTALL:-$_OMARCHY_INSTALLER_DIR/install}"
|
|
||||||
export PATH="$_OMARCHY_INSTALLER_DIR/bin:$OMARCHY_PATH/bin:$PATH"
|
|
||||||
|
|
||||||
# Do not source helpers/all.sh here. That bundle unconditionally pulls in
|
|
||||||
# presentation and interactive error handling, both of which assume a
|
|
||||||
# controlling tty. The ISO runs this file through arch-chroot with
|
|
||||||
# stdout/stderr captured by the parent. Keep the offline bootstrap to the
|
|
||||||
# non-interactive primitives the scripts below use.
|
|
||||||
source "$OMARCHY_INSTALL/helpers/mode.sh"
|
|
||||||
detect_install_mode
|
|
||||||
export_legacy_mode_flags
|
|
||||||
source "$OMARCHY_INSTALL/helpers/chroot.sh"
|
|
||||||
source "$OMARCHY_INSTALL/helpers/logging.sh"
|
|
||||||
|
|
||||||
# Online installs still run finalize.sh directly after install.sh execs it, so
|
|
||||||
# re-establish the interactive UI/error traps only for that tty-backed path.
|
|
||||||
if install_mode_is online; then
|
|
||||||
source "$OMARCHY_INSTALL/helpers/presentation.sh"
|
|
||||||
source "$OMARCHY_INSTALL/helpers/errors.sh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Mark every shipped migration as "done" so future updates only run the new
|
|
||||||
# ones. Idempotent; safe to re-run.
|
|
||||||
mkdir -p ~/.local/state/omarchy/migrations
|
|
||||||
for _f in "$OMARCHY_PATH/migrations"/*.sh; do
|
|
||||||
[[ -f $_f ]] && touch ~/.local/state/omarchy/migrations/"$(basename "$_f")"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Offline installs need the privileged system first-run block on the install
|
|
||||||
# user's first login. The sudoers shim is written by system-finalize.sh; this
|
|
||||||
# per-user marker ensures only the install user consumes it.
|
|
||||||
if install_mode_is offline; then
|
|
||||||
mkdir -p ~/.local/state/omarchy
|
|
||||||
touch ~/.local/state/omarchy/first-run.mode
|
|
||||||
fi
|
|
||||||
|
|
||||||
omarchy-setup-user --force
|
|
||||||
source "$OMARCHY_INSTALL/post-install/finished.sh"
|
|
||||||
-54
@@ -1,54 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# Online install entry point. Run by the user on an existing Arch system to
|
|
||||||
# install / refresh Omarchy. Guards the host, ensures the omarchy runtime is
|
|
||||||
# up to date, then hands off to finalize.sh for the actual configure work.
|
|
||||||
#
|
|
||||||
# Offline installs (from the ISO) skip this script entirely: the Python
|
|
||||||
# orchestrator owns disk, base, bootloader, and package install before calling
|
|
||||||
# finalize.sh directly in the chroot.
|
|
||||||
|
|
||||||
set -eEo pipefail
|
|
||||||
|
|
||||||
_OMARCHY_INSTALLER_DIR=$(dirname "$(realpath "${BASH_SOURCE[0]}")")
|
|
||||||
export OMARCHY_PATH="${OMARCHY_PATH:-$_OMARCHY_INSTALLER_DIR}"
|
|
||||||
export OMARCHY_INSTALL="${OMARCHY_INSTALL:-$OMARCHY_PATH/install}"
|
|
||||||
export OMARCHY_INSTALL_LOG_FILE="${OMARCHY_INSTALL_LOG_FILE:-/var/log/omarchy-install.log}"
|
|
||||||
export PATH="$OMARCHY_PATH/bin:$PATH"
|
|
||||||
|
|
||||||
source "$OMARCHY_INSTALL/helpers/mode.sh"
|
|
||||||
detect_install_mode
|
|
||||||
export_legacy_mode_flags
|
|
||||||
|
|
||||||
source "$OMARCHY_INSTALL/helpers/all.sh"
|
|
||||||
|
|
||||||
# Online-only setup: sanity-check the host, show the logo, start capturing
|
|
||||||
# the install log to /var/log. The orchestrator handles all of this itself
|
|
||||||
# in offline mode, so finalize.sh's caller environment looks the same in
|
|
||||||
# both modes by the time finalize.sh runs.
|
|
||||||
source "$OMARCHY_INSTALL/preflight/guard.sh"
|
|
||||||
source "$OMARCHY_INSTALL/preflight/begin.sh"
|
|
||||||
run_logged "$OMARCHY_INSTALL/preflight/show-env.sh"
|
|
||||||
|
|
||||||
# Install/update the omarchy runtime + the default install set.
|
|
||||||
_omarchy_runtime_pkg="${OMARCHY_RUNTIME_PACKAGE:-omarchy}"
|
|
||||||
mapfile -t _omarchy_base_pkgs < <(grep -v '^#\|^$' "$OMARCHY_PATH/install/omarchy-base.packages")
|
|
||||||
sudo pacman -Syu --noconfirm --needed "$_omarchy_runtime_pkg" "${_omarchy_base_pkgs[@]}"
|
|
||||||
|
|
||||||
# Root/system setup first; user-home setup remains in finalize.sh below.
|
|
||||||
sudo env \
|
|
||||||
OMARCHY_INSTALL_MODE="${OMARCHY_INSTALL_MODE:-}" \
|
|
||||||
OMARCHY_ONLINE_INSTALL="${OMARCHY_ONLINE_INSTALL:-}" \
|
|
||||||
OMARCHY_CHROOT_INSTALL="${OMARCHY_CHROOT_INSTALL:-}" \
|
|
||||||
OMARCHY_PATH="$OMARCHY_PATH" \
|
|
||||||
OMARCHY_INSTALL="$OMARCHY_INSTALL" \
|
|
||||||
OMARCHY_INSTALL_LOG_FILE="$OMARCHY_INSTALL_LOG_FILE" \
|
|
||||||
OMARCHY_START_TIME="${OMARCHY_START_TIME:-}" \
|
|
||||||
OMARCHY_START_EPOCH="${OMARCHY_START_EPOCH:-}" \
|
|
||||||
OMARCHY_USER_NAME="${OMARCHY_USER_NAME:-}" \
|
|
||||||
OMARCHY_USER_EMAIL="${OMARCHY_USER_EMAIL:-}" \
|
|
||||||
OMARCHY_MIRROR="${OMARCHY_MIRROR:-}" \
|
|
||||||
OMARCHY_INSTALL_USER="$USER" \
|
|
||||||
bash "$OMARCHY_PATH/system-finalize.sh"
|
|
||||||
|
|
||||||
exec bash "$OMARCHY_PATH/finalize.sh"
|
|
||||||
+7
-44
@@ -1,44 +1,7 @@
|
|||||||
run_logged $OMARCHY_INSTALL/config/theme-system.sh
|
run_logged "$OMARCHY_INSTALL/config/theme-system.sh"
|
||||||
run_logged $OMARCHY_INSTALL/config/increase-lockout-limit.sh
|
run_logged "$OMARCHY_INSTALL/config/increase-lockout-limit.sh"
|
||||||
run_logged $OMARCHY_INSTALL/config/lockscreen-pam.sh
|
run_logged "$OMARCHY_INSTALL/config/lockscreen-pam.sh"
|
||||||
run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh
|
run_logged "$OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh"
|
||||||
run_logged $OMARCHY_INSTALL/config/docker.sh
|
run_logged "$OMARCHY_INSTALL/config/docker.sh"
|
||||||
run_logged $OMARCHY_INSTALL/config/input-group.sh
|
run_logged "$OMARCHY_INSTALL/config/enable-services.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/config/firewall.sh"
|
||||||
# Service enables centralized; run after all drop-in files are in place.
|
|
||||||
run_logged $OMARCHY_INSTALL/config/enable-services.sh
|
|
||||||
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/network.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/set-wireless-regdom.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-synaptic-touchpad.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/bluetooth.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/nvidia.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/vulkan.sh
|
|
||||||
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/video-acceleration.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/lpmd.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/thermald.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/ipu7-camera.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/ptl-kernel.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/fred.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/fix-wifi7-eht.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/sof-firmware.sh
|
|
||||||
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-display-backlight.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-b9406-display.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-b9406-touchpad.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-z13-touchpad.sh
|
|
||||||
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/framework/qmk-hid.sh
|
|
||||||
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/apple/fix-spi-keyboard.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/apple/fix-suspend-nvme.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/apple/fix-t2.sh
|
|
||||||
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/lenovo/fix-yoga-pro7-bass-speakers.sh
|
|
||||||
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-bcm43xx.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-surface-keyboard.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-yt6801-ethernet-adapter.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-tuxedo-backlight.sh
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
# Enable services only. Installs are followed by reboot, so don't start/reload
|
# Enable services only. Installs are followed by reboot, so don't start/reload
|
||||||
# daemons mid-install. UFW and hardware-gated services stay in their own scripts.
|
# daemons mid-install. UFW and hardware-gated services stay in their own scripts.
|
||||||
systemctl enable bluetooth.service
|
|
||||||
systemctl enable cups.service
|
systemctl enable cups.service
|
||||||
systemctl enable cups-browsed.service
|
systemctl enable cups-browsed.service
|
||||||
systemctl enable avahi-daemon.service
|
systemctl enable avahi-daemon.service
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Allow nothing in, everything out.
|
||||||
|
ufw default deny incoming
|
||||||
|
ufw default allow outgoing
|
||||||
|
|
||||||
|
# Allow ports for LocalSend.
|
||||||
|
ufw allow 53317/udp
|
||||||
|
ufw allow 53317/tcp
|
||||||
|
|
||||||
|
# Allow Docker containers to use DNS on host.
|
||||||
|
ufw allow in proto udp from 172.16.0.0/12 to 172.17.0.1 port 53 comment 'allow-docker-dns'
|
||||||
|
ufw allow in proto udp from 192.168.0.0/16 to 172.17.0.1 port 53 comment 'allow-docker-dns'
|
||||||
|
|
||||||
|
# Turn on Docker protections.
|
||||||
|
ufw-docker install
|
||||||
|
|
||||||
|
# Installs are followed by reboot, so configure UFW to start on the installed
|
||||||
|
# system instead of mutating the live install session's firewall.
|
||||||
|
sed -i 's/^ENABLED=.*/ENABLED=yes/' /etc/ufw/ufw.conf
|
||||||
|
systemctl enable ufw
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
mkdir -p ~/.config/systemd/user/
|
|
||||||
cp "$OMARCHY_PATH/config/systemd/user/omarchy-sleep-lock.service" ~/.config/systemd/user/
|
|
||||||
systemctl --user enable omarchy-sleep-lock.service
|
|
||||||
@@ -4,6 +4,7 @@ ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-previous-symbolic.svg \
|
|||||||
/usr/share/icons/Yaru/scalable/actions/go-previous-symbolic.svg
|
/usr/share/icons/Yaru/scalable/actions/go-previous-symbolic.svg
|
||||||
ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-next-symbolic.svg \
|
ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-next-symbolic.svg \
|
||||||
/usr/share/icons/Yaru/scalable/actions/go-next-symbolic.svg
|
/usr/share/icons/Yaru/scalable/actions/go-next-symbolic.svg
|
||||||
|
gtk-update-icon-cache /usr/share/icons/Yaru &>/dev/null || true
|
||||||
|
|
||||||
# Chromium policy directory for theme
|
# Chromium policy directory for theme
|
||||||
mkdir -p /etc/chromium/policies/managed
|
mkdir -p /etc/chromium/policies/managed
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
# Setup user theme folder
|
|
||||||
mkdir -p ~/.config/omarchy/themes
|
|
||||||
|
|
||||||
# Set initial theme. Offline ISO installs only need the user's theme files and
|
|
||||||
# symlinks seeded; there is no running desktop/session bus in the chroot, so
|
|
||||||
# skip shell IPC, dconf, app retint hooks, and background transition work.
|
|
||||||
if install_mode_is offline; then
|
|
||||||
OMARCHY_THEME_OFFLINE=1 OMARCHY_THEME_SKIP_BACKGROUND=1 omarchy-theme-set "Tokyo Night"
|
|
||||||
else
|
|
||||||
omarchy-theme-set "Tokyo Night"
|
|
||||||
fi
|
|
||||||
rm -rf ~/.config/chromium/SingletonLock # otherwise archiso will own the chromium singleton
|
|
||||||
omarchy-theme-set-pi --activate
|
|
||||||
|
|
||||||
# Set specific app links for current theme
|
|
||||||
mkdir -p ~/.config/btop/themes
|
|
||||||
ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current.theme
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
run_logged $OMARCHY_INSTALL/config/theme-user.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/git.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/xcompose.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/mise-work.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/sleep-lock.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/bluetooth-user.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-audio-mixer.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-mic.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/framework/fix-f13-amd-audio-input.sh
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
sudo -n rm -f /etc/sudoers.d/99-omarchy-installer-reboot 2>/dev/null || true
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# https://wiki.archlinux.org/title/Systemd-resolved
|
|
||||||
echo "Symlink resolved stub-resolv to /etc/resolv.conf"
|
|
||||||
|
|
||||||
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
# Allow nothing in, everything out
|
|
||||||
sudo ufw default deny incoming
|
|
||||||
sudo ufw default allow outgoing
|
|
||||||
|
|
||||||
# Allow ports for LocalSend
|
|
||||||
sudo ufw allow 53317/udp
|
|
||||||
sudo ufw allow 53317/tcp
|
|
||||||
|
|
||||||
# Allow Docker containers to use DNS on host
|
|
||||||
sudo ufw allow in proto udp from 172.16.0.0/12 to 172.17.0.1 port 53 comment 'allow-docker-dns'
|
|
||||||
sudo ufw allow in proto udp from 192.168.0.0/16 to 172.17.0.1 port 53 comment 'allow-docker-dns'
|
|
||||||
|
|
||||||
# Turn on the firewall
|
|
||||||
sudo ufw --force enable
|
|
||||||
|
|
||||||
# Enable UFW systemd service to start on boot
|
|
||||||
sudo systemctl enable ufw
|
|
||||||
|
|
||||||
# Turn on Docker protections
|
|
||||||
sudo ufw-docker install
|
|
||||||
sudo ufw reload
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
sudo gtk-update-icon-cache /usr/share/icons/Yaru
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
run_logged "$OMARCHY_INSTALL/hardware/asus-rog.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/framework16.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/dell-xps-touchpad-haptics.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/surface.sh"
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/network.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/input-group.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/set-wireless-regdom.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/fix-fkeys.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/fix-synaptic-touchpad.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/bluetooth.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/nvidia.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/vulkan.sh"
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/intel/video-acceleration.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/intel/lpmd.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/intel/thermald.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/intel/ipu7-camera.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/intel/ptl-kernel.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/intel/fred.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/intel/fix-wifi7-eht.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/intel/sof-firmware.sh"
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/asus/fix-asus-ptl-display-backlight.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/asus/fix-asus-ptl-b9406-display.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/asus/fix-asus-ptl-b9406-touchpad.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/asus/fix-z13-touchpad.sh"
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/framework/qmk-hid.sh"
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/apple/fix-spi-keyboard.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/apple/fix-suspend-nvme.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/apple/fix-t2.sh"
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/lenovo/fix-yoga-pro7-bass-speakers.sh"
|
||||||
|
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/fix-bcm43xx.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/fix-surface-keyboard.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/fix-yt6801-ethernet-adapter.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/fix-tuxedo-backlight.sh"
|
||||||
|
run_logged "$OMARCHY_INSTALL/hardware/pacman.sh"
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,3 +1,5 @@
|
|||||||
|
systemctl enable bluetooth.service
|
||||||
|
|
||||||
# Persist last power state across reboots (default AutoEnable=true overrides it)
|
# Persist last power state across reboots (default AutoEnable=true overrides it)
|
||||||
if [[ -f /etc/bluetooth/main.conf ]]; then
|
if [[ -f /etc/bluetooth/main.conf ]]; then
|
||||||
sed -i 's/^#\?AutoEnable=.*/AutoEnable=false/' /etc/bluetooth/main.conf
|
sed -i 's/^#\?AutoEnable=.*/AutoEnable=false/' /etc/bluetooth/main.conf
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,7 +1,6 @@
|
|||||||
# Enable Flexible Return and Event Delivery on Intel Panther Lake.
|
# Enable Flexible Return and Event Delivery on Intel Panther Lake.
|
||||||
|
|
||||||
DROP_IN="/etc/limine-entry-tool.d/intel-panther-lake-fred.conf"
|
DROP_IN="/etc/limine-entry-tool.d/intel-panther-lake-fred.conf"
|
||||||
DEFAULT_LIMINE="/etc/default/limine"
|
|
||||||
|
|
||||||
if omarchy-hw-intel-ptl; then
|
if omarchy-hw-intel-ptl; then
|
||||||
if [[ ! -f $DROP_IN ]] || ! grep -q 'fred=on' "$DROP_IN"; then
|
if [[ ! -f $DROP_IN ]] || ! grep -q 'fred=on' "$DROP_IN"; then
|
||||||
@@ -11,8 +10,4 @@ if omarchy-hw-intel-ptl; then
|
|||||||
KERNEL_CMDLINE[default]+=" fred=on"
|
KERNEL_CMDLINE[default]+=" fred=on"
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -f $DEFAULT_LIMINE ]] && ! grep -q 'fred=on' "$DEFAULT_LIMINE"; then
|
|
||||||
cat "$DROP_IN" | sudo tee -a "$DEFAULT_LIMINE" >/dev/null
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
File renamed without changes.
Loaded 100 of 440 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user