Compare commits

..

No commits in common. "main" and "v0.1.0" have entirely different histories.
main ... v0.1.0

189 changed files with 4914 additions and 12775 deletions

View file

@ -1,50 +0,0 @@
name: Check and mirror to GitHub
on:
push:
pull_request:
workflow_dispatch:
jobs:
checks:
runs-on: ${{ vars.CI_RUNNER_LABEL || 'docker' }}
container: node:22-bookworm
timeout-minutes: 20
steps:
- name: Prepare CI tools
run: |
apt-get update
apt-get install -y --no-install-recommends python3 git ca-certificates
- name: Checkout
uses: https://github.com/actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Go
uses: https://github.com/actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version: '1.26.7'
cache: false
- name: Check code and bundled assets
run: python3 tools/ci/check.py
github-mirror:
needs: checks
if: github.event_name != 'pull_request' && github.repository == 'fiwdev/Fiw-Gentoo-Dots'
runs-on: ${{ vars.CI_RUNNER_LABEL || 'docker' }}
container: node:22-bookworm
timeout-minutes: 10
steps:
- name: Prepare mirror tools
run: |
apt-get update
apt-get install -y --no-install-recommends python3 git openssh-client ca-certificates
- name: Checkout
uses: https://github.com/actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Publish branches and tags to GitHub
env:
GH_MIRROR_SSH_KEY: ${{ secrets.GH_MIRROR_SSH_KEY }}
MIRROR_SOURCE_REF: ${{ github.ref }}
MIRROR_SOURCE_SHA: ${{ github.sha }}
run: python3 tools/ci/mirror.py

View file

@ -1,31 +0,0 @@
name: Checks
on:
push:
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
checks:
runs-on: ubuntu-latest
container: node:22-bookworm
timeout-minutes: 20
steps:
- name: Prepare CI tools
run: |
apt-get update
apt-get install -y --no-install-recommends python3 git ca-certificates
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Go
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version: '1.26.7'
cache: false
- name: Check code and bundled assets
run: python3 tools/ci/check.py

179
README.md
View file

@ -9,111 +9,164 @@
![Gentoo](https://img.shields.io/badge/Gentoo-54487A?logo=gentoo&logoColor=white) ![Gentoo](https://img.shields.io/badge/Gentoo-54487A?logo=gentoo&logoColor=white)
![KDE Plasma](https://img.shields.io/badge/KDE_Plasma-1D99F3?logo=kde&logoColor=white) ![KDE Plasma](https://img.shields.io/badge/KDE_Plasma-1D99F3?logo=kde&logoColor=white)
![License](https://img.shields.io/badge/license-MIT-purple) ![License](https://img.shields.io/badge/license-MIT-purple)
![Status](https://img.shields.io/badge/status-work_in_progress-yellow)
[Setup](docs/setup.md) · [Shortcuts](docs/shortcuts.md) · [Styling](docs/kde-style.md) · [Packages](#packages) [KDE styling](docs/kde-style.md) · [Shortcuts](docs/shortcuts.md) · [Packages](#package-sections) · [Setup](docs/setup.md)
</div> </div>
## About ---
My personal Gentoo restoration kit, mainly for my own devices: ## Overview
- KDE colours, fonts, cursor, window styling and my exact keybinds. A personal Gentoo rice and restoration kit: my Plasma styling, current
- Separate package lists and individually optional app configs. shortcuts, package lists and the app preferences I use every day. Built
- Fish, Kitty and Neovim preferences that work across compositors. mainly for my own devices, with deliberate updates and a preview before
- Binaries preferred, with a small deliberate source-build list. anything is applied.
- A Bubble Tea chooser with a final preview, conflict prompts and backups.
Stock and Fiw's Ryzen have been installed and checked in Gentoo QEMU/KVM. - **KDE first:** colours, fonts, cursor, window styling and current keybinds.
The full TUI restore, KDE presets, optional apps, GRUB/Limine and ext4/Btrfs - **Pick what you want:** package sections and individually optional app configs.
booting passed. See [tested scope and hardware limits](docs/setup.md#current-scope). - **Portable terminals:** Fish, Kitty and Neovim work across compositors.
- **Binaries preferred:** a small source list, with a choice before extra builds.
- **Keep your edits:** conflict prompts, backups and `.new` proposals on updates.
## Screenshots **Work in progress:** configuration restoration and the TUI are ready for review.
Package and boot execution need a supervised first run on a fresh Gentoo system.
### Desktop The existing installation has not been changed by creating this repo.
![Fiw's Gentoo desktop](assets/Screenshots/Main-screen.png)
My running desktop. Wallpapers and panels stay local; the saved Fastfetch
preset uses the built-in Gentoo logo.
### Installer
![Terminal installer options](assets/Screenshots/Install-script.png)
## Start ## Start
```sh ```sh
git clone https://git.fiwlabs.dev/fiwdev/Fiw-Gentoo-Dots.git git clone --branch v0.1.0 https://git.fiwlabs.dev/fiwdev/Fiw-Gentoo-Dots.git
cd Fiw-Gentoo-Dots cd Fiw-Gentoo-Dots
./install ./install
``` ```
Start from an installed Gentoo system. Linux amd64 includes a prebuilt TUI; The Bubble Tea interface offers a preset, package sections, individual app
Git and Python 3.11+ are enough. Go 1.24+ is needed only for source builds. configs, kernel/bootloader choices, individual Flatpaks, optional services and
Choose your packages/configs, review the plan, then select an action. a final preview. Enter saves without applying. `r` runs the full restore;
Enter saves your choices without applying them. `a` restores configs, `i` installs Portage packages, `f` installs Flatpaks,
`v` enables selected services and `b` deploys the selected bootloader.
`u` opens config backups for preview and restoration. Apply actions finish
with a [combined report](docs/reports.md) of outcomes and remaining setup.
Linux amd64 includes a verified prebuilt TUI; Git and Python 3.11+ are enough.
Go 1.24+ is the source fallback for changed frontend code or other platforms.
Saved selections are reused on subsequent launches. See the
[v0.1.0 snapshot and build instructions](docs/releases.md).
See [setup and TUI keys](docs/setup.md), [tagged snapshots](docs/releases.md), For a preview without building the TUI:
[saved devices](docs/devices.md), [config updates](docs/updates.md) and
[backup restoration](docs/backups.md). ```sh
./install --plan --profile stock
./install --plan --profile fiw-ryzen
```
See [setup](docs/setup.md) for installation steps and draft limitations.
## Presets ## Presets
| Preset | Build settings | Kernel | | Preset | Build settings | Kernel |
|---|---|---| |---|---|---|
| Stock | Portable settings, binaries preferred | Generic Gentoo binary kernel | | Stock | Portable compiler settings; binary packages preferred | Generic Gentoo binary kernel |
| Fiw's Ryzen | Ryzen 9900X / Zen 5 tuning and NVIDIA | Custom kernel + binary fallback | | Fiw's Ryzen | Current Ryzen 9900X/Zen 5 tuning and NVIDIA configuration | Tested custom kernel plus generic binary fallback |
Both compile Fastfetch, jq and zip. Selected custom kernels and modules also Both deliberately compile Fastfetch, jq and zip. Custom kernels and their
compile. Other source builds require a compile-or-skip choice; missing/skipped matching external modules compile when selected. Other packages prefer
packages appear in the [final report](docs/reports.md). Portage binaries or upstream `-bin` packages. Additional source builds
require a compile-or-skip choice, with compilation recommended; skipped
dependencies also cause dependent requested applications to be skipped.
## Packages The custom kernel snapshot currently targets 7.2.8 with the tested
CachyOS 7.2.7-1 patch. Refresh it explicitly when updating the snapshot.
## Package sections
| List | Contents | | List | Contents |
|---|---| |---|---|
| [kde](packages/kde.list) | Plasma, Plasma Login Manager and desktop components | | [kde](packages/kde.list) | Plasma, Plasma Login Manager, desktop components and supporting fonts |
| [fiw-apps](packages/fiw-apps.list) | Everyday apps, including Dolphin, Ark, Gwenview and Spectacle | | [fiw-apps](packages/fiw-apps.list) | Everyday apps including Dolphin, Ark, Gwenview and Spectacle |
| [cli](packages/cli.list) | Shell and terminal utilities | | [cli](packages/cli.list) | Shell, terminal utilities and FFmpeg |
| [dev](packages/dev.list) | Languages and development tools | | [dev](packages/dev.list) | Languages and development tools |
| [gaming](packages/gaming.list) | Steam, Proton, Prism, MangoHud and r2modman | | [gaming](packages/gaming.list) | Steam, Proton, Prism, MangoHud and r2modman; Sober is in flatpaks/gaming.list |
| [system](packages/system.list) | System utilities; kernels follow your selection | | [system](packages/system.list) | System utilities; the selected kernels are added by the installer |
| [fiw-tools](packages/fiw-tools.list) | FiwNode, Apdatifier Gentoo, OpenDeck and Music Presence | | [fiw-tools](packages/fiw-tools.list) | FiwNode binary release, Apdatifier Gentoo, OpenDeck and Music Presence |
| [tidewm](packages/tidewm.list) | Optional compositor and supporting tools | | [tidewm](packages/tidewm.list) | Optional compositor and supporting utilities |
Filelight, NVIDIA and Btrfs tools are separate extras. Sober and LocalSend are Filelight, NVIDIA drivers and Btrfs tools are separate extras. Ext4 does not
individually optional Flatpaks. Limine and GRUB are optional; keeping the require Btrfs tools. LocalSend and Sober are individually optional Flatpaks
existing bootloader is the default. See [boot setup](docs/boot.md). in the TUI, grouped with apps and gaming respectively.
Limine and GRUB are optional alternatives; retaining the current loader is
the default. Kernel choice is independent of bootloader choice. Deployment
previews the target ESP and firmware choices; see [boot setup](docs/boot.md).
The [package audit](docs/package-audit.md) accounts for all current explicit
selections. [TideWM](docs/tidewm.md) remains an optional source build.
## Configs ## Configs
Every [app config](docs/app-configs.md) is independently optional. KDE styling Every config is independently selectable, even when its package section is
includes matching GTK preferences; autostart has its own checkbox. unchecked—for example, to configure apps already installed. KDE appearance covers
Neovim's Catppuccin theme, VS Code's ayu MiDas theme, fonts and cursor assets colours, fonts, cursor and window decorations, with matching GTK preferences.
are bundled with their licences. Accounts and sessions stay local. Dolphin styling has its own checkbox. Panels, widgets and
wallpapers are excluded. All portable current shortcut assignments,
including disabled defaults, are captured with their launchers and helpers;
unused machine-specific activity IDs are omitted.
Local edits are preserved on updates, with proposed changes saved as `.new` Fish, Kitty and Neovim are usable without KDE or KWin. Fastfetch keeps the
for review. Replaced files get backups. Spotify stays stock; tree layout and purple colours with the built-in Gentoo logo. MangoHud and
[customization](docs/spotify.md) and [Firefox-Privacy](docs/firefox.md) are Vesktop preferences are included; browser profiles, chat sessions and account
explicit optional steps. data are excluded. App autostart is a separate optional selection.
Ark, Gwenview and Prism preferences are individually optional too; see
[app configs and requirements](docs/app-configs.md). Each config's required
packages appear in the final preview without changing package selections.
Spotify is stock by default. The existing customization scripts remain an
[explicit optional step](docs/spotify.md). [Firefox-Privacy](docs/firefox.md)
is also optional.
Existing differences prompt apply-or-keep and get backups when replaced.
Updates leave locally edited configs intact and write the proposal to `.new`.
KConfig patches preserve unrelated keys and groups; JSON patches preserve
unrelated preferences and login data already on the target device.
The TUI can [restore user config backups](docs/backups.md), with a preview,
confirmation and a new backup of the replaced current files.
## Project layout
```text
cmd/dots/ Bubble Tea selection interface
configs/ Optional KDE and app configs
packages/ Categorized Portage package lists
presets/ Stock and Fiw's Ryzen defaults
portage/ Build settings and binary preferences
overlay/ Selected additional packages
optional/ Kernel, boot and app helpers
flatpaks/ Separate optional Flatpak lists
docs/ Setup, decisions and asset credits
```
## Maintenance ## Maintenance
```sh ```sh
python3 tools/capture.py --config kde-shortcuts python3 tools/capture.py # recapture only the explicit allowlist
python3 tools/capture.py --config kitty neovim
python3 tools/check-private.py python3 tools/check-private.py
python3 -m unittest discover -s tests
go test ./...
``` ```
Review `git diff` before committing. See [capture options](docs/capture.md) Missing selected overlays are staged before package resolution. Optional
and [helper commands](docs/scripts.md). Device choices and local files are service presets enable audio, networking, Bluetooth and power profiles for
gitignored. Forgejo is primary; [GitHub](https://github.com/Fi3w0/Fiw-Gentoo-Dots) the next boot/login. See [setup](docs/setup.md) and the [helper list](docs/scripts.md).
receives branches and tags automatically after [CI checks](docs/ci.md).
Review captures before committing. `local/` and built binaries are ignored.
This repo starts with fresh history. Third-party theme/cursor assets retain
their licence notices; overlay ebuilds retain their original notices.
## License ## License
Original code and configs: [MIT](LICENSE). Bundled third-party assets keep Original code and configuration contributions are licensed under [MIT](LICENSE).
their own licences; see [credits](docs/assets.md). Bundled third-party assets, fonts, patches and ebuilds keep their own licences
and attribution; see [asset credits](docs/assets.md).
---
<div align="center">A personal Gentoo setup by Fiw.</div> <div align="center">A personal Gentoo setup by Fiw.</div>

View file

@ -1 +1 @@
0.1.2 0.1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 MiB

View file

@ -1 +1 @@
98b963755ac7137176b07fa9a94cd340acd1f65d4de9f8d173aea7ea02862548 fiw-dots-linux-amd64.gz 767c35da0b46eaa785fa20b2d008e8403aa64e46223e116228d6b4be91e6dfb5 fiw-dots-linux-amd64.gz

Binary file not shown.

View file

@ -1,12 +1,12 @@
{ {
"version": "0.1.2", "version": "0.1.0",
"source_sha256": "fec416b33a93e3de28faf388d69d6b86c39296715a1a87a6ed32d6fb51c4a36c", "source_sha256": "df16d0f9960968f191147aa7c45ff1161b30616f7e545f7a28bae9dc038d026e",
"binaries": { "binaries": {
"linux-amd64": { "linux-amd64": {
"file": "fiw-dots-linux-amd64.gz", "file": "fiw-dots-linux-amd64.gz",
"sha256": "c2856c93808c16c1d9003891beffd368e0c80b7ca965f4ca4e8849912fcfedaa", "sha256": "32e133786d350016085741f1e4f15fae174977cb7cd63eae7999f97d3715c59b",
"gzip_sha256": "98b963755ac7137176b07fa9a94cd340acd1f65d4de9f8d173aea7ea02862548", "gzip_sha256": "767c35da0b46eaa785fa20b2d008e8403aa64e46223e116228d6b4be91e6dfb5",
"size": 3567778 "size": 3555490
} }
} }
} }

View file

@ -1,147 +0,0 @@
{
"catppuccin": {
"upstream": "https://github.com/catppuccin/nvim",
"commit": "edefef779ab08ce1a4a404713e3012b0d202bd35",
"root": "configs/neovim/files/.config/nvim/pack/themes/start/catppuccin",
"license": "MIT",
"note": "Runtime colors, lua, after and original LICENSE.md; development files omitted.",
"sha256": {
"LICENSE.md": "814096d2c34cc216c624738a49356f32b7237733b4f7edb0685f4e50ef5074ba",
"after/queries/css/highlights.scm": "9ef978da67df48bd10f63a7e16a3a94786a52fad8623fde6abeb60c15711de9c",
"after/queries/javascript/highlights.scm": "db58666e2f5bd6e4198c600976c4a663a9bcc98b7f971d9e317ea2378d204d0d",
"after/queries/typescript/highlights.scm": "db58666e2f5bd6e4198c600976c4a663a9bcc98b7f971d9e317ea2378d204d0d",
"colors/catppuccin-frappe.lua": "d0b770fdea4ac6f7cf691c4fb7a66d231fc4c135de8fc91cf746d92bc7f7d4bf",
"colors/catppuccin-latte.lua": "90d0000a70dd909847cf453c779eb1175540a3a4a58e1aa2cce85a2b18f86ec4",
"colors/catppuccin-macchiato.lua": "d5f0982bfebce1414a44dcff86167504c3a806d0a69fa335aaa719a80de2269e",
"colors/catppuccin-mocha.lua": "74fb39acf4d305f83bc6bda410f131efb7af3aa3ce386f35ba893e1ad0f47f2c",
"colors/catppuccin-nvim.vim": "d3155fd94ee3859bf085ee68e3e169d9990cfd3d5a96384128b774a15cf20dba",
"colors/catppuccin.lua": "1e1018f7bcdf93d0bb0caedb7ed78968415b4034d9c6a7a677e97d93a33d262c",
"lua/barbecue/theme/catppuccin-frappe.lua": "42bcd5254df562dce48c50abd4064fb47b43f96b87fae770a40be25b8a0999b2",
"lua/barbecue/theme/catppuccin-latte.lua": "b8fe0214831c704a7e6a23a449a439db55bd8763bc3d97574b3f5b1d9001d40e",
"lua/barbecue/theme/catppuccin-macchiato.lua": "21d784621c89fee7f65c1e0487b53cd4714657c53ec6cc8b58a34d32eb6f4b06",
"lua/barbecue/theme/catppuccin-mocha.lua": "0cc2c282aea656e569730e3e46109385cfdb5c134b05f0b9d31fcf6a1881ccb3",
"lua/barbecue/theme/catppuccin-nvim.lua": "83945477aa880778ff313fe8fc57d486886c53629809471a27a2d8253feb400e",
"lua/catppuccin/groups/editor.lua": "34ee0baf52cff0bdc9fe667b80ff92f14bd8664695e96bcea5857c5ac36cf018",
"lua/catppuccin/groups/integrations/aerial.lua": "cb2599cbeb02012a01ff86f153ba71a6512d179a56356f9e752792faaad50331",
"lua/catppuccin/groups/integrations/alpha.lua": "20ffa273938f47611c54af9464da4fcd75e0cf19c9f64e5e57541c662b276f1e",
"lua/catppuccin/groups/integrations/artio.lua": "402c306b0bb6ecc8e65c77c90e7b0d7b883fb5a7f14c0e8299defdfbac9cb93f",
"lua/catppuccin/groups/integrations/avante.lua": "d035a3f0ced7e5a585999d83947ec27b8b2720130d1056d8c5ca13173db97fa7",
"lua/catppuccin/groups/integrations/barbar.lua": "a8c74328e4cd4c1cfc8fb28fd57e986fec4622b822b91a854d98d53b134ec5ca",
"lua/catppuccin/groups/integrations/beacon.lua": "22af2a39673f000c34d1a2151e0f11722e3834b74e9b07f9a79a791b5cdbf2e9",
"lua/catppuccin/groups/integrations/blink_cmp.lua": "8bedb10753b941cfa08514f81d7483e1688faf98b446f2a4ee01aa5645836ecc",
"lua/catppuccin/groups/integrations/blink_indent.lua": "2baacb882dad63b237fb13d4c80f7af5a857167475d0fab3aba2eb48d31d3334",
"lua/catppuccin/groups/integrations/blink_pairs.lua": "48b261f4437d99c39b307cdf81bc2b7606d1be378717cd8e4ba8cbfc6267e14f",
"lua/catppuccin/groups/integrations/buffon.lua": "376cd4344432dd65c3471863ba91a26530a31b064e3e1a53510e3c3c60374e03",
"lua/catppuccin/groups/integrations/cmp.lua": "d2aeff85075583e8427c0e4ddbe4463c1f3e31bd3435603fb6dc0efca79e3cd7",
"lua/catppuccin/groups/integrations/coc_nvim.lua": "19e3ae3a57be79b55d6ea361f40c47acc3bf759d13aaac775881727ae6d3823a",
"lua/catppuccin/groups/integrations/colorful_winsep.lua": "150e5862f68bf758eec4caf7a8e879afae8d7e8919d3888620c5fb2863d3f0e4",
"lua/catppuccin/groups/integrations/copilot_vim.lua": "97fb547d540e7a6bfb151472feac9ceb4f8ac476e41a1b2edb13a9a022381f07",
"lua/catppuccin/groups/integrations/dadbod_ui.lua": "039b52e1a60cf50b6c409a54dcfcb014d6b5e8630a04e26741d9f30bd31caa81",
"lua/catppuccin/groups/integrations/dap.lua": "3bce98869a5cf1dc74b764a489ebda0a0a2dcae74601beaa4b1b6089aa5ec69e",
"lua/catppuccin/groups/integrations/dap_ui.lua": "f85c73431892360006cd83203e261a1047101b4865268092878d331d488b450b",
"lua/catppuccin/groups/integrations/dashboard.lua": "830ce29d174ed6b97e0a4371002f62898639ce40a6705e88e92e496c80b78403",
"lua/catppuccin/groups/integrations/diffview.lua": "9331d113de7cb5f29bd3bb7b968c0c3d25e985aee67031a47c6efeff36ea3697",
"lua/catppuccin/groups/integrations/dropbar.lua": "1ecd99800619649aabb821070a909de0179a71da928d9db6352b183ef2c0835b",
"lua/catppuccin/groups/integrations/fern.lua": "8bb40443fb4894cc387eed3774909e00d829c03817432200b01983a5bb557935",
"lua/catppuccin/groups/integrations/fidget.lua": "61dde6fcfff3f7a28c99cae55ca073485136519c644bf4f72a0be37a8673e6bd",
"lua/catppuccin/groups/integrations/flash.lua": "1655696967541d4affece5542d751e5c75f8905c3a57d31df17b7947a269a601",
"lua/catppuccin/groups/integrations/fzf.lua": "15e3baceb760257106fd2eda566ee0c6264f94647d2f81ff3ee18f22db32f66c",
"lua/catppuccin/groups/integrations/gitgraph.lua": "8e48914515cb256d4c2739837f081956285ef045f8d5a774f53a56341ed673d0",
"lua/catppuccin/groups/integrations/gitgutter.lua": "65c6addaa60723ebbac45b0fc3d9ea01826b31c1f466a96b10b6d169c5c5a2a6",
"lua/catppuccin/groups/integrations/gitsigns.lua": "a9d6bbce752198a2dd4f4fae8fab8896bb84dd5ae7c03d1b09e919df1e0d0e23",
"lua/catppuccin/groups/integrations/grug_far.lua": "09f1e23be01d7e9175638e62387f42f0f928f1c82f69f090b58055eb9f674e52",
"lua/catppuccin/groups/integrations/harpoon.lua": "555387b4a0de62be54264e2adc438cf65ab5509fe0eaee7313306a82debc12ba",
"lua/catppuccin/groups/integrations/headlines.lua": "10f01ab32094733f09dda3c5f7a0effbc57b5e5b995d827899e88d53bb53ca48",
"lua/catppuccin/groups/integrations/hop.lua": "18a9568ca191cf4b9f9f77113d09c101d4f31b7c456ae0da7c0b47068f96b8bf",
"lua/catppuccin/groups/integrations/illuminate.lua": "d886f4d5275849101da9bacdbb4fc9180c2f658251694c63dc16c7bc50fbfcce",
"lua/catppuccin/groups/integrations/indent_blankline.lua": "0c0d72ea4117dc9ca2ecebbd1edb31111521d978a72dc8a93ca2df2cab931d11",
"lua/catppuccin/groups/integrations/leap.lua": "bb972bc3e7249a24a6a9023683070f1af4617bab3e32109621b41218655c6352",
"lua/catppuccin/groups/integrations/lightspeed.lua": "68f3239d64c6d3bd244c03973ff1b80643d9ca0545f8619e037cf6813fb44752",
"lua/catppuccin/groups/integrations/lir.lua": "bd386a9559d87e503a90348ec0dbb4351516c39a58c1eeb97204e33370fba14e",
"lua/catppuccin/groups/integrations/lsp_saga.lua": "eae83c1941bb7b90e1bfb0ac1db5aa130e2c9ada55124175c14b6cb9e8f4b819",
"lua/catppuccin/groups/integrations/lsp_trouble.lua": "7dff289346e6c0e6d82823b4b1ff55f0e7205a109c80f93cf1d74b4c774ec485",
"lua/catppuccin/groups/integrations/markview.lua": "ad1260c16e1b8913e4fb23372c4551d7bfeaa872cd7649adb0c99b71c11f6b14",
"lua/catppuccin/groups/integrations/mason.lua": "9b43638900613003456c515689c80f0d18cfd53daf632e103a21a194c7526277",
"lua/catppuccin/groups/integrations/mini.lua": "b44ea384e1bd8631b86717c6d45dc306abbf3154ab155e6d92a89ffac5bd1d7e",
"lua/catppuccin/groups/integrations/navic.lua": "975b5f57fc26688bf950f10938ac7d9a71c3632d22ffe14c261fc53ca9a1313e",
"lua/catppuccin/groups/integrations/neogit.lua": "31793ba38044ed119d392e03c3b62225400f4a38e6f1d9aad9e6adc0cdf5a67b",
"lua/catppuccin/groups/integrations/neotest.lua": "3f923cc1746f153b1c7ea8522b85cbf2a2e383c1d1f6e75abe2e2d7bc14b858a",
"lua/catppuccin/groups/integrations/neotree.lua": "26a7c4b63f954b4d7241adf4ef6b5ede9d52a34447ebf9bec421292bdcdbfb97",
"lua/catppuccin/groups/integrations/noice.lua": "582c9ecbe0aa3156bc22f9a76d1c160feea0ee895732c43c29552b3c4284028f",
"lua/catppuccin/groups/integrations/notifier.lua": "308faefafbd20d211f4c10a594bebaa3ed4c6c3e904b9eac99bf0fa08c23e36d",
"lua/catppuccin/groups/integrations/notify.lua": "753dd004bceeda176ca14798e369a7f214fbfd78258fb1e52d586d5f2770f4b2",
"lua/catppuccin/groups/integrations/nvim_surround.lua": "eb7ee6e25095af66b95fcd4edb0da68533bbcde73a032c8dcd94a8b80b17a94b",
"lua/catppuccin/groups/integrations/nvimtree.lua": "9fd02398db64403160a0dd74efb312f07c02a9e16780d33057f975eda0017d4f",
"lua/catppuccin/groups/integrations/octo.lua": "aa5e6cd0c0d8212c8bae0552caf3a585cb23694e97f693318b87331a0130b708",
"lua/catppuccin/groups/integrations/overseer.lua": "92bc318a88e5defdb2bcba933f259f15a2110777c7e4369baef02e30631c794a",
"lua/catppuccin/groups/integrations/pounce.lua": "9cea987d67ed8be8b96a44ad033aa891db28e2efd071969f73c1729fed7cddc4",
"lua/catppuccin/groups/integrations/rainbow_delimiters.lua": "1a62382dc80d7229beb0b3856fc398c2cfca7966556540694f6359e1ba4279a1",
"lua/catppuccin/groups/integrations/render_markdown.lua": "214d1d388e3b9042cae9d1115c7c26b443a1914fab64eed1f5a336c3c31fa37e",
"lua/catppuccin/groups/integrations/sandwich.lua": "ae4d4dedf4bd8e28e98055b02ef2f45d3a4386314028399142805d6d8fffba1e",
"lua/catppuccin/groups/integrations/signify.lua": "b614ae4abfd8db355c0b4be5d35d97eb07b46f20705962c4c086024bf0c5581b",
"lua/catppuccin/groups/integrations/snacks.lua": "9d505961e771340009d4d2f8727d6e4ad0d210db35860d48c4c1a310f3e1fcdf",
"lua/catppuccin/groups/integrations/symbols_outline.lua": "f23afaea70c8af25af5cc3e484b61f0addcc223612119dc06f82ed22d4e60895",
"lua/catppuccin/groups/integrations/telekasten.lua": "3ee8c1253c232c9541f932c07fc14164371d10248278378b5a2a37f1b9f83471",
"lua/catppuccin/groups/integrations/telescope.lua": "92f86988ac114c2b8bc985df034223306c486b1998cf8b829f35bc131f55568d",
"lua/catppuccin/groups/integrations/treesitter_context.lua": "e34887fc9eb755d2b2a205c650dac452bcd626777d58060fd863b8a3501a8fd9",
"lua/catppuccin/groups/integrations/ts_rainbow.lua": "14c47153066db7402dd8746aa1f220d13c05a6851f5baf60b883238bec8a542f",
"lua/catppuccin/groups/integrations/ts_rainbow2.lua": "0653536e22b227b80cb91b5019382cb088436c0aaf20ee7cb12f38263c47d184",
"lua/catppuccin/groups/integrations/ufo.lua": "8defc9c1cda22e12a6159c9d5ef877791395d503b46f3f31598bac89ced44a67",
"lua/catppuccin/groups/integrations/vim_sneak.lua": "e9bbfa98082602cd3ad5dac35b82599004b843810d2630c6ba9a061a99b4abf3",
"lua/catppuccin/groups/integrations/vimwiki.lua": "74c4368d697672c7785b7067e3f0c4295820e7bd26bfa6270c64e0f5e0d79706",
"lua/catppuccin/groups/integrations/which_key.lua": "231cfd466f8ad2daf9924bf4fe51a8f511e755bbc99bc093e156b40f4143ffb5",
"lua/catppuccin/groups/integrations/window_picker.lua": "937409a7c27fbf684b16bb7cc9f70873883a81c8d27c34c36414e91dbc566be8",
"lua/catppuccin/groups/lsp.lua": "9652febc3ed5114357f264b699d1a3ee820f05a781654674518b884ea9618d4c",
"lua/catppuccin/groups/semantic_tokens.lua": "ffcda7ae73b7ce6220a44bf43d013aea2be26c4870d0fd76a7beaf558afd60fd",
"lua/catppuccin/groups/syntax.lua": "7f1d30a72e2dca94a38ab35aff861953082c8012a41217abf349c1799f0b989c",
"lua/catppuccin/groups/terminal.lua": "2625a84419e9001a93256d7cd1bb1279d62c6a8a29c1ba2c05718b213801ee71",
"lua/catppuccin/groups/treesitter.lua": "5b5b0ca4da48f0650d9ec3866fd6b0805526dfc26c7fb88d5dff6a1752d428a0",
"lua/catppuccin/init.lua": "967b784814cfe5bea69a32b0c7d582f57485281290fc83faaa3a1defb2a7cfec",
"lua/catppuccin/lib/compiler.lua": "596f6331c052fec9999b8ef59c3159eba4bc5dfb40c4ca9c1c8c6b512c953161",
"lua/catppuccin/lib/detect_integrations.lua": "3bc529be585cd3c2dbffbc03d08fce8e209fa2eb06d27846d411c9a621c8a6e7",
"lua/catppuccin/lib/hashing.lua": "16a43b210468c5b37bd472036e776c110dba472be2cbcb0cf7d87368a7ac01a7",
"lua/catppuccin/lib/highlighter.lua": "03f3e558454d7e875fb9c9d157d7adc31999b168cf2ad73e2d974831baef482d",
"lua/catppuccin/lib/hsluv.lua": "d6835861b08b504e1c928d129adc2b7005a6553c2ed3207ec73e7c05909f6671",
"lua/catppuccin/lib/mapper.lua": "35993d791f42451b2f51d8eba03b28a5083b92585ea9f179c0dd38ad9419cc96",
"lua/catppuccin/palettes/frappe.lua": "9c07fdf3dda5bea178c0d7d9d7c7c1902517aeb56d924888935c51520bfa0e04",
"lua/catppuccin/palettes/init.lua": "8a3bf0ac9f2b9ff0f6f77f904d593e7da6b6b6132e93b8e824b4c20dcc0f6323",
"lua/catppuccin/palettes/latte.lua": "77972e16f8e73209e4a493469eddcc7532d5a9c767f446646ebab2736d125ab1",
"lua/catppuccin/palettes/macchiato.lua": "c7fcca540b7216137dc02e434f5b735332ccd30be8a2f4199237664acefcca66",
"lua/catppuccin/palettes/mocha.lua": "28963db88a817fb69a658c9859b2638e18d1175423e3d82df747b9a10660274c",
"lua/catppuccin/special/bufferline.lua": "56d7ac16d4f20580a288095bf6a4fa662f1334ffaa3c1f292576d8841da53340",
"lua/catppuccin/special/feline.lua": "30ce5edb9a2bfe18afe6243dee3e674003853c0cbc831ea0fc35825f5523a789",
"lua/catppuccin/types.lua": "27d70ce2a5e910b24a7b703647218c9066985928ad8c7a13d3c33bb5d6cd2558",
"lua/catppuccin/utils/barbecue.lua": "a967d799a795320b4ffcb33509d561900a50c352aae8d9fa356110b117b77530",
"lua/catppuccin/utils/colors.lua": "ce2ca2fd987bcaca257cc279b2df1c3b0ba484158e05ff3b8ae1f6a5ed4e6ae3",
"lua/catppuccin/utils/integration_mappings.lua": "38bdeb2cf7f7ca82a247b2a00da3560c2f855028b1c3394802b09414f3f41774",
"lua/catppuccin/utils/lualine.lua": "232ff22bbf79fff54af9395700a77ea45539a701a7d31886f729eaa7b2d2e957",
"lua/catppuccin/utils/reactive.lua": "05041a21d60ccbe02d9708c36831b796b6fb9b7a5c4347b636fc11293ee167ad",
"lua/lualine/themes/catppuccin-frappe.lua": "3249e12158dd4d8d747cb4fc276091374d323bc3a3d8dd8ea063c0cc09972dcf",
"lua/lualine/themes/catppuccin-latte.lua": "7b0dd2b09f33210d3d5b40b975de308f911754927b9d42b25dd3677b13f933bb",
"lua/lualine/themes/catppuccin-macchiato.lua": "39bd6d9ee7ffac4f8ffa1a3ed4f7306f3528ea6e25747d1ee4130ab8d1dc81c4",
"lua/lualine/themes/catppuccin-mocha.lua": "a0d78b086265ef72a5b9bce9cd0d77ff6aa5d792c4e05c6327adbb220b1608f1",
"lua/lualine/themes/catppuccin-nvim.lua": "7b16272fc6edf1e4f523073282d6a7ed22946f634392979d9aae5e8bfd050a71",
"lua/reactive/presets/catppuccin-frappe-cursor.lua": "5b784baca79d58766d45e24628105142c4578bfe609aef439cee2e50106f7e82",
"lua/reactive/presets/catppuccin-frappe-cursorline.lua": "98c9bd0d187ca3447185f1d29793d80aa30ed301483bdd7343b22feb23e989de",
"lua/reactive/presets/catppuccin-latte-cursor.lua": "d497c9d390114965a6cb470d2ab8e30117bee89d9abb1e8200e654dbdf510e4e",
"lua/reactive/presets/catppuccin-latte-cursorline.lua": "faa2da25887b83075bf87a32309e7653dc04405f659d0b48ab240bacb2d40b09",
"lua/reactive/presets/catppuccin-macchiato-cursor.lua": "513447dbe885e313bff1aa0d0f2acb06cdc5d6c833a3751092491259d77d1c7d",
"lua/reactive/presets/catppuccin-macchiato-cursorline.lua": "0d8061edc51c62fa302645724916857655e788c1d5e6f2419f550410280f9780",
"lua/reactive/presets/catppuccin-mocha-cursor.lua": "1e8f2afaee7d5a1a7bf2388931fa5e83338045e49231a905cef1837ead401f82",
"lua/reactive/presets/catppuccin-mocha-cursorline.lua": "313422042f9872b2533ced2b0ff8b79de46cb0b03454a4537b390b0762912750"
}
},
"ayu-midas": {
"upstream": "https://github.com/qyurila/ayu-midas-vscode",
"commit": "8ce96d6002e7327be1aaf41a01f6106041517c8e",
"root": "configs/vscode/files/.vscode/extensions/qyurila.ayu-midas-1.1.0",
"version": "1.1.0",
"license": "MIT",
"note": "Original theme JSON and LICENSE with a runtime-only extension manifest; no JavaScript entry point.",
"sha256": {
"LICENSE": "e0af0e0d1754c18ca075649d42f5c6d9a60f8bdc03c20dfd97105f2253a94173",
"ayu-midas.json": "72dea34c4cfc7c5e993e95fd3c412277dc72bbb386584a1c69812c0c6beb5e5f",
"package.json": "05dedf22ea1d4ac7949370412b6c9b180a233c518105383f2fd80f7dc8eb7491"
}
}
}

View file

@ -48,7 +48,6 @@ type catalog struct {
Services map[string]setupOption `json:"services"` Services map[string]setupOption `json:"services"`
Stock selection `json:"stock"` Stock selection `json:"stock"`
Ryzen selection `json:"ryzen"` Ryzen selection `json:"ryzen"`
Devices map[string]selection `json:"devices"`
} }
type row struct { type row struct {
id, label string id, label string
@ -66,15 +65,6 @@ type backupsMsg struct {
choices []backupChoice choices []backupChoice
err error err error
} }
type proposalChoice struct {
ID string `json:"id"`
Target string `json:"target"`
Status string `json:"status"`
}
type proposalsMsg struct {
choices []proposalChoice
err error
}
type model struct { type model struct {
repo string repo string
catalog catalog catalog catalog
@ -83,9 +73,6 @@ type model struct {
stage, cursor, height, width, scroll int stage, cursor, height, width, scroll int
preview, errorText, action, backupID string preview, errorText, action, backupID string
done, loading bool done, loading bool
proposalID, proposalStatus string
proposals []proposalChoice
deviceName string
} }
func contains(values []string, target string) bool { func contains(values []string, target string) bool {
@ -106,21 +93,6 @@ func (m *model) prepare() {
if m.selection.Profile == "fiw-ryzen" { if m.selection.Profile == "fiw-ryzen" {
m.cursor = 1 m.cursor = 1
} }
ids := make([]string, 0, len(m.catalog.Devices))
for id := range m.catalog.Devices {
ids = append(ids, id)
}
sort.Strings(ids)
for _, id := range ids {
selected := m.selection.Name == id
m.rows = append(m.rows, row{"device:" + id, "Device: " + id + " (" + m.catalog.Devices[id].Profile + ")", selected})
if selected {
for i := range m.rows[:len(m.rows)-1] {
m.rows[i].checked = false
}
m.cursor = len(m.rows) - 1
}
}
case 1: case 1:
for _, id := range m.catalog.Groups { for _, id := range m.catalog.Groups {
label := id label := id
@ -170,17 +142,6 @@ func (m *model) prepare() {
} }
} }
} }
func (m *model) choosePreset() {
id := m.rows[m.cursor].id
switch id {
case "stock":
m.selection = m.catalog.Stock
case "fiw-ryzen":
m.selection = m.catalog.Ryzen
default:
m.selection = m.catalog.Devices[strings.TrimPrefix(id, "device:")]
}
}
func (m *model) remember() { func (m *model) remember() {
switch m.stage { switch m.stage {
case 1: case 1:
@ -285,24 +246,6 @@ func (m model) backupPreview() tea.Cmd {
return previewMsg{string(output), err} return previewMsg{string(output), err}
} }
} }
func (m model) loadProposals() tea.Cmd {
return func() tea.Msg {
output, err := exec.Command("python3", filepath.Join(m.repo, "lib", "rice.py"), "--list-proposals").CombinedOutput()
var choices []proposalChoice
if err == nil {
err = json.Unmarshal(output, &choices)
} else {
err = fmt.Errorf("%s", strings.TrimSpace(string(output)))
}
return proposalsMsg{choices, err}
}
}
func (m model) proposalPreview() tea.Cmd {
return func() tea.Msg {
output, err := exec.Command("python3", filepath.Join(m.repo, "lib", "rice.py"), "--proposal-plan", m.proposalID).CombinedOutput()
return previewMsg{string(output), err}
}
}
func (m model) previewLines() []string { func (m model) previewLines() []string {
width := m.width width := m.width
if width == 0 { if width == 0 {
@ -324,13 +267,6 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case previewMsg: case previewMsg:
m.loading = false m.loading = false
m.preview = v.content m.preview = v.content
if m.stage == 9 && v.err == nil {
lines := strings.SplitN(v.content, "\n", 4)
m.proposalStatus = ""
if len(lines) > 2 {
m.proposalStatus = strings.TrimPrefix(lines[2], "Status: ")
}
}
if v.err != nil { if v.err != nil {
m.errorText = v.err.Error() m.errorText = v.err.Error()
} }
@ -343,52 +279,15 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
for _, choice := range v.choices { for _, choice := range v.choices {
m.rows = append(m.rows, row{choice.ID, fmt.Sprintf("%s — %d files", choice.ID, choice.Count), false}) m.rows = append(m.rows, row{choice.ID, fmt.Sprintf("%s — %d files", choice.ID, choice.Count), false})
} }
case proposalsMsg:
m.loading = false
m.rows = nil
m.proposals = v.choices
if v.err != nil {
m.errorText = v.err.Error()
}
for _, choice := range v.choices {
m.rows = append(m.rows, row{choice.ID, choice.ID + " [" + choice.Status + "]", false})
}
case tea.KeyMsg: case tea.KeyMsg:
key := v.String() key := v.String()
if key == "ctrl+c" || (key == "q" && m.stage != 10) { if key == "ctrl+c" || key == "q" {
return m, tea.Quit return m, tea.Quit
} }
if m.loading { if m.loading {
return m, nil return m, nil
} }
if m.stage == 10 { if m.stage == 5 || m.stage == 7 {
switch v.Type {
case tea.KeyEsc:
m.stage = 5
m.errorText = ""
case tea.KeyBackspace, tea.KeyDelete:
if len(m.deviceName) > 0 {
m.deviceName = m.deviceName[:len(m.deviceName)-1]
}
case tea.KeyRunes:
for _, character := range strings.ToLower(string(v.Runes)) {
if len(m.deviceName) < 48 && ((character >= 'a' && character <= 'z') || (character >= '0' && character <= '9') || (len(m.deviceName) > 0 && (character == '-' || character == '_'))) {
m.deviceName += string(character)
}
}
m.errorText = ""
case tea.KeyEnter:
if m.deviceName == "" {
m.errorText = "Enter a device preset name."
return m, nil
}
m.selection.Name = m.deviceName
m.action, m.done = "n", true
return m, tea.Quit
}
return m, nil
}
if m.stage == 5 || m.stage == 7 || m.stage == 9 {
switch key { switch key {
case "up", "k": case "up", "k":
if m.scroll > 0 { if m.scroll > 0 {
@ -406,11 +305,6 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.errorText = "" m.errorText = ""
return m, m.loadBackups() return m, m.loadBackups()
} }
if m.stage == 8 {
m.loading = true
m.errorText = ""
return m, m.loadProposals()
}
case "u": case "u":
if m.stage == 5 { if m.stage == 5 {
m.stage = 6 m.stage = 6
@ -419,20 +313,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.errorText = "" m.errorText = ""
return m, m.loadBackups() return m, m.loadBackups()
} }
case "p": case "enter", "s", "a", "i", "f", "v", "b", "r":
if m.stage == 5 {
m.stage = 8
m.prepare()
m.loading = true
m.errorText = ""
return m, m.loadProposals()
}
case "n":
if m.stage == 5 && m.errorText == "" {
m.stage = 10
m.deviceName = ""
}
case "enter", "s", "a", "e", "i", "f", "v", "b", "r":
if m.errorText == "" { if m.errorText == "" {
if m.stage == 7 { if m.stage == 7 {
if key != "enter" { if key != "enter" {
@ -440,12 +321,6 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
} }
key = "u" key = "u"
} }
if m.stage == 9 {
if key != "enter" || (m.proposalStatus != "ready" && m.proposalStatus != "unchanged") {
return m, nil
}
key = "p"
}
m.done = true m.done = true
m.action = key m.action = key
return m, tea.Quit return m, tea.Quit
@ -453,7 +328,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
} }
return m, nil return m, nil
} }
if m.stage == 6 || m.stage == 8 { if m.stage == 6 {
switch key { switch key {
case "up", "k": case "up", "k":
if m.cursor > 0 { if m.cursor > 0 {
@ -465,14 +340,6 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
} }
case "enter": case "enter":
if len(m.rows) > 0 && m.errorText == "" { if len(m.rows) > 0 && m.errorText == "" {
if m.stage == 8 {
m.proposalID = m.rows[m.cursor].id
m.proposalStatus = m.proposals[m.cursor].Status
m.stage = 9
m.scroll = 0
m.loading = true
return m, m.proposalPreview()
}
m.backupID = m.rows[m.cursor].id m.backupID = m.rows[m.cursor].id
m.stage = 7 m.stage = 7
m.scroll = 0 m.scroll = 0
@ -502,7 +369,11 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
break break
} }
if m.stage == 0 { if m.stage == 0 {
m.choosePreset() if m.rows[m.cursor].id == "stock" {
m.selection = m.catalog.Stock
} else {
m.selection = m.catalog.Ryzen
}
m.prepare() m.prepare()
} else { } else {
id := m.rows[m.cursor].id id := m.rows[m.cursor].id
@ -526,7 +397,11 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
} }
case "enter": case "enter":
if m.stage == 0 { if m.stage == 0 {
m.choosePreset() if m.rows[m.cursor].id == "stock" {
m.selection = m.catalog.Stock
} else {
m.selection = m.catalog.Ryzen
}
} }
m.remember() m.remember()
m.stage++ m.stage++
@ -550,16 +425,13 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
func (m model) View() string { func (m model) View() string {
const purple = "\033[38;2;157;143;217m" const purple = "\033[38;2;157;143;217m"
const reset = "\033[0m" const reset = "\033[0m"
titles := []string{"Preset", "Package sections", "Optional app configs", "Kernel, bootloader and extras", "Flatpaks and optional services", "Final preview", "Config backups", "Restore backup preview", "Pending config updates", "Config update diff", "Save device preset"} titles := []string{"Preset", "Package sections", "Optional app configs", "Kernel, bootloader and extras", "Flatpaks and optional services", "Final preview", "Config backups", "Restore backup preview"}
text := purple + " Fiw-Gentoo-Dots\n" + reset + " " + titles[m.stage] + " · " + m.selection.Name + "\n\n" text := purple + " Fiw-Gentoo-Dots\n" + reset + " " + titles[m.stage] + " · " + m.selection.Name + "\n\n"
if m.stage == 10 {
return text + " Name: " + m.deviceName + "_\n\n Up to 48 lowercase letters, digits, hyphens or underscores.\n Saves your selection locally. Existing names ask before replacement.\n\n Enter save · Esc back · Ctrl+C cancel\n " + m.errorText + "\n"
}
budget := m.height - 10 budget := m.height - 10
if budget < 5 { if budget < 5 {
budget = 5 budget = 5
} }
if m.stage == 5 || m.stage == 7 || m.stage == 9 { if m.stage == 5 || m.stage == 7 {
if m.loading { if m.loading {
return text + " Preparing preview…\n" return text + " Preparing preview…\n"
} }
@ -573,27 +445,18 @@ func (m model) View() string {
} }
if m.stage == 7 { if m.stage == 7 {
text += "\n ↑/↓ scroll · Esc back · Enter restore with confirmation · q cancel\n" text += "\n ↑/↓ scroll · Esc back · Enter restore with confirmation · q cancel\n"
} else if m.stage == 9 {
if m.proposalStatus == "stale" {
text += "\n Target changed: update configs again to create a fresh proposal.\n ↑/↓ scroll · Esc back · q cancel\n"
} else { } else {
text += "\n ↑/↓ scroll · Esc back · Enter accept with confirmation · q cancel\n" text += "\n ↑/↓ scroll · Esc back · Enter save · r full restore · a configs · i packages\n f Flatpaks · v services · b bootloader · u config backups · q cancel\n"
}
} else {
text += "\n ↑/↓ scroll · Esc back · Enter save · n save device · r full restore\n a configs · e update configs · i packages · f Flatpaks · v services\n b bootloader · p pending updates · u config backups · q cancel\n"
} }
if m.errorText != "" { if m.errorText != "" {
text += " " + m.errorText + "\n" text += " " + m.errorText + "\n"
} }
return text return text
} }
if (m.stage == 6 || m.stage == 8) && (m.loading || len(m.rows) == 0 || m.errorText != "") { if m.stage == 6 && (m.loading || len(m.rows) == 0 || m.errorText != "") {
message := "No config backups yet. Backups are created when existing configs are replaced." message := "No config backups yet. Backups are created when existing configs are replaced."
if m.stage == 8 {
message = "No pending config updates. Use e from the final preview to update configs."
}
if m.loading { if m.loading {
message = "Loading files…" message = "Loading config backups…"
} }
if m.errorText != "" { if m.errorText != "" {
message = m.errorText message = m.errorText
@ -619,9 +482,6 @@ func (m model) View() string {
cursor = "› " cursor = "› "
} }
line := " " + cursor + mark + " " + r.label line := " " + cursor + mark + " " + r.label
if m.stage == 8 && m.width > 10 {
line = ansi.Truncate(line, m.width-2, "…")
}
if m.cursor == i { if m.cursor == i {
line = purple + line + reset line = purple + line + reset
} }
@ -630,9 +490,6 @@ func (m model) View() string {
if m.stage == 6 { if m.stage == 6 {
return text + "\n ↑/↓ move · Enter preview backup · Esc back · q cancel\n" return text + "\n ↑/↓ move · Enter preview backup · Esc back · q cancel\n"
} }
if m.stage == 8 {
return text + "\n ↑/↓ move · Enter preview diff · Esc back · q cancel\n"
}
return text + "\n ↑/↓ move · Space select · Enter next · Esc back · q cancel\n" return text + "\n ↑/↓ move · Space select · Enter next · Esc back · q cancel\n"
} }
@ -726,21 +583,9 @@ func main() {
var actionErr error var actionErr error
workflow := "restore" workflow := "restore"
switch final.action { switch final.action {
case "n":
if err := run("--save-device", false, final.deviceName); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
return
case "a": case "a":
workflow = "configs" workflow = "configs"
actionErr = run("--apply-configs", false) actionErr = run("--apply-configs", false)
case "e":
workflow = "configs"
actionErr = run("--apply-configs", false, "--update")
case "p":
workflow = "proposal"
actionErr = run("--accept-proposal", false, final.proposalID)
case "i": case "i":
workflow = "packages" workflow = "packages"
actionErr = run("--install-packages", true) actionErr = run("--install-packages", true)

117
cmd/dots/main_test.go Normal file
View file

@ -0,0 +1,117 @@
package main
import (
tea "github.com/charmbracelet/bubbletea"
"strings"
"testing"
)
func TestRyzenSelectionSurvivesSpaceAndEnter(t *testing.T) {
c := catalog{Stock: selection{Name: "Stock", Profile: "stock"}, Ryzen: selection{Name: "Fiw's Ryzen", Profile: "fiw-ryzen"}}
m := model{catalog: c, selection: c.Stock}
m.prepare()
m.cursor = 1
next, _ := m.Update(tea.KeyMsg{Type: tea.KeySpace})
m = next.(model)
next, _ = m.Update(tea.KeyMsg{Type: tea.KeyEnter})
m = next.(model)
if m.selection.Profile != "fiw-ryzen" || m.stage != 1 {
t.Fatalf("selected wrong preset: %+v", m.selection)
}
}
func TestBootloaderChoicesAreExclusive(t *testing.T) {
m := model{stage: 3, selection: selection{Kernel: "binary", Bootloader: "keep"}, catalog: catalog{Extras: map[string]string{}}}
m.prepare()
m.cursor = 4
next, _ := m.Update(tea.KeyMsg{Type: tea.KeySpace})
m = next.(model)
m.remember()
if m.selection.Bootloader != "grub" {
t.Fatal("GRUB was not selected")
}
selected := 0
for _, r := range m.rows {
if r.checked && (r.id == "keep" || r.id == "limine" || r.id == "grub") {
selected++
}
}
if selected != 1 {
t.Fatal("multiple bootloaders selected")
}
}
func TestConfigsSelectableWithoutPackageGroups(t *testing.T) {
m := model{stage: 2, catalog: catalog{Configs: map[string]config{
"fish": {Label: "Fish", Group: "cli"},
"kitty": {Label: "Kitty", Group: "fiw-apps"},
}}, selection: selection{Configs: []string{"fish"}}}
m.prepare()
if len(m.rows) != 2 || !m.rows[0].checked {
t.Fatal("configs were hidden or deselected by package choices")
}
}
func TestSetupCheckboxesSurviveFinalPreview(t *testing.T) {
m := model{stage: 4, catalog: catalog{
Flatpaks: map[string]setupOption{"org.vinegarhq.Sober": {Label: "Sober", Group: "gaming"}},
Services: map[string]setupOption{"audio": {Label: "Audio", Scope: "user"}},
}, selection: selection{}}
m.prepare()
for i := range m.rows {
m.rows[i].checked = true
}
next, command := m.Update(tea.KeyMsg{Type: tea.KeyEnter})
result := next.(model)
if result.stage != 5 || command == nil || !contains(result.selection.Flatpaks, "org.vinegarhq.Sober") || !contains(result.selection.Services, "audio") {
t.Fatalf("setup selections lost before preview: %+v", result.selection)
}
}
func TestBackupNeedsSelectionPreviewAndExplicitRestoreAction(t *testing.T) {
m := model{stage: 5}
next, command := m.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'u'}})
m = next.(model)
if m.stage != 6 || command == nil || m.done {
t.Fatal("backup key did not open the chooser")
}
next, _ = m.Update(backupsMsg{choices: []backupChoice{{ID: "20260101T000000Z", Count: 1}}})
m = next.(model)
next, command = m.Update(tea.KeyMsg{Type: tea.KeyEnter})
m = next.(model)
if m.stage != 7 || command == nil || m.done {
t.Fatal("choosing a backup must only open its preview")
}
next, _ = m.Update(previewMsg{content: "preview"})
m = next.(model)
next, _ = m.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'a'}})
m = next.(model)
if m.done {
t.Fatal("config application key triggered a restore from backup preview")
}
next, _ = m.Update(tea.KeyMsg{Type: tea.KeyEnter})
m = next.(model)
if !m.done || m.action != "u" || m.backupID != "20260101T000000Z" {
t.Fatal("explicit backup action was lost")
}
}
func TestEmptyBackupChooserDoesNotStartRestore(t *testing.T) {
m := model{stage: 6}
next, command := m.Update(tea.KeyMsg{Type: tea.KeyEnter})
m = next.(model)
if m.done || command != nil || m.stage != 6 {
t.Fatal("empty backup chooser started a restore")
}
}
func TestPreviewCanScrollThroughLongRequirementLines(t *testing.T) {
m := model{stage: 5, height: 20, width: 40, preview: strings.Repeat("package [missing] ", 20)}
for range 3 {
next, _ := m.Update(tea.KeyMsg{Type: tea.KeyDown})
m = next.(model)
}
if m.scroll != 3 {
t.Fatal("wrapped requirements cannot be scrolled into view")
}
}

View file

@ -61,10 +61,9 @@
"label": "Kitty lavender profiles", "label": "Kitty lavender profiles",
"group": "fiw-apps", "group": "fiw-apps",
"packages": [ "packages": [
"x11-terms/kitty", "x11-terms/kitty"
"app-shells/fish"
], ],
"note": "Both profiles start Fish. Select fonts separately for the bundled JetBrainsMono Nerd Font." "note": "Select fonts separately for the bundled JetBrainsMono Nerd Font."
}, },
"neovim": { "neovim": {
"label": "Neovim transparent purple style", "label": "Neovim transparent purple style",
@ -72,7 +71,7 @@
"packages": [ "packages": [
"app-editors/neovim" "app-editors/neovim"
], ],
"note": "Pinned Catppuccin runtime is bundled; no plugin manager, download or KDE dependency. Purple highlights retain a built-in fallback." "note": "Catppuccin is optional; the captured purple highlights also work with the built-in fallback."
}, },
"fastfetch": { "fastfetch": {
"label": "Fastfetch tree layout with Gentoo logo", "label": "Fastfetch tree layout with Gentoo logo",
@ -100,8 +99,7 @@
"group": "fiw-apps", "group": "fiw-apps",
"packages": [ "packages": [
"app-editors/vscode" "app-editors/vscode"
], ]
"note": "Pinned ayu MiDas colour theme is bundled as a user extension; no Marketplace download or compilation."
}, },
"autostart": { "autostart": {
"label": "Optional application autostart", "label": "Optional application autostart",

View file

@ -5,7 +5,6 @@ italic_font auto
bold_italic_font auto bold_italic_font auto
font_size 11.0 font_size 11.0
shell fish
linux_display_server auto linux_display_server auto
background_blur 32 background_blur 32
dynamic_background_opacity yes dynamic_background_opacity yes

View file

@ -1,8 +1,6 @@
-- Colors -- Colors
vim.opt.termguicolors = true vim.opt.termguicolors = true
-- Load the bundled native theme package before applying the captured highlights. -- catppuccin is a plugin (not bundled with Neovim); fall back to the built-in dark theme
pcall(vim.cmd.packadd, "catppuccin")
-- Keep a built-in fallback if the theme package is intentionally omitted.
if not pcall(vim.cmd.colorscheme, "catppuccin-mocha") then if not pcall(vim.cmd.colorscheme, "catppuccin-mocha") then
vim.o.background = "dark" vim.o.background = "dark"
vim.cmd.colorscheme "default" vim.cmd.colorscheme "default"

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2021 Catppuccin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,16 +0,0 @@
;; extends
[
(class_name)
] @property.class
[
(id_name)
] @property.id
[
(declaration
(plain_value) @string.plain)
]
[
(tag_name)
] @type.tag

View file

@ -1,4 +0,0 @@
;; extends
[
"export"
] @keyword.export

View file

@ -1,4 +0,0 @@
;; extends
[
"export"
] @keyword.export

View file

@ -1 +0,0 @@
require("catppuccin").load "frappe"

View file

@ -1 +0,0 @@
require("catppuccin").load "latte"

View file

@ -1 +0,0 @@
require("catppuccin").load "macchiato"

View file

@ -1 +0,0 @@
require("catppuccin").load "mocha"

View file

@ -1 +0,0 @@
lua require("catppuccin").load()

View file

@ -1 +0,0 @@
require("catppuccin").load()

View file

@ -1 +0,0 @@
return require "catppuccin.utils.barbecue" "frappe"

View file

@ -1 +0,0 @@
return require "catppuccin.utils.barbecue" "latte"

View file

@ -1 +0,0 @@
return require "catppuccin.utils.barbecue" "macchiato"

View file

@ -1 +0,0 @@
return require "catppuccin.utils.barbecue" "mocha"

View file

@ -1 +0,0 @@
return require "catppuccin.utils.barbecue"()

View file

@ -1,118 +0,0 @@
local M = {}
function M.get()
local pumsolid = O.float.solid
if vim.fn.has "nvim-0.12" == 1 then pumsolid = vim.o.pumborder == "solid" end
return {
ColorColumn = { bg = C.surface0 }, -- used for the columns set with 'colorcolumn'
Conceal = { fg = C.overlay1 }, -- placeholder characters substituted for concealed text (see 'conceallevel')
Cursor = { fg = C.base, bg = C.rosewater }, -- character under the cursor
lCursor = { fg = C.base, bg = C.rosewater }, -- the character under the cursor when |language-mapping| is used (see 'guicursor')
CursorIM = { fg = C.base, bg = C.rosewater }, -- like Cursor, but used when in IME mode |CursorIM|
CursorColumn = { bg = C.mantle }, -- Screen-column at the cursor, when 'cursorcolumn' is set.
CursorLine = {
bg = U.vary_color({ latte = U.lighten(C.mantle, 0.70, C.base) }, U.darken(C.surface0, 0.64, C.base)),
}, -- Screen-line at the cursor, when 'cursorline' is set. Low-priority if forecrust (ctermfg OR guifg) is not set.
Dimmed = { fg = C.overlay1 },
Directory = { fg = C.blue }, -- directory names (and other special names in listings)
EndOfBuffer = { fg = C.surface1 }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|.
ErrorMsg = { fg = C.red, style = { "bold", "italic" } }, -- error messages on the command line
VertSplit = { fg = O.transparent_background and C.surface1 or C.crust }, -- the column separating vertically split windows
Folded = { fg = C.blue, bg = O.transparent_background and C.none or C.surface1 }, -- line used for closed folds
FoldColumn = { fg = C.overlay0 }, -- 'foldcolumn'
SignColumn = { fg = C.surface1 }, -- column where |signs| are displayed
SignColumnSB = { bg = C.crust, fg = C.surface1 }, -- column where |signs| are displayed
Substitute = { bg = C.surface1, fg = U.vary_color({ latte = C.red }, C.pink) }, -- |:substitute| replacement text highlighting
LineNr = { fg = C.surface1 }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
CursorLineNr = { fg = C.lavender }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line. highlights the number in numberline.
MatchParen = { fg = C.peach, bg = U.darken(C.surface1, 0.70, C.base), style = { "bold" } }, -- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt|
ModeMsg = { fg = C.text, style = { "bold" } }, -- 'showmode' message (e.g., "-- INSERT -- ")
-- MsgArea = { fg = C.text }, -- Area for messages and cmdline, don't set this highlight because of https://github.com/neovim/neovim/issues/17832
MsgSeparator = { link = "WinSeparator" }, -- Separator for scrolled messages, `msgsep` flag of 'display'
MoreMsg = { fg = C.blue }, -- |more-prompt|
NonText = { fg = C.overlay0 }, -- '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line). See also |hl-EndOfBuffer|.
Normal = { fg = C.text, bg = O.transparent_background and C.none or C.base }, -- normal text
NormalNC = {
fg = C.text,
bg = (O.transparent_background and O.dim_inactive.enabled and C.dim)
or (O.dim_inactive.enabled and C.dim)
or (O.transparent_background and C.none)
or C.base,
}, -- normal text in non-current windows
NormalSB = { fg = C.text, bg = C.crust }, -- normal text in non-current windows
NormalFloat = { fg = C.text, bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle }, -- Normal text in floating windows.
FloatBorder = O.float.solid
and ((O.float.transparent and vim.o.winblend == 0) and { fg = C.surface2, bg = C.none } or {
fg = C.mantle,
bg = C.mantle,
})
or { fg = C.blue, bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle },
FloatTitle = O.float.solid and {
fg = C.crust,
bg = C.lavender,
} or { fg = C.subtext0, bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle }, -- Title of floating windows
FloatShadow = { bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.overlay0, blend = 80 },
FloatShadowThrough = {
bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.overlay0,
blend = 100,
},
OkMsg = { fg = C.green }, -- success messages on the command line
Pmenu = {
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle,
fg = C.overlay2,
}, -- Popup menu: normal item.
PmenuBorder = {
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle,
fg = pumsolid and ((O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle) or C.blue,
}, -- Popup menu: border
PmenuSel = { bg = C.surface0, style = { "bold" } }, -- Popup menu: selected item.
PmenuMatch = { fg = C.text, style = { "bold" } }, -- Popup menu: matching text.
PmenuMatchSel = { style = { "bold" } }, -- Popup menu: matching text in selected item; is combined with |hl-PmenuMatch| and |hl-PmenuSel|.
PmenuSbar = { bg = C.surface0 }, -- Popup menu: scrollbar.
PmenuThumb = { bg = C.overlay0 }, -- Popup menu: Thumb of the scrollbar.
PmenuKind = {
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle,
fg = C.blue,
}, -- Popup menu: item kind. Background and style must match `Pmenu`.
PmenuKindSel = { bg = C.surface0, fg = C.blue, style = { "bold" } }, -- Popup menu: selected item kind. Background and style must match `PmenuSel`.
PmenuExtra = { fg = C.overlay0 }, -- Popup menu: normal item extra text.
PmenuExtraSel = {
bg = C.surface0,
fg = C.overlay0,
style = { "bold" },
}, -- Popup menu: selected item extra text.
ComplMatchIns = { link = "PreInsert" }, -- Matched text of the currently inserted completion.
PreInsert = { fg = C.overlay2 }, -- Text inserted when "preinsert" is in 'completeopt'.
ComplHint = { fg = C.subtext0 }, -- Virtual text of the currently selected completion.
ComplHintMore = { link = "Question" }, -- The additional information of the virtual text.
Question = { fg = C.blue }, -- |hit-enter| prompt and yes/no questions
QuickFixLine = { bg = U.darken(C.surface1, 0.70, C.base), style = { "bold" } }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there.
Search = { bg = U.darken(C.sky, 0.30, C.base), fg = C.text }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
IncSearch = { bg = U.darken(C.sky, 0.90, C.base), fg = C.mantle }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
CurSearch = { bg = C.red, fg = C.mantle }, -- 'cursearch' highlighting: highlights the current search you're on differently
SpecialKey = { link = "NonText" }, -- Unprintable characters: text displayed differently from what it really is. But not 'listchars' textspace. |hl-Whitespace|
SpellBad = { sp = C.red, style = { "undercurl" } }, -- Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise.
SpellCap = { sp = C.yellow, style = { "undercurl" } }, -- Word that should start with a capital. |spell| Combined with the highlighting used otherwise.
SpellLocal = { sp = C.blue, style = { "undercurl" } }, -- Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise.
SpellRare = { sp = C.green, style = { "undercurl" } }, -- Word that is recognized by the spellchecker as one that is hardly ever used. |spell| Combined with the highlighting used otherwise.
StatusLine = { fg = C.text, bg = O.transparent_background and C.none or C.mantle }, -- status line of current window
StatusLineNC = { fg = C.surface1, bg = O.transparent_background and C.none or C.mantle }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
TabLine = { bg = C.crust, fg = C.overlay0 }, -- tab pages line, not active tab page label
TabLineFill = { bg = O.transparent_background and C.none or C.mantle }, -- tab pages line, where there are no labels
TabLineSel = { link = "Normal" }, -- tab pages line, active tab page label
TermCursor = { fg = C.base, bg = C.rosewater }, -- cursor in a focused terminal
TermCursorNC = { fg = C.base, bg = C.overlay2 }, -- cursor in unfocused terminals
Title = { fg = C.blue, style = { "bold" } }, -- titles for output from ":set all", ":autocmd" etc.
Visual = { bg = C.surface1, style = { "bold" } }, -- Visual mode selection
VisualNOS = { bg = C.surface1, style = { "bold" } }, -- Visual mode selection when vim is "Not Owning the Selection".
WarningMsg = { fg = C.yellow }, -- warning messages
Whitespace = { fg = C.surface1 }, -- "nbsp", "space", "tab" and "trail" in 'listchars'
WildMenu = { bg = C.overlay0 }, -- current match in 'wildmenu' completion
WinBar = { fg = C.rosewater },
WinBarNC = { link = "WinBar" },
WinSeparator = { fg = O.transparent_background and C.surface1 or C.crust },
}
end
return M

View file

@ -1,38 +0,0 @@
local M = {}
M.url = "https://github.com/stevearc/aerial.nvim"
function M.get()
return {
AerialLine = { fg = C.yellow, bg = C.none },
AerialGuide = { fg = C.overlay2 },
AerialBooleanIcon = { link = "@boolean" },
AerialClassIcon = { link = "@type" },
AerialConstantIcon = { link = "@constant" },
AerialConstructorIcon = { link = "@constructor" },
AerialFieldIcon = { link = "@field" },
AerialFunctionIcon = { link = "@function" },
AerialMethodIcon = { link = "@method" },
AerialNamespaceIcon = { link = "@namespace" },
AerialNumberIcon = { link = "@number" },
AerialOperatorIcon = { link = "@operator" },
AerialTypeParameterIcon = { link = "@type" },
AerialPropertyIcon = { link = "@property" },
AerialStringIcon = { link = "@string" },
AerialVariableIcon = { link = "@constant" },
AerialEnumMemberIcon = { link = "@field" },
AerialEnumIcon = { link = "@type" },
AerialFileIcon = { link = "@text.uri" },
AerialModuleIcon = { link = "@namespace" },
AerialPackageIcon = { link = "@namespace" },
AerialInterfaceIcon = { link = "@type" },
AerialStructIcon = { link = "@type" },
AerialEventIcon = { link = "@type" },
AerialArrayIcon = { link = "@constant" },
AerialObjectIcon = { link = "@type" },
AerialKeyIcon = { link = "@type" },
AerialNullIcon = { link = "@type" },
}
end
return M

View file

@ -1,15 +0,0 @@
local M = {}
M.url = "https://github.com/goolord/alpha-nvim"
function M.get()
return {
AlphaShortcut = { fg = C.green },
AlphaHeader = { fg = C.blue },
AlphaHeaderLabel = { fg = C.peach },
AlphaButtons = { fg = C.lavender },
AlphaFooter = { fg = C.yellow, style = { "italic" } },
}
end
return M

View file

@ -1,26 +0,0 @@
local M = {}
M.url = "https://github.com/comfysage/artio.nvim"
function M.get()
local transparent_background = O.transparent_background
return {
ArtioNormal = {
fg = C.text,
bg = transparent_background and "NONE" or C.mantle,
},
ArtioSel = {
fg = C.flamingo,
bg = C.surface0,
style = { "bold" },
},
ArtioMatch = { fg = C.blue },
ArtioPointer = { fg = C.flamingo },
ArtioPrompt = { fg = C.blue },
ArtioMark = { fg = C.yellow },
ArtioMarkLine = { link = "Visual" },
}
end
return M

View file

@ -1,71 +0,0 @@
local M = {}
M.url = "https://github.com/yetone/avante.nvim"
function M.get()
local rounded = O.integrations.avante.windows_sidebar_header_rounded
return {
-- titles
AvanteTitle = rounded and { bg = C.lavender, fg = C.base } or { fg = C.lavender },
AvanteReversedTitle = rounded and { bg = C.none, fg = C.lavender } or { fg = C.lavender },
AvanteSubtitle = rounded and { bg = C.peach, fg = C.base } or { fg = C.peach },
AvanteReversedSubtitle = rounded and { bg = C.none, fg = C.peach } or { fg = C.peach },
AvanteThirdTitle = rounded and { bg = C.blue, fg = C.base } or { fg = C.blue },
AvanteReversedThirdTitle = rounded and { bg = C.none, fg = C.blue } or { fg = C.blue },
-- hints
AvanteInlineHint = { fg = C.overlay0 },
AvantePopupHint = { fg = C.overlay0 },
AvanteAnnotation = { fg = C.overlay0 },
AvanteSuggestion = { fg = C.overlay0 },
-- conflicts
AvanteConflictCurrent = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.green,
},
AvanteConflictCurrentLabel = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.green,
},
AvanteConflictIncoming = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.blue,
},
AvanteConflictIncomingLabel = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.blue,
},
AvanteConflictAncestor = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.teal,
},
AvanteConflictAncestorLabel = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.teal,
},
AvanteToBeDeleted = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.red,
},
AvanteSidebarWinSeparator = {
link = "WinSeparator",
},
AvantePromptInput = {
link = "FloatNormal",
},
AvantePromptInputBorder = {
link = "FloatBorder",
},
}
end
return M

View file

@ -1,27 +0,0 @@
local M = {}
M.url = "https://github.com/romgrk/barbar.nvim"
function M.get()
return {
BufferCurrent = { bg = C.surface1, fg = C.text },
BufferCurrentIndex = { bg = C.surface1, fg = C.blue },
BufferCurrentMod = { bg = C.surface1, fg = C.yellow },
BufferCurrentSign = { bg = C.surface1, fg = C.blue },
BufferCurrentTarget = { bg = C.surface1, fg = C.red },
BufferVisible = { bg = C.mantle, fg = C.text },
BufferVisibleIndex = { bg = C.mantle, fg = C.blue },
BufferVisibleMod = { bg = C.mantle, fg = C.yellow },
BufferVisibleSign = { bg = C.mantle, fg = C.blue },
BufferVisibleTarget = { bg = C.mantle, fg = C.red },
BufferInactive = { bg = C.mantle, fg = C.overlay0 },
BufferInactiveIndex = { bg = C.mantle, fg = C.overlay0 },
BufferInactiveMod = { bg = C.mantle, fg = C.yellow },
BufferInactiveSign = { bg = C.mantle, fg = C.blue },
BufferInactiveTarget = { bg = C.mantle, fg = C.red },
BufferTabpages = { bg = C.mantle, fg = C.none },
BufferTabpage = { bg = C.mantle, fg = C.blue },
}
end
return M

View file

@ -1,11 +0,0 @@
local M = {}
M.url = "https://github.com/DanilaMihailov/beacon.nvim"
function M.get()
return {
Beacon = { bg = C.blue },
}
end
return M

View file

@ -1,62 +0,0 @@
local M = {}
M.url = "https://github.com/saghen/blink.cmp"
function M.get()
local style = O.integrations.blink_cmp.style
local highlights = {
BlinkCmpLabel = { fg = C.overlay2 },
BlinkCmpLabelDeprecated = { fg = C.overlay0, style = { "strikethrough" } },
BlinkCmpKind = { fg = C.blue },
BlinkCmpMenu = { link = "Pmenu" },
BlinkCmpDoc = { link = "NormalFloat" },
BlinkCmpLabelMatch = { link = "PmenuMatch" },
BlinkCmpMenuSelection = { bg = C.surface1, style = { "bold" } },
BlinkCmpScrollBarGutter = { bg = C.surface1 },
BlinkCmpScrollBarThumb = { bg = C.overlay0 },
BlinkCmpLabelDescription = { link = "PmenuExtra" },
BlinkCmpLabelDetail = { link = "PmenuExtra" },
BlinkCmpSignatureHelpBorder = { link = "FloatBorder" },
BlinkCmpKindText = { fg = C.green },
BlinkCmpKindMethod = { fg = C.blue },
BlinkCmpKindFunction = { fg = C.blue },
BlinkCmpKindConstructor = { fg = C.blue },
BlinkCmpKindField = { fg = C.green },
BlinkCmpKindVariable = { fg = C.flamingo },
BlinkCmpKindClass = { fg = C.yellow },
BlinkCmpKindInterface = { fg = C.yellow },
BlinkCmpKindModule = { fg = C.blue },
BlinkCmpKindProperty = { fg = C.blue },
BlinkCmpKindUnit = { fg = C.green },
BlinkCmpKindValue = { fg = C.peach },
BlinkCmpKindEnum = { fg = C.yellow },
BlinkCmpKindKeyword = { fg = C.mauve },
BlinkCmpKindSnippet = { fg = C.flamingo },
BlinkCmpKindColor = { fg = C.red },
BlinkCmpKindFile = { fg = C.blue },
BlinkCmpKindReference = { fg = C.red },
BlinkCmpKindFolder = { fg = C.blue },
BlinkCmpKindEnumMember = { fg = C.teal },
BlinkCmpKindConstant = { fg = C.peach },
BlinkCmpKindStruct = { fg = C.blue },
BlinkCmpKindEvent = { fg = C.blue },
BlinkCmpKindOperator = { fg = C.sky },
BlinkCmpKindTypeParameter = { fg = C.maroon },
BlinkCmpKindCopilot = { fg = C.teal },
}
if style == "bordered" then
-- uses FloatBorder.fg and Pmenu.bg
highlights["BlinkCmpMenuBorder"] = {
fg = C.blue,
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle,
}
highlights["BlinkCmpDocBorder"] = { link = "FloatBorder" }
end
return highlights
end
return M

View file

@ -1,28 +0,0 @@
local M = {}
M.url = "https://github.com/saghen/blink.indent"
function M.get()
return {
BlinkIndent = { fg = C.surface0 },
BlinkIndentScope = { fg = C.overlay2 },
BlinkIndentRed = { fg = C.red },
BlinkIndentOrange = { fg = C.peach },
BlinkIndentYellow = { fg = C.yellow },
BlinkIndentGreen = { fg = C.green },
BlinkIndentCyan = { fg = C.sky },
BlinkIndentBlue = { fg = C.blue },
BlinkIndentViolet = { fg = C.mauve },
BlinkIndentRedUnderline = { sp = C.red, style = { "underline" } },
BlinkIndentOrangeUnderline = { sp = C.peach, style = { "underline" } },
BlinkIndentYellowUnderline = { sp = C.yellow, style = { "underline" } },
BlinkIndentGreenUnderline = { sp = C.green, style = { "underline" } },
BlinkIndentCyanUnderline = { sp = C.sky, style = { "underline" } },
BlinkIndentBlueUnderline = { sp = C.blue, style = { "underline" } },
BlinkIndentVioletUnderline = { sp = C.mauve, style = { "underline" } },
}
end
return M

View file

@ -1,19 +0,0 @@
local M = {}
M.url = "https://github.com/saghen/blink.pairs"
function M.get()
return {
BlinkPairsRed = { fg = C.red },
BlinkPairsYellow = { fg = C.yellow },
BlinkPairsBlue = { fg = C.blue },
BlinkPairsOrange = { fg = C.peach },
BlinkPairsGreen = { fg = C.green },
BlinkPairsPurple = { fg = C.mauve },
BlinkPairsCyan = { fg = C.teal },
BlinkPairsUnmatched = { fg = C.red },
BlinkPairsMatchParen = { link = "MatchParen" },
}
end
return M

View file

@ -1,14 +0,0 @@
local M = {}
M.url = "https://github.com/francescarpi/buffon.nvim"
function M.get()
return {
BuffonUnloadedBuffer = { fg = C.surface1 },
BuffonShortcut = { fg = C.peach },
BuffonLineActive = { fg = C.sapphire },
BuffonUnsavedIndicator = { fg = C.red },
}
end
return M

View file

@ -1,44 +0,0 @@
local M = {}
M.url = "https://github.com/hrsh7th/nvim-cmp"
function M.get()
return {
CmpItemAbbr = { fg = C.overlay2 },
CmpItemAbbrDeprecated = { fg = C.overlay0, style = { "strikethrough" } },
CmpItemKind = { fg = C.blue },
CmpItemMenu = { fg = C.text },
CmpItemAbbrMatch = { fg = C.text, style = { "bold" } },
CmpItemAbbrMatchFuzzy = { fg = C.text, style = { "bold" } },
-- kind support
CmpItemKindSnippet = { fg = C.mauve },
CmpItemKindKeyword = { fg = C.red },
CmpItemKindText = { fg = C.teal },
CmpItemKindMethod = { fg = C.blue },
CmpItemKindConstructor = { fg = C.blue },
CmpItemKindFunction = { fg = C.blue },
CmpItemKindFolder = { fg = C.blue },
CmpItemKindModule = { fg = C.blue },
CmpItemKindConstant = { fg = C.peach },
CmpItemKindField = { fg = C.green },
CmpItemKindProperty = { fg = C.green },
CmpItemKindEnum = { fg = C.green },
CmpItemKindUnit = { fg = C.green },
CmpItemKindClass = { fg = C.yellow },
CmpItemKindVariable = { fg = C.flamingo },
CmpItemKindFile = { fg = C.blue },
CmpItemKindInterface = { fg = C.yellow },
CmpItemKindColor = { fg = C.red },
CmpItemKindReference = { fg = C.red },
CmpItemKindEnumMember = { fg = C.red },
CmpItemKindStruct = { fg = C.blue },
CmpItemKindValue = { fg = C.peach },
CmpItemKindEvent = { fg = C.blue },
CmpItemKindOperator = { fg = C.blue },
CmpItemKindTypeParameter = { fg = C.blue },
CmpItemKindCopilot = { fg = C.teal },
}
end
return M

View file

@ -1,21 +0,0 @@
local M = {}
M.url = "https://github.com/neoclide/coc.nvim"
function M.get()
return {
-- These groups are for the coc.nvim, see ":h coc-highlights"
-- Custom popup menu since coc v0.0.82
CocMenuSel = { link = "PmenuSel" },
CocPumSearch = { fg = C.sky, style = { "bold" } },
-- Inlay hints
CocInlayHint = {
-- fg of `Comment`
fg = C.overlay0,
style = { "italic" },
},
}
end
return M

View file

@ -1,17 +0,0 @@
local M = {}
M.url = "https://github.com/nvim-zh/colorful-winsep.nvim"
function M.get()
local color = U.select_color(O.integrations.colorful_winsep.color, "red")
return {
ColorfulWinSep = {
fg = color,
bg = O.transparent_background and C.none or C.base,
},
NvimSeparator = { link = "ColorfulWinSep" },
}
end
return M

View file

@ -1,12 +0,0 @@
local M = {}
M.url = "https://github.com/github/copilot.vim"
function M.get()
return {
CopilotSuggestion = { fg = C.overlay0 },
CopilotAnnotation = { fg = C.blue },
}
end
return M

View file

@ -1,13 +0,0 @@
local M = {}
M.url = "https://github.com/kristijanhusak/vim-dadbod-ui"
function M.get()
return {
NotificationInfo = { fg = C.blue, bg = C.mantle },
NotificationWarning = { fg = C.yellow, bg = C.mantle },
NotificationError = { fg = C.red, bg = C.mantle },
}
end
return M

View file

@ -1,15 +0,0 @@
local M = {}
M.url = "https://github.com/mfussenegger/nvim-dap"
function M.get()
return {
DapBreakpoint = { fg = C.red },
DapBreakpointCondition = { fg = C.yellow },
DapBreakpointRejected = { fg = C.mauve },
DapLogPoint = { fg = C.sky },
DapStopped = { fg = C.maroon },
}
end
return M

View file

@ -1,49 +0,0 @@
local M = {}
M.url = "https://github.com/rcarriga/nvim-dap-ui"
function M.get()
return {
DapUIScope = { fg = C.sky },
DapUIType = { fg = C.mauve },
DapUIValue = { fg = C.sky },
DapUIVariable = { fg = C.text },
DapUIModifiedValue = { fg = C.peach },
DapUIDecoration = { fg = C.sky },
DapUIThread = { fg = C.green },
DapUIStoppedThread = { fg = C.sky },
DapUISource = { fg = C.lavender },
DapUILineNumber = { fg = C.sky },
DapUIFloatBorder = { link = "FloatBorder" },
DapUIWatchesEmpty = { fg = C.maroon },
DapUIWatchesValue = { fg = C.green },
DapUIWatchesError = { fg = C.maroon },
DapUIBreakpointsPath = { fg = C.sky },
DapUIBreakpointsInfo = { fg = C.green },
DapUIBreakpointsCurrentLine = { fg = C.green, style = { "bold" } },
DapUIBreakpointsDisabledLine = { fg = C.surface2 },
DapUIStepOver = { fg = C.blue },
DapUIStepOverNC = { link = "DapUIStepOver" },
DapUIStepInto = { fg = C.blue },
DapUIStepIntoNC = { link = "DapUIStepInto" },
DapUIStepBack = { fg = C.blue },
DapUIStepBackNC = { link = "DapUIStepBack" },
DapUIStepOut = { fg = C.blue },
DapUIStepOutNC = { link = "DapUIStepOut" },
DapUIStop = { fg = C.red },
DapUIStopNC = { link = "DapUIStop" },
DapUIPlayPause = { fg = C.green },
DapUIPlayPauseNC = { link = "DapUIPlayPause" },
DapUIRestart = { fg = C.green },
DapUIRestartNC = { link = "DapUIRestart" },
DapUIUnavailable = { fg = C.surface1 },
DapUIUnavailableNC = { link = "DapUIUnavailable" },
DapUIWinSelect = { fg = C.peach },
}
end
return M

View file

@ -1,20 +0,0 @@
local M = {}
M.url = "https://github.com/nvimdev/dashboard-nvim"
function M.get()
return {
DashboardShortCut = { fg = C.pink },
DashboardHeader = { fg = C.blue },
DashboardCenter = { fg = C.green },
DashboardFooter = { fg = C.yellow, style = { "italic" } },
DashboardMruTitle = { fg = C.sky },
DashboardProjectTitle = { fg = C.sky },
DashboardFiles = { fg = C.lavender },
DashboardKey = { fg = C.peach },
DashboardDesc = { fg = C.blue },
DashboardIcon = { fg = C.pink, bold = true },
}
end
return M

View file

@ -1,43 +0,0 @@
local M = {}
M.url = "https://github.com/sindrets/diffview.nvim"
function M.get()
return {
DiffviewDim1 = { link = "Comment" },
DiffviewPrimary = { fg = C.blue },
DiffviewSecondary = { fg = C.green },
DiffviewNormal = { fg = C.text, bg = O.transparent_background and C.none or C.mantle },
DiffviewWinSeparator = {
fg = O.transparent_background and C.surface1 or C.base,
bg = O.transparent_background and C.none or C.base,
},
DiffviewFilePanelTitle = { fg = C.blue, style = { "bold" } },
DiffviewFilePanelCounter = { fg = C.text },
DiffviewFilePanelRootPath = { fg = C.lavender, style = { "bold" } },
DiffviewFilePanelFileName = { fg = C.text },
DiffviewFilePanelSelected = { fg = C.yellow },
DiffviewFilePanelPath = { link = "Comment" },
DiffviewFilePanelInsertions = { fg = C.green },
DiffviewFilePanelDeletions = { fg = C.red },
DiffviewFilePanelConflicts = { fg = C.yellow },
DiffviewFolderName = { fg = C.blue, style = { "bold" } },
DiffviewFolderSign = { fg = C.blue },
DiffviewHash = { fg = C.flamingo },
DiffviewReference = { fg = C.blue, style = { "bold" } },
DiffviewReflogSelector = { fg = C.pink },
DiffviewStatusAdded = { fg = C.green },
DiffviewStatusUntracked = { fg = C.green },
DiffviewStatusModified = { fg = C.yellow },
DiffviewStatusRenamed = { fg = C.yellow },
DiffviewStatusCopied = { fg = C.yellow },
DiffviewStatusTypeChange = { fg = C.yellow },
DiffviewStatusUnmerged = { fg = C.yellow },
DiffviewStatusUnknown = { fg = C.red },
DiffviewStatusDeleted = { fg = C.red },
DiffviewStatusBroken = { fg = C.red },
DiffviewStatusIgnored = { fg = C.overlay0 },
}
end
return M

View file

@ -1,71 +0,0 @@
local M = {}
M.url = "https://github.com/Bekaboo/dropbar.nvim"
function M.get()
local color = O.integrations.dropbar.color_mode
return {
DropBarMenuHoverEntry = { link = "Visual" },
DropBarMenuHoverIcon = { reverse = true },
DropBarMenuHoverSymbol = { bold = true },
DropBarIconUISeparator = { fg = C.overlay1 },
DropBarKindArray = color and { link = "DropBarIconKindArray" } or { fg = C.text },
DropBarKindBoolean = color and { link = "DropBarIconKindBoolean" } or { fg = C.text },
DropBarKindBreakStatement = color and { link = "DropBarIconKindBreakStatement" } or { fg = C.text },
DropBarKindCall = color and { link = "DropBarIconKindCall" } or { fg = C.text },
DropBarKindCaseStatement = color and { link = "DropBarIconKindCaseStatement" } or { fg = C.text },
DropBarKindClass = color and { link = "DropBarIconKindClass" } or { fg = C.text },
DropBarKindConstant = color and { link = "DropBarIconKindConstant" } or { fg = C.text },
DropBarKindConstructor = color and { link = "DropBarIconKindConstructor" } or { fg = C.text },
DropBarKindContinueStatement = color and { link = "DropBarIconKindContinueStatement" } or { fg = C.text },
DropBarKindDeclaration = color and { link = "DropBarIconKindDeclaration" } or { fg = C.text },
DropBarKindDelete = color and { link = "DropBarIconKindDelete" } or { fg = C.text },
DropBarKindDoStatement = color and { link = "DropBarIconKindDoStatement" } or { fg = C.text },
DropBarKindElseStatement = color and { link = "DropBarIconKindElseStatement" } or { fg = C.text },
DropBarKindEnum = color and { link = "DropBarIconKindEnum" } or { fg = C.text },
DropBarKindEnumMember = color and { link = "DropBarIconKindEnumMember" } or { fg = C.text },
DropBarKindEvent = color and { link = "DropBarIconKindEvent" } or { fg = C.text },
DropBarKindField = color and { link = "DropBarIconKindField" } or { fg = C.text },
DropBarKindFile = color and { link = "DropBarIconKindFile" } or { fg = C.text },
DropBarKindFolder = color and { link = "DropBarIconKindFolder" } or { fg = C.text },
DropBarKindForStatement = color and { link = "DropBarIconKindForStatement" } or { fg = C.text },
DropBarKindFunction = color and { link = "DropBarIconKindFunction" } or { fg = C.text },
DropBarKindIdentifier = color and { link = "DropBarIconKindIdentifier" } or { fg = C.text },
DropBarKindIfStatement = color and { link = "DropBarIconKindIfStatement" } or { fg = C.text },
DropBarKindInterface = color and { link = "DropBarIconKindInterface" } or { fg = C.text },
DropBarKindKeyword = color and { link = "DropBarIconKindKeyword" } or { fg = C.text },
DropBarKindList = color and { link = "DropBarIconKindList" } or { fg = C.text },
DropBarKindMacro = color and { link = "DropBarIconKindMacro" } or { fg = C.text },
DropBarKindMarkdownH1 = color and { link = "DropBarIconKindMarkdownH1" } or { fg = C.text },
DropBarKindMarkdownH2 = color and { link = "DropBarIconKindMarkdownH2" } or { fg = C.text },
DropBarKindMarkdownH3 = color and { link = "DropBarIconKindMarkdownH3" } or { fg = C.text },
DropBarKindMarkdownH4 = color and { link = "DropBarIconKindMarkdownH4" } or { fg = C.text },
DropBarKindMarkdownH5 = color and { link = "DropBarIconKindMarkdownH5" } or { fg = C.text },
DropBarKindMarkdownH6 = color and { link = "DropBarIconKindMarkdownH6" } or { fg = C.text },
DropBarKindMethod = color and { link = "DropBarIconKindMethod" } or { fg = C.text },
DropBarKindModule = color and { link = "DropBarIconKindModule" } or { fg = C.text },
DropBarKindNamespace = color and { link = "DropBarIconKindNamespace" } or { fg = C.text },
DropBarKindNull = color and { link = "DropBarIconKindNull" } or { fg = C.text },
DropBarKindNumber = color and { link = "DropBarIconKindNumber" } or { fg = C.text },
DropBarKindObject = color and { link = "DropBarIconKindObject" } or { fg = C.text },
DropBarKindOperator = color and { link = "DropBarIconKindOperator" } or { fg = C.text },
DropBarKindPackage = color and { link = "DropBarIconKindPackage" } or { fg = C.text },
DropBarKindProperty = color and { link = "DropBarIconKindProperty" } or { fg = C.text },
DropBarKindReference = color and { link = "DropBarIconKindReference" } or { fg = C.text },
DropBarKindRepeat = color and { link = "DropBarIconKindRepeat" } or { fg = C.text },
DropBarKindScope = color and { link = "DropBarIconKindScope" } or { fg = C.text },
DropBarKindSpecifier = color and { link = "DropBarIconKindSpecifier" } or { fg = C.text },
DropBarKindStatement = color and { link = "DropBarIconKindStatement" } or { fg = C.text },
DropBarKindString = color and { link = "DropBarIconKindString" } or { fg = C.text },
DropBarKindStruct = color and { link = "DropBarIconKindStruct" } or { fg = C.text },
DropBarKindSwitchStatement = color and { link = "DropBarIconKindSwitchStatement" } or { fg = C.text },
DropBarKindType = color and { link = "DropBarIconKindType" } or { fg = C.text },
DropBarKindTypeParameter = color and { link = "DropBarIconKindTypeParameter" } or { fg = C.text },
DropBarKindUnit = color and { link = "DropBarIconKindUnit" } or { fg = C.text },
DropBarKindValue = color and { link = "DropBarIconKindValue" } or { fg = C.text },
DropBarKindVariable = color and { link = "DropBarIconKindVariable" } or { fg = C.text },
DropBarKindWhileStatement = color and { link = "DropBarIconKindWhileStatement" } or { fg = C.text },
}
end
return M

View file

@ -1,11 +0,0 @@
local M = {}
M.url = "https://github.com/lambdalisue/vim-fern"
function M.get()
return {
FernBranchText = { fg = C.blue },
}
end
return M

View file

@ -1,15 +0,0 @@
local M = {}
M.url = "https://github.com/j-hui/fidget.nvim"
function M.get()
return {
FidgetTask = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.text,
},
FidgetTitle = { fg = C.blue },
}
end
return M

View file

@ -1,16 +0,0 @@
local M = {}
M.url = "https://github.com/folke/flash.nvim"
function M.get()
local bg = O.transparent_background and C.none or C.base
return {
FlashBackdrop = { fg = C.overlay0 },
FlashLabel = { fg = C.green, bg = bg, style = { "bold" } },
FlashMatch = { fg = C.lavender, bg = bg },
FlashCurrent = { fg = C.peach, bg = bg },
FlashPrompt = { link = "NormalFloat" },
}
end
return M

View file

@ -1,27 +0,0 @@
local M = {}
M.url = "https://github.com/ibhagwan/fzf-lua"
function M.get()
return {
FzfLuaNormal = { link = "NormalFloat" },
FzfLuaBorder = { link = "FloatBorder" },
FzfLuaTitle = { link = "FloatTitle" },
FzfLuaHeaderBind = { fg = C.yellow },
FzfLuaHeaderText = { fg = C.peach },
FzfLuaDirPart = { link = "NonText" },
FzfLuaFzfMatch = { fg = C.blue },
FzfLuaFzfPrompt = { fg = C.blue },
FzfLuaPathColNr = { fg = C.blue },
FzfLuaPathLineNr = { fg = C.green },
FzfLuaBufName = { fg = C.mauve },
FzfLuaBufNr = { fg = C.yellow },
FzfLuaBufFlagCur = { fg = C.peach },
FzfLuaBufFlagAlt = { fg = C.blue },
FzfLuaTabTitle = { fg = C.sky },
FzfLuaTabMarker = { fg = C.yellow },
FzfLuaLiveSym = { fg = C.peach },
}
end
return M

View file

@ -1,21 +0,0 @@
local M = {}
M.url = "https://github.com/isakbm/gitgraph.nvim"
function M.get()
return {
GitGraphHash = { fg = C.mauve },
GitGraphTimestamp = { fg = C.lavender },
GitGraphAuthor = { fg = C.flamingo },
GitGraphBranchName = { fg = C.teal },
GitGraphBranchTag = { fg = C.pink },
GitGraphBranchMsg = { fg = C.overlay2 },
GitGraphBranch1 = { fg = C.yellow },
GitGraphBranch2 = { fg = C.pink },
GitGraphBranch3 = { fg = C.sky },
GitGraphBranch4 = { fg = C.green },
GitGraphBranch5 = { fg = C.red },
}
end
return M

View file

@ -1,16 +0,0 @@
local M = {}
M.url = "https://github.com/airblade/vim-gitgutter"
function M.get()
return {
GitGutterAdd = { fg = C.green },
GitGutterChange = { fg = C.yellow },
GitGutterDelete = { fg = C.red },
GitGutterAddLineNr = { fg = C.green },
GitGutterChangeLineNr = { fg = C.yellow },
GitGutterDeleteLineNr = { fg = C.red },
}
end
return M

View file

@ -1,44 +0,0 @@
local M = {}
M.url = "https://github.com/lewis6991/gitsigns.nvim"
function M.get()
local transparent = U.nonnil(O.integrations.gitsigns.transparent, O.transparent_background)
if transparent then
return {
GitSignsAdd = { fg = C.green }, -- diff mode: Added line |diff.txt|
GitSignsChange = { fg = C.yellow }, -- diff mode: Changed line |diff.txt|
GitSignsDelete = { fg = C.red }, -- diff mode: Deleted line |diff.txt|
GitSignsCurrentLineBlame = { fg = C.surface1 },
GitSignsAddPreview = { fg = C.green, bg = C.none },
GitSignsDeletePreview = { fg = C.red, bg = C.none },
-- for word diff in previews
GitSignsAddInline = { fg = C.base, bg = C.green, style = { "bold" } },
GitSignsDeleteInline = { fg = C.base, bg = C.red, style = { "bold" } },
GitSignsChangeInline = { fg = C.base, bg = C.blue, style = { "bold" } },
GitSignsDeleteVirtLn = { bg = C.none, fg = C.red },
}
else
return {
GitSignsAdd = { fg = C.green }, -- diff mode: Added line |diff.txt|
GitSignsChange = { fg = C.yellow }, -- diff mode: Changed line |diff.txt|
GitSignsDelete = { fg = C.red }, -- diff mode: Deleted line |diff.txt|
GitSignsCurrentLineBlame = { fg = C.surface1 },
GitSignsAddPreview = { link = "DiffAdd" },
GitSignsDeletePreview = { link = "DiffDelete" },
GitSignsAddInline = { bg = U.darken(C.green, 0.36, C.base) },
GitSignsChangeInline = { bg = U.darken(C.blue, 0.14, C.base) },
GitSignsDeleteInline = { bg = U.darken(C.red, 0.36, C.base) },
}
end
end
return M

View file

@ -1,11 +0,0 @@
local M = {}
M.url = "https://github.com/MagicDuck/grug-far.nvim"
function M.get()
return {
GrugFarResultsMatch = { link = "IncSearch" },
}
end
return M

View file

@ -1,12 +0,0 @@
local M = {}
M.url = "https://github.com/ThePrimeagen/harpoon"
function M.get()
return {
HarpoonWindow = { fg = C.text, bg = O.transparent_background and C.none or C.base },
HarpoonBorder = { fg = C.blue },
}
end
return M

View file

@ -1,20 +0,0 @@
local M = {}
M.url = "https://github.com/lukas-reineke/headlines.nvim"
function M.get()
return {
Dash = { fg = C.overlay2, style = { "bold" } },
Quote = { link = "@markup.strong" },
CodeBlock = { bg = C.mantle },
Headline = { link = "Headline1" },
Headline1 = { bg = C.surface0, fg = C.red },
Headline2 = { bg = C.surface0, fg = C.peach },
Headline3 = { bg = C.surface0, fg = C.yellow },
Headline4 = { bg = C.surface0, fg = C.green },
Headline5 = { bg = C.surface0, fg = C.sapphire },
Headline6 = { bg = C.surface0, fg = C.lavender },
}
end
return M

View file

@ -1,15 +0,0 @@
local M = {}
M.url = "https://github.com/hadronized/hop.nvim"
function M.get()
local bg = O.transparent_background and C.none or C.base
return {
HopNextKey = { bg = bg, fg = C.peach, style = { "bold", "underline" } },
HopNextKey1 = { bg = bg, fg = C.blue, style = { "bold" } },
HopNextKey2 = { bg = bg, fg = C.teal, style = { "bold", "italic" } },
HopUnmatched = { bg = bg, fg = C.overlay0 },
}
end
return M

View file

@ -1,16 +0,0 @@
local M = {}
M.url = "https://github.com/RRethy/vim-illuminate"
function M.get()
return {
IlluminatedWordText = { bg = U.darken(C.surface1, 0.7, C.base) },
IlluminatedWordRead = { bg = U.darken(C.surface1, 0.7, C.base) },
IlluminatedWordWrite = {
bg = U.darken(C.surface1, 0.7, C.base),
style = O.integrations.illuminate.lsp and { "standout" } or {},
},
}
end
return M

View file

@ -1,26 +0,0 @@
local M = {}
M.url = "https://github.com/lukas-reineke/indent-blankline.nvim"
function M.get()
local scope_color = U.select_color(O.integrations.indent_blankline.scope_color, "overlay2")
local hi = {
IblIndent = { fg = C.surface0 },
IblScope = { fg = scope_color },
}
if O.integrations.indent_blankline.colored_indent_levels then
hi["RainbowRed"] = { blend = 0, fg = C.red }
hi["RainbowYellow"] = { blend = 0, fg = C.yellow }
hi["RainbowBlue"] = { blend = 0, fg = C.blue }
hi["RainbowOrange"] = { blend = 0, fg = C.peach }
hi["RainbowGreen"] = { blend = 0, fg = C.green }
hi["RainbowViolet"] = { blend = 0, fg = C.mauve }
hi["RainbowCyan"] = { blend = 0, fg = C.teal }
end
return hi
end
return M

View file

@ -1,21 +0,0 @@
local M = {}
M.url = "https://github.com/ggandor/leap.nvim"
function M.get()
return {
LeapMatch = {
fg = O.transparent_background and C.pink or U.vary_color({ latte = "#222222" }, U.brighten(C.green, 0.3)),
style = { "underline", "nocombine", O.transparent_background and "bold" or nil },
},
LeapLabel = {
fg = O.transparent_background and C.green or U.vary_color({ latte = "#222222" }, C.base),
bg = O.transparent_background and C.none
or U.vary_color({ latte = U.brighten(C.red, 0.4) }, U.brighten(C.green, 0.3)),
style = { "nocombine", O.transparent_background and "bold" or nil },
},
LeapBackdrop = { fg = O.transparent_background and C.overlay0 or C.none },
}
end
return M

View file

@ -1,29 +0,0 @@
local M = {}
M.url = "https://github.com/ggandor/lightspeed.nvim"
function M.get()
return {
LightspeedLabel = { fg = C.red, style = { "bold", "underline" } },
LightspeedLabelDistant = {
fg = U.vary_color({ latte = C.blue }, C.sky),
style = { "bold", "underline" },
},
LightspeedShortcut = {
fg = "#ffffff",
bg = U.increase_saturation(C.red, 0.7),
style = { "bold" },
},
LightspeedMaskedChar = {
fg = U.vary_color({ latte = U.lighten(C.pink, 0.7, C.text) }, U.darken(C.pink, 0.7, C.base)),
},
LightspeedUnlabeledMatch = { fg = C.text, style = { "bold" } },
LightspeedGreyWash = { link = "Comment" },
LightspeedUniqueChar = { link = "LightspeedUnlabeledMatch" },
LightspeedOneCharMatch = { link = "LightspeedShortcut" },
LightspeedPendingOpArea = { link = "IncSearch" },
LightspeedCursor = { link = "Cursor" },
}
end
return M

View file

@ -1,28 +0,0 @@
local M = {}
M.url = "https://github.com/tamago324/lir.nvim"
function M.get()
return vim.tbl_deep_extend("force", {}, {
LirFloatNormal = { fg = C.text, bg = O.transparent_background and C.none or C.mantle },
LirFloatBorder = {
fg = O.transparent_background and C.surface1 or C.base,
bg = O.transparent_background and C.none or C.base,
},
LirFloatCursorLine = { link = "CursorLine" },
LirDir = { fg = C.blue },
LirSymLink = { fg = C.pink },
LirEmptyDirText = { fg = C.blue },
LirFloatCurdirWindowNormal = { fg = C.text },
LirFloatCurdirWindowDirName = { fg = C.lavender, style = { "bold" } },
}, ((O.integrations.lir and O.integrations.lir.git_status) and {
LirGitStatusBracket = { fg = C.overlay0 },
LirGitStatusIndex = { fg = C.blue },
LirGitStatusWorktree = { fg = C.yellow },
LirGitStatusUnmerged = { fg = C.red },
LirGitStatusUntracked = { fg = C.subtext0 },
LirGitStatusIgnored = { fg = C.subtext0 },
}) or {})
end
return M

View file

@ -1,134 +0,0 @@
local M = {}
M.url = "https://github.com/nvimdev/lspsaga.nvim"
function M.get()
return {
SagaTitle = { fg = C.teal, style = { "bold" } },
SagaBorder = { fg = C.blue, bg = C.none },
SagaNormal = { bg = O.transparent_background and C.none or C.base },
SagaToggle = { fg = C.green },
SagaCount = { fg = C.overlay1 },
SagaBeacon = { bg = U.darken(C.surface0, 0.8, C.crust) },
SagaVirtLine = { fg = C.surface2 },
SagaSpinner = { fg = C.mauve, style = { "bold" } },
SagaSpinnerTitle = { fg = C.mauve, style = { "bold" } },
SagaText = { fg = C.text },
SagaSelect = { fg = C.blue, style = { "bold" } },
SagaSearch = { link = "Search" },
SagaFinderFname = { fg = C.subtext0, style = { "bold" } },
ActionFix = { fg = C.pink },
ActionPreviewTitle = { fg = C.mauve, bg = O.transparent_background and C.none or C.base },
CodeActionText = { fg = C.green },
CodeActionNumber = { fg = C.pink },
SagaImpIcon = { fg = C.pink },
SagaLightBulb = { link = "DiagnosticSignHint" },
RenameNormal = { fg = C.text },
RenameMatch = { link = "Search" },
DiagnosticText = { fg = C.text },
SagaWinbarSep = { fg = C.flamingo },
SagaDetail = { link = "Comment" },
SagaFileName = { fg = C.overlay2, style = { "bold" } },
SagaFolderName = { fg = C.overlay2, style = { "bold" } },
SagaInCurrent = { fg = C.peach },
-- Lspkind icons support
LspKindClass = { fg = C.yellow },
LspKindConstant = { fg = C.peach },
LspKindConstructor = { fg = C.sapphire },
LspKindEnum = { fg = C.yellow },
LspKindEnumMember = { fg = C.teal },
LspKindEvent = { fg = C.yellow },
LspKindField = { fg = C.teal },
LspKindFile = { fg = C.rosewater },
LspKindFunction = { fg = C.blue },
LspKindInterface = { fg = C.yellow },
LspKindKey = { fg = C.red },
LspKindMethod = { fg = C.blue },
LspKindModule = { fg = C.blue },
LspKindNamespace = { fg = C.blue },
LspKindNumber = { fg = C.peach },
LspKindOperator = { fg = C.sky },
LspKindPackage = { fg = C.blue },
LspKindProperty = { fg = C.teal },
LspKindStruct = { fg = C.yellow },
LspKindTypeParameter = { fg = C.blue },
LspKindVariable = { fg = C.peach },
LspKindArray = { fg = C.peach },
LspKindBoolean = { fg = C.peach },
LspKindNull = { fg = C.yellow },
LspKindObject = { fg = C.yellow },
LspKindString = { fg = C.green },
-- ccls-specific icons.
LspKindTypeAlias = { fg = C.green },
LspKindParameter = { fg = C.blue },
LspKindStaticMethod = { fg = C.peach },
-- Microsoft-specific icons.
LspKindText = { fg = C.green },
LspKindSnippet = { fg = C.mauve },
LspKindFolder = { fg = C.blue },
LspKindUnit = { fg = C.green },
LspKindValue = { fg = C.peach },
}
end
function M.custom_kind()
return {
File = { "󰈙 ", "LspKindFile" },
Module = { "", "LspKindModule" },
Namespace = { "󰌗 ", "LspKindNamespace" },
Package = { "󰏖 ", "LspKindPackage" },
Class = { "󰌗 ", "LspKindClass" },
Method = { "", "LspKindMethod" },
Property = { "󰆧 ", "LspKindProperty" },
Field = { "", "LspKindField" },
Constructor = { "", "LspKindConstructor" },
Enum = { "󰒻", "LspKindEnum" },
Interface = { "", "LspKindInterface" },
Function = { "󰊕 ", "LspKindFunction" },
Variable = { "", "LspKindVariable" },
Constant = { "", "LspKindConstant" },
String = { "󰀬 ", "LspKindString" },
Number = { "󰎠 ", "LspKindNumber" },
Boolean = { "", "LspKindBoolean" },
Array = { "󰅪 ", "LspKindArray" },
Object = { "󰅩 ", "LspKindObject" },
Key = { "󰌋 ", "LspKindKey" },
Null = { "", "LspKindNull" },
EnumMember = { "", "LspKindEnumMember" },
Struct = { "󰌗 ", "LspKindStruct" },
Event = { "", "LspKindEvent" },
Operator = { "󰆕 ", "LspKindOperator" },
TypeParameter = { "󰊄 ", "LspKindTypeParameter" },
TypeAlias = { "", "LspKindTypeAlias" },
Parameter = { "", "LspKindParameter" },
StaticMethod = { "󰠄 ", "LspKindStaticMethod" },
Macro = { "", "LspKindMacro" },
Text = { "󰉿 ", "LspKindText" },
Snippet = { "", "LspKindSnippet" },
Folder = { "", "LspKindFolder" },
Unit = { "󰉻 ", "LspKindUnit" },
Value = { "", "LspKindValue" },
}
end
-- Backwards compatibility
function M.custom_colors()
local C = require("catppuccin.palettes").get_palette()
return {
normal_bg = C.base,
title_bg = C.green,
red = C.red,
magenta = C.maroon,
orange = C.peach,
yellow = C.yellow,
green = C.green,
cyan = C.sky,
blue = C.blue,
purple = C.mauve,
white = C.text,
black = C.crust,
}
end
return M

View file

@ -1,14 +0,0 @@
local M = {}
M.url = "https://github.com/folke/trouble.nvim"
function M.get()
return {
TroubleText = { fg = C.green },
TroubleCount = { fg = C.pink, bg = O.transparent_background and C.none or C.surface1 },
TroubleNormal = { fg = C.text, bg = O.transparent_background and C.none or C.crust },
TroubleNormalNC = { link = "TroubleNormal" },
}
end
return M

View file

@ -1,50 +0,0 @@
local M = {}
M.url = "https://github.com/OXY2DEV/markview.nvim"
-- markview.nvim highlight groups:
-- https://github.com/OXY2DEV/markview.nvim#-highlight-groups
function M.get()
local darkening_percentage = O.transparent_background and U.vary_color({ latte = 0.15 }, 0.28) or 0.095
local blockquote_bg = not O.transparent_background and C.mantle or nil
local groups = {
MarkviewBlockQuoteDefault = { fg = C.overlay2, bg = C.mantle },
MarkviewBlockQuoteError = { fg = C.red, bg = U.darken(C.red, darkening_percentage, blockquote_bg) },
MarkviewBlockQuoteNote = { fg = C.blue, bg = U.darken(C.blue, darkening_percentage, blockquote_bg) },
MarkviewBlockQuoteOk = { fg = C.green, bg = U.darken(C.green, darkening_percentage, blockquote_bg) },
MarkviewBlockQuoteSpecial = { fg = C.mauve, bg = U.darken(C.pink, darkening_percentage, blockquote_bg) },
MarkviewBlockQuoteWarn = { fg = C.yellow, bg = U.darken(C.yellow, darkening_percentage, blockquote_bg) },
MarkviewHyperlink = { link = "@markup.link.url" },
MarkviewCode = { bg = C.mantle },
MarkviewCodeFg = { fg = C.mantle },
MarkviewCodeInfo = { fg = C.overlay2, bg = C.mantle },
MarkviewInlineCode = { bg = C.surface0 },
MarkviewTableHeader = { fg = C.blue },
}
local rainbow = {
[0] = C.overlay2,
[7] = C.mauve,
}
local syntax = require("catppuccin.groups.syntax").get()
for i = 0, 7 do
local color = rainbow[i] or syntax["rainbow" .. i].fg
local bg = U.darken(color, darkening_percentage, C.base)
groups["MarkviewPalette" .. i] = { fg = color, bg = bg }
groups["MarkviewPalette" .. i .. "Fg"] = { fg = color }
groups["MarkviewPalette" .. i .. "Bg"] = { bg = bg }
groups["MarkviewIcon" .. i] = { fg = color, bg = C.mantle }
end
return groups
end
return M

View file

@ -1,40 +0,0 @@
local M = {}
M.url = "https://github.com/mason-org/mason.nvim"
function M.get()
local bg = O.transparent_background and C.none or C.lavender
local fg = O.transparent_background and C.lavender or C.base
local secondary_bg = O.transparent_background and C.none or C.blue
local secondary_fg = O.transparent_background and C.blue or C.base
local muted_bg = O.transparent_background and C.none or C.overlay0
local muted_fg = O.transparent_background and C.overlay0 or C.base
return {
MasonHeader = { fg = fg, bg = bg, style = { "bold" } },
MasonHeaderSecondary = { fg = secondary_fg, bg = secondary_bg, style = { "bold" } },
MasonHighlight = { fg = C.green },
MasonHighlightBlock = {
bg = O.transparent_background and C.none or C.green,
fg = O.transparent_background and C.green or C.base,
},
MasonHighlightBlockBold = { bg = secondary_bg, fg = secondary_fg, bold = true },
MasonHighlightSecondary = { fg = C.mauve },
MasonHighlightBlockSecondary = { fg = secondary_fg, bg = secondary_bg },
MasonHighlightBlockBoldSecondary = { fg = fg, bg = bg, bold = true },
MasonMuted = { fg = C.overlay0 },
MasonMutedBlock = { bg = muted_bg, fg = muted_fg },
MasonMutedBlockBold = { bg = C.yellow, fg = C.base, bold = true },
MasonError = { fg = C.red },
MasonHeading = { fg = C.lavender, bold = true },
}
end
return M

View file

@ -1,168 +0,0 @@
local M = {}
M.url = "https://github.com/echasnovski/mini.nvim"
function M.get()
local transparent_background = O.transparent_background
local bg_highlight = transparent_background and "NONE" or C.base
local inactive_bg = transparent_background and "NONE" or C.mantle
local indentscope_color = U.select_color(O.integrations.mini.indentscope_color, "overlay2")
return {
MiniAnimateCursor = { style = { "reverse", "nocombine" } },
MiniAnimateNormalFloat = { link = "NormalFloat" },
MiniClueBorder = { link = "FloatBorder" },
MiniClueDescGroup = { link = "DiagnosticFloatingWarn" },
MiniClueDescSingle = { link = "NormalFloat" },
MiniClueNextKey = { link = "DiagnosticFloatingHint" },
MiniClueNextKeyWithPostkeys = { link = "DiagnosticFloatingError" },
MiniClueSeparator = { link = "DiagnosticFloatingInfo" },
MiniClueTitle = { link = "FloatTitle" },
MiniCompletionActiveParameter = { style = { "underline" } },
MiniCursorword = { style = { "underline" } },
MiniCursorwordCurrent = { style = { "underline" } },
MiniDepsChangeAdded = { link = "diffAdded" },
MiniDepsChangeRemoved = { link = "diffRemoved" },
MiniDepsHint = { link = "DiagnosticHint" },
MiniDepsInfo = { link = "DiagnosticInfo" },
MiniDepsMsgBreaking = { link = "DiagnosticWarn" },
MiniDepsPlaceholder = { link = "Comment" },
MiniDepsTitle = { link = "Title" },
MiniDepsTitleError = { bg = C.red, fg = C.base },
MiniDepsTitleSame = { link = "DiffText" },
MiniDepsTitleUpdate = { bg = C.green, fg = C.base },
MiniDiffSignAdd = { fg = C.green },
MiniDiffSignChange = { fg = C.yellow },
MiniDiffSignDelete = { fg = C.red },
MiniDiffOverAdd = { link = "DiffAdd" },
MiniDiffOverChange = { link = "DiffText" },
MiniDiffOverContext = { link = "DiffChange" },
MiniDiffOverDelete = { link = "DiffDelete" },
MiniFilesBorder = { link = "FloatBorder" },
MiniFilesBorderModified = { link = "DiagnosticFloatingWarn" },
MiniFilesCursorLine = { link = "CursorLine" },
MiniFilesDirectory = { link = "Directory" },
MiniFilesFile = { fg = C.text },
MiniFilesNormal = { link = "NormalFloat" },
MiniFilesTitle = { link = "FloatTitle" },
MiniFilesTitleFocused = O.float.solid and {
fg = C.crust,
bg = C.mauve,
} or {
fg = C.subtext0,
bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle,
style = { "bold" },
},
MiniHipatternsFixme = { fg = C.base, bg = C.red, style = { "bold" } },
MiniHipatternsHack = { fg = C.base, bg = C.yellow, style = { "bold" } },
MiniHipatternsNote = { fg = C.base, bg = C.sky, style = { "bold" } },
MiniHipatternsTodo = { fg = C.base, bg = C.teal, style = { "bold" } },
MiniIconsAzure = { fg = C.sapphire },
MiniIconsBlue = { fg = C.blue },
MiniIconsCyan = { fg = C.teal },
MiniIconsGreen = { fg = C.green },
MiniIconsGrey = { fg = C.text },
MiniIconsOrange = { fg = C.peach },
MiniIconsPurple = { fg = C.mauve },
MiniIconsRed = { fg = C.red },
MiniIconsYellow = { fg = C.yellow },
MiniIndentscopeSymbol = { fg = indentscope_color },
MiniJump = { fg = C.overlay2, bg = C.pink },
MiniJump2dDim = { fg = C.overlay0 },
MiniJump2dSpot = { bg = C.base, fg = C.peach, style = { "bold", "underline" } },
MiniJump2dSpotAhead = { bg = C.dim, fg = C.teal },
MiniJump2dSpotUnique = { bg = C.base, fg = C.sky, style = { "bold" } },
MiniMapNormal = { link = "NormalFloat" },
MiniMapSymbolCount = { link = "Special" },
MiniMapSymbolLine = { link = "Title" },
MiniMapSymbolView = { link = "Delimiter" },
MiniNotifyBorder = { link = "FloatBorder" },
MiniNotifyNormal = { link = "NormalFloat" },
MiniNotifyTitle = { link = "FloatTitle" },
MiniOperatorsExchangeFrom = { link = "IncSearch" },
MiniPickBorder = { link = "FloatBorder" },
MiniPickBorderBusy = { link = "DiagnosticFloatingWarn" },
MiniPickBorderText = O.float.solid and {
fg = C.crust,
bg = C.mauve,
} or { fg = C.mauve, bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle },
MiniPickIconDirectory = { link = "Directory" },
MiniPickIconFile = { link = "MiniPickNormal" },
MiniPickHeader = { link = "DiagnosticFloatingHint" },
MiniPickMatchCurrent = {
fg = C.flamingo,
bg = C.surface0,
style = { "bold" },
},
MiniPickMatchMarked = { link = "Visual" },
MiniPickMatchRanges = { link = "DiagnosticFloatingHint" },
MiniPickNormal = { link = "NormalFloat" },
MiniPickPreviewLine = { link = "CursorLine" },
MiniPickPreviewRegion = { link = "IncSearch" },
MiniPickPrompt = { fg = C.text, bg = O.float.transparent and C.none or C.mantle },
MiniPickPromptCaret = {
fg = C.flamingo,
bg = O.float.transparent and C.none or C.mantle,
},
MiniPickPromptPrefix = {
fg = C.flamingo,
bg = O.float.transparent and C.none or C.mantle,
},
MiniStarterCurrent = {},
MiniStarterFooter = { fg = C.yellow, style = { "italic" } },
MiniStarterHeader = { fg = C.blue },
MiniStarterInactive = { fg = C.surface2, style = O.styles.comments },
MiniStarterItem = { fg = C.text },
MiniStarterItemBullet = { fg = C.blue },
MiniStarterItemPrefix = { fg = C.pink },
MiniStarterSection = { fg = C.flamingo },
MiniStarterQuery = { fg = C.green },
MiniStatuslineDevinfo = { fg = C.subtext1, bg = C.surface1 },
MiniStatuslineFileinfo = { fg = C.subtext1, bg = C.surface1 },
MiniStatuslineFilename = { fg = C.text, bg = C.mantle },
MiniStatuslineInactive = { fg = C.blue, bg = C.mantle },
MiniStatuslineModeCommand = { fg = C.base, bg = C.peach, style = { "bold" } },
MiniStatuslineModeInsert = { fg = C.base, bg = C.green, style = { "bold" } },
MiniStatuslineModeNormal = { fg = C.mantle, bg = C.blue, style = { "bold" } },
MiniStatuslineModeOther = { fg = C.base, bg = C.teal, style = { "bold" } },
MiniStatuslineModeReplace = { fg = C.base, bg = C.red, style = { "bold" } },
MiniStatuslineModeVisual = { fg = C.base, bg = C.mauve, style = { "bold" } },
MiniSurround = { bg = C.pink, fg = C.surface1 },
MiniTablineCurrent = { fg = C.text, bg = C.base, sp = C.red, style = { "bold", "italic", "underline" } },
MiniTablineFill = { bg = bg_highlight },
MiniTablineHidden = { fg = C.text, bg = inactive_bg },
MiniTablineModifiedCurrent = { fg = C.red, bg = C.none, style = { "bold", "italic" } },
MiniTablineModifiedHidden = { fg = C.red, bg = C.none },
MiniTablineModifiedVisible = { fg = C.red, bg = C.none },
MiniTablineTabpagesection = { fg = C.surface1, bg = C.base },
MiniTablineVisible = { bg = C.none },
MiniTestEmphasis = { style = { "bold" } },
MiniTestFail = { fg = C.red, style = { "bold" } },
MiniTestPass = { fg = C.green, style = { "bold" } },
MiniTrailspace = { bg = C.red },
}
end
return M

View file

@ -1,44 +0,0 @@
local M = {}
M.url = "https://github.com/SmiteshP/nvim-navic"
function M.get()
local background = O.integrations.navic.custom_bg or C.none
if O.integrations.navic.custom_bg == "lualine" then background = C.mantle end
if background ~= C.none and string.sub(background, 0, 1) ~= "#" then
background = U.select_color(background, "none")
end
return {
NavicIconsFile = { fg = C.blue, bg = background },
NavicIconsModule = { fg = C.blue, bg = background },
NavicIconsNamespace = { fg = C.blue, bg = background },
NavicIconsPackage = { fg = C.blue, bg = background },
NavicIconsClass = { fg = C.yellow, bg = background },
NavicIconsMethod = { fg = C.blue, bg = background },
NavicIconsProperty = { fg = C.green, bg = background },
NavicIconsField = { fg = C.green, bg = background },
NavicIconsConstructor = { fg = C.blue, bg = background },
NavicIconsEnum = { fg = C.green, bg = background },
NavicIconsInterface = { fg = C.yellow, bg = background },
NavicIconsFunction = { fg = C.blue, bg = background },
NavicIconsVariable = { fg = C.flamingo, bg = background },
NavicIconsConstant = { fg = C.peach, bg = background },
NavicIconsString = { fg = C.green, style = O.styles.strings, bg = background },
NavicIconsNumber = { fg = C.peach, bg = background },
NavicIconsBoolean = { fg = C.peach, bg = background },
NavicIconsArray = { fg = C.peach, bg = background },
NavicIconsObject = { fg = C.peach, bg = background },
NavicIconsKey = { fg = C.pink, style = O.styles.keywords, bg = background },
NavicIconsNull = { fg = C.peach, bg = background },
NavicIconsEnumMember = { fg = C.red, bg = background },
NavicIconsStruct = { fg = C.blue, bg = background },
NavicIconsEvent = { fg = C.blue, bg = background },
NavicIconsOperator = { fg = C.sky, bg = background },
NavicIconsTypeParameter = { fg = C.blue, bg = background },
NavicText = { fg = C.sapphire, bg = background },
NavicSeparator = { fg = C.text, bg = background },
}
end
return M

View file

@ -1,257 +0,0 @@
local M = {}
M.url = "https://github.com/NeogitOrg/neogit"
function M.get()
return {
NeogitBranch = {
fg = C.peach,
style = { "bold" },
},
NeogitRemote = {
fg = C.green,
style = { "bold" },
},
NeogitUnmergedInto = {
link = "Function",
},
NeogitUnpulledFrom = {
link = "Function",
},
NeogitObjectId = {
link = "Comment",
},
NeogitStash = {
link = "Comment",
},
NeogitRebaseDone = {
link = "Comment",
},
NeogitHunkHeader = {
bg = U.darken(C.blue, 0.095, C.base),
fg = U.darken(C.blue, 0.5, C.base),
},
NeogitHunkHeaderHighlight = {
bg = U.darken(C.blue, 0.215, C.base),
fg = C.blue,
},
NeogitDiffContextHighlight = {
bg = C.surface0,
},
NeogitDiffDeleteHighlight = {
bg = U.darken(C.red, 0.345, C.base),
fg = U.lighten(C.red, 0.850, C.text),
},
NeogitDiffAddHighlight = {
bg = U.darken(C.green, 0.345, C.base),
fg = U.lighten(C.green, 0.850, C.text),
},
NeogitDiffDelete = {
bg = U.darken(C.red, 0.095, C.base),
fg = U.darken(C.red, 0.800, C.base),
},
NeogitDiffDeleteInline = {
bg = U.darken(C.red, 0.500, C.base),
style = { "bold" },
},
NeogitDiffAdd = {
bg = U.darken(C.green, 0.095, C.base),
fg = U.darken(C.green, 0.800, C.base),
},
NeogitDiffAddInline = {
bg = U.darken(C.green, 0.500, C.base),
style = { "bold" },
},
NeogitCommitViewHeader = {
bg = U.darken(C.blue, 0.300, C.base),
fg = U.lighten(C.blue, 0.800, C.text),
},
NeogitChangeModified = {
fg = C.blue,
style = { "bold" },
},
NeogitChangeDeleted = {
fg = C.red,
style = { "bold" },
},
NeogitChangeAdded = {
fg = C.green,
style = { "bold" },
},
NeogitChangeRenamed = {
fg = C.mauve,
style = { "bold" },
},
NeogitChangeUpdated = {
fg = C.peach,
style = { "bold" },
},
NeogitChangeCopied = {
fg = C.pink,
style = { "bold" },
},
NeogitChangeBothModified = {
fg = C.yellow,
style = { "bold" },
},
NeogitChangeNewFile = {
fg = C.green,
style = { "bold" },
},
NeogitUntrackedfiles = {
fg = C.mauve,
style = { "bold" },
},
NeogitUnstagedchanges = {
fg = C.mauve,
style = { "bold" },
},
NeogitUnmergedchanges = {
fg = C.mauve,
style = { "bold" },
},
NeogitUnpulledchanges = {
fg = C.mauve,
style = { "bold" },
},
NeogitRecentcommits = {
fg = C.mauve,
style = { "bold" },
},
NeogitStagedchanges = {
fg = C.mauve,
style = { "bold" },
},
NeogitStashes = {
fg = C.mauve,
style = { "bold" },
},
NeogitRebasing = {
fg = C.mauve,
style = { "bold" },
},
NeogitNotificationInfo = {
fg = C.blue,
},
NeogitNotificationWarning = {
fg = C.yellow,
},
NeogitNotificationError = {
fg = C.red,
},
NeogitGraphRed = {
fg = C.red,
},
NeogitGraphWhite = {
fg = C.base,
},
NeogitGraphYellow = {
fg = C.yellow,
},
NeogitGraphGreen = {
fg = C.green,
},
NeogitGraphCyan = {
fg = C.blue,
},
NeogitGraphBlue = {
fg = C.blue,
},
NeogitGraphPurple = {
fg = C.lavender,
},
NeogitGraphGray = {
fg = C.subtext1,
},
NeogitGraphOrange = {
fg = C.peach,
},
NeogitGraphBoldRed = {
fg = C.red,
style = { "bold" },
},
NeogitGraphBoldWhite = {
fg = C.white,
style = { "bold" },
},
NeogitGraphBoldYellow = {
fg = C.yellow,
style = { "bold" },
},
NeogitGraphBoldGreen = {
fg = C.green,
style = { "bold" },
},
NeogitGraphBoldCyan = {
fg = C.blue,
style = { "bold" },
},
NeogitGraphBoldBlue = {
fg = C.blue,
style = { "bold" },
},
NeogitGraphBoldPurple = {
fg = C.lavender,
style = { "bold" },
},
NeogitGraphBoldGray = {
fg = C.subtext1,
style = { "bold" },
},
NeogitDiffContext = {
bg = C.base,
},
NeogitPopupBold = {
style = { "bold" },
},
NeogitPopupSwitchKey = {
fg = C.lavender,
},
NeogitPopupOptionKey = {
fg = C.lavender,
},
NeogitPopupConfigKey = {
fg = C.lavender,
},
NeogitPopupActionKey = {
fg = C.lavender,
},
NeogitFilePath = {
fg = C.blue,
style = { "italic" },
},
NeogitDiffHeader = {
bg = C.base,
fg = C.blue,
style = { "bold" },
},
NeogitDiffHeaderHighlight = {
bg = C.base,
fg = C.peach,
style = { "bold" },
},
NeogitUnpushedTo = {
fg = C.lavender,
style = { "bold" },
},
NeogitFold = {
fg = C.none,
bg = C.none,
},
NeogitSectionHeader = {
fg = C.mauve,
style = { "bold" },
},
NeogitTagName = {
fg = C.yellow,
},
NeogitTagDistance = {
fg = C.blue,
},
NeogitWinSeparator = {
link = "WinSeparator",
},
}
end
return M

View file

@ -1,26 +0,0 @@
local M = {}
M.url = "https://github.com/nvim-neotest/neotest"
function M.get()
return {
NeotestPassed = { fg = C.green },
NeotestFailed = { fg = C.red },
NeotestRunning = { fg = C.yellow },
NeotestSkipped = { fg = C.blue },
NeotestTest = { fg = C.text },
NeotestNamespace = { fg = C.mauve },
NeotestFocused = { style = { "bold", "underline" } },
NeotestFile = { fg = C.blue },
NeotestDir = { fg = C.blue },
NeotestIndent = { fg = C.overlay1 },
NeotestExpandMarker = { fg = C.overlay1 },
NeotestAdapterName = { fg = C.maroon },
NeotestWinSelect = { fg = C.blue, style = { "bold" } },
NeotestMarked = { fg = C.peach, style = { "bold" } },
NeotestTarget = { fg = C.red },
NeotestUnknown = { fg = C.text },
}
end
return M

View file

@ -1,48 +0,0 @@
local M = {}
M.url = "https://github.com/nvim-neo-tree/neo-tree.nvim"
function M.get()
local active_bg = O.transparent_background and C.none or C.mantle
local inactive_bg = O.transparent_background and C.none or C.base
return {
NeoTreeDirectoryName = { fg = C.blue },
NeoTreeDirectoryIcon = { fg = C.blue },
NeoTreeNormal = { fg = C.text, bg = active_bg },
NeoTreeNormalNC = { fg = C.text, bg = active_bg },
NeoTreeExpander = { fg = C.overlay0 },
NeoTreeIndentMarker = { fg = C.overlay0 },
NeoTreeRootName = { fg = C.blue, style = { "bold" } },
NeoTreeSymbolicLinkTarget = { fg = C.pink },
NeoTreeModified = { fg = C.peach },
NeoTreeGitAdded = { fg = C.green },
NeoTreeGitConflict = { fg = C.red },
NeoTreeGitDeleted = { fg = C.red },
NeoTreeGitIgnored = { fg = C.overlay0 },
NeoTreeGitModified = { fg = C.yellow },
NeoTreeGitUnstaged = { fg = C.red },
NeoTreeGitUntracked = { fg = C.mauve },
NeoTreeGitStaged = { fg = C.green },
NeoTreeFloatBorder = { link = "FloatBorder" },
NeoTreeFloatTitle = { link = "FloatTitle" },
NeoTreeTitleBar = { fg = C.mantle, bg = C.blue },
NeoTreeFileNameOpened = { fg = C.pink },
NeoTreeDimText = { fg = C.overlay1 },
NeoTreeFilterTerm = { fg = C.green, style = { "bold" } },
NeoTreeTabActive = { bg = active_bg, fg = C.lavender, style = { "bold" } },
NeoTreeTabInactive = { bg = inactive_bg, fg = C.overlay0 },
NeoTreeTabSeparatorActive = { fg = active_bg, bg = active_bg },
NeoTreeTabSeparatorInactive = { fg = inactive_bg, bg = inactive_bg },
NeoTreeVertSplit = { fg = C.base, bg = inactive_bg },
NeoTreeWinSeparator = {
fg = O.transparent_background and C.surface1 or C.base,
bg = O.transparent_background and C.none or C.base,
},
NeoTreeStatusLineNC = { fg = C.mantle, bg = C.mantle },
}
end
return M

View file

@ -1,28 +0,0 @@
local M = {}
M.url = "https://github.com/folke/noice.nvim"
local virtual_text = O.lsp_styles.virtual_text
function M.get()
return { -- Personally the default integration is already pretty good
NoiceCmdline = { fg = C.text },
NoiceCmdlineIcon = { fg = C.sky, style = virtual_text.information },
NoiceCmdlineIconSearch = { fg = C.yellow },
NoiceCmdlinePopupBorder = { fg = C.lavender },
NoiceCmdlinePopupBorderSearch = { fg = C.yellow },
NoiceConfirmBorder = { fg = C.blue },
NoiceMini = { fg = C.subtext0, blend = 0 },
NoiceFormatProgressDone = {
bg = O.transparent_background and C.none or U.darken(C.sky, 0.30, C.base),
fg = C.subtext0,
},
NoiceFormatProgressTodo = {
bg = O.transparent_background and C.none
or U.vary_color({ latte = U.lighten(C.mantle, 0.70, C.base) }, U.darken(C.surface0, 0.64, C.base)),
fg = C.subtext0,
},
}
end
return M

View file

@ -1,13 +0,0 @@
local M = {}
M.url = "https://github.com/vigoux/notifier.nvim"
function M.get()
return {
NotifierIcon = { fg = C.mauve },
NotifierContent = { fg = C.overlay2, blend = 0, style = { "italic" } },
NotifierContentDim = { fg = C.overlay1, blend = 0, style = { "italic" } },
}
end
return M

View file

@ -1,27 +0,0 @@
local M = {}
M.url = "https://github.com/rcarriga/nvim-notify"
function M.get()
return {
NotifyBackground = { bg = (O.transparent_background and vim.o.winblend == 0) and "#000000" or C.mantle },
NotifyERRORBorder = { fg = C.red },
NotifyERRORIcon = { fg = C.red },
NotifyERRORTitle = { fg = C.red, style = { "italic" } },
NotifyWARNBorder = { fg = C.yellow },
NotifyWARNIcon = { fg = C.yellow },
NotifyWARNTitle = { fg = C.yellow, style = { "italic" } },
NotifyINFOBorder = { fg = C.blue },
NotifyINFOIcon = { fg = C.blue },
NotifyINFOTitle = { fg = C.blue, style = { "italic" } },
NotifyDEBUGBorder = { fg = C.peach },
NotifyDEBUGIcon = { fg = C.peach },
NotifyDEBUGTitle = { fg = C.peach, style = { "italic" } },
NotifyTRACEBorder = { fg = C.rosewater },
NotifyTRACEIcon = { fg = C.rosewater },
NotifyTRACETitle = { fg = C.rosewater, style = { "italic" } },
}
end
return M

View file

@ -1,11 +0,0 @@
local M = {}
M.url = "https://github.com/kylechui/nvim-surround"
function M.get()
return {
NvimSurroundHighlight = { sp = C.peach, style = { "underline" } },
}
end
return M

View file

@ -1,29 +0,0 @@
local M = {}
M.url = "https://github.com/nvim-tree/nvim-tree.lua"
function M.get()
return {
NvimTreeFolderName = { fg = C.blue },
NvimTreeFolderIcon = { fg = C.blue },
NvimTreeNormal = { fg = C.text, bg = O.transparent_background and C.none or C.mantle },
NvimTreeOpenedFolderName = { fg = C.blue },
NvimTreeEmptyFolderName = { fg = C.blue },
NvimTreeIndentMarker = { fg = C.overlay0 },
NvimTreeWinSeparator = {
fg = O.transparent_background and C.surface1 or C.base,
bg = O.transparent_background and C.none or C.base,
},
NvimTreeRootFolder = { fg = C.lavender, style = { "bold" } },
NvimTreeSymlink = { fg = C.pink },
NvimTreeStatuslineNc = { fg = C.mantle, bg = C.mantle },
NvimTreeGitDirty = { fg = C.yellow },
NvimTreeGitNew = { fg = C.blue },
NvimTreeGitDeleted = { fg = C.red },
NvimTreeSpecialFile = { fg = C.flamingo },
NvimTreeImageFile = { fg = C.text },
NvimTreeOpenedFile = { fg = C.pink },
}
end
return M

View file

@ -1,83 +0,0 @@
local M = {}
M.url = "https://github.com/pwntester/octo.nvim"
function M.get()
return {
-- colors
OctoGrey = { fg = C.base },
OctoBlue = { fg = C.blue },
OctoGreen = { fg = C.green },
OctoRed = { fg = C.red },
OctoPurple = { fg = C.mauve },
OctoYellow = { fg = C.yellow },
-- highlight groups
OctoDirty = { link = "ErrorMsg" },
OctoIssueTitle = { link = "PreProc" },
OctoIssueId = { link = "Question" },
OctoEmpty = { link = "Comment" },
OctoFloat = { link = "NormalNC" },
OctoDate = { link = "Comment" },
OctoSymbol = { link = "Comment" },
OctoTimelineItemHeading = { link = "Comment" },
OctoDetailsLabel = { link = "Title" },
OctoMissingDetails = { link = "Comment" },
OctoDetailsValue = { link = "Identifier" },
OctoDiffHunkPosition = { link = "NormalFloat" },
OctoCommentLine = { link = "TabLineSel" },
OctoViewer = { fg = C.base, bg = C.blue },
OctoBubble = { fg = C.text, bg = C.base },
OctoBubbleGrey = { fg = C.text, bg = C.base },
OctoBubbleDelimiterGrey = { fg = C.base },
OctoBubbleGreen = { fg = C.base, bg = C.green },
OctoBubbleDelimiterGreen = { fg = C.green },
OctoBubbleBlue = { fg = C.base, bg = C.sky },
OctoBubbleDelimiterBlue = { fg = C.sky },
OctoBubbleYellow = { fg = C.base, bg = C.yellow },
OctoBubbleDelimiterYellow = { fg = C.yellow },
OctoBubbleRed = { fg = C.base, bg = C.red },
OctoBubbleDelimiterRed = { fg = C.red },
OctoBubblePurple = { fg = C.base, bg = C.mauve },
OctoBubbleDelimiterPurple = { fg = C.mauve },
OctoUser = { link = "OctoBubble" },
OctoUserViewer = { link = "OctoViewer" },
OctoReaction = { link = "OctoBubble" },
OctoReactionViewer = { link = "OctoViewer" },
OctoPassingTest = { link = "OctoGreen" },
OctoFailingTest = { link = "OctoRed" },
OctoPullAdditions = { link = "OctoGreen" },
OctoPullDeletions = { link = "OctoRed" },
OctoPullModifications = { fg = C.peach },
OctoStateOpen = { fg = C.green, bg = C.base },
OctoStateOpenFloat = { fg = C.green, bg = C.base },
OctoStateClosed = { fg = C.red, bg = C.base },
OctoStateClosedFloat = { fg = C.red, bg = C.base },
OctoStateMerged = { fg = C.mauve, bg = C.base },
OctoStateMergedFloat = { fg = C.mauve, bg = C.base },
OctoStatePending = { fg = C.peach, bg = C.base },
OctoStatePendingFloat = { fg = C.peach, bg = C.base },
OctoStateApproved = { link = "OctoStateOpen" },
OctoStateApprovedFloat = { link = "OctoStateOpen" },
OctoStateChangesRequested = { fg = C.maroon, bg = C.base },
OctoStateChangesRequestedFloat = { fg = C.maroon, bg = C.base },
OctoStateCommented = { link = "Normal" },
OctoStateCommentedFloat = { link = "Normal" },
OctoStateDismissed = { link = "OctoStateClosed" },
OctoStateDismissedFloat = { link = "OctoStateClosed" },
OctoStateSubmittedBubble = { link = "OctoBubbleGreen" },
OctoFilePanelCounter = { fg = C.blue, style = { "bold" } },
OctoFilePanelTitle = { fg = C.blue, style = { "bold" } },
OctoFilePanelFileName = {},
OctoNormalFront = { fg = C.text },
OctoYellowFloat = { fg = C.yellow, bg = C.base },
OctoPurpleFloat = { fg = C.mauve, bg = C.base },
OctoRedFloat = { fg = C.red, bg = C.base },
OctoGreenFloat = { fg = C.green, bg = C.base },
OctoGreyFloat = { fg = C.text, bg = C.base },
OctoBlueFloat = { fg = C.blue, bg = C.base },
OctoReviewDiffAddText = { bg = U.darken(C.green, 0.30, C.base) },
OctoReviewDiffDeleteText = { bg = U.darken(C.red, 0.30, C.base) },
}
end
return M

View file

@ -1,20 +0,0 @@
local M = {}
M.url = "https://github.com/stevearc/overseer.nvim"
function M.get()
return {
OverseerPENDING = { fg = C.grey },
OverseerRUNNING = { fg = C.yellow },
OverseerSUCCESS = { fg = C.green },
OverseerCANCELED = { fg = C.overlay2 },
OverseerFAILURE = { fg = C.red },
OverseerTask = { fg = C.blue },
OverseerTaskBorder = { fg = C.sky },
OverseerOutput = { fg = C.text },
OverseerComponent = { fg = C.yellow },
OverseerField = { fg = C.green },
}
end
return M

View file

@ -1,14 +0,0 @@
local M = {}
M.url = "https://github.com/rlane/pounce.nvim"
function M.get()
return {
PounceMatch = { bg = U.lighten(C.green, 0.7), fg = C.base, style = { "bold" } },
PounceGap = { bg = U.darken(C.green, 0.7), fg = C.base, style = { "bold" } },
PounceAccept = { bg = C.peach, fg = C.base, style = { "bold" } },
PounceAcceptBest = { bg = C.teal, fg = C.base, style = { "bold" } },
}
end
return M

View file

@ -1,17 +0,0 @@
local M = {}
M.url = "https://github.com/HiPhish/rainbow-delimiters.nvim"
function M.get()
return {
RainbowDelimiterRed = { fg = C.red },
RainbowDelimiterYellow = { fg = C.yellow },
RainbowDelimiterBlue = { fg = C.blue },
RainbowDelimiterOrange = { fg = C.peach },
RainbowDelimiterGreen = { fg = C.green },
RainbowDelimiterViolet = { fg = C.mauve },
RainbowDelimiterCyan = { fg = C.teal },
}
end
return M

View file

@ -1,34 +0,0 @@
local M = {}
M.url = "https://github.com/MeanderingProgrammer/render-markdown.nvim"
-- render-markdown.nvim highlight groups:
-- https://github.com/MeanderingProgrammer/render-markdown.nvim?tab=readme-ov-file#colors
function M.get()
local groups = {
RenderMarkdownCode = { bg = C.mantle },
RenderMarkdownCodeInline = { bg = C.surface0 },
RenderMarkdownBullet = { fg = C.sky },
RenderMarkdownTableHead = { fg = C.blue },
RenderMarkdownTableRow = { fg = C.lavender },
RenderMarkdownSuccess = { fg = C.green },
RenderMarkdownInfo = { fg = C.sky },
RenderMarkdownHint = { fg = C.teal },
RenderMarkdownWarn = { fg = C.yellow },
RenderMarkdownError = { fg = C.red },
}
local syntax = require("catppuccin.groups.syntax").get()
local darkening_percentage = O.transparent_background and U.vary_color({ latte = 0.15 }, 0.28) or 0.095
for i = 1, 6 do
local color = syntax["rainbow" .. i].fg
groups["RenderMarkdownH" .. i] = { fg = color }
groups["RenderMarkdownH" .. i .. "Bg"] = { bg = U.darken(color, darkening_percentage, C.base) }
end
return groups
end
return M

View file

@ -1,14 +0,0 @@
local M = {}
M.url = "https://github.com/machakann/vim-sandwich"
function M.get()
return {
OperatorSandwichAdd = { bg = C.blue, fg = C.base },
OperatorSandwichBuns = { bg = C.blue, fg = C.base },
OperatorSandwichChange = { bg = C.blue, fg = C.base },
OperatorSandwichDelete = { bg = C.blue, fg = C.base },
}
end
return M

View file

@ -1,13 +0,0 @@
local M = {}
M.url = "https://github.com/mhinz/vim-signify"
function M.get()
return {
SignifySignAdd = { fg = C.green },
SignifySignChange = { fg = C.yellow },
SignifySignDelete = { fg = C.red },
}
end
return M

View file

@ -1,92 +0,0 @@
local M = {}
M.url = "https://github.com/folke/snacks.nvim"
function M.get()
local indent_scope_color = U.select_color(O.integrations.snacks.indent_scope_color, "overlay2")
local hlgroups = {
SnacksNormal = { link = "Normal" },
SnacksWinBar = { link = "Title" },
SnacksBackdrop = { link = "FloatShadow" },
SnacksNormalNC = { link = "NormalFloat" },
SnacksWinBarNC = { link = "SnacksWinBar" },
SnacksNotifierInfo = { fg = C.blue },
SnacksNotifierIconInfo = { fg = C.blue },
SnacksNotifierTitleInfo = { fg = C.blue, style = { "italic" } },
SnacksNotifierFooterInfo = { link = "DiagnosticInfo" },
SnacksNotifierBorderInfo = { fg = C.blue },
SnacksNotifierWarn = { fg = C.yellow },
SnacksNotifierIconWarn = { fg = C.yellow },
SnacksNotifierTitleWarn = { fg = C.yellow, style = { "italic" } },
SnacksNotifierBorderWarn = { fg = C.yellow },
SnacksNotifierFooterWarn = { link = "DiagnosticWarn" },
SnacksNotifierDebug = { fg = C.peach },
SnacksNotifierIconDebug = { fg = C.peach },
SnacksNotifierTitleDebug = { fg = C.peach, style = { "italic" } },
SnacksNotifierBorderDebug = { fg = C.peach },
SnacksNotifierFooterDebug = { link = "DiagnosticHint" },
SnacksNotifierError = { fg = C.red },
SnacksNotifierIconError = { fg = C.red },
SnacksNotifierTitleError = { fg = C.red, style = { "italic" } },
SnacksNotifierBorderError = { fg = C.red },
SnacksNotifierFooterError = { link = "DiagnosticError" },
SnacksNotifierTrace = { fg = C.rosewater },
SnacksNotifierIconTrace = { fg = C.rosewater },
SnacksNotifierTitleTrace = { fg = C.rosewater, style = { "italic" } },
SnacksNotifierBorderTrace = { fg = C.rosewater },
SnacksNotifierFooterTrace = { link = "DiagnosticHint" },
SnacksDashboardNormal = { link = "Normal" },
SnacksDashboardDesc = { fg = C.blue },
SnacksDashboardFile = { fg = C.lavender },
SnacksDashboardDir = { link = "NonText" },
SnacksDashboardFooter = { fg = C.yellow, style = { "italic" } },
SnacksDashboardHeader = { fg = C.blue },
SnacksDashboardIcon = { fg = C.pink, bold = true },
SnacksDashboardKey = { fg = C.peach },
SnacksDashboardTerminal = { link = "SnacksDashboardNormal" },
SnacksDashboardSpecial = { link = "Special" },
SnacksDashboardTitle = { link = "Title" },
SnacksIndent = { fg = C.surface0 },
SnacksIndentScope = { fg = indent_scope_color },
SnacksPickerSelected = {
fg = O.float.transparent and C.flamingo or C.text,
bg = O.float.transparent and C.none or C.surface0,
style = { "bold" },
},
SnacksPickerMatch = { fg = C.blue },
SnacksPicker = { link = "NormalFloat" },
SnacksPickerBorder = { link = "FloatBorder" },
SnacksPickerInputBorder = { link = "SnacksPickerBorder" },
SnacksPickerInput = { link = "NormalFloat" },
SnacksPickerPrompt = { fg = C.flamingo },
}
if O.float.solid then
hlgroups["SnacksPickerTitle"] = {
fg = C.crust,
bg = C.mauve,
}
hlgroups["SnacksPickerPreviewTitle"] = {
fg = C.crust,
bg = C.green,
}
hlgroups["SnacksPickerInputTitle"] = {
fg = C.crust,
bg = C.red,
}
hlgroups["SnacksPickerListTitle"] = {
fg = C.crust,
bg = C.lavender,
}
end
return hlgroups
end
return M

View file

@ -1,15 +0,0 @@
local M = {}
M.url = "https://github.com/simrat39/symbols-outline.nvim"
function M.get()
return {
-- https://github.com/simrat39/symbols-outline.nvim
FocusedSymbol = { fg = C.yellow, bg = C.none },
-- https://github.com/hedyhli/outline.nvim
OutlineCurrent = { link = "FocusedSymbol" },
}
end
return M

View file

@ -1,13 +0,0 @@
local M = {}
M.url = "https://github.com/nvim-telekasten/telekasten.nvim"
function M.get()
return {
tkLink = { fg = C.blue },
tkBrackets = { fg = C.pink },
tkTag = { fg = C.sky },
}
end
return M

View file

@ -1,41 +0,0 @@
local M = {}
M.url = "https://github.com/nvim-telescope/telescope.nvim"
function M.get()
local hlgroups = {
TelescopeBorder = { link = "FloatBorder" },
TelescopeNormal = { link = "NormalFloat" },
TelescopePreviewNormal = { link = "TelescopeNormal" },
TelescopePromptNormal = { link = "TelescopeNormal" },
TelescopeResultsNormal = { link = "TelescopeNormal" },
TelescopeTitle = { link = "FloatTitle" },
TelescopeSelectionCaret = { fg = C.flamingo, bg = C.surface0 },
TelescopeSelection = {
fg = C.flamingo,
bg = C.surface0,
style = { "bold" },
},
TelescopeMatching = { fg = C.blue },
TelescopePromptPrefix = { fg = C.flamingo },
}
if O.float.solid then
hlgroups["TelescopePreviewTitle"] = {
fg = C.crust,
bg = C.green,
}
hlgroups["TelescopePromptTitle"] = {
fg = C.crust,
bg = C.red,
}
hlgroups["TelescopeResultsTitle"] = {
fg = C.crust,
bg = C.lavender,
}
end
return hlgroups
end
return M

View file

@ -1,24 +0,0 @@
local M = {}
M.url = "https://github.com/nvim-treesitter/nvim-treesitter-context"
function M.get()
return {
TreesitterContext = {
fg = C.text,
bg = O.transparent_background and C.none or C.mantle,
},
TreesitterContextBottom = {
sp = O.transparent_background and C.dim or C.surface0,
style = { "underline" },
},
TreesitterContextLineNumber = O.transparent_background and {
fg = C.rosewater,
} or {
fg = C.surface1,
bg = C.mantle,
},
}
end
return M

View file

@ -1,17 +0,0 @@
local M = {}
M.url = "https://github.com/HiPhish/nvim-ts-rainbow"
function M.get()
return {
rainbowcol1 = { fg = C.red },
rainbowcol2 = { fg = C.teal },
rainbowcol3 = { fg = C.yellow },
rainbowcol4 = { fg = C.blue },
rainbowcol5 = { fg = C.pink },
rainbowcol6 = { fg = C.flamingo },
rainbowcol7 = { fg = C.green },
}
end
return M

View file

@ -1,17 +0,0 @@
local M = {}
M.url = "https://github.com/HiPhish/nvim-ts-rainbow2"
function M.get()
return {
TSRainbowRed = { fg = C.red },
TSRainbowYellow = { fg = C.yellow },
TSRainbowBlue = { fg = C.blue },
TSRainbowOrange = { fg = C.peach },
TSRainbowGreen = { fg = C.green },
TSRainbowViolet = { fg = C.mauve },
TSRainbowCyan = { fg = C.teal },
}
end
return M

View file

@ -1,12 +0,0 @@
local M = {}
M.url = "https://github.com/kevinhwang91/nvim-ufo"
M.get = function()
return {
UfoFoldedFg = { fg = C.lavender },
UfoFoldedEllipsis = { fg = C.crust, bg = C.blue },
}
end
return M

View file

@ -1,12 +0,0 @@
local M = {}
M.url = "https://github.com/justinmk/vim-sneak"
function M.get()
return {
Sneak = { fg = C.overlay2, bg = C.pink },
SneakScope = { bg = C.text },
}
end
return M

View file

@ -1,22 +0,0 @@
local M = {}
M.url = "https://github.com/vimwiki/vimwiki"
function M.get()
return {
VimwikiLink = { fg = C.sky, bg = C.none },
VimwikiHeaderChar = { fg = C.grey, bg = C.none },
VimwikiHR = { fg = C.yellow, bg = C.none },
VimwikiList = { fg = C.peach, bg = C.none },
VimwikiTag = { fg = C.peach, bg = C.none },
VimwikiMarkers = { fg = C.subtext0, bg = C.none },
VimwikiHeader1 = { fg = C.peach, bg = C.none, style = { "bold" } },
VimwikiHeader2 = { fg = C.green, bg = C.none, style = { "bold" } },
VimwikiHeader3 = { fg = C.blue, bg = C.none, style = { "bold" } },
VimwikiHeader4 = { fg = C.sky, bg = C.none, style = { "bold" } },
VimwikiHeader5 = { fg = C.yellow, bg = C.none, style = { "bold" } },
VimwikiHeader6 = { fg = C.mauve, bg = C.none, style = { "bold" } },
}
end
return M

View file

@ -1,17 +0,0 @@
local M = {}
M.url = "https://github.com/folke/which-key.nvim"
function M.get()
return {
WhichKey = { link = "NormalFloat" },
WhichKeyBorder = { link = "FloatBorder" },
WhichKeyGroup = { fg = C.blue },
WhichKeySeparator = { fg = C.overlay0 },
WhichKeyDesc = { fg = C.pink },
WhichKeyValue = { fg = C.overlay0 },
}
end
return M

View file

@ -1,14 +0,0 @@
local M = {}
M.url = "https://github.com/s1n7ax/nvim-window-picker"
function M.get()
return {
WindowPickerStatusLine = { fg = C.red, style = { "bold" } },
WindowPickerStatusLineNC = { fg = C.red, style = { "bold" } },
WindowPickerWinBar = { fg = C.red, style = { "bold" } },
WindowPickerWinBarNC = { fg = C.red, style = { "bold" } },
}
end
return M

Some files were not shown because too many files have changed in this diff Show more