Capture this laptop's Omarchy customizations
Everything on top of a stock Omarchy 4.0.4-1 install, gathered so a second machine can be brought to the same state: the ~/.config files that actually differ from the shipped defaults, the three hand-built themes, the ten shell plugins pinned to commits, the two custom scripts, two user units, and the /etc drop-ins. install.sh applies it all idempotently, backing up anything it overwrites. capture.sh runs the other way so the repo stays the source of truth rather than a snapshot that rots. indie.herdr-hud's ten local-only commits ship as a git bundle plus a working-tree patch, since they stay off the upstream PR deliberately. Secrets, the dotfiles repo's territory (shell/git/mise), the remote-access stack and aether-managed themes are all scoped out; README says why for each. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
-- Extra autostart processes.
|
||||
-- o.launch_on_start("my-service")
|
||||
|
||||
-- Keyboard/mouse sharing with the other Omarchy laptop (lan-mouse).
|
||||
-- Runs as a daemon; input only crosses the screen edge once the peer is
|
||||
-- activated, so starting it here is inert until Handoff is toggled on.
|
||||
-- Superseded by the lan-mouse.service systemd user unit (journald logging,
|
||||
-- ordering after the portal, Restart=on-failure). launch_on_start sent both
|
||||
-- output streams to /dev/null, which hid every pairing failure.
|
||||
-- o.launch_on_start("lan-mouse daemon")
|
||||
@@ -0,0 +1,43 @@
|
||||
-- Keep only your personal keybinding overrides here. Add new bindings or
|
||||
-- unbind defaults before replacing them.
|
||||
|
||||
-- See current bindings and descriptions:
|
||||
-- omarchy menu keybindings --print
|
||||
|
||||
-- To disable every Omarchy default binding, set this in
|
||||
-- ~/.config/hypr/hyprland.lua before require("default.hypr.omarchy"), then add
|
||||
-- only the bindings you want below:
|
||||
-- omarchy_default_bindings = false
|
||||
|
||||
-- To disable all preinstalled app/webapp bindings, set:
|
||||
-- omarchy_preinstalled_bindings = false
|
||||
|
||||
-- Add a new binding.
|
||||
-- o.bind("SUPER + SHIFT + R", "SSH", "alacritty -e ssh your-server")
|
||||
|
||||
-- Change an existing binding by unbinding it first, then binding the key again.
|
||||
-- This example changes SUPER+SPACE from the launcher to the Omarchy root menu.
|
||||
-- hl.unbind("SUPER + SPACE")
|
||||
-- o.bind("SUPER + SPACE", "Omarchy menu", "omarchy-menu toggle root")
|
||||
|
||||
-- Disable a default binding without replacing it.
|
||||
-- hl.unbind("SUPER + SHIFT + B")
|
||||
|
||||
-- Logitech MX Keys examples:
|
||||
-- o.bind("SUPER + SHIFT + S", nil, "omarchy-capture-screenshot")
|
||||
-- o.bind("SUPER + H", nil, "voxtype record toggle")
|
||||
-- o.bind("SUPER + PERIOD", nil, "omarchy-shell shell toggle omarchy.emojis")
|
||||
|
||||
-- Open Claude instead of the stock ChatGPT webapp.
|
||||
hl.unbind("SUPER + SHIFT + A")
|
||||
o.bind("SUPER + SHIFT + A", "Claude", { webapp = "https://claude.ai" })
|
||||
|
||||
-- Herdr HUD overlay (indie.herdr-hud native plugin, local branch).
|
||||
o.bind("SUPER + H", "Toggle Herdr HUD", "omarchy-shell shell toggle indie.herdr-hud '{}'")
|
||||
o.bind("SUPER + ALT + H", "Show or hide Herdr HUD button", "omarchy-shell shell call indie.herdr-hud toggleVisibility '{}'")
|
||||
o.bind("SUPER + CTRL + DOWN", "Herdr HUD: next agent", "omarchy-shell shell call indie.herdr-hud nextAgent '{}'")
|
||||
o.bind("SUPER + CTRL + UP", "Herdr HUD: previous agent", "omarchy-shell shell call indie.herdr-hud previousAgent '{}'")
|
||||
|
||||
-- Handoff: share this keyboard/mouse with the other Omarchy laptop.
|
||||
-- SUPER+K is already "Keybindings", so this takes SUPER+SHIFT+K.
|
||||
o.bind("SUPER + SHIFT + K", "Toggle Handoff (keyboard/mouse sharing)", "omarchy-handoff toggle")
|
||||
@@ -0,0 +1,32 @@
|
||||
-- Learn how to configure Hyprland: https://wiki.hypr.land/Configuring/Start/
|
||||
|
||||
-- Omarchy's bootstrap keeps path setup out of this user config.
|
||||
dofile((os.getenv("OMARCHY_PATH") or "/usr/share/omarchy") .. "/default/hypr/bootstrap.lua")
|
||||
|
||||
-- Disable all Omarchy default bindings. Add your own in hypr/bindings.lua.
|
||||
-- omarchy_default_bindings = false
|
||||
--
|
||||
-- Or disable only bindings for Omarchy's preinstalled apps/web apps while
|
||||
-- keeping core window-manager bindings:
|
||||
-- omarchy_preinstalled_bindings = false
|
||||
|
||||
-- Load Omarchy defaults.
|
||||
require("default.hypr.omarchy")
|
||||
|
||||
-- Put your personal overrides in these files. They're loaded after Omarchy's
|
||||
-- defaults so package updates can improve the defaults without rewriting your
|
||||
-- ~/.config/hypr files.
|
||||
require("hypr.monitors")
|
||||
require("hypr.input")
|
||||
require("hypr.bindings")
|
||||
require("hypr.looknfeel")
|
||||
require("hypr.autostart")
|
||||
|
||||
-- Toggle config flags dynamically.
|
||||
require("default.hypr.toggles")
|
||||
|
||||
-- Add any other personal Hyprland configuration below.
|
||||
-- o.window("qemu", { workspace = "5" })
|
||||
|
||||
-- Added by hyprmoncfg: its generated monitor rules load last, so nothing before this can override the applied layout.
|
||||
do local path = os.getenv("HOME") .. "/.config/hypr/hyprmoncfg-monitors.lua"; local file = io.open(path, "r"); if file then file:close(); dofile(path) end end
|
||||
@@ -0,0 +1,72 @@
|
||||
-- Keep only your personal input overrides here. Uncommented settings below
|
||||
-- replace Omarchy's defaults.
|
||||
|
||||
-- Keyboard layout and options.
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Variables/#input
|
||||
-- hl.config({
|
||||
-- input = {
|
||||
-- -- Use multiple keyboard layouts and switch between them with Left Alt + Right Alt.
|
||||
-- kb_layout = "us,dk,eu",
|
||||
-- kb_options = "compose:caps,shift:both_capslock_cancel,grp:alts_toggle",
|
||||
--
|
||||
-- -- Use a specific keyboard variant if needed (e.g. intl for international keyboards).
|
||||
-- kb_variant = "intl",
|
||||
--
|
||||
-- -- Change speed of keyboard repeat.
|
||||
-- repeat_rate = 40,
|
||||
-- repeat_delay = 250,
|
||||
--
|
||||
-- -- Start with numlock on by default.
|
||||
-- numlock_by_default = true,
|
||||
--
|
||||
-- -- Increase sensitivity for mouse/trackpad (default: 0).
|
||||
-- sensitivity = 0.35,
|
||||
--
|
||||
-- -- Turn off mouse acceleration (default: adaptive).
|
||||
-- accel_profile = "flat",
|
||||
--
|
||||
-- touchpad = {
|
||||
-- -- Use natural (inverse) scrolling.
|
||||
-- natural_scroll = true,
|
||||
--
|
||||
-- -- Use two-finger clicks for right-click instead of lower-right corner.
|
||||
-- clickfinger_behavior = true,
|
||||
--
|
||||
-- -- Control the speed of your scrolling.
|
||||
-- scroll_factor = 0.4,
|
||||
--
|
||||
-- -- Enable the touchpad while typing.
|
||||
-- disable_while_typing = false,
|
||||
--
|
||||
-- -- Left-click-and-drag with three fingers.
|
||||
-- drag_3fg = 1,
|
||||
-- },
|
||||
-- },
|
||||
-- })
|
||||
|
||||
-- App-specific touchpad scroll speeds.
|
||||
-- o.window("(Alacritty|kitty|foot)", { scroll_touchpad = 1.5 })
|
||||
-- o.window("com.mitchellh.ghostty", { scroll_touchpad = 0.2 })
|
||||
|
||||
-- Enable touchpad gestures for changing workspaces.
|
||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Gestures/
|
||||
hl.gesture({ fingers = 3, direction = "horizontal", action = "workspace" })
|
||||
|
||||
-- Enable touchpad gestures for moving focus (helpful on scrolling layout).
|
||||
-- hl.gesture({ fingers = 3, direction = "left", action = function() hl.dispatch(hl.dsp.focus({ direction = "l" })) end })
|
||||
-- hl.gesture({ fingers = 3, direction = "right", action = function() hl.dispatch(hl.dsp.focus({ direction = "r" })) end })
|
||||
|
||||
-- lan-mouse (omarchy-handoff) virtual pointer: kill the SECOND acceleration pass.
|
||||
-- lan-mouse forwards RELATIVE deltas that the SENDING compositor has already
|
||||
-- accelerated. Omarchy leaves accel_profile unset (adaptive), so the receiver
|
||||
-- amplifies them again and the pointer arrives hypersensitive while the local
|
||||
-- trackpad feels normal. "flat" applies no curve, so a forwarded delta moves
|
||||
-- exactly as far as the sender intended.
|
||||
-- The name is "unknown-device" because wlr-virtual-pointer gives Hyprland no
|
||||
-- name (virtual KEYBOARDS get named, pointers don't). Verified on this machine
|
||||
-- with `lan-mouse test-emulation` + `hyprctl devices`: no real device here is
|
||||
-- named unknown-device* (real pointers are elan0138:*, mouse-passthrough*,
|
||||
-- dp-3-1), so this rule cannot touch the trackpad. Two entries because the
|
||||
-- daemon may hold more than one virtual pointer at a time.
|
||||
hl.device({ name = "unknown-device", sensitivity = 0, accel_profile = "flat" })
|
||||
hl.device({ name = "unknown-device-1", sensitivity = 0, accel_profile = "flat" })
|
||||
@@ -0,0 +1,48 @@
|
||||
-- BEGIN hyprmoncfg wake settings
|
||||
-- Shared with Omarchy while hyprmoncfg manages displays.
|
||||
hl.monitor({ output = "eDP-1", mode = "preferred", position = "0x0", scale = 1.25 })
|
||||
-- END hyprmoncfg wake settings
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/
|
||||
-- List current monitors and supported resolutions with: hyprctl monitors all
|
||||
--
|
||||
-- SINGLE SOURCE OF TRUTH for display config.
|
||||
-- Do not add monitor rules anywhere else (hyprland.lua, a hyprmoncfg-generated
|
||||
-- file, etc.) -- overlapping rules from several files were what made external
|
||||
-- displays unrecoverable before.
|
||||
|
||||
local omarchy_gdk_scale = 1
|
||||
local omarchy_monitor_scale = 1.25
|
||||
|
||||
hl.env("GDK_SCALE", tostring(omarchy_gdk_scale))
|
||||
|
||||
-- Catch-all: anything not named below gets its EDID-preferred mode.
|
||||
hl.monitor({ output = "", mode = "preferred", position = "auto", scale = omarchy_monitor_scale })
|
||||
|
||||
-- Built-in laptop panel.
|
||||
hl.monitor({
|
||||
output = "desc:Chimei Innolux Corporation 0x1642",
|
||||
mode = "1920x1200@60",
|
||||
position = "auto",
|
||||
scale = 1.25,
|
||||
})
|
||||
|
||||
-- LG IPS236 on the laptop's own HDMI port.
|
||||
hl.monitor({
|
||||
output = "desc:LG Electronics IPS236 105NDLS5A720",
|
||||
mode = "1920x1080@60",
|
||||
position = "auto",
|
||||
scale = 1,
|
||||
})
|
||||
|
||||
-- LG TV via the Anker USB-C dock.
|
||||
-- Deliberately NOT forced to 3840x2160@60: the dock negotiates DP alt-mode
|
||||
-- with only 2 lanes (pin assignment D), which leaves no bandwidth headroom at
|
||||
-- 4K60. Forcing it produced a "monitor has no mode" loop. "preferred" is
|
||||
-- 3840x2160@30 here, which links reliably. Use 1920x1080@120 instead if you
|
||||
-- want high refresh over this dock.
|
||||
hl.monitor({
|
||||
output = "desc:LG Electronics LG TV SSCR2 0x01010101",
|
||||
mode = "preferred",
|
||||
position = "auto",
|
||||
scale = 1.25,
|
||||
})
|
||||
Reference in New Issue
Block a user