Compare commits
19 Commits
main
...
1b56ecc9cd
| Author | SHA1 | Date | |
|---|---|---|---|
| 1b56ecc9cd | |||
| f31819fef2 | |||
| cd4d5f2807 | |||
| 1cda6861a5 | |||
| 2073537773 | |||
| e8a764ca26 | |||
| 3294876681 | |||
| 25b541f350 | |||
| d2d48e5afe | |||
| a1968be46d | |||
| 657f2f6746 | |||
| f0fbce7325 | |||
| 826e4a18dc | |||
| f8284fb841 | |||
| 81d8d36071 | |||
| d0e77ed6a3 | |||
| d90f7b304b | |||
| 8f33d14695 | |||
| f8a084e111 |
33
.claude/CONTEXT.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# NixOS Dotfiles
|
||||
|
||||
A single flake that builds every machine the user owns — laptop, desktop, and three servers — from one shared, modular configuration.
|
||||
|
||||
## Language
|
||||
|
||||
**Host**:
|
||||
One physical machine the flake builds a NixOS configuration for. Each Host has a directory under `hosts/` holding its machine-specific `hardware-configuration.nix` and its choice of enabled Modules.
|
||||
_Avoid_: machine, node, system, box
|
||||
|
||||
**Module**:
|
||||
A single `.nix` feature file under `modules/` that declares an `enable` option and the configuration it turns on. Every Module is always imported but stays inert until a Host enables it.
|
||||
_Avoid_: component, package, plugin
|
||||
|
||||
**Skeleton**:
|
||||
The flake's plumbing — the Auto-loader, the helper lib, the flake inputs/overlays, and the shared base config — as distinct from the Modules that sit on top of it.
|
||||
_Avoid_: framework, core, base, scaffolding
|
||||
|
||||
**Auto-loader**:
|
||||
The lib code that recursively discovers and imports every Module under `modules/` (and every Host under `hosts/`) so new files wire themselves in without manual `imports` edits.
|
||||
_Avoid_: loader, importer, scanner
|
||||
|
||||
**Enable convention**:
|
||||
The rule that every Module is imported unconditionally and guards its own body with `mkIf config.modules.<path>.enable`, so a Host reads as a checklist of `enable = true` flags.
|
||||
_Avoid_: feature flag, toggle, opt-in
|
||||
|
||||
**unstable overlay**:
|
||||
The overlay exposing `nixpkgs-unstable` packages as `unstable.<name>`, used to pull an individual package fresher than the `nixos-unstable` base.
|
||||
_Avoid_: bleeding-edge, latest
|
||||
|
||||
**stable overlay**:
|
||||
The overlay exposing the latest stable release (`nixos-26.05`) as `stable.<name>`, used to pin an individual package to the rock-solid release from the `nixos-unstable` base.
|
||||
_Avoid_: LTS, release channel
|
||||
10
.claude/adr/0001-sops-nix-for-secrets.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# Use sops-nix for secrets
|
||||
|
||||
The repo is public, so no secret — including password hashes and the WireGuard/ProtonVPN key — may be committed in plaintext. We manage all secrets with **sops-nix**: encrypted into the repo and decrypted per-host at activation via an age key derived from each machine's SSH host key.
|
||||
|
||||
We chose sops-nix over agenix for its multi-recipient encryption (one secret readable by both a host and the admin laptop) and its grouped-file editing workflow, which scale better across the planned five hosts with a mix of shared and per-host secrets. The cost is slightly more upfront machinery than agenix's one-file-per-secret model.
|
||||
|
||||
## Consequences
|
||||
|
||||
- User/root passwords use `hashedPasswordFile` backed by a sops secret, never a committed hash.
|
||||
- Each new host must have its SSH host public key registered as a recipient before it can decrypt its secrets.
|
||||
92
.claude/spec/laptop-mvi.md
Normal file
@@ -0,0 +1,92 @@
|
||||
## Problem Statement
|
||||
|
||||
I'm returning to NixOS after ~2 years away, and I want to start by moving my laptop (`neogaia`, a Dell XPS 13 9380 currently running CachyOS) onto it. My old config still exists but is stale and written in a style I no longer want to copy verbatim. Eventually this same config has to grow to cover my desktop and three servers, so whatever I build for the laptop has to be a clean, scalable foundation — not a throwaway.
|
||||
|
||||
Reimaging the laptop is destructive and I only get one machine, so I need a tightly-scoped, well-understood **minimum viable install (MVI)**: the smallest config that boots the laptop into a usable state I can then iterate on live, without risking a half-defined system that strands me at a dead console.
|
||||
|
||||
## Solution
|
||||
|
||||
Rebuild the `Skeleton` and a single `neogaia` `Host` to the point where the laptop:
|
||||
|
||||
- boots from an encrypted disk (LUKS + btrfs + zram),
|
||||
- comes up on wifi,
|
||||
- lets me log into a console as my user and run `nixos-rebuild switch`,
|
||||
- and already carries my core terminal tooling (fish, tmux, nvim, Claude Code).
|
||||
|
||||
Everything graphical and everything multi-host is deliberately left for later iterative passes, which are safe because a mistake then is "edit and rebuild," not "reimage." The MVI is the one step that must be right *before* reimaging; the rest is reversible.
|
||||
|
||||
The install itself is done from the NixOS live ISO by cloning the repo from my Gitea and running a single `disko-install` against the `neogaia` `Host`, then setting a bootstrap password by hand.
|
||||
|
||||
## User Stories
|
||||
|
||||
1. As the operator, I want the `Skeleton` rewritten around my old scalable ideas (the `Auto-loader`, the `Enable convention`, per-`Host` layout), so that the config stays legible and shareable across all five future machines without me copying stale code.
|
||||
2. As the operator, I want the flake hand-rolled and cleaned up (no framework layer), so that the whole plumbing stays readable in one place for a config that only targets a handful of `x86_64-linux` machines.
|
||||
3. As the operator, I want every `Module` auto-discovered and imported but inert until a `Host` sets its `enable` flag, so that each `Host` reads as a checklist of features.
|
||||
4. As the operator, I want a `nixos-unstable` base with an `unstable overlay` and a `stable overlay`, so that I can run rolling by default but reach up to bleeding-edge or down to rock-solid on a per-package basis.
|
||||
5. As the operator, I want home-manager integrated as a NixOS module with global packages, so that one `nixos-rebuild switch` builds both the system and my user environment atomically.
|
||||
6. As the operator, I want my user modelled as an explicit option defaulting to `alexion` (no impure environment lookup), so that the config is reproducible and honest about who the user is.
|
||||
7. As the operator, I want the laptop's disk declared with `disko` as encrypted btrfs plus zram swap, so that the install is reproducible and the laptop is encrypted at rest.
|
||||
8. As the operator, I want the system to prompt for the LUKS passphrase at boot via systemd-boot and the initrd, so that the encrypted disk unlocks on a normal boot.
|
||||
9. As the operator, I want the CachyOS kernel from chaotic-nyx with the chaotic binary cache wired in from the first build, so that I get the performance/feel I'm used to without compiling the kernel from source.
|
||||
10. As the operator, I want Intel microcode and the redistributable firmware for the QCA6174 wifi included, so that the laptop's hardware works out of the box.
|
||||
11. As the operator, I want NetworkManager enabled, so that I can join wifi easily from the console.
|
||||
12. As the operator, I want an SSH daemon running, so that I can drive the rest of the setup remotely if the console is inconvenient.
|
||||
13. As the operator, I want my user in `wheel` with a manually-set bootstrap password, so that I can log in and use sudo on first boot without committing any secret to a public repo.
|
||||
14. As the operator, I want fish as my default login shell, configured natively via home-manager with my `cachyos-config.fish` translated (greeting, bat-manpager, `done` and bang-bang plugins, helper functions, eza/nav aliases) and all Arch/pacman-specific parts dropped or replaced with NixOS equivalents, so that my shell feels like home but is correct for NixOS.
|
||||
15. As the operator, I want tmux configured natively via home-manager using my exact existing `tmux.conf` text, so that my terminal multiplexer is identical to today with no plugin manager needed.
|
||||
16. As the operator, I want my nvim config brought in verbatim (lazy.nvim managing its own plugins) via a writable out-of-store symlink, with `git`/`gcc`/`ripgrep`/`fd` provided by Nix, so that my editor is identical to today and lazy.nvim can still update and write its lockfile.
|
||||
17. As the operator, I want Claude Code installed declaratively and authenticatable without a browser on the laptop, so that I can use it over the console/SSH via the paste-code flow or an API key.
|
||||
18. As the operator, I want timezone `America/New_York`, locale `en_GB.UTF-8`, and console keymap `us` set, so that the base system matches my locale preferences.
|
||||
19. As the operator, I want to install by cloning the repo from my Gitea onto the live ISO and running `disko-install` against `neogaia`, so that I avoid self-signed-TLS/auth problems with flake fetching during install.
|
||||
20. As the operator, I want the `Skeleton` designed so that per-`Host` disk layouts, per-`Host` kernels, and preserved ZFS pools are all expressible, so that the same foundation extends to the desktop and the three servers later without restructuring.
|
||||
|
||||
## Implementation Decisions
|
||||
|
||||
**Skeleton**
|
||||
- Hand-rolled flake, rewritten and trimmed; no flake-parts.
|
||||
- `Auto-loader` rewritten: recursively discovers and imports every `Module` under the modules tree without the old null-placeholder traversal hack; a single discovery helper feeds the `Host` imports. The old `nixosModules` flake output is dropped.
|
||||
- Helper lib trimmed to the `Auto-loader`, the host-builder, and the script-from-file helper. `with lib.my` replaced by explicit `inherit`s throughout. `enable` flags use the stdlib enable-option helper rather than bespoke sugar.
|
||||
- `nixos-unstable` as the base channel. An `unstable overlay` exposes `nixpkgs-unstable` packages; a `stable overlay` exposes the latest stable release (`nixos-26.05`). chaotic-nyx added as an input with its overlay and binary cache from the start.
|
||||
- home-manager sourced from `nix-community`, tracking master with nixpkgs followed, integrated as a NixOS module with global packages and user packages.
|
||||
- User modelled as an explicit option defaulting to `alexion`, in `wheel`, driving the system user and the home-manager user in lockstep.
|
||||
|
||||
**neogaia Host**
|
||||
- Disk declared via `disko`: LUKS-encrypted btrfs with subvolumes plus zram swap. systemd-boot on an EFI system partition; initrd LUKS unlock.
|
||||
- CachyOS kernel selected via a small per-`Host` kernel mechanism; chaotic substituter and trusted key in the Nix settings.
|
||||
- Intel microcode; redistributable firmware enabled for the QCA6174 wifi. NetworkManager for networking. A zram toggle `Module` enabled here.
|
||||
- SSH daemon enabled. Baseline CLI (git, editor, flakes) present. Claude Code installed declaratively.
|
||||
- fish `Module`: native home-manager configuration; translated aliases/functions/plugins/init; set as the default login shell. tmux `Module`: native home-manager, exact existing config text inlined. nvim `Module`: verbatim config placed as a writable out-of-store symlink with runtime dependencies provided by Nix.
|
||||
- Locale, timezone, and keymap set to the detected values.
|
||||
|
||||
**Install flow**
|
||||
- Repo pushed to Gitea first. From the NixOS live ISO: join wifi, clone the repo locally, run `disko-install` against the `neogaia` `Host` with the chaotic substituter passed to the install-time daemon, set bootstrap passwords via `nixos-enter`, reboot.
|
||||
|
||||
**Secrets (design only in MVI)**
|
||||
- Per ADR 0001, secrets use `sops-nix` with age keys derived from each `Host`'s SSH host key. The MVI does not wire any secret, because a `Host`'s age key does not exist until its first install generates the SSH host key. The bootstrap password is set by hand and never committed; moving passwords to a `hashedPasswordFile` backed by a sops secret is the first post-boot task, out of scope here.
|
||||
|
||||
## Testing Decisions
|
||||
|
||||
- A good test here asserts externally-observable evaluation/build success of the whole `Host`, not the internals of any individual `Module`.
|
||||
- **Primary seam (required):** the `neogaia` `Host` evaluates and its system toplevel builds. Building the toplevel drives the entire `Skeleton` — the `Auto-loader` discovering every `Module`, all three overlays resolving, home-manager integration, and every enabled module's config merging without conflict — plus the `disko` layout, which builds from the same tree. Nearly all config-authoring errors surface at this seam short of booting real hardware.
|
||||
- No unit-level tests of individual modules; the config-merge model makes the whole-`Host` build the meaningful unit, and it is the highest available seam.
|
||||
- Prior art: none in this repo yet (it starts empty); this build-the-toplevel check is the pattern to reuse for every future `Host`.
|
||||
- The genuine end-to-end confirmation is the real reimage, which is manual and irreversible by nature and is not automated.
|
||||
|
||||
## Out of Scope
|
||||
|
||||
- Any graphical environment: Wayland-vs-i3 choice, greeter/display manager, theming (Nord via Stylix or otherwise), fonts, terminal emulator, browser, general desktop apps, gaming (Steam/Lutris/proton-cachyos), emulation.
|
||||
- Full `sops-nix` wiring and moving passwords off the bootstrap value (immediate post-boot follow-up, but not MVI).
|
||||
- Migrating nvim to a native home-manager configuration with Nix-managed plugins.
|
||||
- chaotic-nyx packages beyond the kernel (`mesa-git`, `proton-cachyos`, `scx` schedulers).
|
||||
- Flatpak strategy (`nix-flatpak` vs dropping the old imperative helper).
|
||||
- The desktop `Host` (`zeus`), including Nvidia.
|
||||
- The three servers: deployment model, service migration (plex/arr/kavita/nfs/torrent-through-protonvpn), ZFS wiring and pool import, backups/monitoring, and per-server kernel/channel pinning.
|
||||
- VM-based CI (`nixosTest` boot assertions) — explicitly a future addition, not part of this deliverable.
|
||||
|
||||
## Further Notes
|
||||
|
||||
- **Bootstrap ordering:** the flake must exist on Gitea before the install can consume it, and the manual password step keeps the public repo free of any secret while still yielding a login on first boot.
|
||||
- **Gitea is a bootstrap dependency:** every NixOS install pulls the config from self-hosted Gitea, so the Gitea host must stay reachable during any install — relevant when sequencing the servers so the migration never locks the operator out of their own configs.
|
||||
- **chaotic cache at install time:** the install-time Nix daemon on the live ISO must have the chaotic substituter configured, or it compiles the CachyOS kernel from source on the USB stick.
|
||||
- **Extends to future Hosts by construction:** disk layout, kernel, and channel are all per-`Host` concerns in the `Skeleton`, and existing ZFS pools are preserved by import rather than declared through `disko`. This is what lets the desktop and the three servers join later without reworking the foundation.
|
||||
- **Theme target is Nord** (the current CachyOS setup is Nord across terminal, tmux, and nvim), superseding the old repo's Dracula — relevant when the theming branch is grilled.
|
||||
37
.claude/tasks/0001-skeleton-and-building-host.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
spec: laptop-mvi
|
||||
---
|
||||
|
||||
## What to build
|
||||
|
||||
Stand up the `Skeleton` and a minimal `neogaia` `Host` that evaluates and whose system toplevel builds — the walking skeleton every later slice extends and re-verifies against.
|
||||
|
||||
The `Skeleton` is a hand-rolled flake (no flake-parts): `nixos-unstable` base channel, an `unstable overlay` exposing `nixpkgs-unstable` as `unstable.<name>`, a `stable overlay` exposing `nixos-26.05` as `stable.<name>`, and chaotic-nyx wired as an input with its overlay and binary cache.
|
||||
The helper lib is trimmed to three pieces: the `Auto-loader` (recursively discovers and imports every `Module` under `modules/` and every `Host` under `hosts/` with no null-placeholder traversal hack), the host-builder, and the script-from-file helper.
|
||||
`with lib.my` is not used — dependencies are `inherit`ed explicitly.
|
||||
The `Enable convention` uses the stdlib enable-option helper; every `Module` is imported unconditionally and guards its body with `mkIf config.modules.<path>.enable`.
|
||||
home-manager is sourced from `nix-community` (master, nixpkgs followed) and integrated as a NixOS module with global packages and user packages.
|
||||
The `user` is an explicit option defaulting to `alexion` (no impure environment lookup), placed in `wheel`, driving the system user and the home-manager user in lockstep.
|
||||
The `neogaia` `Host` carries only enough (placeholder `hardware-configuration.nix`, filesystems/bootloader stubs, `stateVersion`) to make `nixosConfigurations.neogaia.config.system.build.toplevel` evaluate and build; real disk/kernel/networking arrive in later slices.
|
||||
|
||||
Design the per-`Host` layout so disk layout, kernel, and channel are all per-`Host` concerns from the start (story 20), so the desktop and servers extend this foundation without restructuring.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] `nix flake check` succeeds and the flake exposes `nixosConfigurations.neogaia`.
|
||||
- [x] `nixosConfigurations.neogaia.config.system.build.toplevel` builds.
|
||||
- [x] Adding a new `.nix` file under `modules/` is auto-discovered and imported without editing any `imports` list, and stays inert until its `enable` flag is set.
|
||||
- [x] All three overlays resolve: `unstable.<pkg>`, `stable.<pkg>`, and a chaotic-nyx package are each reachable in a `Host`.
|
||||
- [x] home-manager builds as part of the same `nixos-rebuild switch` toplevel (system + user environment atomic).
|
||||
- [x] The `user` option defaults to `alexion`, has no impure environment lookup, places the user in `wheel`, and drives both the system and home-manager user.
|
||||
- [x] The old `nixosModules` flake output and the `with lib.my` idiom are absent.
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
- **Verification.** `nix flake check` builds `checks.x86_64-linux.neogaia` = the Host toplevel (the spec's primary seam). Overlays confirmed via `nix eval` of `pkgs.unstable.hello` (2.12.3), `pkgs.stable.hello` (2.12.1), and `pkgs.linuxPackages_cachyos.kernel` (7.1.3, from chaotic). Auto-loader inertness confirmed both ways: the reference `modules/example.nix` is off by default, and `extendModules` with `modules.example.enable = true` activates its body.
|
||||
- **chaotic binary cache.** Wired via `inputs.chaotic.nixosModules.default`, which puts both the `nyx-cache.chaotic.cx` substituter and its trusted public key into the built config (verified by evaluating `config.nix.settings.substituters`/`trusted-public-keys`). chaotic deliberately does **not** follow our nixpkgs, so the cache stays usable. Making the substituter/key explicit is task 0003's concern; here it is inherited from the module.
|
||||
- **Shared base lives in `system/`.** The Skeleton's shared base config (overlays, `user`, flakes, home-manager wiring) is a `system/` module always imported by the host-builder, kept separate from the auto-loaded feature `Module`s under `modules/` so the base is never gated by an `enable` flag.
|
||||
- **`modules/example.nix` kept intentionally.** It is the Auto-loader / Enable-convention reference every real Module copies; remove it once a real Module supersedes its teaching value.
|
||||
- **`scriptFromFile` present but unused.** The task mandates the helper lib carry it ("the script-from-file helper"); its first caller lands with a later Module.
|
||||
- **Home-manager base user only.** The base sets `home.username`/`homeDirectory`/`stateVersion` for the `user`; `extraSpecialArgs` passes both `inputs` and `my` (the flake lib) so upcoming HM Modules (fish/tmux/nvim) can reach `scriptFromFile`.
|
||||
- **Deviations from plan.** Added an `options.user.description` (GECOS) alongside `user.name` — small and expected for a real account. Baseline `git` + global `allowUnfree` are set in the base (git is required for flakes; unfree is needed by chaotic/home-manager and later Claude Code). Placeholder `fileSystems`/bootloader and `hardware-configuration.nix` in `neogaia` are stubs that task 0002 (disko) replaces.
|
||||
31
.claude/tasks/0002-neogaia-disk-and-boot.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
spec: laptop-mvi
|
||||
blocked-by: 0001-skeleton-and-building-host
|
||||
---
|
||||
|
||||
## What to build
|
||||
|
||||
Declare the `neogaia` laptop's disk with `disko` and make it unlock and boot on real hardware: a LUKS-encrypted btrfs volume with subvolumes plus zram swap, on an EFI system partition using systemd-boot, with the LUKS passphrase prompted at boot via the initrd.
|
||||
|
||||
The layout must build from the same tree as the `Host` toplevel (so the whole-`Host` build exercises it), and must be expressed as a per-`Host` disk concern so other machines can declare their own layouts later.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] `neogaia` declares a `disko` layout: LUKS-encrypted btrfs with subvolumes plus zram swap on an EFI system partition.
|
||||
- [x] systemd-boot is the bootloader; the initrd prompts for the LUKS passphrase so a normal boot unlocks the encrypted disk.
|
||||
- [x] The `disko` layout builds as part of the `neogaia` toplevel build (no separate invocation needed to catch layout errors).
|
||||
- [x] The disk layout is a per-`Host` concern, expressible differently for future `Host`s without restructuring the `Skeleton`.
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
- **Layout.** One GPT disk at `/dev/nvme0n1`: a 512M EF00 ESP (vfat, `umask=0077`) mounted at `/boot`, and a 100%-fill LUKS partition (`cryptroot`, `allowDiscards`) holding a btrfs filesystem with three subvolumes — `@root` → `/`, `@home` → `/home`, `@nix` → `/nix` — each mounted `compress=zstd,noatime`.
|
||||
There is deliberately no on-disk swap partition; swap is RAM-backed zram.
|
||||
- **Skeleton vs. per-Host split.** The disko *module* (`inputs.disko.nixosModules.disko`) is wired into the host-builder in `lib/default.nix`, so every `Host` can interpret a `disko.devices` declaration; the *layout itself* lives in `hosts/neogaia/disk.nix`.
|
||||
A future `Host` declares a different layout, or none at all (an undeclared `disko.devices` is a no-op), so servers that preserve an existing pool by import need no `Skeleton` change.
|
||||
- **disko input follows nixpkgs.** Unlike chaotic (which must not), disko follows our `nixpkgs` so it builds against the same base.
|
||||
- **Boot unlock.** disko's `type = "luks"` (no key file) generates `boot.initrd.luks.devices.cryptroot`, so the classic initrd prompts for the passphrase on a normal boot; the `nvme` initrd module was already present in `hardware-configuration.nix`.
|
||||
- **zram enabled directly, not yet a Module.** Criterion 1 requires "plus zram swap," so `zramSwap.enable = true` is set on the `Host` now.
|
||||
Task 0003 owns the reusable zram toggle `Module` and will lift this line into it; the placeholder `fileSystems`/bootloader stubs from task 0001 are removed here since disko now derives `fileSystems`.
|
||||
- **Verification.** `nix flake check` (the `checks.x86_64-linux.neogaia` toplevel) builds green.
|
||||
Confirmed via `nix eval`: disko-derived `fileSystems` = `/`,`/home`,`/nix` on btrfs `/dev/mapper/cryptroot` + `/boot` on the ESP; `boot.initrd.luks.devices` = `["cryptroot"]`; `systemd-boot.enable` and `zramSwap.enable` both true; `swapDevices` empty.
|
||||
The genuine end-to-end confirmation is the manual `disko-install` reimage, which is irreversible by nature and not automated.
|
||||
26
.claude/tasks/0003-kernel-and-hardware.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
spec: laptop-mvi
|
||||
blocked-by: 0001-skeleton-and-building-host
|
||||
---
|
||||
|
||||
## What to build
|
||||
|
||||
Give `neogaia` the kernel and hardware enablement it needs to run well on the Dell XPS 13 9380: the CachyOS kernel pulled as a binary from chaotic-nyx (not compiled from source), Intel microcode, and the redistributable firmware for the QCA6174 wifi. Add a zram toggle `Module` and enable it here.
|
||||
|
||||
The kernel is selected through a small per-`Host` kernel mechanism so other `Host`s can choose different kernels. The chaotic substituter and its trusted public key are added to the Nix settings so the kernel is fetched from the binary cache from the first build.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] `neogaia` runs the CachyOS kernel selected via a per-`Host` kernel mechanism, sourced from chaotic-nyx.
|
||||
- [x] The chaotic substituter and trusted public key are in the Nix settings, so the kernel is fetched from cache rather than compiled.
|
||||
- [x] Intel microcode is enabled.
|
||||
- [x] Redistributable firmware is enabled so the QCA6174 wifi hardware is available.
|
||||
- [-] A zram toggle `Module` exists (following the `Enable convention`) and is enabled on `neogaia`. — Module dropped in PR review; zram is enabled inline on `neogaia` instead (see notes).
|
||||
- [x] The `neogaia` toplevel still builds with all of the above.
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
- **Per-`Host` kernel mechanism = native `boot.kernelPackages`.** neogaia sets `boot.kernelPackages = pkgs.linuxPackages_cachyos` directly in its Host directory (`hosts/neogaia/default.nix`). No custom wrapper option was added: `boot.kernelPackages` is already a per-`Host` setting, so other `Host`s pick their own kernel the same way. A string→package wrapper would have been premature abstraction with one `Host` and one kernel, so it was deliberately left out; the "mechanism" is the per-`Host` placement of the native option.
|
||||
- **Substituter/key live in the shared base, via the `extra-` options.** They were added to `system/default.nix` (shared by every `Host`), not just neogaia, because the chaotic module is wired for all `Host`s and the cache is general plumbing. `nix.settings.extra-substituters` / `extra-trusted-public-keys` are used rather than the replacing `substituters` / `trusted-public-keys`, so `cache.nixos.org` (and any other substituter) is only appended to, never dropped. chaotic's own module also provides these entries; the explicit declaration is belt-and-suspenders and keeps the built system's cache config visible and independent of that module.
|
||||
- **Dev-host build needed a daemon-level cache.** Building the toplevel here first compiled the CachyOS kernel (and rustc bootstrap) from source, because the build daemon's `/etc/nix/nix.conf` had no `nyx-cache` substituter — the built system's `nix.settings` do not govern the daemon doing the build, and the dev user is a non-trusted client that cannot add substituters from the CLI. Adding `extra-substituters`/`extra-trusted-public-keys` for `nyx-cache` to `/etc/nix/nix.conf` (sudo) and restarting `nix-daemon` fixed it; the build then fetched the kernel (7.1.3) from the cache. Recorded as a gotcha in `CLAUDE.md`.
|
||||
- **zram is enabled inline, not as a `Module` (criterion 5 dropped).** The task asked for a zram toggle `Module`, and one was built first (`modules/zram.nix`), but PR review rejected it as a single-line abstraction that wraps the native `zramSwap.enable` toggle without adding anything. It was removed, and `neogaia` sets `zramSwap.enable = true` directly, as it did before task 0003. The `Enable convention` reference remains `modules/example.nix`; real feature `Module`s arrive with fish/tmux/nvim/Claude Code in later tasks.
|
||||
28
.claude/tasks/0004-networking-and-base-system.md
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
spec: laptop-mvi
|
||||
blocked-by: 0001-skeleton-and-building-host
|
||||
---
|
||||
|
||||
## What to build
|
||||
|
||||
Make the booted laptop a usable console I can log into and reach remotely: NetworkManager for joining wifi, an SSH daemon for driving the rest of the setup over the network, and the base locale settings.
|
||||
|
||||
Set timezone `America/New_York`, locale `en_GB.UTF-8`, and console keymap `us`.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] NetworkManager is enabled so wifi can be joined from the console.
|
||||
- [x] An SSH daemon is enabled so the machine can be driven remotely.
|
||||
- [x] Timezone is `America/New_York`, locale is `en_GB.UTF-8`, console keymap is `us`.
|
||||
- [x] The `neogaia` toplevel still builds with all of the above.
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
- **Placement in the Host, not a Module.** NetworkManager, the SSH daemon, and the locale/timezone/keymap settings all live directly in `hosts/neogaia/default.nix`, alongside the kernel/hardware/zram lines from task 0003.
|
||||
This follows the precedent set in that task, where a speculative enable-gated Module was dropped in review in favour of inlining for the single-Host MVI.
|
||||
A shared locale Module or a networking Module can be extracted later when a second Host actually needs the same settings; extracting now would be speculative generality.
|
||||
- **SSH left unhardened deliberately.** `services.openssh.enable = true` keeps NixOS's default password authentication on.
|
||||
This is required by the install flow: first-boot access is over SSH with the hand-set bootstrap password, and no SSH keys or sops-derived age key exist until the install generates the Host's SSH host key.
|
||||
Moving to key-only auth / `hashedPasswordFile` is the first post-boot follow-up per the spec's Secrets section, out of scope for the MVI.
|
||||
- **Locale/timezone mix is as specified.** `i18n.defaultLocale = "en_GB.UTF-8"` with `time.timeZone = "America/New_York"` and `console.keyMap = "us"` mixes region and locale; this matches the operator's stated preferences verbatim and is intentional.
|
||||
- **Verification.** Built the primary seam — `nix build .#checks.x86_64-linux.neogaia` (the Host toplevel) — to exit 0; the systemd units for `wpa_supplicant` (NetworkManager's backend) and openssh appear in the build. The five option values were also confirmed via `nix eval`.
|
||||
44
.claude/tasks/0005-fish-shell-module.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
spec: laptop-mvi
|
||||
blocked-by: 0001-skeleton-and-building-host
|
||||
---
|
||||
|
||||
## What to build
|
||||
|
||||
A fish `Module`, configured natively via home-manager, that makes the shell feel like the current CachyOS setup but is correct for NixOS. Translate the existing `cachyos-config.fish` and the rest of the fish snapshot under `reference/home/.config/fish/`: the greeting, the bat-manpager, the `done` and bang-bang plugins, the helper functions, and the eza/nav aliases. Drop or replace every Arch/pacman-specific part with its NixOS equivalent. Set fish as the default login shell.
|
||||
|
||||
Configure the plugins natively through home-manager rather than a fish plugin manager.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] A fish `Module` (following the `Enable convention`) is enabled on `neogaia` and configured natively via home-manager.
|
||||
- [x] The greeting, bat-manpager, `done` and bang-bang plugins, helper functions, and eza/nav aliases from the reference config are reproduced.
|
||||
- [x] All Arch/pacman-specific parts are dropped or replaced with NixOS equivalents.
|
||||
- [x] fish is the user's default login shell.
|
||||
- [x] The `neogaia` toplevel still builds with the fish `Module` enabled.
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
- **Plugins are native, not inlined.** `done` and `bang-bang` come from `pkgs.fishPlugins.*` via `programs.fish.plugins`; home-manager drops them into `~/.config/fish/conf.d/` where fish auto-sources them.
|
||||
The reference config inlined the bang-bang `__history_previous_command` functions and binds by hand; the plugin supplies those, so they are not re-inlined.
|
||||
- **`done` tuning uses `set -g`, not `set -U`.** The reference set `__done_min_cmd_duration`/`__done_notification_urgency_level` as universal variables, which persist to the universal-variable file and then ignore config changes.
|
||||
A declarative config must own these each session, so they are set global (`set -g`) in `interactiveShellInit`.
|
||||
- **Arch/pacman aliases dropped:** `grubup`, `fixpacman`, `mirror` (`cachyos-rate-mirrors`), `apt`/`apt-get` (`man pacman`), `big` (`expac`), `gitpkg`, `rip` (`expac`).
|
||||
**Replaced with NixOS equivalents:** `update` → `sudo nixos-rebuild switch` (was `pacman -Syu`), `cleanup` → `sudo nix-collect-garbage -d` (was `pacman -Rns`).
|
||||
- **Machine-specific PATH hacks dropped, per spec story 6 ("no impure environment lookup").** The hardcoded `BUN_INSTALL`, the `node-v24...` tarball path, and `~/Applications/depot_tools` from `config.fish` are absolute/impure and are not reproduced; such tooling should be Nix-provided when its own Module arrives.
|
||||
The portable bits are kept: `~/.local/bin` on PATH (guarded) and sourcing `~/.fish_profile`.
|
||||
- **`env.fish` and `rustup.fish` deliberately not carried over.** `ANDROID_HOME`/platform-tools (Android SDK) and `source ~/.cargo/env.fish` (rust) are dev-toolchain integrations outside the MVI's core tooling (fish/tmux/nvim/Claude Code); they belong to future per-toolchain Modules that provide those tools through Nix rather than sourcing an impure env file.
|
||||
- **`hw` (`hwinfo --short`) and `tb` (`nc termbin.com 9999`) dropped.** These are generic rather than pacman-specific, but each needs an extra package (`hwinfo`, a `netcat`) that the minimal install does not otherwise pull in; left out of the MVI and easy to add later.
|
||||
- **`copy` kept verbatim** (including the upstream `trim-right` call) to preserve exact parity with the current shell.
|
||||
- **Verification.** The `neogaia` system toplevel builds (the spec's primary seam).
|
||||
The rendered `~/.config/fish/` was inspected in the build output: aliases, the three helper functions, the `fastfetch` greeting, the bat manpager, the `done` tuning vars, and the `conf.d/plugin-done.fish` + `conf.d/plugin-bang-bang.fish` plugin files are all present; `users.users.alexion.shell` resolves to `pkgs.fish`.
|
||||
|
||||
### Post-review adjustments
|
||||
|
||||
- **`defaultShell` option.** Setting fish as the login shell moved behind `modules.fish.defaultShell` (default `false`, gated with `mkIf`); `neogaia` opts in explicitly. Enabling the Module alone no longer changes the login shell.
|
||||
- **Abbreviation-first.** Every non-eza alias is now a `shellAbbr` (the eza `ls` family stays an alias), `preferAbbrs = true`, and `generateCompletions = true` is pinned rather than left to the upstream default.
|
||||
- **vi command-line editing.** `interactiveShellInit` sets `fish_key_bindings fish_vi_key_bindings`; the `bang-bang` plugin re-binds `!`/`$` in insert mode via its own `--on-variable fish_key_bindings` handler, so the switch keeps them working.
|
||||
- **Trimmed aliases.** Navigation capped at four dots (`.....`/`......` dropped); `psmem`, `psmem10`, `dir`, `vdir`, and `please` removed.
|
||||
- **Interactive init lives in a real fish file.** The Module lives at `modules/fish/fish.nix`; its `interactiveShellInit` is `builtins.readFile ./config.fish`, so the interactive init is written as one editable fish file (vi editing, `EDITOR`/`VISUAL`, the bat manpager, the done plugin tuning, and `~/.local/bin`/`~/.fish_profile`) that home-manager renders into `~/.config/fish/config.fish`. The file is small enough that splitting it into fragments was not worth the indirection; Nix inlines it at build time, so nothing of ours is autoloaded from a separate runtime file.
|
||||
- **`copy` stays a function file.** `functions/copy.fish` holds the non-trivial `copy` body, read into the `functions` option; fish autoloads function files lazily, so that is the idiomatic home for a function. Trivial one-liner functions stay inline in `fish.nix`.
|
||||
- The Auto-loader only collects `.nix`, so every `.fish` file under `modules/fish/` is inert to it.
|
||||
31
CLAUDE.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# dotfiles-nixos
|
||||
|
||||
One flake that builds every machine the user owns.
|
||||
The domain model (Host, Module, Skeleton, Auto-loader, Enable convention, overlays) lives in `.claude/CONTEXT.md`; the current deliverable's spec is `.claude/spec/laptop-mvi.md`.
|
||||
|
||||
## Conventions
|
||||
|
||||
- In-file comments describe only the current content and behaviour of the file they sit in.
|
||||
Do not write comments about history ("used to be X", "now moved here"), about how a value is consumed in other files, or that justify the choice against alternatives.
|
||||
Never reference agent-facing state (anything under `.claude/` or `CLAUDE.md`) from a code comment: that state is not part of understanding the code.
|
||||
A reader looking at only that file should find every comment accurate and self-contained.
|
||||
- Comments posted to Gitea (pull requests, issues, reviews) go out under the operator's account, so sign every one to make clear the author is the agent, not the operator.
|
||||
End the comment with a `— Claude` sign-off.
|
||||
(A dedicated bot account may replace this later; until then, the sign-off is the only marker.)
|
||||
|
||||
## Gotchas
|
||||
|
||||
- Nix on the dev host needs experimental features passed per-command.
|
||||
This repo is developed on `neogaia` while it still runs **CachyOS** (the migration target), where Nix is the distro package at `/usr/bin/nix` in multi-user daemon mode.
|
||||
The system `/etc/nix/nix.conf` does not enable flakes, so export `NIX_CONFIG="experimental-features = nix-command flakes"` (or pass `--extra-experimental-features 'nix-command flakes'`) for every command.
|
||||
- The dev user is a non-trusted daemon client (`nix store info` reports `Trusted: 0`).
|
||||
You cannot add substituters from the CLI, so rely on what the flake/config declares (e.g. the chaotic cache is wired by the chaotic module, not a CLI flag).
|
||||
Caveat that bites when a Host actually selects the CachyOS kernel: the substituters a `nix build` fetches from are the **daemon's** (`/etc/nix/nix.conf`), *not* the `nix.settings` of the config being built — those only govern the built system.
|
||||
This dev host's `/etc/nix/nix.conf` has no `substituters`/`trusted-substituters` lines, so building a toplevel whose `boot.kernelPackages` is `linuxPackages_cachyos` compiles the kernel (and rustc bootstrap, etc.) from source instead of hitting `nyx-cache`.
|
||||
To build such a Host here, first add `extra-substituters = https://nyx-cache.chaotic.cx/` and `extra-trusted-public-keys = nyx-cache.chaotic.cx:dJxTrgMC3V3cFfyIiBQDQorG6k1LsqurH/srpMSq7qk=` to `/etc/nix/nix.conf` (sudo) and `sudo systemctl restart nix-daemon`.
|
||||
`nix eval` of the kernel version does *not* trigger this — only a real build does.
|
||||
- If `/nix/store` is missing or `nix-daemon` is inactive after a fresh Nix install, initialise it with `sudo systemd-tmpfiles --create nix-daemon.conf && sudo systemctl enable --now nix-daemon.socket`.
|
||||
- The primary build/verify seam for any Host is `nix flake check`, which builds `checks.x86_64-linux.<host>` (the system toplevel); cheap targeted checks use `nix eval .#nixosConfigurations.<host>.config...`.
|
||||
- chaotic-nyx must **not** follow our `nixpkgs`, and its packages are built against chaotic's own pinned nixpkgs (its overlay defaults to `onTopOf = "flake-nixpkgs"`, the cache-friendly path).
|
||||
That is what lets the `nyx-cache.chaotic.cx` binary cache hit instead of compiling the CachyOS kernel from source; the tradeoff is that chaotic packages do not see our `unstable`/`stable` overlays.
|
||||
- The remote is self-hosted Gitea (`git.alexion.dev`); the forge CLI is `tea` (login `axi`), and `gh` is not installed.
|
||||
176
flake.lock
generated
Normal file
@@ -0,0 +1,176 @@
|
||||
{
|
||||
"nodes": {
|
||||
"chaotic": {
|
||||
"inputs": {
|
||||
"flake-schemas": "flake-schemas",
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784318604,
|
||||
"narHash": "sha256-P/N5ZbGWITiTfmiWpE/1uyXdOCagpgw/YAZLZJSzx/I=",
|
||||
"owner": "chaotic-cx",
|
||||
"repo": "nyx",
|
||||
"rev": "21a8ef816f34558a438d778057a8809322ea2415",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "chaotic-cx",
|
||||
"ref": "nyxpkgs-unstable",
|
||||
"repo": "nyx",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781152676,
|
||||
"narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-schemas": {
|
||||
"locked": {
|
||||
"lastModified": 1780327564,
|
||||
"narHash": "sha256-HiRPtA0spK+Dkgbhz/1zW9glXxNVB+L4Rj2VYmdawb8=",
|
||||
"rev": "6cc9bd98891b1fc6bb2b8cb3277df8bc72799ca6",
|
||||
"revCount": 149,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.5.0/019e83cf-9af3-78b1-ac5b-70e68ad1efe1/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.5.0.tar.gz"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"chaotic",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784129366,
|
||||
"narHash": "sha256-N5JiyICSeQF14x+OQebNyPpYowOT9Rs1iKyeCylSzOA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "165228b0efefc3e635e5174020c40ea64271dc25",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784351324,
|
||||
"narHash": "sha256-By+kuRJZRqs2TuXgtR8vJ8cTKWXw33YG/Yollu5cO1U=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "460108009ca1ff69ca2ff19079ca2c838d6e3080",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1784120854,
|
||||
"narHash": "sha256-KesHgItiZPgGX740axSiQLcIQ8D24MDqNpkKYWIek8k=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "753cc8a3a87467296ddd1fa93f0cc3e81120ee46",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1784280462,
|
||||
"narHash": "sha256-DtoqIqM7VkR6NxAkcLpMwmi02USwWb3JdmNGLyhthc0=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "293d6abedf0478e681a4dfcfcb35b30fc796a32f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-26.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1784347607,
|
||||
"narHash": "sha256-VI5cdo27nEZ3m1SlgB8RvBbrqFUO2/dUgrrLWe407oA=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "31cd72fdba8fa052e437ce7e6879c4fe62def10f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1784120854,
|
||||
"narHash": "sha256-KesHgItiZPgGX740axSiQLcIQ8D24MDqNpkKYWIek8k=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "753cc8a3a87467296ddd1fa93f0cc3e81120ee46",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"chaotic": "chaotic",
|
||||
"disko": "disko",
|
||||
"home-manager": "home-manager_2",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
49
flake.nix
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
description = "Alexion's NixOS configuration — one flake for every Host";
|
||||
|
||||
inputs = {
|
||||
# Base channel: nixos-unstable (rolling, but gated by the NixOS test suite).
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
|
||||
# Fresher-than-base packages, reachable per-package as `unstable.<name>`.
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
|
||||
# Latest stable release, reachable per-package as `stable.<name>`.
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# Declarative disk partitioning. Each Host declares its own layout; a Host
|
||||
# that preserves an existing pool simply declares none.
|
||||
disko = {
|
||||
url = "github:nix-community/disko";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# CachyOS kernel + binary cache. Deliberately NOT following our nixpkgs, so the
|
||||
# chaotic cache stays usable and the kernel is fetched rather than compiled.
|
||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{ self, nixpkgs, ... }@inputs:
|
||||
let
|
||||
inherit (nixpkgs) lib;
|
||||
my = import ./lib { inherit lib inputs self; };
|
||||
in
|
||||
{
|
||||
# The trimmed helper lib: the Auto-loader, the host-builder, the script-from-file helper.
|
||||
lib = my;
|
||||
|
||||
# Every Host under hosts/ is auto-discovered and built.
|
||||
nixosConfigurations = my.mkHosts (self + "/hosts");
|
||||
|
||||
# `nix flake check` builds each Host's toplevel — the primary test seam.
|
||||
checks.x86_64-linux = lib.mapAttrs (
|
||||
_name: host: host.config.system.build.toplevel
|
||||
) self.nixosConfigurations;
|
||||
};
|
||||
}
|
||||
46
hosts/neogaia/default.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{ pkgs, ... }:
|
||||
# neogaia — Dell XPS 13 9380 laptop.
|
||||
#
|
||||
# The disk layout lives in ./disk.nix (disko); the resulting `fileSystems` are
|
||||
# derived from it, so none are declared by hand here.
|
||||
{
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
./disk.nix
|
||||
];
|
||||
|
||||
system.stateVersion = "26.05";
|
||||
|
||||
# systemd-boot on the EFI system partition disko creates. The initrd prompts
|
||||
# for the LUKS passphrase (disko wires up boot.initrd.luks.devices), so a
|
||||
# normal boot unlocks the encrypted root.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
# neogaia runs the CachyOS kernel, selected per-Host via boot.kernelPackages.
|
||||
boot.kernelPackages = pkgs.linuxPackages_cachyos;
|
||||
|
||||
# Intel CPU microcode updates for the XPS 13's Core i7-8565U.
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
|
||||
# Redistributable firmware — carries the ath10k blobs the QCA6174 wifi needs.
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
# Swap is RAM-backed zram rather than an on-disk partition.
|
||||
zramSwap.enable = true;
|
||||
|
||||
# NetworkManager drives the wifi so it can be joined from the console.
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# An SSH daemon so the rest of the setup can be driven over the network.
|
||||
services.openssh.enable = true;
|
||||
|
||||
# fish as the login shell.
|
||||
modules.fish.enable = true;
|
||||
modules.fish.defaultShell = true;
|
||||
|
||||
# Locale preferences for the base system.
|
||||
time.timeZone = "America/New_York";
|
||||
i18n.defaultLocale = "en_GB.UTF-8";
|
||||
console.keyMap = "us";
|
||||
}
|
||||
66
hosts/neogaia/disk.nix
Normal file
@@ -0,0 +1,66 @@
|
||||
{ ... }:
|
||||
# neogaia's disk layout, declared with disko and interpreted by the disko module
|
||||
# the host-builder wires in. This is a per-Host concern: another Host declares a
|
||||
# different `disko.devices` (or none, preserving an existing pool by importing it).
|
||||
#
|
||||
# One NVMe disk, GPT: an EFI system partition for systemd-boot, and a LUKS
|
||||
# container holding a btrfs filesystem with subvolumes. Swap is zram (RAM-backed),
|
||||
# so there is deliberately no on-disk swap partition. disko derives the matching
|
||||
# `fileSystems.*` and `boot.initrd.luks.devices.*` from this, so a normal boot
|
||||
# prompts for the passphrase in the initrd and unlocks the encrypted root.
|
||||
{
|
||||
disko.devices.disk.main = {
|
||||
type = "disk";
|
||||
device = "/dev/nvme0n1";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
size = "512M";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = [ "umask=0077" ];
|
||||
};
|
||||
};
|
||||
luks = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "luks";
|
||||
name = "cryptroot";
|
||||
settings.allowDiscards = true;
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = [ "-f" ];
|
||||
subvolumes = {
|
||||
"@root" = {
|
||||
mountpoint = "/";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
"@home" = {
|
||||
mountpoint = "/home";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
"@nix" = {
|
||||
mountpoint = "/nix";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
19
hosts/neogaia/hardware-configuration.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ lib, modulesPath, ... }:
|
||||
# Placeholder hardware profile for the XPS 13: the host platform and the initrd
|
||||
# modules the machine needs to evaluate and boot.
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
boot.initrd.availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"thunderbolt"
|
||||
"nvme"
|
||||
"usb_storage"
|
||||
"sd_mod"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
}
|
||||
84
lib/default.nix
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
lib,
|
||||
inputs,
|
||||
self,
|
||||
}:
|
||||
let
|
||||
inherit (lib)
|
||||
attrNames
|
||||
filterAttrs
|
||||
genAttrs
|
||||
flatten
|
||||
hasSuffix
|
||||
mapAttrsToList
|
||||
;
|
||||
|
||||
# --- Auto-loader ---------------------------------------------------------
|
||||
# Recursively collect every `.nix` file under `dir`, returned as a flat list
|
||||
# of paths suitable for a module `imports`: a directory recurses, a `.nix`
|
||||
# file is taken, anything else is skipped.
|
||||
collectNixFiles =
|
||||
dir:
|
||||
flatten (
|
||||
mapAttrsToList (
|
||||
name: type:
|
||||
let
|
||||
path = dir + "/${name}";
|
||||
in
|
||||
if type == "directory" then
|
||||
collectNixFiles path
|
||||
else if type == "regular" && hasSuffix ".nix" name then
|
||||
[ path ]
|
||||
else
|
||||
[ ]
|
||||
) (builtins.readDir dir)
|
||||
);
|
||||
|
||||
# --- Host-builder --------------------------------------------------------
|
||||
# Build one Host: every Module is imported unconditionally (inert until its
|
||||
# `enable` flag is set), alongside home-manager, chaotic, the shared base,
|
||||
# and the Host's own directory.
|
||||
mkHost =
|
||||
{
|
||||
hostName,
|
||||
system ? "x86_64-linux",
|
||||
}:
|
||||
inputs.nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
my = self.lib;
|
||||
};
|
||||
modules =
|
||||
(collectNixFiles (self + "/modules"))
|
||||
++ [
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.chaotic.nixosModules.default
|
||||
inputs.disko.nixosModules.disko
|
||||
(self + "/system")
|
||||
(self + "/hosts/${hostName}")
|
||||
{ networking.hostName = hostName; }
|
||||
];
|
||||
};
|
||||
|
||||
# Discover every Host (a subdirectory of `hostsDir`) and build each one.
|
||||
mkHosts =
|
||||
hostsDir:
|
||||
let
|
||||
hostNames = attrNames (filterAttrs (_name: type: type == "directory") (builtins.readDir hostsDir));
|
||||
in
|
||||
genAttrs hostNames (hostName: mkHost { inherit hostName; });
|
||||
|
||||
# --- Script-from-file helper --------------------------------------------
|
||||
# Turn a standalone script file into a package on PATH, keeping the script
|
||||
# itself editable as a real file rather than an inlined heredoc.
|
||||
scriptFromFile = pkgs: name: path: pkgs.writeShellScriptBin name (builtins.readFile path);
|
||||
in
|
||||
{
|
||||
inherit
|
||||
collectNixFiles
|
||||
mkHost
|
||||
mkHosts
|
||||
scriptFromFile
|
||||
;
|
||||
}
|
||||
14
modules/example.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{ config, lib, ... }:
|
||||
# The Auto-loader reference example. Every real Module copies this shape: it is
|
||||
# imported unconditionally but its body stays inert until a Host sets the
|
||||
# `enable` flag, so each Host reads as a checklist of `enable = true` lines.
|
||||
let
|
||||
cfg = config.modules.example;
|
||||
in
|
||||
{
|
||||
options.modules.example.enable = lib.mkEnableOption "the Auto-loader reference example Module";
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.etc."skeleton-example".text = "This Module is enabled.\n";
|
||||
};
|
||||
}
|
||||
23
modules/fish/config.fish
Normal file
@@ -0,0 +1,23 @@
|
||||
# vi-style modal editing on the command line.
|
||||
set -g fish_key_bindings fish_vi_key_bindings
|
||||
|
||||
set -gx EDITOR nvim
|
||||
set -gx VISUAL nvim
|
||||
|
||||
# Render man pages through bat.
|
||||
set -x MANROFFOPT "-c"
|
||||
set -x MANPAGER "sh -c 'col -bx | bat -l man -p'"
|
||||
|
||||
# Tune the done plugin: only notify for commands past 10s, at low urgency.
|
||||
set -g __done_min_cmd_duration 10000
|
||||
set -g __done_notification_urgency_level low
|
||||
|
||||
# Prepend ~/.local/bin to PATH when it exists.
|
||||
if test -d ~/.local/bin
|
||||
fish_add_path ~/.local/bin
|
||||
end
|
||||
|
||||
# Apply fish-compatible profile overrides if present.
|
||||
if test -f ~/.fish_profile
|
||||
source ~/.fish_profile
|
||||
end
|
||||
123
modules/fish/fish.nix
Normal file
@@ -0,0 +1,123 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
# fish for the primary user, configured natively through home-manager. Wires the
|
||||
# done and bang-bang plugins, a fastfetch greeting, a bat-backed manpager, helper
|
||||
# functions, the eza aliases, and vi-style command-line editing. Set fish as the
|
||||
# default login shell by also turning on `modules.fish.defaultShell`.
|
||||
let
|
||||
cfg = config.modules.fish;
|
||||
user = config.user.name;
|
||||
in
|
||||
{
|
||||
options.modules.fish = {
|
||||
enable = lib.mkEnableOption "fish as the user's shell, configured via home-manager";
|
||||
|
||||
defaultShell = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Set fish as the user's default login shell.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# System-level fish: registers it in /etc/shells and installs vendor
|
||||
# completions.
|
||||
programs.fish.enable = true;
|
||||
users.users.${user}.shell = lib.mkIf cfg.defaultShell pkgs.fish;
|
||||
|
||||
home-manager.users.${user} = {
|
||||
home.packages = with pkgs; [
|
||||
eza # modern ls with git awareness and icons; backs the ls aliases
|
||||
bat # syntax-highlighting cat/pager; backs the manpager below
|
||||
fastfetch # system-info banner printed as the shell greeting
|
||||
wget # non-interactive HTTP downloader; backs the wget abbreviation
|
||||
];
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
# Relied-on upstream defaults, pinned so a future change can't silently
|
||||
# alter behaviour.
|
||||
generateCompletions = true;
|
||||
|
||||
# Prefer abbreviations over aliases when other modules wire up fish
|
||||
# shortcuts, matching the abbreviation-first style below.
|
||||
preferAbbrs = true;
|
||||
|
||||
plugins = [
|
||||
# Notify when a long command finishes.
|
||||
{
|
||||
name = "done";
|
||||
src = pkgs.fishPlugins.done.src;
|
||||
}
|
||||
# Restore the !! and !$ history bindings.
|
||||
{
|
||||
name = "bang-bang";
|
||||
src = pkgs.fishPlugins.bang-bang.src;
|
||||
}
|
||||
];
|
||||
|
||||
shellAliases = {
|
||||
ls = "eza -al --color=always --group-directories-first --icons";
|
||||
la = "eza -a --color=always --group-directories-first --icons";
|
||||
ll = "eza -l --color=always --group-directories-first --icons";
|
||||
lt = "eza -aT --color=always --group-directories-first --icons";
|
||||
"l." = "eza -a | grep -e '^\\.'";
|
||||
};
|
||||
|
||||
shellAbbrs = {
|
||||
# Walk up the tree.
|
||||
".." = "cd ..";
|
||||
"..." = "cd ../..";
|
||||
"...." = "cd ../../..";
|
||||
|
||||
vi = "nvim";
|
||||
vim = "nvim";
|
||||
cp = "cp -v";
|
||||
tmx = "tmux new-session -A -s";
|
||||
|
||||
tarnow = "tar -acf ";
|
||||
untar = "tar -zxvf ";
|
||||
wget = "wget -c ";
|
||||
grep = "grep --color=auto";
|
||||
fgrep = "fgrep --color=auto";
|
||||
egrep = "egrep --color=auto";
|
||||
jctl = "journalctl -p 3 -xb";
|
||||
|
||||
# Rebuild the system, and reclaim disk from old generations.
|
||||
update = "sudo nixos-rebuild switch";
|
||||
cleanup = "sudo nix-collect-garbage -d";
|
||||
};
|
||||
|
||||
functions = {
|
||||
# Run fastfetch as the welcome message.
|
||||
fish_greeting = "fastfetch";
|
||||
|
||||
history = {
|
||||
description = "Show command history with timestamps";
|
||||
body = "builtin history --show-time='%F %T '";
|
||||
};
|
||||
|
||||
backup = {
|
||||
description = "Copy <file> to <file>.bak";
|
||||
argumentNames = "filename";
|
||||
body = "cp $filename $filename.bak";
|
||||
};
|
||||
|
||||
copy = {
|
||||
description = "Copy a file, or recursively copy a source directory into a destination";
|
||||
body = builtins.readFile ./functions/copy.fish;
|
||||
};
|
||||
};
|
||||
|
||||
# Read from a real fish file, which home-manager renders into
|
||||
# ~/.config/fish/config.fish.
|
||||
interactiveShellInit = builtins.readFile ./config.fish;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
8
modules/fish/functions/copy.fish
Normal file
@@ -0,0 +1,8 @@
|
||||
set count (count $argv | tr -d \n)
|
||||
if test "$count" = 2; and test -d "$argv[1]"
|
||||
set from (echo $argv[1] | trim-right /)
|
||||
set to (echo $argv[2])
|
||||
command cp -r $from $to
|
||||
else
|
||||
command cp $argv
|
||||
end
|
||||
89
reference/ENVIRONMENT.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# Current environment profile — `neogaia` (CachyOS)
|
||||
|
||||
A reconstruction of the live CachyOS environment on the laptop, captured before the NixOS migration.
|
||||
This exists to define what "replicate as closely as possible" concretely means, and to feed the desktop-environment grill branch later.
|
||||
It is descriptive, not a plan — nothing here is a decision.
|
||||
|
||||
Source: the snapshot under `reference/home/`, plus `pacman -Qqett` (167 explicit top-level packages; no AUR, no Flatpaks).
|
||||
|
||||
## In one line
|
||||
|
||||
KDE Plasma 6 on Wayland, hand-configured to behave like an i3-style keyboard-driven tiling setup, wrapped around a tightly-integrated Alacritty + tmux + Neovim terminal workflow themed in Nord.
|
||||
|
||||
## Desktop environment & workflow
|
||||
|
||||
- **Plasma 6 on Wayland** (Plasma-6 migration markers, Xwayland scaling, powerdevil-6, SDDM via `plasma-login-manager`).
|
||||
- Configured as a **tiling, keyboard-driven WM**:
|
||||
- **9 virtual desktops**; **`Meta+1…9`** switch, **`Meta+Shift+1…9`** send-window (both custom — not Plasma defaults).
|
||||
- **KWin built-in tiling** on every desktop, **0.25 / 0.5 / 0.25** columns; `Meta+T` tile editor.
|
||||
- **`Meta+Shift+Q`** close window (i3 muscle memory).
|
||||
- Quick-tile `Meta+arrows`; overview `Meta+W`; grid `Meta+G`; peek desktop `Meta+D`.
|
||||
- **`Caps Lock → Escape`** (`caps:escape_shifted_capslock`).
|
||||
- Fast animations (`AnimationDurationFactor=0.25`); touchpad clickfinger.
|
||||
|
||||
This is effectively *Plasma-as-a-tiling-WM*.
|
||||
The future desktop branch therefore forks between **Plasma 6 + this exact config** and a **dedicated Wayland tiler** (Hyprland / niri / sway) reproducing the same i3-like behaviour.
|
||||
|
||||
## Terminal workflow (the core)
|
||||
|
||||
One integrated, SSH-friendly, keyboard-only system:
|
||||
|
||||
- **Alacritty** — MesloLGS Nerd Font Mono 12, opacity 0.8, Nord palette, save-to-clipboard, middle-click paste.
|
||||
- **tmux** — `Ctrl-Space` prefix, vi mode, **OSC52** clipboard, Nord status bar, no plugins.
|
||||
- **Neovim** — lazy.nvim; leader Space; **OSC52** clipboard; relativenumber; 2-space expandtab; undofile; smartcase; plugins: snacks picker, oil, neogit/gitsigns/diffview, which-key, treesitter, render-markdown, `nord.nvim`.
|
||||
- Shared idioms: **`Ctrl+hjkl`** navigation across tmux panes and nvim splits; OSC52 everywhere (no `wl-copy`/`xclip`, survives SSH).
|
||||
|
||||
## Theming & fonts (not unified — a replication decision point)
|
||||
|
||||
- **DE chrome:** Breeze **Dark** — Qt + GTK (`Breeze`, prefer-dark) + `breeze-dark` icons + `breeze_cursors`.
|
||||
- **Terminals/editor:** **Nord**.
|
||||
- **micro:** catppuccin-macchiato (a third theme).
|
||||
- **Installed but inactive:** `cachyos-nord-kde-theme-git` — a Nord Plasma theme is already available, so unifying the DE onto Nord is plausible.
|
||||
- **Fonts:** UI Noto Sans 14; KDE mono Hack 14; terminal mono MesloLGS Nerd Font Mono. 96 DPI, 1× scale, slight hinting, antialias on, subpixel none.
|
||||
|
||||
## Home layout & environment
|
||||
|
||||
- Custom short XDG dirs: `~/dwn ~/doc ~/mus ~/pic ~/vid ~/wrk`; desktop hidden at `~/.desktop`; templates/public → `~/.ignoreme`.
|
||||
- `EDITOR=nvim`; aliases `vi/vim→nvim`, `tmx=tmux new-session -A -s`, `cp -v`.
|
||||
- git identity: **alexion / contact@alexion.dev**.
|
||||
|
||||
## Toolchains (currently impure — likely "exceptions" on NixOS)
|
||||
|
||||
- **Rust** via rustup (`~/.cargo`), **bun** (`~/.bun`), **Node** via a manual `~/.local/opt` unpack, **Android SDK** (`~/Android/Sdk`) on PATH.
|
||||
- On NixOS these want a decision: Nix-native (nixpkgs / fenix / oxalica / etc.) vs. keeping the imperative installers.
|
||||
|
||||
## Package inventory (categorised, meaningful subset)
|
||||
|
||||
**Terminal / shell / editor:** alacritty, neovim, kate, micro, fish, zsh, claude-code, tea (Gitea CLI), meld.
|
||||
**Browser:** firefox.
|
||||
**Dev / infra:** docker, vscodium, base-devel, whisper-cpp-vulkan (backs the open-whispr dictation app).
|
||||
**KDE apps:** dolphin, ark, kcalc, konsole, gwenview, haruna (mpv-based video), filelight, spectacle (screenshots), kdeconnect, kwalletmanager, partitionmanager, kinfocenter, plasma-systemmonitor, kscreen.
|
||||
**Media codecs:** vlc-plugins-all, gst-plugins-{bad,ugly,va,pipewire}, gst-libav, libdvdcss, ffmpegthumbs.
|
||||
**Fonts:** ttf-meslo-nerd, ttf-opensans, cantarell-fonts, noto-fonts-cjk, gsfonts, awesome-terminal-fonts.
|
||||
**Networking:** networkmanager-openvpn, plasma-nm, wireguard-tools, nfs-utils, iwd, dnsmasq, bind.
|
||||
**Hardware / firmware:** intel-ucode, intel-media-sdk, linux-firmware, sof-firmware, alsa-*, bluez-* + bluedevil, fwupd, cpupower, power-profiles-daemon, realtime-privileges.
|
||||
**Filesystem / snapshots:** btrfs-assistant, snapper (`cachyos-snapper-support`), limine-snapper-sync, plus a broad set of fs tools (f2fs/xfs/jfs/nilfs/exfat/lvm2/dmraid) shipped by CachyOS.
|
||||
**Printing:** cups-pdf, gutenprint, foomatic-db*, system-config-printer (full stack — verify it's actually used).
|
||||
**CLI utils:** btop, glances, duf, tree, plocate, rsync, wget, unzip/unrar, pv, hwinfo.
|
||||
**CachyOS-specific (won't port; NixOS equivalents or drop):** cachyos-* (settings, hooks, mirrorlists, kernel-manager, fish/zsh/micro configs, KDE themes, plymouth, wallpapers), cachy-update, shelly, reflector, rebuild-detector.
|
||||
|
||||
## Notable current features to consider replicating
|
||||
|
||||
- **btrfs + snapper snapshots** integrated into the boot menu (via Limine + `limine-snapper-sync`). On NixOS the analogue is generations (built-in) plus optionally snapper/btrbk for data snapshots — a future decision, not MVI.
|
||||
- **KDE Connect** (phone integration), **Bluetooth** (bluedevil), **WireGuard** tooling, **Docker**, **KWallet** (PAM-unlocked).
|
||||
- **Printing stack** fully installed.
|
||||
- **fwupd** firmware updates.
|
||||
|
||||
## Explicitly absent (don't assume from the old NixOS repo)
|
||||
|
||||
- **No gaming** — no Steam / Lutris / Wine / Proton on this laptop (the old repo's `neogaia` had Steam; current reality does not). Gaming is a desktop (`zeus`) concern.
|
||||
- **No Discord / Spotify / Slack** currently installed.
|
||||
- **No emulation** stack (the old repo's retroarch/3ds/ps2 are not present here).
|
||||
|
||||
## Open replication decisions this surfaces (for later grilling)
|
||||
|
||||
1. **Plasma 6 Wayland (replicate config)** vs. **dedicated Wayland tiler** (Hyprland/niri/sway).
|
||||
2. **Theme:** keep Breeze-Dark-DE + Nord-terminals as-is, or unify on Nord (Stylix)?
|
||||
3. **Toolchains:** Nix-native Rust/Node/bun/Android vs. keep imperative.
|
||||
4. **btrfs snapshots:** snapper/btrbk on NixOS, or rely on generations alone?
|
||||
5. **Which apps are actually wanted** on the laptop vs. artefacts of the CachyOS default install (printing, the broad fs-tools set, etc.).
|
||||
28
reference/README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# reference/
|
||||
|
||||
A frozen snapshot of the live CachyOS environment on `neogaia`, captured before the NixOS migration.
|
||||
|
||||
This is a **read-only reference**, not part of the flake.
|
||||
Nothing here is imported or built — it exists so the NixOS rebuild can be diffed against the environment it replaces.
|
||||
Files mirror their real home paths under `home/` (e.g. `home/.config/nvim/` was `~/.config/nvim/`).
|
||||
|
||||
## What's here
|
||||
|
||||
- **Terminal / shell / editor:** alacritty, fish (minus `fish_variables`), tmux, nvim, micro (`settings.json` + colorschemes only).
|
||||
- **Shell RCs:** bash and zsh rc/profile files, `.profile`.
|
||||
- **KDE Plasma (curated):** the meaningful config (`kdeglobals`, `kwinrc`, `kglobalshortcutsrc`, `kxkbrc`, `kcminputrc`, panel applets, konsole, dolphin, spectacle, power management, monitor layout) — pure runtime state was skipped.
|
||||
- **Theming / fonts:** gtk-3.0, gtk-4.0, gtkrc-2.0, fontconfig, xsettingsd, Qt config.
|
||||
- **Misc:** `mimeapps.list`, `user-dirs.dirs`, `shelly/config.json`, `.gitconfig`, `.gitignore`.
|
||||
|
||||
## What was deliberately excluded
|
||||
|
||||
- **Secrets / keys:** `.ssh`, `.claude*`, `tea` (Gitea token), `kdeconnect` (device keys), `libaccounts-glib`, `kwalletrc`, `.pki`.
|
||||
- **Browser data:** mozilla profiles.
|
||||
- **Electron app state:** open-whispr (230M, contained a `.env` and encrypted keys), obsidian (per-vault config lives in each vault), VSCodium (no user `settings.json` existed — only default state).
|
||||
- **Caches / runtime state:** `.cache`, `.npm`, `.cargo`, `.rustup`, `.local`, `.var`, dconf, pulse, micro's shipped `syntax/` defs, `*.bak`.
|
||||
|
||||
## Known cleanups the rebuild must apply
|
||||
|
||||
- fish `config.fish` sources CachyOS-only `cachyos-config.fish`, and hardcodes impure `~/.bun` / `~/.local/opt/node` PATHs.
|
||||
- fish aliases include Arch/pacman-specific entries that don't apply on NixOS.
|
||||
- The KDE and Arch package-manager (`shelly`) configs are environment-specific and only partially relevant.
|
||||
3
reference/home/.bash_logout
Normal file
@@ -0,0 +1,3 @@
|
||||
#
|
||||
# ~/.bash_logout
|
||||
#
|
||||
6
reference/home/.bash_profile
Normal file
@@ -0,0 +1,6 @@
|
||||
#
|
||||
# ~/.bash_profile
|
||||
#
|
||||
|
||||
[[ -f ~/.bashrc ]] && . ~/.bashrc
|
||||
. "$HOME/.cargo/env"
|
||||
11
reference/home/.bashrc
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# ~/.bashrc
|
||||
#
|
||||
|
||||
# If not running interactively, don't do anything
|
||||
[[ $- != *i* ]] && return
|
||||
|
||||
alias ls='ls --color=auto'
|
||||
alias grep='grep --color=auto'
|
||||
PS1='[\u@\h \W]\$ '
|
||||
. "$HOME/.cargo/env"
|
||||
5
reference/home/.config/QtProject.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
[FileDialog]
|
||||
history=@Invalid()
|
||||
lastVisited=file:///home/alexion/doc/notes/
|
||||
qtVersion=6.11.1
|
||||
viewMode=Detail
|
||||
17
reference/home/.config/Trolltech.conf
Normal file
@@ -0,0 +1,17 @@
|
||||
[qt]
|
||||
GUIEffects=none
|
||||
KDE\contrast=4
|
||||
KWinPalette\activeBackground=#272c31
|
||||
KWinPalette\activeBlend=#fcfcfc
|
||||
KWinPalette\activeForeground=#fcfcfc
|
||||
KWinPalette\activeTitleBtnBg=#202326
|
||||
KWinPalette\frame=#202326
|
||||
KWinPalette\inactiveBackground=#202428
|
||||
KWinPalette\inactiveBlend=#a1a9b1
|
||||
KWinPalette\inactiveForeground=#a1a9b1
|
||||
KWinPalette\inactiveFrame=#202326
|
||||
KWinPalette\inactiveTitleBtnBg=#202326
|
||||
Palette\active=#fcfcfc, #292c30, #393e43, #2e3337, #131516, #1c1f21, #fcfcfc, #ffffff, #fcfcfc, #141618, #202326, #0e0f10, #3daee9, #fcfcfc, #1d99f3, #9b59b6, #1d1f22, #000000, #292c30, #fcfcfc, #a1a9b1, #3daee9
|
||||
Palette\disabled=#686a6c, #272a2e, #383d42, #2d3136, #121415, #1b1d20, #606263, #ffffff, #6d6f72, #131517, #1f2124, #0d0e0f, #1f2124, #686a6c, #164160, #402b4c, #1c1e20, #000000, #292c30, #fcfcfc, #42464a, #1f2124
|
||||
Palette\inactive=#fcfcfc, #292c30, #393e43, #2e3337, #131516, #1c1f21, #fcfcfc, #ffffff, #fcfcfc, #141618, #202326, #0e0f10, #1b4155, #fcfcfc, #1d99f3, #9b59b6, #1d1f22, #000000, #292c30, #fcfcfc, #a1a9b1, #1b4155
|
||||
font="Noto Sans,14,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0"
|
||||
88
reference/home/.config/alacritty/alacritty.toml
Normal file
@@ -0,0 +1,88 @@
|
||||
[general]
|
||||
working_directory = "None"
|
||||
live_config_reload = true
|
||||
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
WINIT_X11_SCALE_FACTOR = "1.0"
|
||||
|
||||
[window]
|
||||
dimensions = { columns = 100, lines = 30 }
|
||||
dynamic_padding = true
|
||||
decorations = "Full"
|
||||
opacity = 0.8
|
||||
title = "Alacritty@CachyOS"
|
||||
class = { instance = "Alacritty", general = "Alacritty" }
|
||||
decorations_theme_variant = "Dark"
|
||||
|
||||
[scrolling]
|
||||
history = 10000
|
||||
multiplier = 3
|
||||
|
||||
[font]
|
||||
normal = { family = "MesloLGS Nerd Font Mono", style = "Regular" }
|
||||
bold = { family = "MesloLGS Nerd Font Mono", style = "Bold" }
|
||||
italic = { family = "MesloLGS Nerd Font Mono", style = "Italic" }
|
||||
bold_italic = { family = "MesloLGS Nerd Font Mono", style = "Bold Italic" }
|
||||
size = 12.0
|
||||
|
||||
[colors]
|
||||
draw_bold_text_with_bright_colors = true
|
||||
|
||||
[colors.primary]
|
||||
background = "0x2E3440"
|
||||
foreground = "0xD8DEE9"
|
||||
|
||||
[colors.normal]
|
||||
black = "0x3B4252"
|
||||
red = "0xBF616A"
|
||||
green = "0xA3BE8C"
|
||||
yellow = "0xEBCB8B"
|
||||
blue = "0x81A1C1"
|
||||
magenta = "0xB48EAD"
|
||||
cyan = "0x88C0D0"
|
||||
white = "0xE5E9F0"
|
||||
|
||||
[colors.bright]
|
||||
black = "0x4C566A"
|
||||
red = "0xBF616A"
|
||||
green = "0xA3BE8C"
|
||||
yellow = "0xEBCB8B"
|
||||
blue = "0x81A1C1"
|
||||
magenta = "0xB48EAD"
|
||||
cyan = "0x8FBCBB"
|
||||
white = "0xECEFF4"
|
||||
|
||||
[selection]
|
||||
semantic_escape_chars = ",│`|:\"' ()[]{}<>\t"
|
||||
save_to_clipboard = true
|
||||
|
||||
[cursor]
|
||||
style = { shape = "Underline", blinking = "Off" }
|
||||
unfocused_hollow = true
|
||||
thickness = 0.15
|
||||
|
||||
[mouse]
|
||||
hide_when_typing = true
|
||||
bindings = [
|
||||
{ mouse = "Middle", mods = "None", action = "PasteSelection" },
|
||||
]
|
||||
|
||||
[keyboard]
|
||||
bindings = [
|
||||
{ key = "Paste", mods = "None", action = "Paste" },
|
||||
{ key = "Copy", mods = "None", action = "Copy" },
|
||||
{ key = "L", mods = "Control", action = "ClearLogNotice" },
|
||||
{ key = "L", mods = "Control", mode = "~Vi", chars = "\f" },
|
||||
{ key = "PageUp", mods = "Shift", mode = "~Alt", action = "ScrollPageUp" },
|
||||
{ key = "PageDown", mods = "Shift", mode = "~Alt", action = "ScrollPageDown" },
|
||||
{ key = "Home", mods = "Shift", mode = "~Alt", action = "ScrollToTop" },
|
||||
{ key = "End", mods = "Shift", mode = "~Alt", action = "ScrollToBottom" },
|
||||
{ key = "V", mods = "Control|Shift", action = "Paste" },
|
||||
{ key = "C", mods = "Control|Shift", action = "Copy" },
|
||||
{ key = "F", mods = "Control|Shift", action = "SearchForward" },
|
||||
{ key = "B", mods = "Control|Shift", action = "SearchBackward" },
|
||||
{ key = "C", mods = "Control|Shift", mode = "Vi", action = "ClearSelection" },
|
||||
{ key = "Key0", mods = "Control", action = "ResetFontSize" },
|
||||
]
|
||||
|
||||
10
reference/home/.config/dolphinrc
Normal file
@@ -0,0 +1,10 @@
|
||||
[General]
|
||||
Version=202
|
||||
ViewPropsTimestamp=2026,7,3,19,16,13.691
|
||||
|
||||
[KFileDialog Settings]
|
||||
Places Icons Auto-resize=false
|
||||
Places Icons Static Size=22
|
||||
|
||||
[MainWindow]
|
||||
MenuBar=Disabled
|
||||
196
reference/home/.config/fish/completions/bun.fish
Normal file
@@ -0,0 +1,196 @@
|
||||
# This is terribly complicated
|
||||
# It's because:
|
||||
# 1. bun run has to have dynamic completions
|
||||
# 2. there are global options
|
||||
# 3. bun {install add remove} gets special options
|
||||
# 4. I don't know how to write fish completions well
|
||||
# Contributions very welcome!!
|
||||
|
||||
function __fish__get_bun_bins
|
||||
string split ' ' (bun getcompletes b)
|
||||
end
|
||||
|
||||
function __fish__get_bun_scripts
|
||||
set -lx SHELL bash
|
||||
set -lx MAX_DESCRIPTION_LEN 40
|
||||
string trim (string split '\n' (string split '\t' (bun getcompletes z)))
|
||||
end
|
||||
|
||||
function __fish__get_bun_packages
|
||||
if test (commandline -ct) != ""
|
||||
set -lx SHELL fish
|
||||
string split ' ' (bun getcompletes a (commandline -ct))
|
||||
end
|
||||
end
|
||||
|
||||
function __history_completions
|
||||
set -l tokens (commandline --current-process --tokenize)
|
||||
history --prefix (commandline) | string replace -r \^$tokens[1]\\s\* "" | string replace -r \^$tokens[2]\\s\* "" | string split ' '
|
||||
end
|
||||
|
||||
function __fish__get_bun_bun_js_files
|
||||
string split ' ' (bun getcompletes j)
|
||||
end
|
||||
|
||||
set -l bun_install_boolean_flags yarn production optional development no-save dry-run force no-cache silent verbose global
|
||||
set -l bun_install_boolean_flags_descriptions "Write a yarn.lock file (yarn v1)" "Don't install devDependencies" "Add dependency to optionalDependencies" "Add dependency to devDependencies" "Don't update package.json or save a lockfile" "Don't install anything" "Always request the latest versions from the registry & reinstall all dependencies" "Ignore manifest cache entirely" "Don't output anything" "Excessively verbose logging" "Use global folder"
|
||||
|
||||
set -l bun_builtin_cmds_without_run dev create help bun upgrade discord install remove add update init pm x repl
|
||||
set -l bun_builtin_cmds_accepting_flags create help bun upgrade discord run init link unlink pm x update
|
||||
|
||||
function __bun_complete_bins_scripts --inherit-variable bun_builtin_cmds_without_run -d "Emit bun completions for bins and scripts"
|
||||
# Do nothing if we already have a builtin subcommand,
|
||||
# or any subcommand other than "run".
|
||||
if __fish_seen_subcommand_from $bun_builtin_cmds_without_run
|
||||
or not __fish_use_subcommand && not __fish_seen_subcommand_from run
|
||||
return
|
||||
end
|
||||
# Do we already have a bin or script subcommand?
|
||||
set -l bins (__fish__get_bun_bins)
|
||||
if __fish_seen_subcommand_from $bins
|
||||
return
|
||||
end
|
||||
# Scripts have descriptions appended with a tab separator.
|
||||
# Strip off descriptions for the purposes of subcommand testing.
|
||||
set -l scripts (__fish__get_bun_scripts)
|
||||
if __fish_seen_subcommand_from (string split \t -f 1 -- $scripts)
|
||||
return
|
||||
end
|
||||
# Emit scripts.
|
||||
for script in $scripts
|
||||
echo $script
|
||||
end
|
||||
# Emit binaries and JS files (but only if we're doing `bun run`).
|
||||
if __fish_seen_subcommand_from run
|
||||
for bin in $bins
|
||||
echo "$bin"\t"package bin"
|
||||
end
|
||||
for file in (__fish__get_bun_bun_js_files)
|
||||
echo "$file"\t"Bun.js"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Clear existing completions
|
||||
complete -e -c bun
|
||||
|
||||
# Dynamically emit scripts and binaries
|
||||
complete -c bun -f -a "(__bun_complete_bins_scripts)"
|
||||
|
||||
# Complete flags if we have no subcommand or a flag-friendly one.
|
||||
set -l flag_applies "__fish_use_subcommand; or __fish_seen_subcommand_from $bun_builtin_cmds_accepting_flags"
|
||||
complete -c bun \
|
||||
-n $flag_applies --no-files -s 'u' -l 'origin' -r -d 'Server URL. Rewrites import paths'
|
||||
complete -c bun \
|
||||
-n $flag_applies --no-files -s 'p' -l 'port' -r -d 'Port number to start server from'
|
||||
complete -c bun \
|
||||
-n $flag_applies --no-files -s 'd' -l 'define' -r -d 'Substitute K:V while parsing, e.g. --define process.env.NODE_ENV:\"development\"'
|
||||
complete -c bun \
|
||||
-n $flag_applies --no-files -s 'e' -l 'external' -r -d 'Exclude module from transpilation (can use * wildcards). ex: -e react'
|
||||
complete -c bun \
|
||||
-n $flag_applies --no-files -l 'use' -r -d 'Use a framework (ex: next)'
|
||||
complete -c bun \
|
||||
-n $flag_applies --no-files -l 'hot' -r -d 'Enable hot reloading in Bun\'s JavaScript runtime'
|
||||
|
||||
# Complete dev and create as first subcommand.
|
||||
complete -c bun \
|
||||
-n "__fish_use_subcommand" -a 'dev' -d 'Start dev server'
|
||||
complete -c bun \
|
||||
-n "__fish_use_subcommand" -a 'create' -f -d 'Create a new project from a template'
|
||||
|
||||
# Complete "next" and "react" if we've seen "create".
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from create" -a 'next' -d 'new Next.js project'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from create" -a 'react' -d 'new React project'
|
||||
|
||||
# Complete "upgrade" as first subcommand.
|
||||
complete -c bun \
|
||||
-n "__fish_use_subcommand" -a 'upgrade' -d 'Upgrade bun to the latest version' -x
|
||||
# Complete "-h/--help" unconditionally.
|
||||
complete -c bun \
|
||||
-s "h" -l "help" -d 'See all commands and flags' -x
|
||||
|
||||
# Complete "-v/--version" if we have no subcommand.
|
||||
complete -c bun \
|
||||
-n "not __fish_use_subcommand" -l "version" -s "v" -d 'Bun\'s version' -x
|
||||
|
||||
# Complete additional subcommands.
|
||||
complete -c bun \
|
||||
-n "__fish_use_subcommand" -a 'discord' -d 'Open bun\'s Discord server' -x
|
||||
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_use_subcommand" -a 'bun' -d 'Generate a new bundle'
|
||||
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from bun" -F -d 'Bundle this'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from react next" -F -d "Create in directory"
|
||||
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_use_subcommand" -a 'init' -F -d 'Start an empty Bun project'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_use_subcommand" -a 'install' -f -d 'Install packages from package.json'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_use_subcommand" -a 'add' -F -d 'Add a package to package.json'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_use_subcommand" -a 'remove' -F -d 'Remove a package from package.json'
|
||||
|
||||
|
||||
for i in (seq (count $bun_install_boolean_flags))
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from install add remove update" -l "$bun_install_boolean_flags[$i]" -d "$bun_install_boolean_flags_descriptions[$i]"
|
||||
end
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from install add remove update" -l 'cwd' -d 'Change working directory'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from install add remove update" -l 'cache-dir' -d 'Choose a cache directory (default: $HOME/.bun/install/cache)'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from add" -d 'Popular' -a '(__fish__get_bun_packages)'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from add" -d 'History' -a '(__history_completions)'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) cache;" -a 'bin ls cache hash hash-print hash-string' -f
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from pm; and __fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts);" -a 'rm' -f
|
||||
|
||||
# Add built-in subcommands with descriptions.
|
||||
complete -c bun -n "__fish_use_subcommand" -a "create" -f -d "Create a new project from a template"
|
||||
complete -c bun -n "__fish_use_subcommand" -a "build bun" --require-parameter -F -d "Transpile and bundle one or more files"
|
||||
complete -c bun -n "__fish_use_subcommand" -a "upgrade" -d "Upgrade Bun"
|
||||
complete -c bun -n "__fish_use_subcommand" -a "run" -d "Run a script or package binary"
|
||||
complete -c bun -n "__fish_use_subcommand" -a "install" -d "Install dependencies from package.json" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "remove" -d "Remove a dependency from package.json" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "add" -d "Add a dependency to package.json" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "init" -d "Initialize a Bun project in this directory" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "link" -d "Register or link a local npm package" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "unlink" -d "Unregister a local npm package" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "pm" -d "Additional package management utilities" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "x" -d "Execute a package binary, installing if needed" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "outdated" -d "Display the latest versions of outdated dependencies" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "update" -d "Update dependencies to their latest versions" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "publish" -d "Publish your package from local to npm" -f
|
||||
complete -c bun -n "__fish_use_subcommand" -a "repl" -d "Start a REPL session with Bun" -f
|
||||
complete -c bun -n "__fish_seen_subcommand_from repl" -s "e" -l "eval" -r -d "Evaluate argument as a script, then exit" -f
|
||||
complete -c bun -n "__fish_seen_subcommand_from repl" -s "p" -l "print" -r -d "Evaluate argument as a script, print the result, then exit" -f
|
||||
complete -c bun -n "__fish_seen_subcommand_from repl" -s "r" -l "preload" -r -d "Import a module before other modules are loaded"
|
||||
complete -c bun -n "__fish_seen_subcommand_from repl" -l "smol" -d "Use less memory, but run garbage collection more often" -f
|
||||
complete -c bun -n "__fish_seen_subcommand_from repl" -s "c" -l "config" -r -d "Specify path to Bun config file"
|
||||
complete -c bun -n "__fish_seen_subcommand_from repl" -l "cwd" -r -d "Absolute path to resolve files & entry points from"
|
||||
complete -c bun -n "__fish_seen_subcommand_from repl" -l "env-file" -r -d "Load environment variables from the specified file(s)"
|
||||
complete -c bun -n "__fish_seen_subcommand_from repl" -l "no-env-file" -d "Disable automatic loading of .env files" -f
|
||||
34
reference/home/.config/fish/completions/dot.fish
Normal file
@@ -0,0 +1,34 @@
|
||||
function __dot_custom_subcommands
|
||||
echo init
|
||||
echo help
|
||||
path basename $HOME/.config/dot/commands/*.fish 2>/dev/null | path change-extension ''
|
||||
|
||||
for d in $HOME/.config/dot/commands/*/
|
||||
test -d $d; or continue
|
||||
set -l name (path basename $d)
|
||||
test -f $d$name.fish; or continue
|
||||
echo $name
|
||||
end
|
||||
end
|
||||
|
||||
complete -c dot -n __fish_use_subcommand -a "(__dot_custom_subcommands)"
|
||||
|
||||
# --- dot install ---
|
||||
complete -c dot -n "__fish_seen_subcommand_from install; and not __fish_seen_argument -l restore" -l restore -d "reinstall every package from the saved list"
|
||||
complete -c dot -n "__fish_seen_subcommand_from install; and not __fish_seen_argument -l no-sync" -l no-sync -d "skip the pacman -Sy database refresh"
|
||||
complete -c dot -n "__fish_seen_subcommand_from install; and not __fish_seen_argument -l restore" -f -a "(__fish_print_pacman_packages)"
|
||||
|
||||
# --- dot setup ---
|
||||
complete -c dot -n "__fish_seen_subcommand_from setup; and not __fish_seen_subcommand_from folders help" -f -a folders -d "bring the 8 standard XDG user directories under the short-name convention"
|
||||
complete -c dot -n "__fish_seen_subcommand_from setup; and not __fish_seen_subcommand_from folders help" -f -a help -d "show usage"
|
||||
complete -c dot -n "__fish_seen_subcommand_from setup; and __fish_seen_subcommand_from folders" -f -a help -d "show usage"
|
||||
|
||||
# --- dot kde ---
|
||||
complete -c dot -n "__fish_seen_subcommand_from kde; and not __fish_seen_subcommand_from apply diff save help" -f -a apply -d "push manifest entries onto the live system"
|
||||
complete -c dot -n "__fish_seen_subcommand_from kde; and not __fish_seen_subcommand_from apply diff save help" -f -a diff -d "scan for settings whose live value differs from its default"
|
||||
complete -c dot -n "__fish_seen_subcommand_from kde; and not __fish_seen_subcommand_from apply diff save help" -f -a save -d "write live KDE settings into the manifest"
|
||||
complete -c dot -n "__fish_seen_subcommand_from kde; and not __fish_seen_subcommand_from apply diff save help" -f -a help -d "show usage"
|
||||
complete -c dot -n "__fish_seen_subcommand_from kde; and __fish_seen_subcommand_from apply diff save" -f -a help -d "show usage"
|
||||
# Sourced live from the schema mapping table (real .kcfg files), not a
|
||||
# hardcoded list -- same helper kde.py's own save/refresh logic builds from.
|
||||
complete -c dot -n "__fish_seen_subcommand_from kde; and __fish_seen_subcommand_from save" -f -a "(python3 $HOME/.config/dot/commands/kde/kde.py complete 2>/dev/null)"
|
||||
2
reference/home/.config/fish/completions/fishtape.fish
Normal file
@@ -0,0 +1,2 @@
|
||||
complete --command fishtape --short v --long version --description "Print version"
|
||||
complete --command fishtape --short h --long help --description "Print help"
|
||||
4
reference/home/.config/fish/conf.d/aliases.fish
Normal file
@@ -0,0 +1,4 @@
|
||||
alias cp='cp -v'
|
||||
alias vi=nvim
|
||||
alias vim=nvim
|
||||
alias tmx='tmux new-session -A -s'
|
||||
4
reference/home/.config/fish/conf.d/env.fish
Normal file
@@ -0,0 +1,4 @@
|
||||
set -gx EDITOR nvim
|
||||
set -x ANDROID_HOME $HOME/Android/Sdk
|
||||
fish_add_path $ANDROID_HOME/platform-tools
|
||||
fish_add_path $ANDROID_HOME/tools/bin
|
||||
1
reference/home/.config/fish/conf.d/rustup.fish
Normal file
@@ -0,0 +1 @@
|
||||
source "$HOME/.cargo/env.fish"
|
||||
17
reference/home/.config/fish/config.fish
Normal file
@@ -0,0 +1,17 @@
|
||||
source /usr/share/cachyos-fish-config/cachyos-config.fish
|
||||
|
||||
set -gx EDITOR nvim
|
||||
set -gx VISUAL nvim
|
||||
|
||||
# overwrite greeting
|
||||
# potentially disabling fastfetch
|
||||
#function fish_greeting
|
||||
# # smth smth
|
||||
#end
|
||||
|
||||
# bun
|
||||
set --export BUN_INSTALL "$HOME/.bun"
|
||||
set --export PATH $BUN_INSTALL/bin $PATH
|
||||
|
||||
# Pi
|
||||
fish_add_path "/home/alexion/.local/opt/node-v24.18.0-linux-x64/bin"
|
||||
1
reference/home/.config/fish/fish_plugins
Normal file
@@ -0,0 +1 @@
|
||||
jorgebucaran/fishtape
|
||||
130
reference/home/.config/fish/functions/dot.fish
Normal file
@@ -0,0 +1,130 @@
|
||||
function dot --wraps=git --description 'Manage dotfiles via a bare repo checked out over $HOME'
|
||||
set -l dotfiles_dir $HOME/.dotfiles
|
||||
|
||||
if test "$argv[1]" = init
|
||||
set -e argv[1]
|
||||
__dot_init $dotfiles_dir $argv
|
||||
return $status
|
||||
end
|
||||
|
||||
if test "$argv[1]" = help
|
||||
__dot_help
|
||||
return $status
|
||||
end
|
||||
|
||||
set -l commands_dir $HOME/.config/dot/commands
|
||||
set -l command_file $commands_dir/$argv[1].fish
|
||||
set -l nested_command_file $commands_dir/$argv[1]/$argv[1].fish
|
||||
|
||||
if test -n "$argv[1]"
|
||||
if test -f "$command_file"
|
||||
source $command_file
|
||||
_dot_$argv[1] $argv[2..-1]
|
||||
return $status
|
||||
else if test -f "$nested_command_file"
|
||||
source $nested_command_file
|
||||
_dot_$argv[1] $argv[2..-1]
|
||||
return $status
|
||||
end
|
||||
end
|
||||
|
||||
git --git-dir=$dotfiles_dir --work-tree=$HOME $argv
|
||||
end
|
||||
|
||||
# Kept inline (not a separate autoloaded function file) because this is the
|
||||
# only subcommand that must work before the dotfiles repo has been cloned.
|
||||
function __dot_init
|
||||
set -l dotfiles_dir $argv[1]
|
||||
set -e argv[1]
|
||||
|
||||
argparse 'url=' -- $argv
|
||||
or return 1
|
||||
|
||||
set -l url $_flag_url
|
||||
test -n "$url"; or set url ssh://gitea@git.alexion.dev:2022/alexion/dotfiles.git
|
||||
|
||||
if test -e $dotfiles_dir
|
||||
echo "dot init: $dotfiles_dir already exists, refusing to re-initialize" >&2
|
||||
return 1
|
||||
end
|
||||
|
||||
git clone --bare $url $dotfiles_dir
|
||||
or begin
|
||||
echo "dot init: failed to clone $url" >&2
|
||||
return 1
|
||||
end
|
||||
|
||||
git --git-dir=$dotfiles_dir config status.showUntrackedFiles no
|
||||
|
||||
set -l checkout_output (git --git-dir=$dotfiles_dir --work-tree=$HOME checkout 2>&1)
|
||||
set -l checkout_status $status
|
||||
|
||||
if test $checkout_status -ne 0
|
||||
set -l conflicts
|
||||
set -l in_block 0
|
||||
|
||||
for line in $checkout_output
|
||||
if test $in_block -eq 1
|
||||
if string match -rq '^\s' -- $line
|
||||
set -a conflicts (string trim -- $line)
|
||||
continue
|
||||
else
|
||||
set in_block 0
|
||||
end
|
||||
end
|
||||
|
||||
string match -q '*would be overwritten by checkout:*' -- $line
|
||||
and set in_block 1
|
||||
end
|
||||
|
||||
if test (count $conflicts) -eq 0
|
||||
echo "dot init: checkout failed and no recoverable conflicts were found:" >&2
|
||||
printf '%s\n' $checkout_output >&2
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l backup_dir $HOME/.dotfiles-backup/(date +%Y%m%dT%H%M%S)
|
||||
for f in $conflicts
|
||||
mkdir -p (path dirname $backup_dir/$f)
|
||||
mv $HOME/$f $backup_dir/$f
|
||||
echo "dot init: backed up ~/$f to $backup_dir/$f"
|
||||
end
|
||||
|
||||
git --git-dir=$dotfiles_dir --work-tree=$HOME checkout
|
||||
or begin
|
||||
echo "dot init: checkout still failing after backing up conflicts, aborting" >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
echo "dot init: bootstrapped $dotfiles_dir from $url"
|
||||
end
|
||||
|
||||
# The custom-subcommand glob is duplicated (not shared with
|
||||
# completions/dot.fish) because fish only autoloads a function from a file
|
||||
# named after that function; a shared helper would go undefined if `dot help`
|
||||
# ran in a completion context before `dot` itself had ever been sourced.
|
||||
function __dot_help
|
||||
echo "dot: manage dotfiles via a bare repo checked out over \$HOME
|
||||
|
||||
Commands:
|
||||
init bootstrap the dotfiles repo on a new machine
|
||||
help show this message"
|
||||
|
||||
for f in $HOME/.config/dot/commands/*.fish
|
||||
test -e $f; or continue
|
||||
echo " "(path basename $f | path change-extension '')
|
||||
end
|
||||
|
||||
for d in $HOME/.config/dot/commands/*/
|
||||
test -d $d; or continue
|
||||
set -l name (path basename $d)
|
||||
test -f $d$name.fish; or continue
|
||||
echo " $name"
|
||||
end
|
||||
|
||||
echo "
|
||||
Run 'dot <command> help' for flags on a specific command.
|
||||
|
||||
Any other command is passed through to git (dot status, dot add, dot commit, dot push, ...)."
|
||||
end
|
||||
116
reference/home/.config/fish/functions/fishtape.fish
Normal file
@@ -0,0 +1,116 @@
|
||||
function fishtape --description "Test scripts, functions, and plugins in Fish"
|
||||
switch "$argv"
|
||||
case -v --version
|
||||
echo "fishtape, version 3.0.1"
|
||||
case "" -h --help
|
||||
echo "Usage: fishtape <files ...> Run test files"
|
||||
echo "Options:"
|
||||
echo " -v or --version Print version"
|
||||
echo " -h or --help Print this help message"
|
||||
case \*
|
||||
set --local files (realpath $argv)
|
||||
|
||||
for file in $files
|
||||
if test ! -f $file
|
||||
echo "fishtape: Invalid file or file not found: \"$file\"" >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
set --local operators -{n,z,b,c,d,e,f,g,G,k,L,O,p,r,s,S,t,u,w,x}
|
||||
set --local expectations \
|
||||
"a non-zero length string" \
|
||||
"a zero length string" \
|
||||
"a block device" \
|
||||
"a character device" \
|
||||
"a directory" \
|
||||
"an existing file" \
|
||||
"a regular file" \
|
||||
"a file with the set-group-ID bit set" \
|
||||
"a file with same group ID as the current user" \
|
||||
"a file with the sticky bit set" \
|
||||
"a symbolic link" \
|
||||
"a file owned by the current user" \
|
||||
"a named pipe" \
|
||||
"a file marked as readable" \
|
||||
"a file of size greater than zero" \
|
||||
"a socket" \
|
||||
"a terminal tty file descriptor" \
|
||||
"a file with the set-user-ID bit set" \
|
||||
"a file marked as writable" \
|
||||
"a file marked as executable"
|
||||
|
||||
set --universal _fishtape_test_number 0
|
||||
set --universal _fishtape_test_passed 0
|
||||
set --universal _fishtape_test_failed 0
|
||||
|
||||
function @echo
|
||||
echo "# $argv"
|
||||
end
|
||||
|
||||
function @test --argument-names name --inherit-variable operators --inherit-variable expectations
|
||||
set --erase argv[1]
|
||||
set --query argv[2] || set --append argv ""
|
||||
|
||||
set _fishtape_test_number (math $_fishtape_test_number + 1)
|
||||
|
||||
if test $argv
|
||||
set _fishtape_test_passed (math $_fishtape_test_passed + 1)
|
||||
|
||||
echo "ok $_fishtape_test_number $name"
|
||||
else
|
||||
if test $argv[1] = "!"
|
||||
set operator "! "
|
||||
set expected "not "
|
||||
set --erase argv[1]
|
||||
end
|
||||
|
||||
if set --query argv[3]
|
||||
set operator "$operator"$argv[2]
|
||||
set expected (string escape -- $argv[3])
|
||||
set actual (string escape -- $argv[1])
|
||||
else
|
||||
set operator "$operator"$argv[1]
|
||||
set expected "$expected"$expectations[(contains --index -- $argv[1] $operators)]
|
||||
set actual (string escape -- $argv[2])
|
||||
end
|
||||
|
||||
set _fishtape_test_failed (math $_fishtape_test_failed + 1)
|
||||
|
||||
status print-stack-trace |
|
||||
string replace --filter --regex -- "\s+called on line (\d+) of file (.+)" '$2:$1' |
|
||||
read --local at
|
||||
|
||||
echo "not ok $_fishtape_test_number $name"
|
||||
echo " ---"
|
||||
echo " operator: $operator"
|
||||
echo " expected: $expected"
|
||||
echo " actual: $actual"
|
||||
echo " at: $at"
|
||||
echo " ..."
|
||||
end
|
||||
end
|
||||
|
||||
echo TAP version 13
|
||||
|
||||
for file in $files
|
||||
fish --init-command=(functions @echo | string collect) --init-command=(functions @test | string collect) $file
|
||||
end
|
||||
|
||||
echo
|
||||
echo "1..$_fishtape_test_number"
|
||||
echo "# pass $_fishtape_test_passed"
|
||||
test $_fishtape_test_failed -eq 0 &&
|
||||
echo "# ok" ||
|
||||
echo "# fail $_fishtape_test_failed"
|
||||
|
||||
functions --erase @echo @test
|
||||
|
||||
set --local failed $_fishtape_test_failed
|
||||
set --erase _fishtape_test_number
|
||||
set --erase _fishtape_test_passed
|
||||
set --erase _fishtape_test_failed
|
||||
|
||||
test $failed -eq 0
|
||||
end
|
||||
end
|
||||
79
reference/home/.config/fontconfig/fonts.conf
Normal file
@@ -0,0 +1,79 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE fontconfig SYSTEM 'urn:fontconfig:fonts.dtd'>
|
||||
<fontconfig>
|
||||
<!--
|
||||
Artificial oblique for fonts without an italic or oblique version
|
||||
-->
|
||||
<match target="font">
|
||||
<!-- check to see if the font is roman -->
|
||||
<test name="slant">
|
||||
<const>roman</const>
|
||||
</test>
|
||||
<!-- check to see if the pattern requested non-roman -->
|
||||
<test compare="not_eq" name="slant" target="pattern">
|
||||
<const>roman</const>
|
||||
</test>
|
||||
<!-- multiply the matrix to slant the font -->
|
||||
<edit mode="assign" name="matrix">
|
||||
<times>
|
||||
<name>matrix</name>
|
||||
<matrix>
|
||||
<double>1</double>
|
||||
<double>0.2</double>
|
||||
<double>0</double>
|
||||
<double>1</double>
|
||||
</matrix>
|
||||
</times>
|
||||
</edit>
|
||||
<!-- pretend the font is oblique now -->
|
||||
<edit mode="assign" name="slant">
|
||||
<const>oblique</const>
|
||||
</edit>
|
||||
<!-- and disable embedded bitmaps for artificial oblique -->
|
||||
<edit mode="assign" name="embeddedbitmap">
|
||||
<bool>false</bool>
|
||||
</edit>
|
||||
</match>
|
||||
<!--
|
||||
Synthetic emboldening for fonts that do not have bold face available
|
||||
-->
|
||||
<match target="font">
|
||||
<!-- check to see if the weight in the font is less than medium which possibly need emboldening -->
|
||||
<test compare="less_eq" name="weight">
|
||||
<const>medium</const>
|
||||
</test>
|
||||
<!-- check to see if the pattern requests bold -->
|
||||
<test compare="more_eq" name="weight" target="pattern">
|
||||
<const>bold</const>
|
||||
</test>
|
||||
<!--
|
||||
set the embolden flag
|
||||
needed for applications using cairo, e.g. gucharmap, gedit, ...
|
||||
-->
|
||||
<edit mode="assign" name="embolden">
|
||||
<bool>true</bool>
|
||||
</edit>
|
||||
<!--
|
||||
set weight to bold
|
||||
needed for applications using Xft directly, e.g. Firefox, ...
|
||||
-->
|
||||
<edit mode="assign" name="weight">
|
||||
<const>bold</const>
|
||||
</edit>
|
||||
</match>
|
||||
<match target="font">
|
||||
<edit mode="assign" name="hinting">
|
||||
<bool>true</bool>
|
||||
</edit>
|
||||
</match>
|
||||
<match target="font">
|
||||
<edit mode="assign" name="hintstyle">
|
||||
<const>hintslight</const>
|
||||
</edit>
|
||||
</match>
|
||||
<match target="font">
|
||||
<edit mode="assign" name="antialias">
|
||||
<bool>true</bool>
|
||||
</edit>
|
||||
</match>
|
||||
</fontconfig>
|
||||
33
reference/home/.config/gtk-3.0/assets/close-active.svg
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#6d2229" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#6d2229" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#da4453" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#a1a9b1" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
33
reference/home/.config/gtk-3.0/assets/close-hover.svg
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#ff98a2" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
27
reference/home/.config/gtk-3.0/assets/close-normal.svg
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#fcfcfc" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
32
reference/home/.config/gtk-3.0/assets/maximize-active.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#676a6e" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#474c51" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#a1a9b1" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#a1a9b1" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
32
reference/home/.config/gtk-3.0/assets/maximize-hover.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#fcfcfc" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
26
reference/home/.config/gtk-3.0/assets/maximize-normal.svg
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#fcfcfc" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
32
reference/home/.config/gtk-3.0/assets/maximized-active.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#676a6e" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polygon fill-rule="evenodd" vector-effect="none" points="4,9 9,4 14,9 9,14 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#474c51" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polygon fill-rule="evenodd" vector-effect="none" points="4,9 9,4 14,9 9,14 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#a1a9b1" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polygon fill-rule="evenodd" vector-effect="none" points="4,9 9,4 14,9 9,14 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#a1a9b1" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polygon fill-rule="evenodd" vector-effect="none" points="4,9 9,4 14,9 9,14 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
32
reference/home/.config/gtk-3.0/assets/maximized-hover.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#fcfcfc" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polygon fill-rule="evenodd" vector-effect="none" points="4,9 9,4 14,9 9,14 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
26
reference/home/.config/gtk-3.0/assets/maximized-normal.svg
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#fcfcfc" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polygon fill-rule="evenodd" vector-effect="none" points="4,9 9,4 14,9 9,14 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
32
reference/home/.config/gtk-3.0/assets/minimize-active.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#676a6e" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#474c51" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#a1a9b1" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#a1a9b1" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
32
reference/home/.config/gtk-3.0/assets/minimize-hover.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="#fcfcfc" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
26
reference/home/.config/gtk-3.0/assets/minimize-normal.svg
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#fcfcfc" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="14" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
84
reference/home/.config/gtk-3.0/colors.css
Normal file
@@ -0,0 +1,84 @@
|
||||
@define-color borders_breeze #4c4e51;
|
||||
@define-color content_view_bg_breeze #141618;
|
||||
@define-color error_color_backdrop_breeze #da4453;
|
||||
@define-color error_color_breeze #da4453;
|
||||
@define-color error_color_insensitive_backdrop_breeze #55242b;
|
||||
@define-color error_color_insensitive_breeze #55242b;
|
||||
@define-color insensitive_base_color_breeze #131517;
|
||||
@define-color insensitive_base_fg_color_breeze #606263;
|
||||
@define-color insensitive_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_borders_breeze #2d3033;
|
||||
@define-color insensitive_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_selected_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_selected_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_unfocused_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_unfocused_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_unfocused_selected_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_unfocused_selected_fg_color_breeze #686a6c;
|
||||
@define-color link_color_breeze #1d99f3;
|
||||
@define-color link_visited_color_breeze #9b59b6;
|
||||
@define-color success_color_backdrop_breeze #27ae60;
|
||||
@define-color success_color_breeze #27ae60;
|
||||
@define-color success_color_insensitive_backdrop_breeze #19482f;
|
||||
@define-color success_color_insensitive_breeze #19482f;
|
||||
@define-color theme_base_color_breeze #141618;
|
||||
@define-color theme_bg_color_breeze #202326;
|
||||
@define-color theme_button_background_backdrop_breeze #292c30;
|
||||
@define-color theme_button_background_backdrop_insensitive_breeze #272a2e;
|
||||
@define-color theme_button_background_insensitive_breeze #272a2e;
|
||||
@define-color theme_button_background_normal_breeze #292c30;
|
||||
@define-color theme_button_decoration_focus_backdrop_breeze #3daee9;
|
||||
@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #2e556b;
|
||||
@define-color theme_button_decoration_focus_breeze #3daee9;
|
||||
@define-color theme_button_decoration_focus_insensitive_breeze #2e556b;
|
||||
@define-color theme_button_decoration_hover_backdrop_breeze #3daee9;
|
||||
@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #2e556b;
|
||||
@define-color theme_button_decoration_hover_breeze #3daee9;
|
||||
@define-color theme_button_decoration_hover_insensitive_breeze #2e556b;
|
||||
@define-color theme_button_foreground_active_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_active_backdrop_insensitive_breeze #686a6c;
|
||||
@define-color theme_button_foreground_active_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_active_insensitive_breeze #686a6c;
|
||||
@define-color theme_button_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_backdrop_insensitive_breeze #6d6f72;
|
||||
@define-color theme_button_foreground_insensitive_breeze #6d6f72;
|
||||
@define-color theme_button_foreground_normal_breeze #fcfcfc;
|
||||
@define-color theme_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_header_background_backdrop_breeze #202326;
|
||||
@define-color theme_header_background_breeze #292c30;
|
||||
@define-color theme_header_background_light_breeze #202326;
|
||||
@define-color theme_header_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_insensitive_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_insensitive_breeze #fcfcfc;
|
||||
@define-color theme_hovering_selected_bg_color_breeze #3daee9;
|
||||
@define-color theme_selected_bg_color_breeze #3daee9;
|
||||
@define-color theme_selected_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_text_color_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_background_backdrop_breeze #202326;
|
||||
@define-color theme_titlebar_background_breeze #292c30;
|
||||
@define-color theme_titlebar_background_light_breeze #202326;
|
||||
@define-color theme_titlebar_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_insensitive_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_base_color_breeze #141618;
|
||||
@define-color theme_unfocused_bg_color_breeze #202326;
|
||||
@define-color theme_unfocused_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_selected_bg_color_alt_breeze #1b4155;
|
||||
@define-color theme_unfocused_selected_bg_color_breeze #1b4155;
|
||||
@define-color theme_unfocused_selected_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_text_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_view_bg_color_breeze #131517;
|
||||
@define-color theme_unfocused_view_text_color_breeze #606263;
|
||||
@define-color theme_view_active_decoration_color_breeze #3daee9;
|
||||
@define-color theme_view_hover_decoration_color_breeze #3daee9;
|
||||
@define-color tooltip_background_breeze #292c30;
|
||||
@define-color tooltip_border_breeze #535659;
|
||||
@define-color tooltip_text_breeze #fcfcfc;
|
||||
@define-color unfocused_borders_breeze #4c4e51;
|
||||
@define-color unfocused_insensitive_borders_breeze #2d3033;
|
||||
@define-color warning_color_backdrop_breeze #f67400;
|
||||
@define-color warning_color_breeze #f67400;
|
||||
@define-color warning_color_insensitive_backdrop_breeze #5e340f;
|
||||
@define-color warning_color_insensitive_breeze #5e340f;
|
||||
1
reference/home/.config/gtk-3.0/gtk.css
Normal file
@@ -0,0 +1 @@
|
||||
@import 'colors.css';
|
||||
18
reference/home/.config/gtk-3.0/settings.ini
Normal file
@@ -0,0 +1,18 @@
|
||||
[Settings]
|
||||
gtk-application-prefer-dark-theme=true
|
||||
gtk-button-images=true
|
||||
gtk-cursor-blink=true
|
||||
gtk-cursor-blink-time=1000
|
||||
gtk-cursor-theme-name=breeze_cursors
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-decoration-layout=icon:minimize,maximize,close
|
||||
gtk-enable-animations=true
|
||||
gtk-font-name=Noto Sans, 14
|
||||
gtk-icon-theme-name=breeze-dark
|
||||
gtk-menu-images=true
|
||||
gtk-modules=colorreload-gtk-module:window-decorations-gtk-module
|
||||
gtk-primary-button-warps-slider=true
|
||||
gtk-sound-theme-name=ocean
|
||||
gtk-theme-name=Breeze
|
||||
gtk-toolbar-style=3
|
||||
gtk-xft-dpi=98304
|
||||
71
reference/home/.config/gtk-3.0/window_decorations.css
Normal file
@@ -0,0 +1,71 @@
|
||||
headerbar button.titlebutton.close, .titlebar button.titlebutton.close {
|
||||
background-image: url("assets/close-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:hover, .titlebar button.titlebutton.close:hover {
|
||||
background-image: url("assets/close-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:active, .titlebar button.titlebutton.close:active {
|
||||
background-image: url("assets/close-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop, .titlebar button.titlebutton.close:backdrop {
|
||||
background-image: url("assets/close-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop:hover, .titlebar button.titlebutton.close:backdrop:hover {
|
||||
background-image: url("assets/close-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop:active, .titlebar button.titlebutton.close:backdrop:active {
|
||||
background-image: url("assets/close-backdrop-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize, .titlebar button.titlebutton.maximize {
|
||||
background-image: url("assets/maximize-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:hover, .titlebar button.titlebutton.maximize:hover {
|
||||
background-image: url("assets/maximize-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:active, .titlebar button.titlebutton.maximize:active {
|
||||
background-image: url("assets/maximize-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop, .titlebar button.titlebutton.maximize:backdrop {
|
||||
background-image: url("assets/maximize-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop:hover, .titlebar button.titlebutton.maximize:backdrop:hover {
|
||||
background-image: url("assets/maximize-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop:active, .titlebar button.titlebutton.maximize:backdrop:active {
|
||||
background-image: url("assets/maximize-backdrop-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize, .titlebar button.titlebutton.minimize {
|
||||
background-image: url("assets/minimize-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:hover, .titlebar button.titlebutton.minimize:hover {
|
||||
background-image: url("assets/minimize-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:active, .titlebar button.titlebutton.minimize:active {
|
||||
background-image: url("assets/minimize-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop, .titlebar button.titlebutton.minimize:backdrop {
|
||||
background-image: url("assets/minimize-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop:hover, .titlebar button.titlebutton.minimize:backdrop:hover {
|
||||
background-image: url("assets/minimize-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop:active, .titlebar button.titlebutton.minimize:backdrop:active {
|
||||
background-image: url("assets/minimize-backdrop-active.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize, .maximized .titlebar button.titlebutton.maximize {
|
||||
background-image: url("assets/maximized-normal.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:hover, .maximized .titlebar button.titlebutton.maximize:hover {
|
||||
background-image: url("assets/maximized-hover.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:active, .maximized .titlebar button.titlebutton.maximize:active {
|
||||
background-image: url("assets/maximized-active.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop, .maximized .titlebar button.titlebutton.maximize:backdrop {
|
||||
background-image: url("assets/maximized-backdrop-normal.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop:hover, .maximized .titlebar button.titlebutton.maximize:backdrop:hover {
|
||||
background-image: url("assets/maximized-backdrop-hover.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop:active, .maximized .titlebar button.titlebutton.maximize:backdrop:active {
|
||||
background-image: url("assets/maximized-backdrop-active.svg"); }
|
||||
84
reference/home/.config/gtk-4.0/colors.css
Normal file
@@ -0,0 +1,84 @@
|
||||
@define-color borders_breeze #4c4e51;
|
||||
@define-color content_view_bg_breeze #141618;
|
||||
@define-color error_color_backdrop_breeze #da4453;
|
||||
@define-color error_color_breeze #da4453;
|
||||
@define-color error_color_insensitive_backdrop_breeze #55242b;
|
||||
@define-color error_color_insensitive_breeze #55242b;
|
||||
@define-color insensitive_base_color_breeze #131517;
|
||||
@define-color insensitive_base_fg_color_breeze #606263;
|
||||
@define-color insensitive_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_borders_breeze #2d3033;
|
||||
@define-color insensitive_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_selected_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_selected_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_unfocused_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_unfocused_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_unfocused_selected_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_unfocused_selected_fg_color_breeze #686a6c;
|
||||
@define-color link_color_breeze #1d99f3;
|
||||
@define-color link_visited_color_breeze #9b59b6;
|
||||
@define-color success_color_backdrop_breeze #27ae60;
|
||||
@define-color success_color_breeze #27ae60;
|
||||
@define-color success_color_insensitive_backdrop_breeze #19482f;
|
||||
@define-color success_color_insensitive_breeze #19482f;
|
||||
@define-color theme_base_color_breeze #141618;
|
||||
@define-color theme_bg_color_breeze #202326;
|
||||
@define-color theme_button_background_backdrop_breeze #292c30;
|
||||
@define-color theme_button_background_backdrop_insensitive_breeze #272a2e;
|
||||
@define-color theme_button_background_insensitive_breeze #272a2e;
|
||||
@define-color theme_button_background_normal_breeze #292c30;
|
||||
@define-color theme_button_decoration_focus_backdrop_breeze #3daee9;
|
||||
@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #2e556b;
|
||||
@define-color theme_button_decoration_focus_breeze #3daee9;
|
||||
@define-color theme_button_decoration_focus_insensitive_breeze #2e556b;
|
||||
@define-color theme_button_decoration_hover_backdrop_breeze #3daee9;
|
||||
@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #2e556b;
|
||||
@define-color theme_button_decoration_hover_breeze #3daee9;
|
||||
@define-color theme_button_decoration_hover_insensitive_breeze #2e556b;
|
||||
@define-color theme_button_foreground_active_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_active_backdrop_insensitive_breeze #686a6c;
|
||||
@define-color theme_button_foreground_active_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_active_insensitive_breeze #686a6c;
|
||||
@define-color theme_button_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_backdrop_insensitive_breeze #6d6f72;
|
||||
@define-color theme_button_foreground_insensitive_breeze #6d6f72;
|
||||
@define-color theme_button_foreground_normal_breeze #fcfcfc;
|
||||
@define-color theme_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_header_background_backdrop_breeze #202326;
|
||||
@define-color theme_header_background_breeze #292c30;
|
||||
@define-color theme_header_background_light_breeze #202326;
|
||||
@define-color theme_header_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_insensitive_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_insensitive_breeze #fcfcfc;
|
||||
@define-color theme_hovering_selected_bg_color_breeze #3daee9;
|
||||
@define-color theme_selected_bg_color_breeze #3daee9;
|
||||
@define-color theme_selected_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_text_color_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_background_backdrop_breeze #202326;
|
||||
@define-color theme_titlebar_background_breeze #292c30;
|
||||
@define-color theme_titlebar_background_light_breeze #202326;
|
||||
@define-color theme_titlebar_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_insensitive_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_base_color_breeze #141618;
|
||||
@define-color theme_unfocused_bg_color_breeze #202326;
|
||||
@define-color theme_unfocused_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_selected_bg_color_alt_breeze #1b4155;
|
||||
@define-color theme_unfocused_selected_bg_color_breeze #1b4155;
|
||||
@define-color theme_unfocused_selected_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_text_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_view_bg_color_breeze #131517;
|
||||
@define-color theme_unfocused_view_text_color_breeze #606263;
|
||||
@define-color theme_view_active_decoration_color_breeze #3daee9;
|
||||
@define-color theme_view_hover_decoration_color_breeze #3daee9;
|
||||
@define-color tooltip_background_breeze #292c30;
|
||||
@define-color tooltip_border_breeze #535659;
|
||||
@define-color tooltip_text_breeze #fcfcfc;
|
||||
@define-color unfocused_borders_breeze #4c4e51;
|
||||
@define-color unfocused_insensitive_borders_breeze #2d3033;
|
||||
@define-color warning_color_backdrop_breeze #f67400;
|
||||
@define-color warning_color_breeze #f67400;
|
||||
@define-color warning_color_insensitive_backdrop_breeze #5e340f;
|
||||
@define-color warning_color_insensitive_breeze #5e340f;
|
||||
1
reference/home/.config/gtk-4.0/gtk.css
Normal file
@@ -0,0 +1 @@
|
||||
@import 'colors.css';
|
||||
13
reference/home/.config/gtk-4.0/settings.ini
Normal file
@@ -0,0 +1,13 @@
|
||||
[Settings]
|
||||
gtk-application-prefer-dark-theme=true
|
||||
gtk-cursor-blink=true
|
||||
gtk-cursor-blink-time=1000
|
||||
gtk-cursor-theme-name=breeze_cursors
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-decoration-layout=icon:minimize,maximize,close
|
||||
gtk-enable-animations=true
|
||||
gtk-font-name=Noto Sans, 14
|
||||
gtk-icon-theme-name=breeze-dark
|
||||
gtk-primary-button-warps-slider=true
|
||||
gtk-sound-theme-name=ocean
|
||||
gtk-xft-dpi=98304
|
||||
71
reference/home/.config/gtk-4.0/window_decorations.css
Normal file
@@ -0,0 +1,71 @@
|
||||
headerbar button.titlebutton.close, .titlebar button.titlebutton.close {
|
||||
background-image: url("assets/close-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:hover, .titlebar button.titlebutton.close:hover {
|
||||
background-image: url("assets/close-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:active, .titlebar button.titlebutton.close:active {
|
||||
background-image: url("assets/close-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop, .titlebar button.titlebutton.close:backdrop {
|
||||
background-image: url("assets/close-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop:hover, .titlebar button.titlebutton.close:backdrop:hover {
|
||||
background-image: url("assets/close-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop:active, .titlebar button.titlebutton.close:backdrop:active {
|
||||
background-image: url("assets/close-backdrop-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize, .titlebar button.titlebutton.maximize {
|
||||
background-image: url("assets/maximize-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:hover, .titlebar button.titlebutton.maximize:hover {
|
||||
background-image: url("assets/maximize-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:active, .titlebar button.titlebutton.maximize:active {
|
||||
background-image: url("assets/maximize-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop, .titlebar button.titlebutton.maximize:backdrop {
|
||||
background-image: url("assets/maximize-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop:hover, .titlebar button.titlebutton.maximize:backdrop:hover {
|
||||
background-image: url("assets/maximize-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop:active, .titlebar button.titlebutton.maximize:backdrop:active {
|
||||
background-image: url("assets/maximize-backdrop-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize, .titlebar button.titlebutton.minimize {
|
||||
background-image: url("assets/minimize-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:hover, .titlebar button.titlebutton.minimize:hover {
|
||||
background-image: url("assets/minimize-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:active, .titlebar button.titlebutton.minimize:active {
|
||||
background-image: url("assets/minimize-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop, .titlebar button.titlebutton.minimize:backdrop {
|
||||
background-image: url("assets/minimize-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop:hover, .titlebar button.titlebutton.minimize:backdrop:hover {
|
||||
background-image: url("assets/minimize-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop:active, .titlebar button.titlebutton.minimize:backdrop:active {
|
||||
background-image: url("assets/minimize-backdrop-active.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize, .maximized .titlebar button.titlebutton.maximize {
|
||||
background-image: url("assets/maximized-normal.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:hover, .maximized .titlebar button.titlebutton.maximize:hover {
|
||||
background-image: url("assets/maximized-hover.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:active, .maximized .titlebar button.titlebutton.maximize:active {
|
||||
background-image: url("assets/maximized-active.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop, .maximized .titlebar button.titlebutton.maximize:backdrop {
|
||||
background-image: url("assets/maximized-backdrop-normal.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop:hover, .maximized .titlebar button.titlebutton.maximize:backdrop:hover {
|
||||
background-image: url("assets/maximized-backdrop-hover.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop:active, .maximized .titlebar button.titlebutton.maximize:backdrop:active {
|
||||
background-image: url("assets/maximized-backdrop-active.svg"); }
|
||||
5
reference/home/.config/gtkrc-2.0
Normal file
@@ -0,0 +1,5 @@
|
||||
# created by KDE Plasma, Sun Jul 12 19:24:12 2026
|
||||
#
|
||||
|
||||
gtk-alternative-button-order = 1
|
||||
|
||||
2
reference/home/.config/kcminputrc
Normal file
@@ -0,0 +1,2 @@
|
||||
[Libinput][1739][30383][DELL08AF:00 06CB:76AF Touchpad]
|
||||
ClickMethod=2
|
||||
177
reference/home/.config/kdeglobals
Normal file
@@ -0,0 +1,177 @@
|
||||
[ColorEffects:Disabled]
|
||||
ChangeSelectionColor=
|
||||
Color=56,56,56
|
||||
ColorAmount=0
|
||||
ColorEffect=0
|
||||
ContrastAmount=0.65
|
||||
ContrastEffect=1
|
||||
Enable=
|
||||
IntensityAmount=0.1
|
||||
IntensityEffect=2
|
||||
|
||||
[ColorEffects:Inactive]
|
||||
ChangeSelectionColor=true
|
||||
Color=112,111,110
|
||||
ColorAmount=0.025
|
||||
ColorEffect=2
|
||||
ContrastAmount=0.1
|
||||
ContrastEffect=2
|
||||
Enable=false
|
||||
IntensityAmount=0
|
||||
IntensityEffect=0
|
||||
|
||||
[Colors:Button]
|
||||
BackgroundAlternate=30,87,116
|
||||
BackgroundNormal=41,44,48
|
||||
DecorationFocus=61,174,233
|
||||
DecorationHover=61,174,233
|
||||
ForegroundActive=61,174,233
|
||||
ForegroundInactive=161,169,177
|
||||
ForegroundLink=29,153,243
|
||||
ForegroundNegative=218,68,83
|
||||
ForegroundNeutral=246,116,0
|
||||
ForegroundNormal=252,252,252
|
||||
ForegroundPositive=39,174,96
|
||||
ForegroundVisited=155,89,182
|
||||
|
||||
[Colors:Complementary]
|
||||
BackgroundAlternate=30,87,116
|
||||
BackgroundNormal=32,35,38
|
||||
DecorationFocus=61,174,233
|
||||
DecorationHover=61,174,233
|
||||
ForegroundActive=61,174,233
|
||||
ForegroundInactive=161,169,177
|
||||
ForegroundLink=29,153,243
|
||||
ForegroundNegative=218,68,83
|
||||
ForegroundNeutral=246,116,0
|
||||
ForegroundNormal=252,252,252
|
||||
ForegroundPositive=39,174,96
|
||||
ForegroundVisited=155,89,182
|
||||
|
||||
[Colors:Header]
|
||||
BackgroundAlternate=32,35,38
|
||||
BackgroundNormal=41,44,48
|
||||
DecorationFocus=61,174,233
|
||||
DecorationHover=61,174,233
|
||||
ForegroundActive=61,174,233
|
||||
ForegroundInactive=161,169,177
|
||||
ForegroundLink=29,153,243
|
||||
ForegroundNegative=218,68,83
|
||||
ForegroundNeutral=246,116,0
|
||||
ForegroundNormal=252,252,252
|
||||
ForegroundPositive=39,174,96
|
||||
ForegroundVisited=155,89,182
|
||||
|
||||
[Colors:Header][Inactive]
|
||||
BackgroundAlternate=41,44,48
|
||||
BackgroundNormal=32,35,38
|
||||
DecorationFocus=61,174,233
|
||||
DecorationHover=61,174,233
|
||||
ForegroundActive=61,174,233
|
||||
ForegroundInactive=161,169,177
|
||||
ForegroundLink=29,153,243
|
||||
ForegroundNegative=218,68,83
|
||||
ForegroundNeutral=246,116,0
|
||||
ForegroundNormal=252,252,252
|
||||
ForegroundPositive=39,174,96
|
||||
ForegroundVisited=155,89,182
|
||||
|
||||
[Colors:Selection]
|
||||
BackgroundAlternate=30,87,116
|
||||
BackgroundNormal=61,174,233
|
||||
DecorationFocus=61,174,233
|
||||
DecorationHover=61,174,233
|
||||
ForegroundActive=252,252,252
|
||||
ForegroundInactive=161,169,177
|
||||
ForegroundLink=253,188,75
|
||||
ForegroundNegative=176,55,69
|
||||
ForegroundNeutral=198,92,0
|
||||
ForegroundNormal=252,252,252
|
||||
ForegroundPositive=23,104,57
|
||||
ForegroundVisited=155,89,182
|
||||
|
||||
[Colors:Tooltip]
|
||||
BackgroundAlternate=32,35,38
|
||||
BackgroundNormal=41,44,48
|
||||
DecorationFocus=61,174,233
|
||||
DecorationHover=61,174,233
|
||||
ForegroundActive=61,174,233
|
||||
ForegroundInactive=161,169,177
|
||||
ForegroundLink=29,153,243
|
||||
ForegroundNegative=218,68,83
|
||||
ForegroundNeutral=246,116,0
|
||||
ForegroundNormal=252,252,252
|
||||
ForegroundPositive=39,174,96
|
||||
ForegroundVisited=155,89,182
|
||||
|
||||
[Colors:View]
|
||||
BackgroundAlternate=29,31,34
|
||||
BackgroundNormal=20,22,24
|
||||
DecorationFocus=61,174,233
|
||||
DecorationHover=61,174,233
|
||||
ForegroundActive=61,174,233
|
||||
ForegroundInactive=161,169,177
|
||||
ForegroundLink=29,153,243
|
||||
ForegroundNegative=218,68,83
|
||||
ForegroundNeutral=246,116,0
|
||||
ForegroundNormal=252,252,252
|
||||
ForegroundPositive=39,174,96
|
||||
ForegroundVisited=155,89,182
|
||||
|
||||
[Colors:Window]
|
||||
BackgroundAlternate=41,44,48
|
||||
BackgroundNormal=32,35,38
|
||||
DecorationFocus=61,174,233
|
||||
DecorationHover=61,174,233
|
||||
ForegroundActive=61,174,233
|
||||
ForegroundInactive=161,169,177
|
||||
ForegroundLink=29,153,243
|
||||
ForegroundNegative=218,68,83
|
||||
ForegroundNeutral=246,116,0
|
||||
ForegroundNormal=252,252,252
|
||||
ForegroundPositive=39,174,96
|
||||
ForegroundVisited=155,89,182
|
||||
|
||||
[General]
|
||||
ColorSchemeHash=9d38eb71ded8ff549da26d57d7cbab9164da243a
|
||||
UseSystemBell=true
|
||||
XftAntialias=true
|
||||
XftHintStyle=hintslight
|
||||
XftSubPixel=none
|
||||
fixed=Hack,14,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0
|
||||
font=Noto Sans,14,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0
|
||||
menuFont=Noto Sans,14,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0
|
||||
smallestReadableFont=Noto Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0
|
||||
toolBarFont=Noto Sans,14,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0
|
||||
|
||||
[KDE]
|
||||
AnimationDurationFactor=0.25
|
||||
LookAndFeelPackage=org.kde.breezedark.desktop
|
||||
contrast=4
|
||||
frameContrast=0.2
|
||||
|
||||
[KFileDialog Settings]
|
||||
Allow Expansion=false
|
||||
Automatically select filename extension=true
|
||||
Breadcrumb Navigation=true
|
||||
Decoration position=2
|
||||
Show Full Path=false
|
||||
Show Inline Previews=true
|
||||
Show Preview=false
|
||||
Show Speedbar=true
|
||||
Show hidden files=false
|
||||
Sort by=Name
|
||||
Sort directories first=true
|
||||
Sort hidden files last=false
|
||||
Sort reversed=false
|
||||
Speedbar Width=140
|
||||
View Style=DetailTree
|
||||
|
||||
[WM]
|
||||
activeBackground=39,44,49
|
||||
activeBlend=252,252,252
|
||||
activeFont=Noto Sans,14,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0
|
||||
activeForeground=252,252,252
|
||||
inactiveBackground=32,36,40
|
||||
inactiveBlend=161,169,177
|
||||
inactiveForeground=161,169,177
|
||||
277
reference/home/.config/kglobalshortcutsrc
Normal file
@@ -0,0 +1,277 @@
|
||||
[ActivityManager]
|
||||
_k_friendly_name=Activity Manager
|
||||
switch-to-activity-4dfe7a63-75b1-4532-89bb-9e8ebc7e360d=none,none,Switch to activity "Default"
|
||||
|
||||
[KDE Keyboard Layout Switcher]
|
||||
Switch to Last-Used Keyboard Layout=Meta+Alt+L,Meta+Alt+L,Switch to Last-Used Keyboard Layout
|
||||
Switch to Next Keyboard Layout=Meta+Alt+K,Meta+Alt+K,Switch to Next Keyboard Layout
|
||||
_k_friendly_name=Keyboard Layout Switcher
|
||||
|
||||
[kaccess]
|
||||
Toggle Screen Reader On and Off=Meta+Alt+S,Meta+Alt+S,Toggle Screen Reader On and Off
|
||||
_k_friendly_name=Accessibility
|
||||
|
||||
[kmix]
|
||||
_k_friendly_name=Audio Volume
|
||||
decrease_microphone_volume=Microphone Volume Down,Microphone Volume Down,Decrease Microphone Volume
|
||||
decrease_volume=Volume Down,Volume Down,Decrease Volume
|
||||
decrease_volume_small=Shift+Volume Down,Shift+Volume Down,Decrease Volume by 1%
|
||||
increase_microphone_volume=Microphone Volume Up,Microphone Volume Up,Increase Microphone Volume
|
||||
increase_volume=Volume Up,Volume Up,Increase Volume
|
||||
increase_volume_small=Shift+Volume Up,Shift+Volume Up,Increase Volume by 1%
|
||||
mic_mute=Microphone Mute\tMeta+Volume Mute,Microphone Mute\tMeta+Volume Mute,Mute Microphone
|
||||
mute=Volume Mute,Volume Mute,Mute
|
||||
push_to_talk=none,none,Push to talk
|
||||
|
||||
[ksmserver]
|
||||
Halt Without Confirmation=none,none,Shut Down Without Confirmation
|
||||
Lock Session=Screensaver\tMeta+L,Screensaver\tMeta+L,Lock Session
|
||||
Log Out=Ctrl+Alt+Del,Ctrl+Alt+Del,Show Logout Screen
|
||||
Log Out Without Confirmation=none,none,Log Out Without Confirmation
|
||||
LogOut=none,none,Log Out
|
||||
Reboot=none,none,Reboot
|
||||
Reboot Without Confirmation=none,none,Reboot Without Confirmation
|
||||
Shut Down=none,none,Shut Down
|
||||
_k_friendly_name=Session Management
|
||||
|
||||
[kwin]
|
||||
Activate Window Demanding Attention=Meta+Ctrl+A,Meta+Ctrl+A,Activate Window Demanding Attention
|
||||
Cycle Overview=none,none,Cycle through Overview and Grid View
|
||||
Cycle Overview Opposite=none,none,Cycle through Grid View and Overview
|
||||
Decrease Opacity=none,none,Decrease Opacity of Active Window by 5%
|
||||
Edit Tiles=Meta+T,Meta+T,Toggle Tiles Editor
|
||||
Expose=Ctrl+F9\tMeta+F9,Ctrl+F9\tMeta+F9,Toggle Present Windows (Current desktop)
|
||||
ExposeAll=Launch (C)\tCtrl+F10\tMeta+F10,Launch (C)\tCtrl+F10\tMeta+F10,Toggle Present Windows (All desktops)
|
||||
ExposeClass=Ctrl+F7\tMeta+F7,Ctrl+F7\tMeta+F7,Toggle Present Windows (Window class)
|
||||
ExposeClassCurrentDesktop=none,none,Toggle Present Windows (Window class on current desktop)
|
||||
Grid View=Meta+G,Meta+G,Toggle Grid View
|
||||
Increase Opacity=none,none,Increase Opacity of Active Window by 5%
|
||||
Kill Window=Meta+Ctrl+Esc,Meta+Ctrl+Esc,Kill Window
|
||||
Move Tablet to Next LogicalOutput=none,none,Move the tablet to the next output
|
||||
MoveMouseToCenter=Meta+F6,Meta+F6,Move Mouse to Centre
|
||||
MoveMouseToFocus=Meta+F5,Meta+F5,Move Mouse to Focus
|
||||
MoveZoomDown=none,none,Move Zoomed Area Downwards
|
||||
MoveZoomLeft=none,none,Move Zoomed Area to Left
|
||||
MoveZoomRight=none,none,Move Zoomed Area to Right
|
||||
MoveZoomUp=none,none,Move Zoomed Area Upwards
|
||||
Overview=Meta+W,Meta+W,Toggle Overview
|
||||
Setup Window Shortcut=none,none,Setup Window Shortcut
|
||||
Show Desktop=Meta+D,Meta+D,Peek at Desktop
|
||||
Switch One Desktop Down=Meta+Ctrl+Down,Meta+Ctrl+Down,Switch One Desktop Down
|
||||
Switch One Desktop Up=Meta+Ctrl+Up,Meta+Ctrl+Up,Switch One Desktop Up
|
||||
Switch One Desktop to the Left=Meta+Ctrl+Left,Meta+Ctrl+Left,Switch One Desktop to the Left
|
||||
Switch One Desktop to the Right=Meta+Ctrl+Right,Meta+Ctrl+Right,Switch One Desktop to the Right
|
||||
Switch Window Down=Meta+Alt+Down,Meta+Alt+Down,Switch to Window Below
|
||||
Switch Window Left=Meta+Alt+Left,Meta+Alt+Left,Switch to Window to the Left
|
||||
Switch Window Right=Meta+Alt+Right,Meta+Alt+Right,Switch to Window to the Right
|
||||
Switch Window Up=Meta+Alt+Up,Meta+Alt+Up,Switch to Window Above
|
||||
Switch to Desktop 1=Meta+1,Ctrl+F1\tMeta+F1,Switch to Desktop 1
|
||||
Switch to Desktop 10=none,none,Switch to Desktop 10
|
||||
Switch to Desktop 11=none,none,Switch to Desktop 11
|
||||
Switch to Desktop 12=none,none,Switch to Desktop 12
|
||||
Switch to Desktop 13=none,none,Switch to Desktop 13
|
||||
Switch to Desktop 14=none,none,Switch to Desktop 14
|
||||
Switch to Desktop 15=none,none,Switch to Desktop 15
|
||||
Switch to Desktop 16=none,none,Switch to Desktop 16
|
||||
Switch to Desktop 17=none,none,Switch to Desktop 17
|
||||
Switch to Desktop 18=none,none,Switch to Desktop 18
|
||||
Switch to Desktop 19=none,none,Switch to Desktop 19
|
||||
Switch to Desktop 2=Meta+2,Ctrl+F2\tMeta+F2,Switch to Desktop 2
|
||||
Switch to Desktop 20=none,none,Switch to Desktop 20
|
||||
Switch to Desktop 21=none,none,Switch to Desktop 21
|
||||
Switch to Desktop 22=none,none,Switch to Desktop 22
|
||||
Switch to Desktop 23=none,none,Switch to Desktop 23
|
||||
Switch to Desktop 24=none,none,Switch to Desktop 24
|
||||
Switch to Desktop 25=none,none,Switch to Desktop 25
|
||||
Switch to Desktop 3=Meta+3,Ctrl+F3\tMeta+F3,Switch to Desktop 3
|
||||
Switch to Desktop 4=Meta+4,Ctrl+F4\tMeta+F4,Switch to Desktop 4
|
||||
Switch to Desktop 5=Meta+5,none,Switch to Desktop 5
|
||||
Switch to Desktop 6=Meta+6,none,Switch to Desktop 6
|
||||
Switch to Desktop 7=Meta+7,none,Switch to Desktop 7
|
||||
Switch to Desktop 8=Meta+8,none,Switch to Desktop 8
|
||||
Switch to Desktop 9=Meta+9,none,Switch to Desktop 9
|
||||
Switch to Next Desktop=none,none,Switch to Next Desktop
|
||||
Switch to Next Screen=none,none,Switch to Next Screen
|
||||
Switch to Previous Desktop=none,none,Switch to Previous Desktop
|
||||
Switch to Previous Screen=none,none,Switch to Previous Screen
|
||||
Switch to Screen 0=none,none,Switch to Screen 0
|
||||
Switch to Screen 1=none,none,Switch to Screen 1
|
||||
Switch to Screen 2=none,none,Switch to Screen 2
|
||||
Switch to Screen 3=none,none,Switch to Screen 3
|
||||
Switch to Screen 4=none,none,Switch to Screen 4
|
||||
Switch to Screen 5=none,none,Switch to Screen 5
|
||||
Switch to Screen 6=none,none,Switch to Screen 6
|
||||
Switch to Screen 7=none,none,Switch to Screen 7
|
||||
Switch to Screen Above=none,none,Switch to Screen Above
|
||||
Switch to Screen Below=none,none,Switch to Screen Below
|
||||
Switch to Screen to the Left=none,none,Switch to Screen to the Left
|
||||
Switch to Screen to the Right=none,none,Switch to Screen to the Right
|
||||
Toggle Night Color=none,none,Suspend/Resume Night Light
|
||||
Toggle Window Raise/Lower=none,none,Toggle Window Raise/Lower
|
||||
Walk Through Windows=Alt+Tab\tMeta+Tab,Alt+Tab\tMeta+Tab,Walk Through Windows
|
||||
Walk Through Windows (Reverse)=Alt+Shift+Tab\tMeta+Shift+Tab,Alt+Shift+Tab\tMeta+Shift+Tab,Walk Through Windows (Reverse)
|
||||
Walk Through Windows Alternative=none,none,Walk Through Windows Alternative
|
||||
Walk Through Windows Alternative (Reverse)=none,none,Walk Through Windows Alternative (Reverse)
|
||||
Walk Through Windows of Current Application=Alt+`\tMeta+`,Alt+`\tMeta+`,Walk Through Windows of Current Application
|
||||
Walk Through Windows of Current Application (Reverse)=Alt+~\tMeta+~,Alt+~\tMeta+~,Walk Through Windows of Current Application (Reverse)
|
||||
Walk Through Windows of Current Application Alternative=none,none,Walk Through Windows of Current Application Alternative
|
||||
Walk Through Windows of Current Application Alternative (Reverse)=none,none,Walk Through Windows of Current Application Alternative (Reverse)
|
||||
Window Above Other Windows=none,none,Keep Window Above Others
|
||||
Window Below Other Windows=none,none,Keep Window Below Others
|
||||
Window Close=Meta+Shift+Q,Alt+F4,Close Window
|
||||
Window Custom Quick Tile Bottom=none,none,Custom Quick Tile Window to the Bottom
|
||||
Window Custom Quick Tile Left=none,none,Custom Quick Tile Window to the Left
|
||||
Window Custom Quick Tile Right=none,none,Custom Quick Tile Window to the Right
|
||||
Window Custom Quick Tile Top=none,none,Custom Quick Tile Window to the Top
|
||||
Window Fullscreen=none,none,Make Window Fullscreen
|
||||
Window Grow Horizontal=none,none,Expand Window Horizontally
|
||||
Window Grow Vertical=none,none,Expand Window Vertically
|
||||
Window Lower=none,none,Lower Window
|
||||
Window Maximize=Meta+PgUp,Meta+PgUp,Maximise Window
|
||||
Window Maximize Horizontal=none,none,Maximise Window Horizontally
|
||||
Window Maximize Vertical=none,none,Maximise Window Vertically
|
||||
Window Minimize=Meta+PgDown,Meta+PgDown,Minimise Window
|
||||
Window Move=none,none,Move Window
|
||||
Window Move Center=none,none,Move Window to the Centre
|
||||
Window No Border=none,none,Toggle Window Titlebar and Frame
|
||||
Window On All Desktops=none,none,Keep Window on All Desktops
|
||||
Window One Desktop Down=Meta+Ctrl+Shift+Down,Meta+Ctrl+Shift+Down,Window One Desktop Down
|
||||
Window One Desktop Up=Meta+Ctrl+Shift+Up,Meta+Ctrl+Shift+Up,Window One Desktop Up
|
||||
Window One Desktop to the Left=Meta+Ctrl+Shift+Left,Meta+Ctrl+Shift+Left,Window One Desktop to the Left
|
||||
Window One Desktop to the Right=Meta+Ctrl+Shift+Right,Meta+Ctrl+Shift+Right,Window One Desktop to the Right
|
||||
Window One Screen Down=none,none,Move Window One Screen Down
|
||||
Window One Screen Up=none,none,Move Window One Screen Up
|
||||
Window One Screen to the Left=none,none,Move Window One Screen to the Left
|
||||
Window One Screen to the Right=none,none,Move Window One Screen to the Right
|
||||
Window Operations Menu=Alt+F3,Alt+F3,Window Menu
|
||||
Window Pack Down=none,none,Move Window Down
|
||||
Window Pack Left=none,none,Move Window Left
|
||||
Window Pack Right=none,none,Move Window Right
|
||||
Window Pack Up=none,none,Move Window Up
|
||||
Window Quick Tile Bottom=Meta+Down,Meta+Down,Quick Tile Window to the Bottom
|
||||
Window Quick Tile Bottom Left=none,none,Quick Tile Window to the Bottom Left
|
||||
Window Quick Tile Bottom Right=none,none,Quick Tile Window to the Bottom Right
|
||||
Window Quick Tile Left=Meta+Left,Meta+Left,Quick Tile Window to the Left
|
||||
Window Quick Tile Right=Meta+Right,Meta+Right,Quick Tile Window to the Right
|
||||
Window Quick Tile Top=Meta+Up,Meta+Up,Quick Tile Window to the Top
|
||||
Window Quick Tile Top Left=none,none,Quick Tile Window to the Top Left
|
||||
Window Quick Tile Top Right=none,none,Quick Tile Window to the Top Right
|
||||
Window Raise=none,none,Raise Window
|
||||
Window Resize=none,none,Resize Window
|
||||
Window Restore=Meta+Backspace,Meta+Backspace,Restore Window
|
||||
Window Shrink Horizontal=none,none,Shrink Window Horizontally
|
||||
Window Shrink Vertical=none,none,Shrink Window Vertically
|
||||
Window to Desktop 1=Meta+!,none,Window to Desktop 1
|
||||
Window to Desktop 10=none,none,Window to Desktop 10
|
||||
Window to Desktop 11=none,none,Window to Desktop 11
|
||||
Window to Desktop 12=none,none,Window to Desktop 12
|
||||
Window to Desktop 13=none,none,Window to Desktop 13
|
||||
Window to Desktop 14=none,none,Window to Desktop 14
|
||||
Window to Desktop 15=none,none,Window to Desktop 15
|
||||
Window to Desktop 16=none,none,Window to Desktop 16
|
||||
Window to Desktop 17=none,none,Window to Desktop 17
|
||||
Window to Desktop 18=none,none,Window to Desktop 18
|
||||
Window to Desktop 19=none,none,Window to Desktop 19
|
||||
Window to Desktop 2=Meta+@,none,Window to Desktop 2
|
||||
Window to Desktop 20=none,none,Window to Desktop 20
|
||||
Window to Desktop 21=none,none,Window to Desktop 21
|
||||
Window to Desktop 22=none,none,Window to Desktop 22
|
||||
Window to Desktop 23=none,none,Window to Desktop 23
|
||||
Window to Desktop 24=none,none,Window to Desktop 24
|
||||
Window to Desktop 25=none,none,Window to Desktop 25
|
||||
Window to Desktop 3=Meta+#,none,Window to Desktop 3
|
||||
Window to Desktop 4=Meta+$,none,Window to Desktop 4
|
||||
Window to Desktop 5=Meta+%,none,Window to Desktop 5
|
||||
Window to Desktop 6=Meta+^,none,Window to Desktop 6
|
||||
Window to Desktop 7=Meta+&,none,Window to Desktop 7
|
||||
Window to Desktop 8=Meta+*,none,Window to Desktop 8
|
||||
Window to Desktop 9=Meta+(,none,Window to Desktop 9
|
||||
Window to Next Desktop=none,none,Window to Next Desktop
|
||||
Window to Next Screen=Meta+Shift+Right,Meta+Shift+Right,Move Window to Next Screen
|
||||
Window to Previous Desktop=none,none,Window to Previous Desktop
|
||||
Window to Previous Screen=Meta+Shift+Left,Meta+Shift+Left,Move Window to Previous Screen
|
||||
Window to Screen 0=none,none,Move Window to Screen 0
|
||||
Window to Screen 1=none,none,Move Window to Screen 1
|
||||
Window to Screen 2=none,none,Move Window to Screen 2
|
||||
Window to Screen 3=none,none,Move Window to Screen 3
|
||||
Window to Screen 4=none,none,Move Window to Screen 4
|
||||
Window to Screen 5=none,none,Move Window to Screen 5
|
||||
Window to Screen 6=none,none,Move Window to Screen 6
|
||||
Window to Screen 7=none,none,Move Window to Screen 7
|
||||
_k_friendly_name=KWin
|
||||
disableInputCapture=Meta+Shift+Esc,Meta+Shift+Esc,Disable Active Input Capture
|
||||
view_actual_size=Meta+0,Meta+0,Zoom to Actual Size
|
||||
view_zoom_in=Meta++\tMeta+=,Meta++\tMeta+=,Zoom In
|
||||
view_zoom_out=Meta+-,Meta+-,Zoom Out
|
||||
|
||||
[mediacontrol]
|
||||
_k_friendly_name=Media Controller
|
||||
mediavolumedown=none,none,Media volume down
|
||||
mediavolumeup=none,none,Media volume up
|
||||
nextmedia=Media Next,Media Next,Media playback next
|
||||
pausemedia=Media Pause,Media Pause,Pause media playback
|
||||
playmedia=none,none,Play media playback
|
||||
playpausemedia=Media Play,Media Play,Play/Pause media playback
|
||||
previousmedia=Media Previous,Media Previous,Media playback previous
|
||||
seekbackwardmedia=Media Rewind,Media Rewind,Media playback seek backward 5s
|
||||
seekbackwardmedialong=none,none,Media playback seek backward 30s
|
||||
seekforwardmedia=Media Fast Forward,Media Fast Forward,Media playback seek forward 5s
|
||||
seekforwardmedialong=none,none,Media playback seek forward 30s
|
||||
stopmedia=Media Stop,Media Stop,Stop media playback
|
||||
|
||||
[org_kde_powerdevil]
|
||||
Decrease Keyboard Brightness=Keyboard Brightness Down,Keyboard Brightness Down,Decrease Keyboard Brightness
|
||||
Decrease Screen Brightness=Monitor Brightness Down,Monitor Brightness Down,Decrease Screen Brightness
|
||||
Decrease Screen Brightness Small=Shift+Monitor Brightness Down,Shift+Monitor Brightness Down,Decrease Screen Brightness by 1%
|
||||
Hibernate=Hibernate,Hibernate,Hibernate
|
||||
Increase Keyboard Brightness=Keyboard Brightness Up,Keyboard Brightness Up,Increase Keyboard Brightness
|
||||
Increase Screen Brightness=Monitor Brightness Up,Monitor Brightness Up,Increase Screen Brightness
|
||||
Increase Screen Brightness Small=Shift+Monitor Brightness Up,Shift+Monitor Brightness Up,Increase Screen Brightness by 1%
|
||||
PowerDown=Power Down,Power Down,Power Down
|
||||
PowerOff=Power Off,Power Off,Power Off
|
||||
Sleep=Sleep,Sleep,Suspend
|
||||
Toggle Keyboard Backlight=Keyboard Light On/Off,Keyboard Light On/Off,Toggle Keyboard Backlight
|
||||
Turn Off Screen=none,none,Turn Off Screen
|
||||
_k_friendly_name=Power Management
|
||||
powerProfile=Battery\tMeta+B,Battery\tMeta+B,Switch Power Profile
|
||||
|
||||
[plasmashell]
|
||||
Slideshow Wallpaper Next Image=none,none,Next Wallpaper Image
|
||||
_k_friendly_name=plasmashell
|
||||
activate application launcher=Meta\tAlt+F1,Meta\tAlt+F1,Activate Application Launcher
|
||||
activate task manager entry 1=none,Meta+1,Activate Task Manager Entry 1
|
||||
activate task manager entry 10=none,none,Activate Task Manager Entry 10
|
||||
activate task manager entry 2=none,Meta+2,Activate Task Manager Entry 2
|
||||
activate task manager entry 3=none,Meta+3,Activate Task Manager Entry 3
|
||||
activate task manager entry 4=none,Meta+4,Activate Task Manager Entry 4
|
||||
activate task manager entry 5=none,Meta+5,Activate Task Manager Entry 5
|
||||
activate task manager entry 6=none,Meta+6,Activate Task Manager Entry 6
|
||||
activate task manager entry 7=none,Meta+7,Activate Task Manager Entry 7
|
||||
activate task manager entry 8=none,Meta+8,Activate Task Manager Entry 8
|
||||
activate task manager entry 9=none,Meta+9,Activate Task Manager Entry 9
|
||||
clear history=none,none,Clear Notification History
|
||||
clear-history=none,none,Clear Clipboard History
|
||||
clipboard_action=Meta+Ctrl+X,Meta+Ctrl+X,Automatic Action Popup Menu
|
||||
cycle-panels=Meta+Alt+P,Meta+Alt+P,Move keyboard focus between panels
|
||||
cycleNextAction=none,none,Next History Item
|
||||
cyclePrevAction=none,none,Previous History Item
|
||||
edit_clipboard=none,none,Edit Contents…
|
||||
manage activities=Meta+Q,Meta+Q,Show Activity Switcher
|
||||
next activity=Meta+A,none,Walk through activities
|
||||
previous activity=Meta+Shift+A,none,Walk through activities (Reverse)
|
||||
repeat_action=none,none,Manually Invoke Action on Current Clipboard
|
||||
show dashboard=Ctrl+F12,Ctrl+F12,Show Desktop
|
||||
show-barcode=none,none,Show Barcode…
|
||||
show-on-mouse-pos=Meta+V,Meta+V,Show Clipboard Items at Mouse Position
|
||||
switch to next activity=none,none,Switch to Next Activity
|
||||
switch to previous activity=none,none,Switch to Previous Activity
|
||||
toggle do not disturb=none,none,Toggle do not disturb
|
||||
|
||||
[services][Alacritty.desktop]
|
||||
_launch=Meta+Return
|
||||
|
||||
[services][net.local.fish.desktop]
|
||||
_launch=Meta+Ctrl+Space
|
||||
|
||||
[services][org.kde.konsole.desktop]
|
||||
_launch=none
|
||||
5
reference/home/.config/konsolerc
Normal file
@@ -0,0 +1,5 @@
|
||||
[General]
|
||||
ConfigVersion=1
|
||||
|
||||
[UiSettings]
|
||||
ColorScheme=
|
||||
93
reference/home/.config/kwinoutputconfig.json
Normal file
@@ -0,0 +1,93 @@
|
||||
[
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"abmLevel": 0,
|
||||
"allowDdcCi": true,
|
||||
"allowSdrSoftwareBrightness": false,
|
||||
"autoBrightnessCurve": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"autoRotation": "InTabletMode",
|
||||
"automaticBrightness": false,
|
||||
"brightness": 1,
|
||||
"colorPowerTradeoff": "PreferEfficiency",
|
||||
"colorProfileSource": "sRGB",
|
||||
"connectorName": "eDP-1",
|
||||
"customModes": [
|
||||
],
|
||||
"detectedDdcCi": false,
|
||||
"edidHash": "5f3fe94f152da0c618ae754a160d08df",
|
||||
"edidIdentifier": "AUO 23341 0 0 2018 0",
|
||||
"edrPolicy": "always",
|
||||
"hdrColorProfileSource": "EDID",
|
||||
"hdrIccProfilePath": "",
|
||||
"highDynamicRange": false,
|
||||
"iccProfilePath": "",
|
||||
"maxBitsPerColor": 0,
|
||||
"mode": {
|
||||
"flags": 1,
|
||||
"height": 1080,
|
||||
"refreshRate": 60033,
|
||||
"width": 1920
|
||||
},
|
||||
"overscan": 0,
|
||||
"rgbRange": "Automatic",
|
||||
"scale": 1,
|
||||
"sdrBrightness": 200,
|
||||
"sdrGamutWideness": 0,
|
||||
"sharpness": 0,
|
||||
"transform": "Normal",
|
||||
"uuid": "3f5a91e5-1c16-44d8-a5f5-b5854daa57be",
|
||||
"vrrPolicy": "Never",
|
||||
"wideColorGamut": false
|
||||
}
|
||||
],
|
||||
"name": "outputs"
|
||||
},
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"lidClosed": false,
|
||||
"outputs": [
|
||||
{
|
||||
"enabled": true,
|
||||
"outputIndex": 0,
|
||||
"position": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"priority": 1,
|
||||
"replicationSource": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"lidClosed": true,
|
||||
"outputs": [
|
||||
{
|
||||
"enabled": true,
|
||||
"outputIndex": 0,
|
||||
"position": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"priority": 0,
|
||||
"replicationSource": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"name": "setups"
|
||||
}
|
||||
]
|
||||
60
reference/home/.config/kwinrc
Normal file
@@ -0,0 +1,60 @@
|
||||
[Desktops]
|
||||
Id_1=4c183a08-13bd-40a0-8131-12584ba0b0c0
|
||||
Id_2=b20e6cf5-12e6-44c9-b8f1-0bb5a5e2307a
|
||||
Id_3=77ff2787-e9df-4539-b009-8da2084b3ba0
|
||||
Id_4=f4bc9302-9b20-4cbb-b73b-4cfecba52889
|
||||
Id_5=e0032b5e-9f48-4219-8800-152a21b01604
|
||||
Id_6=a3ac962a-66e0-4cfe-a9ca-a789eae23a3a
|
||||
Id_7=6ecab170-20d2-4383-b152-0d443d77b8ad
|
||||
Id_8=ba6489cf-4f95-4786-af9f-3d742e17e6c5
|
||||
Id_9=5f9b8e88-3740-4d2c-9ac5-e76e072606f4
|
||||
Number=9
|
||||
Rows=1
|
||||
|
||||
[Effect-zoom]
|
||||
InitialZoom=4.136880223300198
|
||||
|
||||
[Plugins]
|
||||
zoomEnabled=false
|
||||
|
||||
[Tiling][4c183a08-13bd-40a0-8131-12584ba0b0c0][3f5a91e5-1c16-44d8-a5f5-b5854daa57be]
|
||||
padding=4
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][5f9b8e88-3740-4d2c-9ac5-e76e072606f4][3f5a91e5-1c16-44d8-a5f5-b5854daa57be]
|
||||
padding=4
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][6ecab170-20d2-4383-b152-0d443d77b8ad][3f5a91e5-1c16-44d8-a5f5-b5854daa57be]
|
||||
padding=4
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][77ff2787-e9df-4539-b009-8da2084b3ba0][3f5a91e5-1c16-44d8-a5f5-b5854daa57be]
|
||||
padding=4
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][a3ac962a-66e0-4cfe-a9ca-a789eae23a3a][3f5a91e5-1c16-44d8-a5f5-b5854daa57be]
|
||||
padding=4
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][b20e6cf5-12e6-44c9-b8f1-0bb5a5e2307a][3f5a91e5-1c16-44d8-a5f5-b5854daa57be]
|
||||
padding=4
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][ba6489cf-4f95-4786-af9f-3d742e17e6c5][3f5a91e5-1c16-44d8-a5f5-b5854daa57be]
|
||||
padding=4
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][e0032b5e-9f48-4219-8800-152a21b01604][3f5a91e5-1c16-44d8-a5f5-b5854daa57be]
|
||||
padding=4
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][f4bc9302-9b20-4cbb-b73b-4cfecba52889][3f5a91e5-1c16-44d8-a5f5-b5854daa57be]
|
||||
padding=4
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Windows]
|
||||
RollOverDesktops=true
|
||||
|
||||
[Xwayland]
|
||||
Scale=1
|
||||
3
reference/home/.config/kxkbrc
Normal file
@@ -0,0 +1,3 @@
|
||||
[Layout]
|
||||
Options=caps:escape_shifted_capslock
|
||||
ResetOldOptions=true
|
||||
@@ -0,0 +1,42 @@
|
||||
color-link default "#C6D0F5,#303446"
|
||||
color-link comment "#626880"
|
||||
|
||||
color-link identifier "#8CAAEE"
|
||||
color-link identifier.class "#8CAAEE"
|
||||
color-link identifier.var "#8CAAEE"
|
||||
|
||||
color-link constant "#EF9F76"
|
||||
color-link constant.number "#EF9F76"
|
||||
color-link constant.string "#A6D189"
|
||||
|
||||
color-link symbol "#F4B8E4"
|
||||
color-link symbol.brackets "#EEBEBE"
|
||||
color-link symbol.tag "#8CAAEE"
|
||||
|
||||
color-link type "#8CAAEE"
|
||||
color-link type.keyword "#E5C890"
|
||||
|
||||
color-link special "#F4B8E4"
|
||||
color-link statement "#CA9EE6"
|
||||
color-link preproc "#F4B8E4"
|
||||
|
||||
color-link underlined "#99D1DB"
|
||||
color-link error "bold #E78284"
|
||||
color-link todo "bold #E5C890"
|
||||
|
||||
color-link diff-added "#A6D189"
|
||||
color-link diff-modified "#E5C890"
|
||||
color-link diff-deleted "#E78284"
|
||||
|
||||
color-link gutter-error "#E78284"
|
||||
color-link gutter-warning "#E5C890"
|
||||
|
||||
color-link statusline "#F2D5CF,#292C3C"
|
||||
color-link tabbar "#F2D5CF,#292C3C"
|
||||
color-link indent-char "#51576D"
|
||||
color-link line-number "#51576D"
|
||||
color-link current-line-number "#BABBF1"
|
||||
|
||||
color-link cursor-line "#414559,#C6D0F5"
|
||||
color-link color-column "#414559"
|
||||
color-link type.extended "default"
|
||||
@@ -0,0 +1,42 @@
|
||||
color-link default "#4C4F69,#EFF1F5"
|
||||
color-link comment "#ACB0BE"
|
||||
|
||||
color-link identifier "#1E66F5"
|
||||
color-link identifier.class "#1E66F5"
|
||||
color-link identifier.var "#1E66F5"
|
||||
|
||||
color-link constant "#FE640B"
|
||||
color-link constant.number "#FE640B"
|
||||
color-link constant.string "#40A02B"
|
||||
|
||||
color-link symbol "#EA76CB"
|
||||
color-link symbol.brackets "#DD7878"
|
||||
color-link symbol.tag "#1E66F5"
|
||||
|
||||
color-link type "#1E66F5"
|
||||
color-link type.keyword "#DF8E1D"
|
||||
|
||||
color-link special "#EA76CB"
|
||||
color-link statement "#8839EF"
|
||||
color-link preproc "#EA76CB"
|
||||
|
||||
color-link underlined "#04A5E5"
|
||||
color-link error "bold #D20F39"
|
||||
color-link todo "bold #DF8E1D"
|
||||
|
||||
color-link diff-added "#40A02B"
|
||||
color-link diff-modified "#DF8E1D"
|
||||
color-link diff-deleted "#D20F39"
|
||||
|
||||
color-link gutter-error "#D20F39"
|
||||
color-link gutter-warning "#DF8E1D"
|
||||
|
||||
color-link statusline "#4C4F69,#DCE0E8"
|
||||
color-link tabbar "#4C4F69,#DCE0E8"
|
||||
color-link indent-char "#BCC0CC"
|
||||
color-link line-number "#BCC0CC"
|
||||
color-link current-line-number "#7287FD"
|
||||
|
||||
color-link cursor-line "#CCD0DA,#4C4F69"
|
||||
color-link color-column "#CCD0DA"
|
||||
color-link type.extended "default"
|
||||
@@ -0,0 +1,42 @@
|
||||
color-link default "#CAD3F5,#24273A"
|
||||
color-link comment "#5B6078"
|
||||
|
||||
color-link identifier "#8AADF4"
|
||||
color-link identifier.class "#8AADF4"
|
||||
color-link identifier.var "#8AADF4"
|
||||
|
||||
color-link constant "#F5A97F"
|
||||
color-link constant.number "#F5A97F"
|
||||
color-link constant.string "#A6DA95"
|
||||
|
||||
color-link symbol "#F5BDE6"
|
||||
color-link symbol.brackets "#F0C6C6"
|
||||
color-link symbol.tag "#8AADF4"
|
||||
|
||||
color-link type "#8AADF4"
|
||||
color-link type.keyword "#EED49F"
|
||||
|
||||
color-link special "#F5BDE6"
|
||||
color-link statement "#C6A0F6"
|
||||
color-link preproc "#F5BDE6"
|
||||
|
||||
color-link underlined "#8AADF4"
|
||||
color-link error "bold #ED8796"
|
||||
color-link todo "bold #EED49F"
|
||||
|
||||
color-link diff-added "#A6DA95"
|
||||
color-link diff-modified "#EED49F"
|
||||
color-link diff-deleted "#ED8796"
|
||||
|
||||
color-link gutter-error "#ED8796"
|
||||
color-link gutter-warning "#EED49F"
|
||||
|
||||
color-link statusline "#F4DBD6,#1E2030"
|
||||
color-link tabbar "#F4DBD6,#1E2030"
|
||||
color-link indent-char "#494D64"
|
||||
color-link line-number "#494D64"
|
||||
color-link current-line-number "#B7BDF8"
|
||||
|
||||
color-link cursor-line "#363A4F,#CAD3F5"
|
||||
color-link color-column "#363A4F"
|
||||
color-link type.extended "default"
|
||||
@@ -0,0 +1,42 @@
|
||||
color-link default "#C6D0F5,#1E1E2E"
|
||||
color-link comment "#585B70"
|
||||
|
||||
color-link identifier "#89B4FA"
|
||||
color-link identifier.class "#89B4FA"
|
||||
color-link identifier.var "#89B4FA"
|
||||
|
||||
color-link constant "#FAB387"
|
||||
color-link constant.number "#FAB387"
|
||||
color-link constant.string "#A6E3A1"
|
||||
|
||||
color-link symbol "#F5C2E7"
|
||||
color-link symbol.brackets "#F2CDCD"
|
||||
color-link symbol.tag "#89B4FA"
|
||||
|
||||
color-link type "#89B4FA"
|
||||
color-link type.keyword "#F9E2AF"
|
||||
|
||||
color-link special "#F5C2E7"
|
||||
color-link statement "#CBA6F7"
|
||||
color-link preproc "#F5C2E7"
|
||||
|
||||
color-link underlined "#89DCEB"
|
||||
color-link error "bold #F38BA8"
|
||||
color-link todo "bold #F9E2AF"
|
||||
|
||||
color-link diff-added "#A6E3A1"
|
||||
color-link diff-modified "#F9E2AF"
|
||||
color-link diff-deleted "#F38BA8"
|
||||
|
||||
color-link gutter-error "#F38BA8"
|
||||
color-link gutter-warning "#F9E2AF"
|
||||
|
||||
color-link statusline "#F5E0DC,#181825"
|
||||
color-link tabbar "#F5E0DC,#181825"
|
||||
color-link indent-char "#45475A"
|
||||
color-link line-number "#45475A"
|
||||
color-link current-line-number "#B4BEFE"
|
||||
|
||||
color-link cursor-line "#313244,#C6D0F5"
|
||||
color-link color-column "#313244"
|
||||
color-link type.extended "default"
|
||||
3
reference/home/.config/micro/settings.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"colorscheme": "catppuccin-macchiato"
|
||||
}
|
||||
4
reference/home/.config/mimeapps.list
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
[Default Applications]
|
||||
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
|
||||
x-scheme-handler/openwhispr=openwhispr.desktop
|
||||
1
reference/home/.config/nvim/after/ftplugin/markdown.lua
Normal file
@@ -0,0 +1 @@
|
||||
vim.opt_local.conceallevel = 2
|
||||
3
reference/home/.config/nvim/init.lua
Normal file
@@ -0,0 +1,3 @@
|
||||
require("vim_options")
|
||||
require("keys")
|
||||
require("plugin")
|
||||
13
reference/home/.config/nvim/lazy-lock.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "eb60cc7b94c46005237fd34170d76f3a089a90aa" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
||||
"neogit": { "branch": "master", "commit": "6fc2fa890bd2031ed999c074daab0fb4feff20a5" },
|
||||
"nord.nvim": { "branch": "main", "commit": "87394d4fc35c901bbe38326a78d31ab1ead826b6" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" },
|
||||
"oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "f422cb5c6855f150e2ddcfaf44e7157b98b34f6a" },
|
||||
"snacks.nvim": { "branch": "main", "commit": "882c996cf28183f4d63640de0b4c02ec886d01f2" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||
}
|
||||
8
reference/home/.config/nvim/lua/keys.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
local map = vim.keymap.set
|
||||
|
||||
map("n", "<C-h>", "<C-w>h", { desc = "Move focus left" })
|
||||
map("n", "<C-j>", "<C-w>j", { desc = "Move focus down" })
|
||||
map("n", "<C-k>", "<C-w>k", { desc = "Move focus up" })
|
||||
map("n", "<C-l>", "<C-w>l", { desc = "Move focus right" })
|
||||
|
||||
map("n", "<Esc>", "<cmd>nohlsearch<CR>", { desc = "Clear search highlight" })
|
||||
23
reference/home/.config/nvim/lua/plugin.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.uv.fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
{ import = "plugins" },
|
||||
},
|
||||
install = { colorscheme = { "nord" } },
|
||||
checker = { enabled = false },
|
||||
})
|
||||
36
reference/home/.config/nvim/lua/plugins/git.lua
Normal file
@@ -0,0 +1,36 @@
|
||||
return {
|
||||
{
|
||||
"NeogitOrg/neogit",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"sindrets/diffview.nvim",
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>g",
|
||||
function()
|
||||
require("gitsigns").toggle_current_line_blame(true)
|
||||
require("neogit").open()
|
||||
end,
|
||||
desc = "Open git (Neogit)",
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require("neogit").setup()
|
||||
vim.api.nvim_create_autocmd("BufUnload", {
|
||||
callback = function(args)
|
||||
if vim.bo[args.buf].filetype == "NeogitStatus" then
|
||||
require("gitsigns").toggle_current_line_blame(false)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
event = "BufWinEnter",
|
||||
opts = {
|
||||
current_line_blame = false,
|
||||
},
|
||||
},
|
||||
}
|
||||
27
reference/home/.config/nvim/lua/plugins/navigation.lua
Normal file
@@ -0,0 +1,27 @@
|
||||
return {
|
||||
{
|
||||
"stevearc/oil.nvim",
|
||||
lazy = false,
|
||||
opts = {
|
||||
view_options = { show_hidden = true },
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>e", "<cmd>Oil<CR>", desc = "Open file browser" },
|
||||
},
|
||||
},
|
||||
{
|
||||
"folke/snacks.nvim",
|
||||
priority = 1000,
|
||||
lazy = false,
|
||||
opts = {
|
||||
picker = { enabled = true },
|
||||
notifier = { enabled = true },
|
||||
input = { enabled = true },
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>f", function() require("snacks").picker.files() end, desc = "Find files" },
|
||||
{ "<leader>s", function() require("snacks").picker.grep() end, desc = "Search text" },
|
||||
{ "<leader>b", function() require("snacks").picker.buffers() end, desc = "Switch buffer" },
|
||||
},
|
||||
},
|
||||
}
|
||||
55
reference/home/.config/nvim/lua/plugins/ui.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
return {
|
||||
{
|
||||
"gbprod/nord.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
opts = {
|
||||
transparent = true,
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("nord").setup(opts)
|
||||
vim.cmd.colorscheme("nord")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"MeanderingProgrammer/render-markdown.nvim",
|
||||
ft = { "markdown" },
|
||||
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
||||
opts = {},
|
||||
},
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
lazy = false,
|
||||
config = true,
|
||||
},
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
branch = "master",
|
||||
build = ":TSUpdate",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"lua",
|
||||
"bash",
|
||||
"fish",
|
||||
"rust",
|
||||
"javascript",
|
||||
"typescript",
|
||||
"java",
|
||||
"kotlin",
|
||||
"c",
|
||||
"cpp",
|
||||
"html",
|
||||
"css",
|
||||
"python",
|
||||
},
|
||||
auto_install = false,
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("nvim-treesitter.configs").setup(opts)
|
||||
end,
|
||||
},
|
||||
}
|
||||
29
reference/home/.config/nvim/lua/vim_options.lua
Normal file
@@ -0,0 +1,29 @@
|
||||
vim.g.mapleader = " "
|
||||
|
||||
local opt = vim.opt
|
||||
|
||||
-- Clipboard: use neovim's built-in OSC 52 provider, no external binary needed.
|
||||
vim.g.clipboard = "osc52"
|
||||
opt.clipboard = "unnamedplus"
|
||||
|
||||
opt.number = true
|
||||
opt.relativenumber = true
|
||||
|
||||
opt.shiftwidth = 2
|
||||
opt.tabstop = 2
|
||||
opt.expandtab = true
|
||||
|
||||
opt.mouse = "a"
|
||||
|
||||
opt.undofile = true
|
||||
|
||||
opt.ignorecase = true
|
||||
opt.smartcase = true
|
||||
|
||||
opt.splitright = true
|
||||
opt.splitbelow = true
|
||||
|
||||
opt.wrap = false
|
||||
|
||||
opt.scrolloff = 8
|
||||
opt.cursorline = true
|
||||
173
reference/home/.config/plasma-org.kde.plasma.desktop-appletsrc
Normal file
@@ -0,0 +1,173 @@
|
||||
[ActionPlugins][0]
|
||||
MiddleButton;NoModifier=org.kde.paste
|
||||
RightButton;NoModifier=org.kde.contextmenu
|
||||
|
||||
[ActionPlugins][1]
|
||||
RightButton;NoModifier=org.kde.contextmenu
|
||||
|
||||
[Containments][23]
|
||||
activityId=
|
||||
formfactor=2
|
||||
immutability=1
|
||||
lastScreen=0
|
||||
location=4
|
||||
plugin=org.kde.panel
|
||||
wallpaperplugin=org.kde.image
|
||||
|
||||
[Containments][23][Applets][24]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.kickoff
|
||||
|
||||
[Containments][23][Applets][24][Configuration]
|
||||
popupHeight=593
|
||||
popupWidth=789
|
||||
|
||||
[Containments][23][Applets][24][Configuration][ConfigDialog]
|
||||
DialogHeight=540
|
||||
DialogWidth=720
|
||||
|
||||
[Containments][23][Applets][24][Configuration][General]
|
||||
favoritesPortedToKAstats=true
|
||||
icon=org.cachyos.hello
|
||||
systemFavorites=suspend\\,hibernate\\,reboot\\,shutdown
|
||||
|
||||
[Containments][23][Applets][24][Configuration][Shortcuts]
|
||||
global=Alt+F1
|
||||
|
||||
[Containments][23][Applets][25]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.pager
|
||||
|
||||
[Containments][23][Applets][26]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.icontasks
|
||||
|
||||
[Containments][23][Applets][26][Configuration][ConfigDialog]
|
||||
DialogHeight=630
|
||||
DialogWidth=810
|
||||
|
||||
[Containments][23][Applets][26][Configuration][General]
|
||||
launchers=
|
||||
|
||||
[Containments][23][Applets][27]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.marginsseparator
|
||||
|
||||
[Containments][23][Applets][28]
|
||||
activityId=
|
||||
formfactor=2
|
||||
immutability=1
|
||||
lastScreen=0
|
||||
location=4
|
||||
plugin=org.kde.plasma.systemtray
|
||||
popupHeight=432
|
||||
popupWidth=432
|
||||
wallpaperplugin=org.kde.image
|
||||
|
||||
[Containments][23][Applets][28][Applets][29]
|
||||
immutability=1
|
||||
plugin=org.kde.kdeconnect
|
||||
|
||||
[Containments][23][Applets][28][Applets][30]
|
||||
immutability=1
|
||||
plugin=org.kde.kscreen
|
||||
|
||||
[Containments][23][Applets][28][Applets][31]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.cameraindicator
|
||||
|
||||
[Containments][23][Applets][28][Applets][32]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.clipboard
|
||||
|
||||
[Containments][23][Applets][28][Applets][33]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.devicenotifier
|
||||
|
||||
[Containments][23][Applets][28][Applets][34]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.keyboardlayout
|
||||
|
||||
[Containments][23][Applets][28][Applets][35]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.manage-inputmethod
|
||||
|
||||
[Containments][23][Applets][28][Applets][36]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.notifications
|
||||
|
||||
[Containments][23][Applets][28][Applets][37]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.keyboardindicator
|
||||
|
||||
[Containments][23][Applets][28][Applets][37][Configuration][General]
|
||||
migrated=true
|
||||
|
||||
[Containments][23][Applets][28][Applets][38]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.weather
|
||||
|
||||
[Containments][23][Applets][28][Applets][40]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.battery
|
||||
|
||||
[Containments][23][Applets][28][Applets][41]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.brightness
|
||||
|
||||
[Containments][23][Applets][28][Applets][42]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.networkmanagement
|
||||
|
||||
[Containments][23][Applets][28][Applets][43]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.volume
|
||||
|
||||
[Containments][23][Applets][28][Applets][43][Configuration][General]
|
||||
migrated=true
|
||||
|
||||
[Containments][23][Applets][28][Applets][44]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.bluetooth
|
||||
|
||||
[Containments][23][Applets][28][Applets][47]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.mediacontroller
|
||||
|
||||
[Containments][23][Applets][28][General]
|
||||
extraItems=org.kde.kscreen,org.kde.plasma.battery,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.keyboardlayout,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.networkmanagement,org.kde.plasma.notifications,org.kde.plasma.volume,org.kde.kdeconnect,org.kde.plasma.bluetooth,org.kde.plasma.keyboardindicator,org.kde.plasma.weather
|
||||
knownItems=org.kde.kscreen,org.kde.plasma.battery,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.keyboardlayout,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.networkmanagement,org.kde.plasma.notifications,org.kde.plasma.volume,org.kde.kdeconnect,org.kde.plasma.bluetooth,org.kde.plasma.keyboardindicator,org.kde.plasma.weather
|
||||
|
||||
[Containments][23][Applets][38]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.digitalclock
|
||||
|
||||
[Containments][23][Applets][38][Configuration]
|
||||
popupHeight=400
|
||||
popupWidth=560
|
||||
|
||||
[Containments][23][Applets][39]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.showdesktop
|
||||
|
||||
[Containments][23][General]
|
||||
AppletOrder=24;25;26;27;28;38;39
|
||||
|
||||
[Containments][4][Wallpaper][org.kde.image][General]
|
||||
Image=/usr/share/wallpapers/cachyos-wallpapers/north.png
|
||||
PreviewImage=/usr/share/wallpapers/cachyos-wallpapers/north.png
|
||||
SlidePaths=/usr/share/wallpapers/
|
||||
|
||||
[Containments][43]
|
||||
ItemGeometries-1920x1080=
|
||||
ItemGeometriesHorizontal=
|
||||
activityId=4dfe7a63-75b1-4532-89bb-9e8ebc7e360d
|
||||
formfactor=0
|
||||
immutability=1
|
||||
lastScreen=0
|
||||
location=0
|
||||
plugin=org.kde.plasma.folder
|
||||
wallpaperplugin=org.kde.image
|
||||
|
||||
[ScreenMapping]
|
||||
itemsOnDisabledScreens=
|
||||
2
reference/home/.config/powermanagementprofilesrc
Normal file
@@ -0,0 +1,2 @@
|
||||
[Migration]
|
||||
MigratedProfilesToPlasma6=powerdevilrc
|
||||
56
reference/home/.config/shelly/config.json
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"FileSizeDisplay": "Megabytes",
|
||||
"DefaultExecution": "UpgradeAll",
|
||||
"ParallelDownloadCount": 10,
|
||||
"Culture": "",
|
||||
"AurEnabled": true,
|
||||
"ShellySearchEnabled": false,
|
||||
"AurWarningConfirmed": true,
|
||||
"FlatPackEnabled": true,
|
||||
"WindowWidth": 1021,
|
||||
"WindowHeight": 600,
|
||||
"DefaultView": "HomeScreen",
|
||||
"UseOldMenu": false,
|
||||
"TrayEnabled": true,
|
||||
"TrayCheckIntervalHours": 72,
|
||||
"NoConfirm": false,
|
||||
"NewInstall": false,
|
||||
"CurrentVersion": "2.4.1.2",
|
||||
"UseWeeklySchedule": false,
|
||||
"DaysOfWeek": [],
|
||||
"Time": null,
|
||||
"ShellyIconsEnabled": true,
|
||||
"AppImageEnabled": true,
|
||||
"NewInstallInitSettings": true,
|
||||
"UseSymbolicTray": true,
|
||||
"RemoveCache": false,
|
||||
"TrayIconPath": "",
|
||||
"TrayUpdatesIconPath": "",
|
||||
"DefaultPageDropDown": "Packages",
|
||||
"RecommendedEnabled": true,
|
||||
"ProgressBarStyle": "Blocks",
|
||||
"ProgressBarFps": 7,
|
||||
"ProgressBarWidth": 24,
|
||||
"OutputMode": "singlepane",
|
||||
"SinglePaneMaxStickies": 6,
|
||||
"TrayAutoStart": false,
|
||||
"PackageDowngradeEnabled": false,
|
||||
"PackageManagementCascadeDelete": true,
|
||||
"PackageManagementRemoveConfigs": false,
|
||||
"PackageManagementRemoveOptionalDeps": true,
|
||||
"PackageManagementShowHidden": false,
|
||||
"PackageInstallUpgrade": false,
|
||||
"PackageInstallShowHidden": false,
|
||||
"PackageUpdateShowHidden": false,
|
||||
"AurInstallUseChroot": false,
|
||||
"AurInstallRunChecks": false,
|
||||
"AurRemoveCascadeDelete": true,
|
||||
"AurRemoveShowHidden": false,
|
||||
"AurUpdateRunChecks": false,
|
||||
"AurUpdateShowHidden": false,
|
||||
"AppImageInstallPath": "",
|
||||
"StarFishEnabled": false,
|
||||
"PackageInstallView": "Grid",
|
||||
"PackageUpdateView": "Grid",
|
||||
"PackageManageView": "Grid"
|
||||
}
|
||||
6
reference/home/.config/spectaclerc
Normal file
@@ -0,0 +1,6 @@
|
||||
[ImageSave]
|
||||
lastImageSaveLocation=file:///home/alexion/Pictures/Screenshots/Screenshot_20260704_153951.png
|
||||
translatedScreenshotsFolder=Screenshots
|
||||
|
||||
[VideoSave]
|
||||
translatedScreencastsFolder=Screencasts
|
||||
74
reference/home/.config/tmux/tmux.conf
Normal file
@@ -0,0 +1,74 @@
|
||||
# Prefix: Ctrl-Space. Chosen over Ctrl-b (awkward reach) and Ctrl-a (collides
|
||||
# with readline's beginning-of-line, which fights editing text in shells and
|
||||
# in Claude Code's prompt). Verified clear of IME/KDE/Claude Code bindings.
|
||||
unbind C-b
|
||||
set -g prefix C-Space
|
||||
bind C-Space send-prefix
|
||||
|
||||
set -g mouse on
|
||||
# OSC52 lets copy-mode selections land in the system clipboard via the
|
||||
# terminal itself (Alacritty supports it) -- no wl-copy/xclip needed, and it
|
||||
# still works over SSH later since the escape sequence travels with the data.
|
||||
set -g set-clipboard on
|
||||
|
||||
set -g mode-keys vi
|
||||
set -g status-keys vi
|
||||
bind -T copy-mode-vi v send -X begin-selection
|
||||
bind -T copy-mode-vi y send -X copy-selection-and-cancel
|
||||
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-selection-and-cancel
|
||||
|
||||
# tmux's -h/-v split flags name the *arrangement*, not the divider line, which
|
||||
# is backwards from how the divider looks -- so pick keys by what they draw:
|
||||
# \ draws a side-by-side split (vertical line), - draws a stacked split
|
||||
# (horizontal line). Unshifted versions of |/- since splitting is frequent.
|
||||
unbind %
|
||||
unbind '"'
|
||||
bind \\ split-window -h -c "#{pane_current_path}"
|
||||
bind - split-window -v -c "#{pane_current_path}"
|
||||
bind c new-window -c "#{pane_current_path}"
|
||||
|
||||
bind h select-pane -L
|
||||
bind j select-pane -D
|
||||
bind k select-pane -U
|
||||
bind l select-pane -R
|
||||
|
||||
set -g base-index 1
|
||||
setw -g pane-base-index 1
|
||||
set -g renumber-windows on
|
||||
|
||||
bind r source-file ~/.config/tmux/tmux.conf \; display-message "tmux.conf reloaded"
|
||||
|
||||
# True color passthrough. ",*" (rather than naming Alacritty's xterm-256color
|
||||
# specifically) so this keeps working if the terminal emulator changes later.
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -ag terminal-overrides ",*:RGB"
|
||||
|
||||
# Default 500ms delay on Esc exists to disambiguate meta-key sequences; it
|
||||
# reads as noticeable lag exiting insert mode in neovim, so drop it.
|
||||
set -sg escape-time 10
|
||||
|
||||
set -g history-limit 10000
|
||||
|
||||
# Flag a background window in the status bar when its Claude Code session
|
||||
# rings the terminal bell (permission prompt / task done while unfocused).
|
||||
# bell-action=none stops tmux from ever passing the actual BEL through to
|
||||
# Alacritty (no beep, no flash) -- monitor-bell's per-window tracking for the
|
||||
# status-line highlight is independent of that and keeps working.
|
||||
setw -g monitor-bell on
|
||||
set -g bell-action none
|
||||
|
||||
# Minimal status bar (session + window list only), styled to match the Nord
|
||||
# theme already used in alacritty.toml.
|
||||
set -g status-position bottom
|
||||
set -g status-style "bg=#2E3440,fg=#D8DEE9"
|
||||
set -g status-left " #S "
|
||||
set -g status-left-length 20
|
||||
set -g status-right ""
|
||||
setw -g window-status-current-style "bg=#88C0D0,fg=#2E3440,bold"
|
||||
setw -g window-status-current-format " #I:#W "
|
||||
setw -g window-status-format " #I:#W "
|
||||
setw -g window-status-style "fg=#4C566A"
|
||||
setw -g window-status-bell-style "bg=#BF616A,fg=#2E3440,bold"
|
||||
|
||||
set -g pane-border-style "fg=#3B4252"
|
||||
set -g pane-active-border-style "fg=#88C0D0"
|
||||
16
reference/home/.config/user-dirs.dirs
Normal file
@@ -0,0 +1,16 @@
|
||||
# This file is written by xdg-user-dirs-update
|
||||
# If you want to change or add directories, just edit the line you're
|
||||
# interested in. All local changes will be retained on the next run.
|
||||
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
|
||||
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
||||
# absolute path. No other format is supported.
|
||||
#
|
||||
XDG_DESKTOP_DIR="$HOME/.desktop"
|
||||
XDG_DOWNLOAD_DIR="$HOME/dwn"
|
||||
XDG_TEMPLATES_DIR="$HOME/.ignoreme"
|
||||
XDG_PUBLICSHARE_DIR="$HOME/.ignoreme"
|
||||
XDG_DOCUMENTS_DIR="$HOME/doc"
|
||||
XDG_MUSIC_DIR="$HOME/mus"
|
||||
XDG_PICTURES_DIR="$HOME/pic"
|
||||
XDG_VIDEOS_DIR="$HOME/vid"
|
||||
XDG_PROJECTS_DIR="$HOME/wrk"
|
||||