Skip to content
lukelexPublic

About

My Personal Linux Environment Configurations

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Repository files navigation

Dotfiles

A considered Linux desktop, built around the way I work.

Arch Linux · Hyprland / i3 · Quickshell · Neovim

Desktop setup · Screenshots · Install · Repository guide


Empty i3 desktop with the Quickshell calendar and weather panel open

Desktop

Component Setup
Window managers Hyprland on Wayland · i3 on X11
Desktop shell Quickshell bar, panels, notifications, and OSDs
Launchers Fuzzel on Hyprland · rofi on i3
Compositor Hyprland effects · Picom for i3
Editor Neovim with lazy.nvim

The configs favor a quiet status surface, quick keyboard workflows, and panels that reveal detail only when needed. Shared helpers keep the Hyprland and i3 setups familiar across Wayland and X11.

Screenshots

Full desktop with the Quickshell Control Center open

Quickshell · Control Center

Quickshell calendar with weather forecast

Quickshell · Calendar and weather

Fuzzel themes

Three launcher palettes, including a light theme. These are design previews of the launcher configuration.

Slate Fuzzel theme preview

Slate · default

Graphite Fuzzel theme preview

Graphite · compact

Porcelain light Fuzzel theme preview

Porcelain · light

Install

The desktop configuration expects the repository at $HOME/dotfiles on Arch Linux.

git clone --recurse-submodules [email protected]:lukelex/dotfiles.git "$HOME/dotfiles"
cd "$HOME/dotfiles"
./linux/install/sync

For a headless server, use ./linux/install/all --server. For a specific machine, pass a committed host overlay, for example:

./linux/install/sync --host <name>

Repository guide

How installation works

sync reconciles packages, groups, config links, services, and remote bundles from the selected profile using the pinned dotpkg binary. It symlinks $XDG_CONFIG_HOME/dotpkg/package.yaml to the tracked linux/packages.yaml; dotpkg stores machine-local state beside that link.

Preview the reconciliation with:

./linux/install/sync --dry-run

The first run can still bootstrap yay and initialize dotpkg's local manifest and state. Existing local manifests are backed up before linking to the repository version. Pulling repository changes updates the manifest on each linked machine. Config conflicts are preserved unless --replace is passed. Use ./linux/install/all to include system setup, post-install steps, and verification, or ./linux/install/verify to check an existing setup.

For package and resource maintenance, see dotpkg --help. dotpkg clean --resources removes stale, unchanged managed bundles and other stale managed resources; dotpkg recover handles an interrupted package transaction.

OpenCode's global config is linked by dotpkg on desktop and server profiles. It loads repository skills from ~/dotfiles/.opencode/skills and declares a remote file bundle for skills/productivity/grill-me, skills/productivity/grilling, and LICENSE from mattpocock/skills. dotpkg copies those requested paths into ~/.local/share/dotpkg/opencode-skills without running them. Invoke the skill with @grill-me. Every full sync --resources checks the upstream default branch and updates the managed directory only if its commit or content changed; an optional 40-character commit in resources.remote_bundles freezes it. An unavailable upstream is an error, not a no-op. --packages-only skips remote bundles. On existing machines, run ./linux/install/sync once to link the manifest; subsequent repository pulls update its declarations directly. Keep the vendored copies until the pinned dotpkg release is updated and the managed installation is verified, then remove them to avoid duplicate skill IDs. The declaration is not active with the current pinned binary until that release update lands.

Webcam reactions

Desktop syncs install checksum-pinned OpenEffects 0.1.4 native packages (x86_64) before dotpkg links its settings and enables its user service on default.target. The GTK preview dependency is declared in the manifest. Reactions are enabled, the physical camera is autodetected, and capture/effects processing stops when no application consumes the virtual camera. OpenEffects is managed by pacman, not dotpkg's package-clean stage, until an upstream package origin is available.

To migrate an existing install, review your local manifest before running:

./linux/install/sync --refresh-manifest --replace

Refreshing backs up the local manifest; --replace can replace conflicting config paths across the desktop profile. Chrome is the shared default browser; its managed chrome-flags.conf enables PipeWire camera support. Fully quit and reopen Chrome after applying it, then select OpenEffects Virtual Camera in your calling app.

Microsoft Edge is not installed. The archqms host overlay additionally links its flags file for an independently installed Edge. On that machine use ./linux/install/sync --host archqms --refresh-manifest --replace and fully quit and reopen Edge after applying it.

About

My Personal Linux Environment Configurations

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages