Skip to content

Repository files navigation

Omarchy Dotfiles

Minimal, public-oriented personal configuration for Omarchy 4.x.

Omarchy owns the desktop defaults. This repository only keeps deliberate personal additions:

  • Lazygit workflow customizations
  • Small Yazi overrides
  • Hyprland appearance overrides and theme-level Omarchy shell styling
  • The custom onepiece Omarchy theme
  • The animated zoro Plymouth theme
  • A reproducible global CLI toolset managed by mise
  • Voxtype dictation with local-model homophone correction and Chinese-to-English push-to-talk

Zoro Plymouth boot animation preview

It intentionally does not replace Omarchy's Neovim, tmux, terminal, Git, shell, bar, lock-screen, or generated theme state. The Hyprland files contain only small user-owned input and keybinding overrides.

Compatibility

Tested against:

  • Omarchy 4.0.0.r1472.g283276b-1 (edge)
  • Hyprland 0.56.1
  • Lazygit 0.63.1
  • Yazi 26.5.6
  • Plymouth 26.134.222
  • Limine-based initramfs rebuilding

The repository follows Omarchy's public CLI and user-override boundaries. It never writes to /usr/share/omarchy.

Install

Inspect the repository first:

./check all
./install --dry-run all

On a fresh Omarchy machine, install the recovered system packages, the global mise toolset, and all unprivileged configuration in one pass:

./install --dry-run bootstrap
./install bootstrap

The bootstrap includes explicit packages recovered from the current machine's shell and pacman history: cloc, cosign, minisign, and silicon. Package-manager dependencies are not listed separately. It deliberately excludes Plymouth because changing the boot splash rebuilds the initramfs.

Install the unprivileged modules:

./install all

all installs Lazygit, Yazi, Hyprland overrides, appearance overrides, the One Piece theme, and voxtype dictation (skipped when voxtype is not installed). It deliberately excludes Plymouth because changing the boot splash rebuilds the initramfs.

Install packages required by the optional modules:

./install packages

Install only the global development tools:

./install tools

This links ~/.config/mise to the repository and runs mise install. Native tools such as Bun, Node.js, Go, Java, Codex, Claude, GitHub CLI, OpenCode, and the Android SDK use their mise backends. JavaScript CLIs previously installed globally with Bun or npm (fizzyx, agent-device, eas-cli, and Playwright) use mise's isolated npm: backend, so they no longer depend on a shared global package directory. The recovered package versions are pinned where known; existing rolling tool selections remain on latest.

Install Zoro Plymouth explicitly:

./install --dry-run plymouth
./install plymouth

The Plymouth installer asks sudo for authorization in the interactive terminal, preserves an existing custom Zoro directory, changes the selected theme, and rebuilds with limine-mkinitcpio when available.

One Piece theme

Install the theme as a real user-owned directory:

./install onepiece
omarchy theme set onepiece

The installer does not switch themes automatically.

Appearance

The looknfeel module replaces Omarchy's conservative Hyprland defaults with a more animated desktop, without touching any keybinding:

./install looknfeel

It installs ~/.config/hypr/looknfeel.lua, which Omarchy loads after both its own defaults and the active theme's Hyprland overrides. It turns on blur, shadows, rounded corners, and inactive-window dimming; re-enables the workspace slide animation that Omarchy disables; and replaces the default easing with Material 3 expressive curves, where spatial properties overshoot slightly before settling and opacity never does.

Border width is set here because it is theme-agnostic, but border colors are deliberately left out so omarchy theme set keeps control of them; the One Piece theme sets its own below. ./check looknfeel enforces that split, and also verifies that every easing curve referenced by an animation is actually defined — Hyprland silently substitutes a default curve for a misspelled name.

The module also blurs the omarchy-bar layer, which is what lets the One Piece theme make the bar transparent without the text becoming unreadable.

An anti-flashbang screen shader was tried here and removed. Estimating average screen luminance inside a fragment shader makes the dim factor track screen content, so the whole screen visibly pulses whenever anything moves, and a stateless shader cannot smooth that over time. For night comfort use Omarchy's own omarchy toggle nightlight, which shifts color temperature through hyprsunset rather than modulating brightness.

Note that on Omarchy 4 the Hyprland config is Lua, and hyprctl keyword no longer works against it. Runtime changes have to go through hyprctl eval.

Theme-level shell styling

Omarchy's stock control chrome is border-first: a 1px outline over an almost transparent fill. That is most of what gives the shell its terminal look. The One Piece theme inverts it — no outlines, and a tonal fill that carries the shape instead — through three files:

  • shell.controls.toml — control state tokens, using palette role names so they keep following colors.toml
  • shell.bar.toml — a transparent bar
  • hyprland.lua — muted window borders, since the generated default uses the raw accent at full opacity

omarchy theme set merges any shell.<section>.toml over the matching section of the generated shell.toml, and never overwrites a file the theme already ships. Both are supported extension points, so none of this touches /usr/share/omarchy.

The merge replaces a whole section rather than individual keys, so each file repeats every token that section needs. [bar] resolves through a path that takes hex only, so its colors are duplicated from colors.toml; ./check onepiece compares the two and fails when they drift apart.

Input methods

Input-method configuration moved to the ryuhzk.ime Omarchy plugin, which owns the Fcitx5 preferences, the Rime schemas and dictionaries, and the Classic UI theme. This repository keeps only the Hyprland left Shift toggle in config/hypr/input.lua.

Voxtype dictation

The voxtype module links ~/.config/voxtype to config/voxtype and ~/.local/bin/voxtype-fix-zh to bin/voxtype-fix-zh, so every later change to the dictation setup shows up in git diff:

./install voxtype
  • F9 (Omarchy's binding) dictates Chinese with SenseVoice. Before the text is output, voxtype-fix-zh asks the local model to replace characters the recogniser heard wrongly, judged from the sentence's meaning. On any error, timeout, or answer that is more than a light correction, the transcript is output unchanged.
  • F10 (in config/hypr/bindings.lua) is push-to-talk that outputs English: the same correction, then the ryuhzk.translation plugin translates it.
  • Output is pasted with Shift+Insert rather than typed, and the clipboard is restored afterwards. Typed letters go through the active input method, which turns English words into pinyin candidates; a paste does not.

On a new machine, beyond ./install voxtype:

  1. Install voxtype with omarchy voxtype install, then download the SenseVoice model with omarchy voxtype model (or voxtype setup --download --model sensevoice-small).
  2. Install the ryuhzk.translation Omarchy plugin; F10 calls its backend.
  3. In LM Studio, load an instruction-following model (tested with google/gemma-4-12b-qat, context 8192) and put its endpoint, model name, and API key in ~/.config/omarchy-translation/config.env. That file holds the key and stays out of this repository; voxtype-fix-zh reads it too.

Private Git identity

Keep author identity and signing information out of the public repository:

bin/git-identity

The interactive setup writes ~/.config/git/identity with mode 0600 and adds that file to Git's global include list. Existing identity data is backed up under ~/.local/state/dotfiles/backups/.

When signing is enabled, the script reuses a secret key matching the Git email. If none exists, it creates a passphrase-protected Ed25519 signing key with a two-year expiration and records its full fingerprint automatically. GnuPG asks for the passphrase in the interactive terminal; neither the passphrase nor the secret key is stored by this repository.

For non-interactive setup:

bin/git-identity \
  --name "Your Name" \
  --email "your-private-or-noreply@example.com" \
  --sign

Use --signing-key "YOUR_OPENPGP_FINGERPRINT" to select an existing key explicitly, or --no-sign when commit signing is not wanted. Automatic key creation still requires an interactive terminal so GnuPG can request a passphrase. The script contains no real name, email address, or key fingerprint.

Back up the secret key separately after creating it. Never store a private-key export in this repository.

Print the configured public key in ASCII-armored form:

bin/git-identity --export-public-key

Copy it directly for GitHub:

bin/git-identity --export-public-key | wl-copy

This action exports only the public key associated with Git's configured fingerprint. The script deliberately provides no secret-key export action.

Individual modules

./install lazygit
./install yazi
./install onepiece
./install voxtype
./install plymouth

Conflicting user configuration is moved to:

~/.local/state/dotfiles/backups/<timestamp>/

Repository policy

  • Only allowlisted modules are installed.
  • Machine-local and private data never belongs in this repository.
  • Omarchy-generated state under ~/.local/state/omarchy is never tracked.
  • Omarchy themes are copied, not symlinked.
  • Documentation and explanatory comments are English-only. Non-English strings remain only where they are functional theme data.
  • System themes require an explicit module install.
  • Media assets are not covered by the repository's MIT license; see ASSETS.md.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages