From ed3e8f6ec6929327ab19e512ffb0d8ece12ed5a8 Mon Sep 17 00:00:00 2001 From: seraphim <18ycm9tx@anonaddy.me> Date: Sun, 23 Aug 2026 18:07:29 +0700 Subject: reorganize directories, so everything in .config --- .config/darkman/config.yaml | 3 + .config/doom/config.el | 102 ++++++ .config/doom/init.el | 201 ++++++++++++ .config/doom/packages.el | 57 ++++ .config/doom/themes/noctalia-theme.el | 360 +++++++++++++++++++++ .config/foot/foot.ini | 26 ++ .config/gtk-3.0/settings-dark.ini | 2 + .config/gtk-3.0/settings-light.ini | 2 + .config/gtk-3.0/settings.ini | 1 + .config/matugen/config.toml | 8 + .config/matugen/templates/niri.kdl | 6 + .config/mpv/mpv.conf | 7 + .config/niri/apply-colors.sh | 84 +++++ .config/niri/config.kdl | 321 ++++++++++++++++++ .config/niri/set-backdrop.sh | 29 ++ .config/niri/theme-switcher.sh | 135 ++++++++ .config/nvim/init.lua | 4 + .config/nvim/lua/caelus/init.lua | 100 ++++++ .config/nvim/lua/config/keymaps.lua | 13 + .config/nvim/lua/config/options.lua | 40 +++ .config/nvim/lua/config/plugins.lua | 101 ++++++ .config/nvim/nvim-pack-lock.json | 116 +++++++ .config/rmpc/config.ron | 84 +++++ .config/rmpc/theme.ron | 47 +++ .config/starship.toml | 91 ++++++ .config/vicinae/settings.json | 234 ++++++++++++++ .config/wallust/templates/dbg.ini | 4 + .config/wallust/templates/foot-colors-custom.ini | 20 ++ .config/wallust/templates/nvim.lua | 306 ++++++++++++++++++ .config/wallust/templates/shell-colors.sh | 20 ++ .config/wallust/templates/vicinae-dark.toml | 78 +++++ .config/wallust/templates/vicinae-light.toml | 78 +++++ .config/wallust/wallust.toml | 11 + .config/waybar/config.jsonc | 112 +++++++ .config/waybar/kbd-layout.sh | 42 +++ .config/waybar/style.css | 166 ++++++++++ .config/waybar/theme-dark.css | 2 + .config/waybar/theme-light.css | 2 + .config/waybar/theme.css | 1 + .config/xdg-desktop-portal/portals.conf | 5 + .config/yazi/keymap.toml | 9 + .config/yazi/yazi.toml | 2 + darkman/.config/darkman/config.yaml | 3 - doom/.config/doom/config.el | 102 ------ doom/.config/doom/init.el | 201 ------------ doom/.config/doom/packages.el | 57 ---- doom/.config/doom/themes/noctalia-theme.el | 360 --------------------- foot/.config/foot/foot.ini | 26 -- gtk/.config/gtk-3.0/settings-dark.ini | 2 - gtk/.config/gtk-3.0/settings-light.ini | 2 - gtk/.config/gtk-3.0/settings.ini | 1 - install.sh | 23 +- matugen/.config/matugen/config.toml | 8 - matugen/.config/matugen/templates/niri.kdl | 6 - mpv/.config/mpv/mpv.conf | 7 - niri/.config/niri/apply-colors.sh | 84 ----- niri/.config/niri/config.kdl | 321 ------------------ niri/.config/niri/set-backdrop.sh | 29 -- niri/.config/niri/theme-switcher.sh | 135 -------- nvim/.config/nvim/init.lua | 4 - nvim/.config/nvim/lua/caelus/init.lua | 100 ------ nvim/.config/nvim/lua/config/keymaps.lua | 13 - nvim/.config/nvim/lua/config/options.lua | 40 --- nvim/.config/nvim/lua/config/plugins.lua | 101 ------ nvim/.config/nvim/nvim-pack-lock.json | 116 ------- rmpc/.config/rmpc/config.ron | 84 ----- rmpc/.config/rmpc/theme.ron | 47 --- starship/.config/starship.toml | 91 ------ vicinae/.config/vicinae/settings.json | 234 -------------- wallust/.config/wallust/templates/dbg.ini | 4 - .../wallust/templates/foot-colors-custom.ini | 20 -- wallust/.config/wallust/templates/nvim.lua | 306 ------------------ wallust/.config/wallust/templates/shell-colors.sh | 20 -- .../.config/wallust/templates/vicinae-dark.toml | 78 ----- .../.config/wallust/templates/vicinae-light.toml | 78 ----- wallust/.config/wallust/wallust.toml | 11 - waybar/.config/waybar/config.jsonc | 112 ------- waybar/.config/waybar/kbd-layout.sh | 42 --- waybar/.config/waybar/style.css | 166 ---------- waybar/.config/waybar/theme-dark.css | 2 - waybar/.config/waybar/theme-light.css | 2 - waybar/.config/waybar/theme.css | 1 - .../.config/xdg-desktop-portal/portals.conf | 5 - yazi/.config/yazi/keymap.toml | 9 - yazi/.config/yazi/yazi.toml | 2 - 85 files changed, 3049 insertions(+), 3038 deletions(-) create mode 100644 .config/darkman/config.yaml create mode 100644 .config/doom/config.el create mode 100644 .config/doom/init.el create mode 100644 .config/doom/packages.el create mode 100644 .config/doom/themes/noctalia-theme.el create mode 100644 .config/foot/foot.ini create mode 100644 .config/gtk-3.0/settings-dark.ini create mode 100644 .config/gtk-3.0/settings-light.ini create mode 120000 .config/gtk-3.0/settings.ini create mode 100644 .config/matugen/config.toml create mode 100644 .config/matugen/templates/niri.kdl create mode 100644 .config/mpv/mpv.conf create mode 100755 .config/niri/apply-colors.sh create mode 100644 .config/niri/config.kdl create mode 100755 .config/niri/set-backdrop.sh create mode 100755 .config/niri/theme-switcher.sh create mode 100644 .config/nvim/init.lua create mode 100644 .config/nvim/lua/caelus/init.lua create mode 100755 .config/nvim/lua/config/keymaps.lua create mode 100755 .config/nvim/lua/config/options.lua create mode 100644 .config/nvim/lua/config/plugins.lua create mode 100644 .config/nvim/nvim-pack-lock.json create mode 100644 .config/rmpc/config.ron create mode 100644 .config/rmpc/theme.ron create mode 100644 .config/starship.toml create mode 100644 .config/vicinae/settings.json create mode 100644 .config/wallust/templates/dbg.ini create mode 100644 .config/wallust/templates/foot-colors-custom.ini create mode 100644 .config/wallust/templates/nvim.lua create mode 100644 .config/wallust/templates/shell-colors.sh create mode 100644 .config/wallust/templates/vicinae-dark.toml create mode 100644 .config/wallust/templates/vicinae-light.toml create mode 100644 .config/wallust/wallust.toml create mode 100644 .config/waybar/config.jsonc create mode 100755 .config/waybar/kbd-layout.sh create mode 100644 .config/waybar/style.css create mode 100644 .config/waybar/theme-dark.css create mode 100644 .config/waybar/theme-light.css create mode 120000 .config/waybar/theme.css create mode 100644 .config/xdg-desktop-portal/portals.conf create mode 100644 .config/yazi/keymap.toml create mode 100644 .config/yazi/yazi.toml delete mode 100644 darkman/.config/darkman/config.yaml delete mode 100644 doom/.config/doom/config.el delete mode 100644 doom/.config/doom/init.el delete mode 100644 doom/.config/doom/packages.el delete mode 100644 doom/.config/doom/themes/noctalia-theme.el delete mode 100644 foot/.config/foot/foot.ini delete mode 100644 gtk/.config/gtk-3.0/settings-dark.ini delete mode 100644 gtk/.config/gtk-3.0/settings-light.ini delete mode 120000 gtk/.config/gtk-3.0/settings.ini delete mode 100644 matugen/.config/matugen/config.toml delete mode 100644 matugen/.config/matugen/templates/niri.kdl delete mode 100644 mpv/.config/mpv/mpv.conf delete mode 100755 niri/.config/niri/apply-colors.sh delete mode 100644 niri/.config/niri/config.kdl delete mode 100755 niri/.config/niri/set-backdrop.sh delete mode 100755 niri/.config/niri/theme-switcher.sh delete mode 100644 nvim/.config/nvim/init.lua delete mode 100644 nvim/.config/nvim/lua/caelus/init.lua delete mode 100755 nvim/.config/nvim/lua/config/keymaps.lua delete mode 100755 nvim/.config/nvim/lua/config/options.lua delete mode 100644 nvim/.config/nvim/lua/config/plugins.lua delete mode 100644 nvim/.config/nvim/nvim-pack-lock.json delete mode 100644 rmpc/.config/rmpc/config.ron delete mode 100644 rmpc/.config/rmpc/theme.ron delete mode 100644 starship/.config/starship.toml delete mode 100644 vicinae/.config/vicinae/settings.json delete mode 100644 wallust/.config/wallust/templates/dbg.ini delete mode 100644 wallust/.config/wallust/templates/foot-colors-custom.ini delete mode 100644 wallust/.config/wallust/templates/nvim.lua delete mode 100644 wallust/.config/wallust/templates/shell-colors.sh delete mode 100644 wallust/.config/wallust/templates/vicinae-dark.toml delete mode 100644 wallust/.config/wallust/templates/vicinae-light.toml delete mode 100644 wallust/.config/wallust/wallust.toml delete mode 100644 waybar/.config/waybar/config.jsonc delete mode 100755 waybar/.config/waybar/kbd-layout.sh delete mode 100644 waybar/.config/waybar/style.css delete mode 100644 waybar/.config/waybar/theme-dark.css delete mode 100644 waybar/.config/waybar/theme-light.css delete mode 120000 waybar/.config/waybar/theme.css delete mode 100644 xdg-desktop-portal/.config/xdg-desktop-portal/portals.conf delete mode 100644 yazi/.config/yazi/keymap.toml delete mode 100644 yazi/.config/yazi/yazi.toml diff --git a/.config/darkman/config.yaml b/.config/darkman/config.yaml new file mode 100644 index 0000000..ef00ec3 --- /dev/null +++ b/.config/darkman/config.yaml @@ -0,0 +1,3 @@ +portal: true +dbusserver: true +usegeoclue: false \ No newline at end of file diff --git a/.config/doom/config.el b/.config/doom/config.el new file mode 100644 index 0000000..ce1b792 --- /dev/null +++ b/.config/doom/config.el @@ -0,0 +1,102 @@ +;; Place your private configuration here! Remember, you do not need to run 'doom +;; sync' after modifying this file! + + +;; Some functionality uses this to identify you, e.g. GPG configuration, email +;; clients, file templates and snippets. It is optional. +;; (setq user-full-name "John Doe" +;; user-mail-address "john@doe.com") + +;; Doom exposes five (optional) variables for controlling fonts in Doom: +;; +;; - `doom-font' -- the primary font to use +;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable) +;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for +;; presentations or streaming. +;; - `doom-symbol-font' -- for symbols +;; - `doom-serif-font' -- for the `fixed-pitch-serif' face +;; +;; See 'C-h v doom-font' for documentation and more examples of what they +;; accept. For example: +;; +;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light) +;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13)) +;; +;; If you or Emacs can't find your font, use 'M-x describe-font' to look them +;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to +;; refresh your font settings. If Emacs still can't find your font, it likely +;; wasn't installed correctly. Font issues are rarely Doom issues! + +;; There are two ways to load a theme. Both assume the theme is installed and +;; available. You can either set `doom-theme' or manually load a theme with the +;; `load-theme' function. This is the default: +;; <----------------------------- Theme --------------------------------> +(setq doom-theme 'doom-tokyo-night) + +;; This determines the style of line numbers in effect. If set to `nil', line +;; numbers are disabled. For relative line numbers, set this to `relative'. +(setq display-line-numbers-type t) + +;; If you use `org' and don't want your org files in the default location below, +;; change `org-directory'. It must be set before org loads! +(setq org-directory "~/org/") + +;; Whenever you reconfigure a package, make sure to wrap your config in an +;; `with-eval-after-load' block, otherwise Doom's defaults may override your +;; settings. E.g. +;; +;; (with-eval-after-load 'PACKAGE +;; (setq x y)) +;; +;; The exceptions to this rule: +;; +;; - Setting file/directory variables (like `org-directory') +;; - Setting variables which explicitly tell you to set them before their +;; package is loaded (see 'C-h v VARIABLE' to look them up). +;; - Setting doom variables (which start with 'doom-' or '+'). +;; +;; Here are some additional functions/macros that will help you configure Doom. +;; +;; - `load!' for loading external *.el files relative to this one +;; - `add-load-path!' for adding directories to the `load-path', relative to +;; this file. Emacs searches the `load-path' when you load packages with +;; `require' or `use-package'. +;; - `map!' for binding new keys +;; +;; To get information about any of these functions/macros, move the cursor over +;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). +;; This will open documentation for it, including demos of how they are used. +;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces, +;; etc). +;; +;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how +;; Gcal setting +(setq doom-font (font-spec :family "JetBrains Mono" :size 16 :weight 'medium) + doom-variable-pitch-font (font-spec :family "JetBrains Mono" :size 16)) +(setq org-gcal-client-id "" + org-gcal-client-secret "" + org-gcal-fetch-file-alist '(("" . "~/org/gcal.org"))) +(setq org-agenda-files '("~/org/gcal.org")) + +;; Scroll fixing, 'cause it's broken a little bit. +(setq inhibit-compacting-font-caches t) +(setq scroll-conservatively 101 ; + scroll-margin 0 + auto-window-vscroll nil) + +;; Prevent PGTK 100% CPU core spinning on Wayland +;; Changed from nil to 0.001 to stop the event loop from going crazy +(when (boundp 'pgtk-wait-for-event-timeout) + (setq pgtk-wait-for-event-timeout 0.01)) + +;; Scroll settings (Consolidated) +;; Smooth scrolling is currently disabled to save CPU on your 180Hz monitor. +;; If you want smooth scrolling back, change -1 to 1 and change nil to t below. +(pixel-scroll-precision-mode -1) +(setq pixel-scroll-precision-mode nil) + +;; Reduce redraw frequency +(setq redisplay-dont-pause t + fast-but-imprecise-scrolling t) +;; (setq gc-cons-threshold 100000000) +(setq read-process-output-max (* 1024 1024)) ; 1MB diff --git a/.config/doom/init.el b/.config/doom/init.el new file mode 100644 index 0000000..91a3004 --- /dev/null +++ b/.config/doom/init.el @@ -0,0 +1,201 @@ +;;; init.el -*- lexical-binding: t; -*- + +;; This file controls what Doom modules are enabled and what order they load +;; in. Remember to run 'doom sync' after modifying it! + +;; NOTE: Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's +;; documentation. There you'll find a link to Doom's Module Index where all of +;; our modules are listed, including what flags they support. + +;; NOTE: Move your cursor over a module's name (or its flags) and press 'K' (or +;; 'C-c c k' for non-vim users) to view its documentation. This works on flags +;; as well (those symbols that start with a plus). +;; +;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its +;; directory (for easy access to its source code). + +(doom! :input + ;;bidi ; (tfel ot) thgir etirw uoy gnipleh + ;;chinese + ;;japanese + ;;layout ; auie,ctsrnm is the superior home row + + :completion + ;;company ; the ultimate code completion backend + (corfu +orderless) ; complete with cap(f), cape and a flying feather! + ;;helm ; the *other* search engine for love and life + ;;ido ; the other *other* search engine... + ;;ivy ; a search engine for love and life + vertico ; the search engine of the future + + :ui + ;;deft ; notational velocity for Emacs + doom ; what makes DOOM look the way it does + dashboard ; a nifty splash screen for Emacs + ;;doom-quit ; DOOM quit-message prompts when you quit Emacs + ;;(emoji +unicode) ; 🙂 + hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW + ;;indent-guides ; highlighted indent columns + ;;ligatures ; ligatures and symbols to make your code pretty again + ;;minimap ; show a map of the code on the side + modeline ; snazzy, Atom-inspired modeline, plus API + ;;nav-flash ; blink cursor line after big motions + ;;neotree ; a project drawer, like NERDTree for vim + ophints ; highlight the region an operation acts on + (popup +defaults) ; tame sudden yet inevitable temporary windows + ;;smooth-scroll ; So smooth you won't believe it's not butter + ;;tabs ; a tab bar for Emacs + ;;treemacs ; a project drawer, like neotree but cooler + ;;unicode ; extended unicode support for various languages + (vc-gutter +pretty) ; vcs diff in the fringe + vi-tilde-fringe ; fringe tildes to mark beyond EOB + ;;window-select ; visually switch windows + workspaces ; tab emulation, persistence & separate workspaces + ;;zen ; distraction-free coding or writing + + :editor + (evil +everywhere); come to the dark side, we have cookies + file-templates ; auto-snippets for empty files + fold ; (nigh) universal code folding + ;;(format +onsave) ; automated prettiness + ;;god ; run Emacs commands without modifier keys + ;;lispy ; vim for lisp, for people who don't like vim + ;;multiple-cursors ; editing in many places at once + ;;objed ; text object editing for the innocent + ;;parinfer ; turn lisp into python, sort of + ;;rotate-text ; cycle region at point between text candidates + snippets ; my elves. They type so I don't have to + (whitespace +guess +trim) ; a butler for your whitespace + ;;word-wrap ; soft wrapping with language-aware indent + + :emacs + dired ; making dired pretty [functional] + electric ; smarter, keyword-based electric-indent + ;;eww ; the internet is gross + ;;ibuffer ; interactive buffer management + tramp ; remote files at your arthritic fingertips + undo ; persistent, smarter undo for your inevitable mistakes + vc ; version-control and Emacs, sitting in a tree + + :term + ;;eshell ; the elisp shell that works everywhere + ;;shell ; simple shell REPL for Emacs + ;;term ; basic terminal emulator for Emacs + vterm ; the best terminal emulation in Emacs + + :checkers + syntax ; tasing you for every semicolon you forget + (spell +flyspell) ; tasing you for misspelling mispelling + grammar ; tasing grammar mistake every you make + + :tools + ;;ansible + ;;biblio ; Writes a PhD for you (citation needed) + ;;collab ; buffers with friends + ;;debugger ; stepping through code, to help you add bugs + ;;direnv + ;;docker + ;;editorconfig ; let someone else argue about tabs vs spaces + ;;ein ; tame Jupyter notebooks with emacs + (eval +overlay) ; run code, run (also, repls) + lookup ; navigate your code and its documentation + ;;llm ; when I said you needed friends, I didn't mean... + ;;(lsp +eglot) ; M-x vscode + magit ; a git porcelain for Emacs + ;;make ; run make tasks from Emacs + ;;pass ; password manager for nerds + ;;pdf ; pdf enhancements + ;;terraform ; infrastructure as code + ;;tmux ; an API for interacting with tmux + ;;tree-sitter ; syntax and parsing, sitting in a tree... + ;;upload ; map local to remote projects via ssh/ftp + + :os + (:if (featurep :system 'macos) macos) ; improve compatibility with macOS + tty ; improve the terminal Emacs experience + + :lang + ;;ada ; In strong typing we (blindly) trust + ;;(agda +local) ; types of types of types of types... + ;;beancount ; mind the GAAP + (cc +lsp) ; C > C++ == 1 + ;;clojure ; java with a lisp + ;;common-lisp ; if you've seen one lisp, you've seen them all + ;;coq ; proofs-as-programs + ;;crystal ; ruby at the speed of c + ;;csharp ; unity, .NET, and mono shenanigans + ;;data ; config/data formats + ;;(dart +flutter) ; paint ui and not much else + ;;dhall + ;;elixir ; erlang done right + ;;elm ; care for a cup of TEA? + emacs-lisp ; drown in parentheses + ;;erlang ; an elegant language for a more civilized age + ;;ess ; emacs speaks statistics + ;;factor + ;;faust ; dsp, but you get to keep your soul + ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) + ;;fsharp ; ML stands for Microsoft's Language + ;;fstar ; (dependent) types and (monadic) effects and Z3 + ;;gdscript ; the language you waited for + ;;(go +lsp) ; the hipster dialect + ;;(graphql +lsp) ; Give queries a REST + ;;(haskell +lsp) ; a language that's lazier than I am + ;;hy ; readability of scheme w/ speed of python + ;;idris ; a language you can depend on + ;;json ; At least it ain't XML + ;;janet ; Fun fact: Janet is me! + ;;(java +lsp) ; the poster child for carpal tunnel syndrome + ;;javascript ; all(hope(abandon(ye(who(enter(here)))))) + ;;julia ; a better, faster MATLAB + ;;kotlin ; a better, slicker Java(Script) + ;;latex ; writing papers in Emacs has never been so fun + ;;lean ; for folks with too much to prove + ;;ledger ; be audit you can be + ;;lua ; one-based indices? one-based indices + markdown ; writing docs for people to ignore + ;;nim ; python + lisp at the speed of c + ;;nix ; I hereby declare "nix geht mehr!" + ;;ocaml ; an objective camel + ;;odin ; C, minus its footguns + (org +roam@) ; organize your plain life in plain text + ;;php ; perl's insecure younger brother + ;;plantuml ; diagrams for confusing people more + ;;graphviz ; diagrams for confusing yourself even more + ;;purescript ; javascript, but functional + python ; beautiful is better than ugly + ;;qt ; the 'cutest' gui framework ever + ;;racket ; a DSL for DSLs + ;;raku ; the artist formerly known as perl6 + ;;rest ; Emacs as a REST client + ;;rst ; ReST in peace + ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} + (rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() + ;;scad ; trust the preview, regret the render + ;;scala ; java, but good + ;;(scheme +guile) ; a fully conniving family of lisps + sh ; she sells {ba,z,fi}sh shells on the C xor + ;;sml + ;;solidity ; do you need a blockchain? No. + ;;swift ; who asked for emoji variables? + ;;terra ; Earth and Moon in alignment for performance. + ;;web ; the tubes + ;;yaml ; JSON, but readable + ;;zig ; C, but simpler + + + :email + ;;(mu4e +org +gmail) + ;;notmuch + ;;(wanderlust +gmail) + + :app + calendar + ;;emms + ;;everywhere ; *leave* Emacs!? You must be joking + ;;irc ; how neckbeards socialize + ;;(rss +org) ; emacs as an RSS reader + + :config + ;;literate + (default +bindings +smartparens)) diff --git a/.config/doom/packages.el b/.config/doom/packages.el new file mode 100644 index 0000000..e50988d --- /dev/null +++ b/.config/doom/packages.el @@ -0,0 +1,57 @@ +;; -*- no-byte-compile: t; -*- +;;; $DOOMDIR/packages.el + +;; To install a package: +;; +;; 1. Declare them here in a `package!' statement, +;; 2. Run 'doom sync' in the shell, +;; 3. Restart Emacs. +;; +;; Use 'C-h f package\!' to look up documentation for the `package!' macro. + + +;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: +;; (package! some-package) + +;; To install a package directly from a remote git repo, you must specify a +;; `:recipe'. You'll find documentation on what `:recipe' accepts here: +;; https://github.com/radian-software/straight.el#the-recipe-format +;; (package! another-package +;; :recipe (:host github :repo "username/repo")) + +;; If the package you are trying to install does not contain a PACKAGENAME.el +;; file, or is located in a subdirectory of the repo, you'll need to specify +;; `:files' in the `:recipe': +;; (package! this-package +;; :recipe (:host github :repo "username/repo" +;; :files ("some-file.el" "src/lisp/*.el"))) + +;; If you'd like to disable a package included with Doom, you can do so here +;; with the `:disable' property: +;; (package! builtin-package :disable t) + +;; You can override the recipe of a built in package without having to specify +;; all the properties for `:recipe'. These will inherit the rest of its recipe +;; from Doom or MELPA/ELPA/Emacsmirror: +;; (package! builtin-package :recipe (:nonrecursive t)) +;; (package! builtin-package-2 :recipe (:repo "myfork/package")) + +;; Specify a `:branch' to install a package from a particular branch or tag. +;; This is required for some packages whose default branch isn't 'master' (which +;; our package manager can't deal with; see radian-software/straight.el#279) +;; (package! builtin-package :recipe (:branch "develop")) + +;; Use `:pin' to specify a particular commit to install. +;; (package! builtin-package :pin "1a2b3c4d5e") + + +;; Doom's packages are pinned to a specific commit and updated from release to +;; release. The `unpin!' macro allows you to unpin single packages... +;; (unpin! pinned-package) +;; ...or multiple packages +;; (unpin! pinned-package another-pinned-package) +;; ...Or *all* packages (NOT RECOMMENDED; will likely break things) +;; (unpin! t) +(package! org-gcal) +(package! calfw) +(package! calfw-org) diff --git a/.config/doom/themes/noctalia-theme.el b/.config/doom/themes/noctalia-theme.el new file mode 100644 index 0000000..be14fda --- /dev/null +++ b/.config/doom/themes/noctalia-theme.el @@ -0,0 +1,360 @@ +;;; noctalia-theme.el --- Theme using Template SCSS variables -*- lexical-binding: t -*- + +;; Copyright (C) 2025 + +;; Author: Generated (Improved) +;; Version: 1.2 +;; Package-Requires: ((emacs "24.1")) +;; Keywords: faces + +;;; Commentary: + +;; A theme using Template SCSS variables with quality of life improvements: +;; - Better source block distinction +;; - Improved text visibility when selected +;; - Refined org-mode styling with hidden asterisks +;; - Enhanced contrast and readability +;; - Seamless integration of source blocks with consistent styling + +;;; Code: + +(deftheme noctalia "Theme using Template variables with quality of life improvements.") + +;; Define all the color variables (replaced by template processor) +(let* ((bg "#fef8f4") + (err "#ba1a1a") + (err-container "#ffdad6") + (on-background "#1d1b19") + (on-err "#ffffff") + (on-err-container "#93000a") + (on-primary "#ffffff") + (on-primary-container "#fffbff") + (on-secondary "#ffffff") + (on-secondary-container "#696456") + (on-surface "#1d1b19") + (on-surface-variant "#4a463d") + (on-tertiary "#ffffff") + (on-tertiary-container "#f9ffed") + (outline-color "#7b776c") + (outline-variant "#ccc6b9") + (primary "#645c3f") + (primary-container "#7e7456") + (secondary "#635e50") + (secondary-container "#eae2d0") + (shadow "#000000") + (surface "#fef8f4") + (surface-container "#f2ede9") + (surface-container-high "#ece7e3") + (surface-container-highest "#e6e2dd") + (surface-container-low "#f8f3ee") + (surface-container-lowest "#ffffff") + (surface-variant "#e9e2d4") + (tertiary "#54604a") + (tertiary-container "#6c7861") + ;; Map success colors to tertiary (as used in other templates) + (success "#54604a") + (on-success "#ffffff") + (success-container "#6c7861") + (on-success-container "#f9ffed") + ;; Map fixed colors to regular colors + (primary-fixed "#645c3f") + (primary-fixed-dim "#7e7456") + (secondary-fixed "#635e50") + (secondary-fixed-dim "#eae2d0") + (tertiary-fixed "#54604a") + (tertiary-fixed-dim "#6c7861") + (on-primary-fixed "#ffffff") + (on-primary-fixed-variant "#fffbff") + (on-secondary-fixed "#ffffff") + (on-secondary-fixed-variant "#696456") + (on-tertiary-fixed "#ffffff") + (on-tertiary-fixed-variant "#f9ffed") + ;; Map inverse colors to surface variants + (inverse-on-surface "#1d1b19") + (inverse-primary "#645c3f") + (inverse-surface "#fef8f4") + ;; ANSI terminal colors + (term0 "#e9e2d4") + (term1 "#ba1a1a") + (term2 "#645c3f") + (term3 "#635e50") + (term4 "#54604a") + (term5 "#7e7252") + (term6 "#797263") + (term7 "#1d1b19") + (term8 "#7b776c") + (term9 "#ba1a1a") + (term10 "#645c3f") + (term11 "#635e50") + (term12 "#54604a") + (term13 "#7e7252") + (term14 "#797263") + (term15 "#1d1b19")) + + (custom-theme-set-faces + 'noctalia + ;; Basic faces + `(default ((t (:background ,bg :foreground ,on-background)))) + `(cursor ((t (:background ,primary)))) + `(highlight ((t (:background ,surface-container-high)))) + `(region ((t (:background ,primary-container :foreground ,on-primary-container :extend t)))) + `(secondary-selection ((t (:background ,secondary-container :foreground ,on-secondary-container :extend t)))) + `(isearch ((t (:background ,tertiary-container :foreground ,on-tertiary-container :weight bold)))) + `(lazy-highlight ((t (:background ,secondary-container :foreground ,on-secondary-container)))) + `(vertical-border ((t (:foreground ,surface-variant)))) + `(border ((t (:background ,surface-variant :foreground ,surface-variant)))) + `(fringe ((t (:background ,surface :foreground ,outline-variant)))) + `(shadow ((t (:foreground ,outline-variant)))) + `(link ((t (:foreground ,primary :underline t)))) + `(link-visited ((t (:foreground ,tertiary :underline t)))) + `(success ((t (:foreground ,success)))) + `(warning ((t (:foreground ,secondary)))) + `(error ((t (:foreground ,err)))) + `(match ((t (:background ,secondary-container :foreground ,on-secondary-container)))) + + ;; Font-lock + `(font-lock-builtin-face ((t (:foreground ,primary)))) + `(font-lock-comment-face ((t (:foreground ,outline-color :slant italic)))) + `(font-lock-comment-delimiter-face ((t (:foreground ,outline-variant)))) + `(font-lock-constant-face ((t (:foreground ,tertiary :weight bold)))) + `(font-lock-doc-face ((t (:foreground ,on-surface-variant :slant italic)))) + `(font-lock-function-name-face ((t (:foreground ,primary :weight bold)))) + `(font-lock-keyword-face ((t (:foreground ,secondary :weight bold)))) + `(font-lock-string-face ((t (:foreground ,tertiary)))) + `(font-lock-type-face ((t (:foreground ,primary-fixed)))) + `(font-lock-variable-name-face ((t (:foreground ,on-surface)))) + `(font-lock-warning-face ((t (:foreground ,err :weight bold)))) + `(font-lock-preprocessor-face ((t (:foreground ,secondary-fixed-dim)))) + `(font-lock-negation-char-face ((t (:foreground ,tertiary-fixed)))) + + ;; Show paren + `(show-paren-match ((t (:background ,primary-container :foreground ,on-primary-container :weight bold)))) + `(show-paren-mismatch ((t (:background ,err-container :foreground ,on-err-container :weight bold)))) + + ;; Mode line - improved status bar styling + `(mode-line ((t (:background ,surface-container-high :foreground ,on-surface :box nil)))) + `(mode-line-inactive ((t (:background ,surface :foreground ,on-surface-variant :box nil)))) + `(mode-line-buffer-id ((t (:foreground ,primary :weight bold)))) + `(mode-line-emphasis ((t (:foreground ,primary :weight bold)))) + `(mode-line-highlight ((t (:foreground ,primary :box nil)))) + + ;; Improved Source blocks - make them integrated with the theme + `(org-block ((t (:background ,surface-container-low :extend t :inherit fixed-pitch)))) + `(org-block-begin-line ((t (:background ,surface-container-low :foreground ,primary-fixed-dim :extend t :slant italic :inherit fixed-pitch)))) + `(org-block-end-line ((t (:background ,surface-container-low :foreground ,primary-fixed-dim :extend t :slant italic :inherit fixed-pitch)))) + `(org-code ((t (:background ,surface-container-low :foreground ,tertiary-fixed :inherit fixed-pitch)))) + `(org-verbatim ((t (:background ,surface-container-low :foreground ,primary-fixed :inherit fixed-pitch)))) + `(org-meta-line ((t (:foreground ,outline-color :slant italic)))) + + ;; Org mode with hidden asterisks + `(org-level-1 ((t (:foreground ,primary :weight bold :height 1.2)))) + `(org-level-2 ((t (:foreground ,secondary :weight bold :height 1.1)))) + `(org-level-3 ((t (:foreground ,tertiary :weight bold)))) + `(org-level-4 ((t (:foreground ,primary :weight bold)))) + `(org-level-5 ((t (:foreground ,secondary :weight bold)))) + `(org-level-6 ((t (:foreground ,tertiary :weight bold)))) + `(org-level-7 ((t (:foreground ,primary :weight bold)))) + `(org-level-8 ((t (:foreground ,secondary :weight bold)))) + `(org-document-title ((t (:foreground ,primary :weight bold :height 1.3)))) + `(org-document-info ((t (:foreground ,primary-container)))) + `(org-todo ((t (:foreground ,err :weight bold)))) + `(org-done ((t (:foreground ,success :weight bold)))) + `(org-headline-done ((t (:foreground ,on-surface-variant)))) + `(org-hide ((t (:foreground ,bg)))) ;; Hide leading asterisks + `(org-ellipsis ((t (:foreground ,tertiary :underline nil)))) ;; Style for folded content indicator + `(org-table ((t (:foreground ,secondary-fixed :inherit fixed-pitch)))) + `(org-formula ((t (:foreground ,tertiary :inherit fixed-pitch)))) + `(org-checkbox ((t (:foreground ,primary :weight bold :inherit fixed-pitch)))) + `(org-date ((t (:foreground ,secondary-fixed :underline t)))) + `(org-special-keyword ((t (:foreground ,on-surface-variant :slant italic)))) + `(org-tag ((t (:foreground ,outline-color :weight normal)))) + + ;; Magit + `(magit-section-highlight ((t (:background ,surface-container-low)))) + `(magit-diff-hunk-heading ((t (:background ,surface-container :foreground ,on-surface-variant)))) + `(magit-diff-hunk-heading-highlight ((t (:background ,surface-container-high :foreground ,on-surface)))) + `(magit-diff-context ((t (:foreground ,on-surface-variant)))) + `(magit-diff-context-highlight ((t (:background ,surface-container-low :foreground ,on-surface)))) + `(magit-diff-added ((t (:background ,success-container :foreground ,on-success-container)))) + `(magit-diff-added-highlight ((t (:background ,success-container :foreground ,on-success-container :weight bold)))) + `(magit-diff-removed ((t (:background ,err-container :foreground ,on-err-container)))) + `(magit-diff-removed-highlight ((t (:background ,err-container :foreground ,on-err-container :weight bold)))) + `(magit-hash ((t (:foreground ,outline-color)))) + `(magit-branch-local ((t (:foreground ,tertiary :weight bold)))) + `(magit-branch-remote ((t (:foreground ,primary :weight bold)))) + + ;; Company + `(company-tooltip ((t (:background ,surface-container :foreground ,on-surface)))) + `(company-tooltip-selection ((t (:background ,primary-container :foreground ,on-primary-container)))) + `(company-tooltip-common ((t (:foreground ,primary)))) + `(company-tooltip-common-selection ((t (:foreground ,on-primary-container :weight bold)))) + `(company-tooltip-annotation ((t (:foreground ,tertiary)))) + `(company-scrollbar-fg ((t (:background ,primary)))) + `(company-scrollbar-bg ((t (:background ,surface-variant)))) + `(company-preview ((t (:foreground ,on-surface-variant :slant italic)))) + `(company-preview-common ((t (:foreground ,primary :slant italic)))) + + ;; Ido + `(ido-first-match ((t (:foreground ,primary :weight bold)))) + `(ido-only-match ((t (:foreground ,tertiary :weight bold)))) + `(ido-subdir ((t (:foreground ,secondary)))) + `(ido-indicator ((t (:foreground ,err)))) + `(ido-virtual ((t (:foreground ,outline-color)))) + + ;; Helm + `(helm-selection ((t (:background ,primary-container :foreground ,on-primary-container)))) + `(helm-match ((t (:foreground ,primary :weight bold)))) + `(helm-source-header ((t (:background ,surface-container-high :foreground ,primary :weight bold :height 1.1)))) + `(helm-candidate-number ((t (:foreground ,tertiary :weight bold)))) + `(helm-ff-directory ((t (:foreground ,primary :weight bold)))) + `(helm-ff-file ((t (:foreground ,on-surface)))) + `(helm-ff-executable ((t (:foreground ,tertiary)))) + + ;; corfu + `(corfu-default ((t (:background ,surface-container :foreground ,on-surface)))) + `(corfu-current ((t (:background ,primary-container :foreground ,on-primary-container)))) + + ;; Which-key + `(which-key-key-face ((t (:foreground ,primary :weight bold)))) + `(which-key-separator-face ((t (:foreground ,outline-variant)))) + `(which-key-command-description-face ((t (:foreground ,on-surface)))) + `(which-key-group-description-face ((t (:foreground ,secondary)))) + `(which-key-special-key-face ((t (:foreground ,tertiary :weight bold)))) + + ;; Line numbers + `(line-number ((t (:foreground ,outline-variant :inherit fixed-pitch)))) + `(line-number-current-line ((t (:foreground ,primary :weight bold :inherit fixed-pitch)))) + + ;; Parenthesis matching + `(sp-show-pair-match-face ((t (:background ,primary-container :foreground ,on-primary-container)))) + `(sp-show-pair-mismatch-face ((t (:background ,err-container :foreground ,on-err-container)))) + + ;; Rainbow delimiters + `(rainbow-delimiters-depth-1-face ((t (:foreground ,primary)))) + `(rainbow-delimiters-depth-2-face ((t (:foreground ,secondary)))) + `(rainbow-delimiters-depth-3-face ((t (:foreground ,tertiary)))) + `(rainbow-delimiters-depth-4-face ((t (:foreground ,primary-fixed)))) + `(rainbow-delimiters-depth-5-face ((t (:foreground ,secondary-fixed)))) + `(rainbow-delimiters-depth-6-face ((t (:foreground ,tertiary-fixed)))) + `(rainbow-delimiters-depth-7-face ((t (:foreground ,primary-fixed-dim)))) + `(rainbow-delimiters-depth-8-face ((t (:foreground ,secondary-fixed-dim)))) + `(rainbow-delimiters-depth-9-face ((t (:foreground ,tertiary-fixed-dim)))) + `(rainbow-delimiters-mismatched-face ((t (:foreground ,err :weight bold)))) + `(rainbow-delimiters-unmatched-face ((t (:foreground ,err :weight bold)))) + + ;; Dired + `(dired-directory ((t (:foreground ,primary :weight bold)))) + `(dired-ignored ((t (:foreground ,outline-variant)))) + `(dired-flagged ((t (:foreground ,err)))) + `(dired-marked ((t (:foreground ,tertiary :weight bold)))) + `(dired-symlink ((t (:foreground ,secondary :slant italic)))) + `(dired-header ((t (:foreground ,primary :weight bold :height 1.1)))) + + ;; Terminal colors + `(term-color-black ((t (:foreground ,term0 :background ,term0)))) + `(term-color-red ((t (:foreground ,term1 :background ,term1)))) + `(term-color-green ((t (:foreground ,term2 :background ,term2)))) + `(term-color-yellow ((t (:foreground ,term3 :background ,term3)))) + `(term-color-blue ((t (:foreground ,term4 :background ,term4)))) + `(term-color-magenta ((t (:foreground ,term5 :background ,term5)))) + `(term-color-cyan ((t (:foreground ,term6 :background ,term6)))) + `(term-color-white ((t (:foreground ,term7 :background ,term7)))) + + ;; EShell + `(eshell-prompt ((t (:foreground ,primary :weight bold)))) + `(eshell-ls-directory ((t (:foreground ,primary :weight bold)))) + `(eshell-ls-symlink ((t (:foreground ,secondary :slant italic)))) + `(eshell-ls-executable ((t (:foreground ,tertiary)))) + `(eshell-ls-archive ((t (:foreground ,on-tertiary-container)))) + `(eshell-ls-backup ((t (:foreground ,outline-variant)))) + `(eshell-ls-clutter ((t (:foreground ,err)))) + `(eshell-ls-missing ((t (:foreground ,err)))) + `(eshell-ls-product ((t (:foreground ,on-surface-variant)))) + `(eshell-ls-readonly ((t (:foreground ,on-surface-variant)))) + `(eshell-ls-special ((t (:foreground ,secondary-fixed)))) + `(eshell-ls-unreadable ((t (:foreground ,outline-variant)))) + + ;; Improved markdown mode + `(markdown-header-face ((t (:foreground ,primary :weight bold)))) + `(markdown-header-face-1 ((t (:foreground ,primary :weight bold :height 1.2)))) + `(markdown-header-face-2 ((t (:foreground ,primary-container :weight bold :height 1.1)))) + `(markdown-header-face-3 ((t (:foreground ,secondary :weight bold)))) + `(markdown-header-face-4 ((t (:foreground ,secondary-container :weight bold)))) + `(markdown-inline-code-face ((t (:foreground ,tertiary-fixed :background ,surface-container-low :inherit fixed-pitch)))) + `(markdown-code-face ((t (:background ,surface-container-low :extend t :inherit fixed-pitch)))) + `(markdown-pre-face ((t (:background ,surface-container-low :inherit fixed-pitch)))) + `(markdown-table-face ((t (:foreground ,secondary-fixed :inherit fixed-pitch)))) + + ;; Web mode + `(web-mode-html-tag-face ((t (:foreground ,primary)))) + `(web-mode-html-tag-bracket-face ((t (:foreground ,on-surface-variant)))) + `(web-mode-html-attr-name-face ((t (:foreground ,secondary)))) + `(web-mode-html-attr-value-face ((t (:foreground ,tertiary)))) + `(web-mode-css-selector-face ((t (:foreground ,primary)))) + `(web-mode-css-property-name-face ((t (:foreground ,secondary)))) + `(web-mode-css-string-face ((t (:foreground ,tertiary)))) + + ;; Flycheck + `(flycheck-error ((t (:underline (:style wave :color ,err))))) + `(flycheck-warning ((t (:underline (:style wave :color ,secondary))))) + `(flycheck-info ((t (:underline (:style wave :color ,tertiary))))) + `(flycheck-fringe-error ((t (:foreground ,err)))) + `(flycheck-fringe-warning ((t (:foreground ,secondary)))) + `(flycheck-fringe-info ((t (:foreground ,tertiary)))) + + ;; Mini-buffer customization + `(minibuffer-prompt ((t (:foreground ,primary :weight bold)))) + + ;; Improved search highlighting + `(lsp-face-highlight-textual ((t (:background ,primary-container :foreground ,on-primary-container :weight bold)))) + `(lsp-face-highlight-read ((t (:background ,secondary-container :foreground ,on-secondary-container :weight bold)))) + `(lsp-face-highlight-write ((t (:background ,tertiary-container :foreground ,on-tertiary-container :weight bold)))) + + ;; Info and help modes + `(info-title-1 ((t (:foreground ,primary :weight bold :height 1.3)))) + `(info-title-2 ((t (:foreground ,primary-container :weight bold :height 1.2)))) + `(info-title-3 ((t (:foreground ,secondary :weight bold :height 1.1)))) + `(info-title-4 ((t (:foreground ,secondary-container :weight bold)))) + `(Info-quoted ((t (:foreground ,tertiary)))) + `(info-menu-header ((t (:foreground ,primary :weight bold)))) + `(info-menu-star ((t (:foreground ,primary)))) + `(info-node ((t (:foreground ,tertiary :weight bold)))) + + ;; Tabs + `(tab-bar ((t (:background ,surface-container-high :foreground ,on-surface :box nil)))) + `(tab-bar-tab ((t (:background ,surface-container-high :foreground ,on-surface :weight bold :box nil)))) + `(tab-bar-tab-inactive ((t (:background ,surface :foreground ,on-surface-variant :box nil)))) + + `(tab-line ((t (:background ,surface-container-high :foreground ,on-surface :box nil)))) + `(tab-line-tab ((t (:background ,surface :foreground ,on-surface-variant :box nil)))) + `(tab-line-tab-current ((t (:background ,surface-container-high :foreground ,on-surface :weight bold :box nil)))) + `(tab-line-tab-inactive ((t (:background ,surface :foreground ,on-surface-variant :box nil)))) + `(tab-line-highlight ((t (:background ,surface-container-highest :foreground ,on-surface)))) + + `(centaur-tabs-default ((t (:background ,surface-container-high :foreground ,on-surface)))) + `(centaur-tabs-selected ((t (:background ,surface-container-high :foreground ,on-surface :weight bold)))) + `(centaur-tabs-unselected ((t (:background ,surface :foreground ,on-surface-variant)))) + `(centaur-tabs-selected-modified ((t (:background ,surface-container-high :foreground ,tertiary :weight bold)))) + `(centaur-tabs-unselected-modified ((t (:background ,surface :foreground ,tertiary)))) + `(centaur-tabs-active-bar-face ((t (:background ,primary)))) + + ;; Fixed-pitch faces + `(fixed-pitch ((t (:family "monospace")))) + `(fixed-pitch-serif ((t (:family "monospace serif")))) + + ;; Variable-pitch face + `(variable-pitch ((t (:family "sans serif")))) + )) + +;; Add org-mode hooks for hiding leading stars +(with-eval-after-load 'org + (setq org-hide-leading-stars t) + (setq org-startup-indented t)) + +;;;###autoload +(when load-file-name + (add-to-list 'custom-theme-load-path + (file-name-as-directory (file-name-directory load-file-name)))) + +(provide-theme 'noctalia) +;;; noctalia-theme.el ends here diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini new file mode 100644 index 0000000..2a81398 --- /dev/null +++ b/.config/foot/foot.ini @@ -0,0 +1,26 @@ +[main] +include=~/.cache/wallust/foot-theme.ini +font=JetBrainsMono Nerd Font:size=13 +pad=0x0 + +# paste the rest of your theme colors here + +[cursor] +style=block +blink=yes + +[mouse] +hide-when-typing=yes + +[scrollback] +lines=10000 +multiplier=1.5 + +[key-bindings] +clipboard-copy=Control+Shift+c Control+Insert +clipboard-paste=Control+Shift+v Shift+Insert +primary-paste=none + +search-start=Control+Shift+f +spawn-terminal=Control+Shift+Return + diff --git a/.config/gtk-3.0/settings-dark.ini b/.config/gtk-3.0/settings-dark.ini new file mode 100644 index 0000000..0f580e6 --- /dev/null +++ b/.config/gtk-3.0/settings-dark.ini @@ -0,0 +1,2 @@ +[Settings] +gtk-application-prefer-dark-theme=1 \ No newline at end of file diff --git a/.config/gtk-3.0/settings-light.ini b/.config/gtk-3.0/settings-light.ini new file mode 100644 index 0000000..d9938f7 --- /dev/null +++ b/.config/gtk-3.0/settings-light.ini @@ -0,0 +1,2 @@ +[Settings] +gtk-application-prefer-dark-theme=0 \ No newline at end of file diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini new file mode 120000 index 0000000..ef98ebb --- /dev/null +++ b/.config/gtk-3.0/settings.ini @@ -0,0 +1 @@ +settings-dark.ini \ No newline at end of file diff --git a/.config/matugen/config.toml b/.config/matugen/config.toml new file mode 100644 index 0000000..9b72eee --- /dev/null +++ b/.config/matugen/config.toml @@ -0,0 +1,8 @@ +[config] +# Disable caching so the -m light/dark mode flag is always respected. +caching = false +version_check = false + +[templates.niri] +input_path = './templates/niri.kdl' +output_path = '/home/seraphim/.cache/matugen/theme.kdl' diff --git a/.config/matugen/templates/niri.kdl b/.config/matugen/templates/niri.kdl new file mode 100644 index 0000000..afc1f04 --- /dev/null +++ b/.config/matugen/templates/niri.kdl @@ -0,0 +1,6 @@ +layout { + focus-ring { + active-color "{{ colors.primary.default.hex }}" + inactive-color "{{ colors.outline.default.hex }}" + } +} diff --git a/.config/mpv/mpv.conf b/.config/mpv/mpv.conf new file mode 100644 index 0000000..8311c18 --- /dev/null +++ b/.config/mpv/mpv.conf @@ -0,0 +1,7 @@ +volume=30 +ytdl-raw-options-append=cookies=/home/seraphim/Documents/yt-dlp-things/cookies.txt +#ytdl-raw-options-append=cookies-from-browser=chromium+gnomekeyring +ytdl-raw-options-append=write-subs= +ytdl-raw-options-append=write-auto-subs= +ytdl-raw-options-append=sub-langs=en,en-US,en-GB +slang=en,eng diff --git a/.config/niri/apply-colors.sh b/.config/niri/apply-colors.sh new file mode 100755 index 0000000..505578c --- /dev/null +++ b/.config/niri/apply-colors.sh @@ -0,0 +1,84 @@ +#!/bin/bash +# Apply a wallpaper and generate colors with wallust (16-color palette) + matugen (Material You / M3). +# Usage: apply-colors.sh [light|dark] +# Called by theme-switcher.sh and the waybar random-wallpaper click. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)" +IMG="${1:-}" +MODE="${2:-auto}" +LOG="${THEME_LOG:-/tmp/theme-switcher.log}" + +log() { + printf '%s %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >>"$LOG" +} + +# Record the exact failing command + line on any error. +trap 'log "apply-colors FAILED (exit $?) in ${BASH_SOURCE[0]}:$LINENO: $BASH_COMMAND"' ERR + +if [ -z "$IMG" ] || [ ! -f "$IMG" ]; then + echo "usage: $0 [light|dark]" >&2 + exit 1 +fi + +# wait for the awww daemon to be ready (it is spawned next to this script at login) +log "awww img $IMG" +for _ in $(seq 1 10); do + if awww query >/dev/null 2>&1; then + break + fi + sleep 1 +done + +# set the wallpaper FIRST and unconditionally — this is the critical, must-work +# step. Color generation below is best-effort: a failure there must never block +# the wallpaper from changing (that coupling is what froze the wallpaper before). +awww img "$IMG" || { log "awww img FAILED ($IMG)"; exit 1; } + +# blurred copy for the Overview backdrop (sibling or on-the-fly generation) +"$SCRIPT_DIR/set-backdrop.sh" "$IMG" || log "set-backdrop FAILED ($IMG)" + +# wallust: classic 16-color palette (foot, btop, ...) +# fastresize (the config default) is flaky on some images — always use resized. +# Best-effort: a wallust failure must not prevent the wallpaper from sticking. +log "wallust palette=$MODE $IMG" +case "$MODE" in +light|dark) WALLUST_PALETTE=("--palette" "$MODE") ;; +*) WALLUST_PALETTE=() ;; +esac +# wallust's `resized` backend is intermittently flaky on some images; retry a +# few times, but ultimately tolerate failure. +ok=0 +for attempt in 1 2 3; do + if wallust run -b resized "${WALLUST_PALETTE[@]}" "$IMG"; then + ok=1 + break + fi + log "wallust attempt $attempt FAILED ($IMG, mode=$MODE)" + [ "$attempt" -lt 3 ] && sleep 2 +done +if [ "$ok" -ne 1 ]; then + log "wallust FAILED after 3 attempts ($IMG, mode=$MODE) — continuing without wallust colors" +else + # foot needs bare RRGGBB, not #RRGGBB — strip the leading '#' + sed -i 's/#\([0-9a-fA-F]\)/\1/g' ~/.cache/wallust/foot-theme.ini 2>/dev/null || true +fi + +# matugen: Material You / M3 colors (niri focus ring, ...) +# --prefer is required for non-interactive runs (multiple source colors). +# Best-effort: a matugen failure (e.g. bad config after an upgrade) must not +# block the wallpaper. +log "matugen mode=$MODE $IMG" +case "$MODE" in +light) matugen image "$IMG" -m "light" --prefer saturation ;; +dark) matugen image "$IMG" -m "dark" --prefer saturation ;; +*) matugen image "$IMG" --prefer saturation ;; +esac || log "matugen FAILED ($IMG, mode=$MODE) — continuing without matugen colors" + +# reload consumers +killall -SIGUSR2 waybar 2>/dev/null || true +killall -USR1 foot 2>/dev/null || true +niri msg action load-config-file 2>/dev/null || true + +log "apply-colors OK ($IMG, $MODE)" diff --git a/.config/niri/config.kdl b/.config/niri/config.kdl new file mode 100644 index 0000000..9d7db14 --- /dev/null +++ b/.config/niri/config.kdl @@ -0,0 +1,321 @@ +include optional=true "/home/seraphim/.cache/matugen/theme.kdl" +spawn-at-startup "mako" +spawn-at-startup "xrdb" "-merge" "/home/seraphim/.Xresources" +spawn-at-startup "vicinae" "server" +spawn-at-startup "gentoo-pipewire-launcher" +spawn-at-startup "telegram-desktop" "-autostart" "--minimized" +spawn-at-startup "keepassxc" "--minimized" +spawn-at-startup "awww-daemon" +spawn-at-startup "awww-daemon" "--namespace" "backdrop" +spawn-at-startup "/usr/libexec/hyprpolkitagent" +spawn-at-startup "dbus-update-activation-environment" "WAYLAND_DISPLAY" "DISPLAY" "XDG_CURRENT_DESKTOP" +spawn-at-startup "darkman" "run" +spawn-at-startup "/home/seraphim/dotfiles-gentoo/niri/.config/niri/theme-switcher.sh" "night" +spawn-at-startup "sh" "-c" "NO_AT_BRIDGE=1 waybar" +spawn-at-startup "/usr/bin/Throne" +spawn-at-startup "mpd" +prefer-no-csd +screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" + +environment { + OZONE_PLATFORM "wayland" + ELECTRON_OZONE_PLATFORM_HINT "auto" + XDG_CURRENT_DESKTOP "niri" +} +blur { + passes 4 + offset 5.0 + noise 0.02 + saturation 1.1 +} + +// awww-daemon --namespace backdrop: pre-blurred wallpaper shown in the +// Overview backdrop. niri cannot blur a backdrop surface itself. +layer-rule { + match namespace="^awww-daemonbackdrop$" + place-within-backdrop true +} +input { + focus-follows-mouse max-scroll-amount="100%" + + keyboard { + xkb { + layout "us,ru" + options "grp:lalt_lshift_toggle,compose:ralt,ctrl:nocaps" + } + repeat-delay 300 + repeat-rate 60 + numlock + } + + mouse { + accel-speed -0.8 + accel-profile "flat" + } +} + +output "DP-2" { + mode "2560x1440" + scale 1.5 + position x=0 y=0 +} + +output "HDMI-A-1" { + mode "1920x1080@71.910" + scale 1 +} + +layout { + gaps 0.5 + center-focused-column "never" + + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + + default-column-width { proportion 0.5; } + + focus-ring { + width 2 + } + + border { + off //width 0.5 + //active-color "#ffc87f" + //inactive-color "#505050" + //urgent-color "#9b0000" + } + + shadow { + off + //softness 30 + //spread 5 + //offset x=0 y=5 + //color "#0007" + } +} + +animations { + workspace-switch { + duration-ms 275 + curve "ease-out-cubic" + } + horizontal-view-movement { + spring damping-ratio=1.0 stiffness=800 epsilon=0.0001 + } + window-movement { + spring damping-ratio=1.0 stiffness=800 epsilon=0.0001 + } +// window-open { +// duration-ms 150 +// curve "ease-out-expo" +// } +// window-close { +// duration-ms 150 +// curve "ease-out-quad" +// } + window-resize { + spring damping-ratio=1.0 stiffness=800 epsilon=0.0001 + } + overview-open-close { + duration-ms 150 + curve "ease-out-quad" + } +} + +window-rule { + match app-id=r#"^org\.wezfurlong\.wezterm$"# + geometry-corner-radius 12 + clip-to-geometry true + background-effect { + xray false + } +} + +// Helium PiP fix +window-rule { + match app-id=r#"helium$"# title="^Picture-in-Picture$" + open-floating true + geometry-corner-radius 9000 + clip-to-geometry true + shadow { + off + } +} + +// Steam notifs fix +window-rule { + match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"# + open-floating true + open-focused false + default-floating-position x=16 y=16 relative-to="bottom-right" +} + +gestures { + hot-corners { + off + } +} + +cursor { + xcursor-theme "Bibata-Modern-Classic" + xcursor-size 15 +} + +overview { + zoom 0.5 + workspace-shadow { + off + //softness 15 + //spread 3 + //offset x=0 y=6 + //color "#00000080" + } +} +debug { + honor-xdg-activation-with-invalid-serial +} +binds { + // Application Launchers + Mod+Shift+T { spawn "telegram-desktop"; } + Mod+Shift+B { spawn "/opt/helium/helium" "--enable-features=UseOzonePlatform" "--ozone-platform=wayland"; } + Mod+D { spawn "vicinae" "toggle"; } + Mod+Ctrl+V { spawn "vicinae" "deeplink" "vicinae://launch/clipboard/history"; } + Mod+T hotkey-overlay-title="File Manager" { spawn "foot" "-e" "yazi"; } + Mod+Alt+R { spawn "foot" "-e" "rmpc"; } + Mod+S hotkey-overlay-title="Terminal" { spawn "foot"; } + Super+Alt+L hotkey-overlay-title="Lock Screen" { spawn "swaylock"; } + + // Audio & Media Controls + XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; } + XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } + XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } + XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } + + XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; } + XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; } + XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; } + XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; } + + // universal clipboard hotkeys (super + c / v / x) + mod+c { spawn-sh "sleep 0.001 && wtype -M ctrl -k insert -m ctrl"; } + mod+v { spawn-sh "sleep 0.001 && wtype -M shift -k insert -m shift"; } + mod+x { spawn-sh "sleep 0.001 && wtype -M shift -k delete -m shift"; } + + // Window Management & Views + Mod+Tab repeat=false { toggle-overview; } + Mod+Grave repeat=false { toggle-overview; } + Mod+W repeat=false { close-window; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } + Mod+Ctrl+F { maximize-window-to-edges; } + //Mod+Ctrl+F { expand-column-to-available-width; } + Mod+Ctrl+C { center-visible-columns; } + Mod+Shift+V { toggle-window-floating; } + Mod+Q { toggle-column-tabbed-display; } + + // Focus Navigation + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-monitor-left; } + Mod+Shift+WheelScrollDown { focus-monitor-right; } + + // Window Movement + Mod+Ctrl+Left { move-column-left; } + Mod+Ctrl+Down { move-window-down; } + Mod+Ctrl+Up { move-window-up; } + Mod+Ctrl+Right { move-column-right; } + Mod+Ctrl+H { move-column-left; } + Mod+Ctrl+J { move-window-down; } + Mod+Ctrl+K { move-window-up; } + Mod+Ctrl+L { move-column-right; } + + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + // Monitor Focus & Movement + Mod+Shift+1 { focus-monitor-left; } + Mod+Shift+2 { focus-monitor-right; } + Mod+Shift+Left { focus-monitor-left; } + Mod+Shift+Down { focus-monitor-down; } + Mod+Shift+Up { focus-monitor-up; } + Mod+Shift+Right { focus-monitor-right; } + Mod+Shift+H { focus-monitor-left; } + Mod+Shift+J { focus-monitor-down; } + Mod+Shift+K { focus-monitor-up; } + Mod+Shift+L { focus-monitor-right; } + + Mod+Shift+Ctrl+1 { move-column-to-monitor-left; } + Mod+Shift+Ctrl+2 { move-column-to-monitor-right; } + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + + // Workspace Navigation + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + Mod+Shift+U { move-workspace-down; } + Mod+Shift+I { move-workspace-up; } + + // Direct Workspace Switching (1-9) + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + + Mod+Ctrl+1 { move-column-to-workspace 1; } + Mod+Ctrl+2 { move-column-to-workspace 2; } + Mod+Ctrl+3 { move-column-to-workspace 3; } + Mod+Ctrl+4 { move-column-to-workspace 4; } + Mod+Ctrl+5 { move-column-to-workspace 5; } + Mod+Ctrl+6 { move-column-to-workspace 6; } + Mod+Ctrl+7 { move-column-to-workspace 7; } + Mod+Ctrl+8 { move-column-to-workspace 8; } + Mod+Ctrl+9 { move-column-to-workspace 9; } + + // Column & Window Sizing + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + + Mod+R { switch-preset-column-width; } + Mod+Shift+R { switch-preset-column-width-back; } + Mod+Ctrl+Shift+R { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + + // Mouse Wheel Bindings + Mod+WheelScrollUp { focus-column-left; } + Mod+WheelScrollDown { focus-column-right; } + + // Screenshots + Print { screenshot; } + Ctrl+Print { screenshot-screen; } + Alt+Print { screenshot-window; } + + // System Control + Mod+Shift+E { quit; } +} diff --git a/.config/niri/set-backdrop.sh b/.config/niri/set-backdrop.sh new file mode 100755 index 0000000..efd02b3 --- /dev/null +++ b/.config/niri/set-backdrop.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Push a blurred copy of a wallpaper to the awww-daemon backdrop namespace. +# Prefers a pre-made -blur. sibling; otherwise generates one into the cache. +# Used by theme-switcher.sh and apply-colors.sh for the niri Overview backdrop. + +set -euo pipefail + +IMG="${1:-}" +if [ -z "$IMG" ] || [ ! -f "$IMG" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +EXT="${IMG##*.}" +SIBLING="${IMG%.*}-blur.${EXT}" +if [ -f "$SIBLING" ]; then + BLURRED="$SIBLING" +else + CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/niri-backdrop" + mkdir -p "$CACHE_DIR" + BASE=$(basename "${IMG%.*}") + BLURRED="$CACHE_DIR/${BASE}-blur.jpg" + if [ ! -f "$BLURRED" ] || [ "$IMG" -nt "$BLURRED" ]; then + magick "$IMG" -blur 0x16 -quality 90 "$BLURRED" + fi +fi + +awww img "$BLURRED" -n backdrop +echo "$BLURRED" >/tmp/current_backdrop_state \ No newline at end of file diff --git a/.config/niri/theme-switcher.sh b/.config/niri/theme-switcher.sh new file mode 100755 index 0000000..6d1f548 --- /dev/null +++ b/.config/niri/theme-switcher.sh @@ -0,0 +1,135 @@ +#!/bin/bash + +# Day/night theme switcher + wallpaper/color applier. +# Two wallpapers: day.jpg (9:00-18:00) and night.jpg (18:00-9:00). +# +# Usage: +# ./theme-switcher.sh one-shot: apply based on current time, then exit +# ./theme-switcher.sh day|light force light theme, then exit +# ./theme-switcher.sh night|dark force dark theme, then exit +# ./theme-switcher.sh --daemon continuous time-based loop (used at login) + +WALLPAPERS="$HOME/Pictures/wallpapers" +STATE_FILE="/tmp/current_theme_state" +WALLPAPER_STATE_FILE="/tmp/current_wallpaper_state" +BACKDROP_STATE_FILE="/tmp/current_backdrop_state" +PID_FILE="/tmp/theme-switcher.daemon.pid" +LOG="/tmp/theme-switcher.log" +SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)" +SET_BACKDROP="$SCRIPT_DIR/set-backdrop.sh" + +log() { + printf '%s %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >>"$LOG" +} + +# Resolve TARGET_STATE / MODE / WALLPAPER. Optional $1 forces day|night. +resolve_target() { + local force="${1:-}" + if [ "$force" = "day" ] || [ "$force" = "light" ]; then + TARGET_STATE="light" + MODE="light" + WALLPAPER="$WALLPAPERS/day.jpg" + elif [ "$force" = "night" ] || [ "$force" = "dark" ]; then + TARGET_STATE="dark" + MODE="dark" + WALLPAPER="$WALLPAPERS/night.jpg" + else + local HOUR + HOUR=$(date +%H) + HOUR=$((10#$HOUR)) + if [ "$HOUR" -ge 9 ] && [ "$HOUR" -lt 18 ]; then + TARGET_STATE="light" + MODE="light" + WALLPAPER="$WALLPAPERS/day.jpg" + else + TARGET_STATE="dark" + MODE="dark" + WALLPAPER="$WALLPAPERS/night.jpg" + fi + fi +} + +# Apply the resolved target once. Returns 0 on success. +apply_target() { + if [ ! -f "$WALLPAPER" ]; then + log "wallpaper missing: $WALLPAPER" + return 1 + fi + + local CURRENT_THEME CURRENT_WALLPAPER EXPECTED_BACKDROP ACTUAL_BACKDROP + + CURRENT_THEME=$(cat "$STATE_FILE" 2>/dev/null || true) + # Already in the correct theme: don't re-run wallust/matugen every loop tick. + # Still self-heal a drifted backdrop below, then bail out. + if [ "$CURRENT_THEME" = "$TARGET_STATE" ]; then + EXPECTED_BACKDROP=$(cat "$BACKDROP_STATE_FILE" 2>/dev/null || true) + ACTUAL_BACKDROP=$(awww query -n backdrop -j 2>/dev/null | jq -r '.["backdrop"][0].displaying.image // empty') + if [ -n "$EXPECTED_BACKDROP" ] && [ "$ACTUAL_BACKDROP" != "$EXPECTED_BACKDROP" ]; then + "$SET_BACKDROP" "$WALLPAPER" + fi + return 0 + fi + CURRENT_WALLPAPER=$(cat "$WALLPAPER_STATE_FILE" 2>/dev/null || true) + + # Self-heal the Overview backdrop if it drifted from the expected image. + EXPECTED_BACKDROP=$(cat "$BACKDROP_STATE_FILE" 2>/dev/null || true) + ACTUAL_BACKDROP=$(awww query -n backdrop -j 2>/dev/null | jq -r '.["backdrop"][0].displaying.image // empty') + if [ -n "$EXPECTED_BACKDROP" ] && [ "$ACTUAL_BACKDROP" != "$EXPECTED_BACKDROP" ]; then + "$SET_BACKDROP" "$WALLPAPER" + fi + + log "switching to $TARGET_STATE ($WALLPAPER)" + if sh "$SCRIPT_DIR/apply-colors.sh" "$WALLPAPER" "$MODE"; then + if [ "$CURRENT_THEME" != "$TARGET_STATE" ]; then + darkman set "$TARGET_STATE" + fi + + ln -sf \ + "theme-${TARGET_STATE}.css" \ + "$HOME/dotfiles-gentoo/waybar/.config/waybar/theme.css" + + ln -sf \ + "settings-${TARGET_STATE}.ini" \ + "$HOME/dotfiles-gentoo/gtk/.config/gtk-3.0/settings.ini" + + echo "$TARGET_STATE" >"$STATE_FILE" + echo "$WALLPAPER" >"$WALLPAPER_STATE_FILE" + log "switched to $TARGET_STATE ($WALLPAPER)" + return 0 + else + log "FAILED to apply $TARGET_STATE ($WALLPAPER)" + return 1 + fi +} + +daemon_loop() { + # Refuse to run a second daemon instance (e.g. manual run while one is alive). + if [ -f "$PID_FILE" ] && kill -0 "$(cat "$PID_FILE" 2>/dev/null)" 2>/dev/null; then + log "daemon already running (pid $(cat "$PID_FILE")), exiting" + exit 0 + fi + echo $$ >"$PID_FILE" + + while true; do + resolve_target + apply_target || true # failure is retried on the next loop, state is left untouched + sleep 60 + done +} + +case "${1:-}" in +--daemon | -d) daemon_loop ;; +"" | day | light | night | dark) + resolve_target "${1:-}" + apply_target + exit $? + ;; +-h | --help) + echo "usage: $0 [day|night|--daemon]" >&2 + exit 0 + ;; +*) + echo "usage: $0 [day|night|--daemon]" >&2 + exit 1 + ;; +esac diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..6bf6f8e --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,4 @@ +require("caelus.init").colorscheme() +require("config.keymaps") +require("config.options") +require("config.plugins") diff --git a/.config/nvim/lua/caelus/init.lua b/.config/nvim/lua/caelus/init.lua new file mode 100644 index 0000000..dec0a41 --- /dev/null +++ b/.config/nvim/lua/caelus/init.lua @@ -0,0 +1,100 @@ +local M = {}; + +local colors = { + bg = "#0f0f0f", + gray0 = "#141514"; + gray1 = "#1e1f1e"; + gray2 = "#272a28"; + gray3 = "#3b403c"; + gray4 = "#585f5b"; + gray5 = "#6c756f"; + gray6 = "#888e7b"; + gray7 = "#9a9c8b"; + gray8 = "#b6b69a"; + gray9 = "#d9cdb5"; + gray10 = "#e3d6c9"; + fg = "#f4decd", + red = "#f16e65"; + lred = "#ef968f"; + orange = "#ef934d"; + yellow = "#efbf71"; + green = "#7ec97e"; + lgreen = "#a4daa4"; + cyan = "#7ec9a3"; + lcyan = "#abd4bf"; + blue = "#71b4d6"; + lblue = "#b0d4e8"; + magenta = "#e28dc6"; + lmagenta = "#ebadd6"; +} + +function M.colorscheme() + vim.cmd("highlight clear") + vim.cmd("syntax reset") + + vim.o.background = "dark"; + vim.g.colors_name = "caelus"; + + local set = vim.api.nvim_set_hl + + -- ui + set(0, "Normal", { fg = colors.fg, bg = colors.bg }) + set(0, "NormalFloat", { fg = colors.fg, bg = colors.bg }) + set(0, "FloatBorder", { fg = colors.fg, bg = colors.bg }) + set(0, "CursorLine", { bg = colors.gray2 }) + set(0, "Visual", { bg = colors.gray3 }) + set(0, "Search", { fg = colors.bg, bg = colors.orange }) + set(0, "IncSearch", { fg = colors.bg, bg = colors.orange }) + set(0, "StatusLine", { bg = colors.gray2 }) + set(0, "StatusLineNC", { bg = colors.orange }) + set(0, "VertSplit", { fg = colors.gray8 }) + set(0, "WinSeparator", { fg = colors.gray8 }) + set(0, "LineNr", { fg = colors.gray6 }) + set(0, "CursorLineNr", { fg = colors.orange, bold = true }) + set(0, "SignColumn", { bg = colors.bg }) + set(0, "Folded", { fg = colors.gray8, bg = colors.gray3 }) + + -- popup + set(0, "Pmenu", { fg = colors.fg, bg = colors.gray10 }) + set(0, "PmenuSel", { fg = colors.bg, bg = colors.orange }) + set(0, "PmenuSbar", { bg = colors.gray10 }) + set(0, "PmenuThumb", { bg = colors.orange }) + + -- syntax + set(0, "Comment", { fg = colors.gray8, italic = true }) + set(0, "Constant", { fg = colors.magenta }) + set(0, "String", { fg = colors.green }) + set(0, "Identifier", { fg = colors.blue }) + set(0, "Function", { fg = colors.yellow }) + set(0, "Statement", { fg = colors.red }) + set(0, "Type", { fg = colors.cyan, bold = true }) + set(0, "Special", { fg = colors.yellow }) + set(0, "Error", { fg = colors.red, bold = true }) + set(0, "Keyword", { fg = colors.red }) + set(0, "Variable", { fg = colors.fg }) + set(0, "TSKeyword", { fg = colors.red }) + set(0, "TSFunction", { fg = colors.yellow }) + set(0, "TSVariable", { fg = colors.fg }) + set(0, "TSType", { fg = colors.cyan }) + + -- blink + set(0, "BlinkCmpMenu", { bg = colors.gray1 }) + set(0, "BlinkCmpMenuBorder", { fg = colors.gray6, bg = colors.gray1 }) + set(0, "BlinkCmpMenuSelection", { fg = colors.bg, bg = colors.orange }) + set(0, "BlinkCmpLabel", { fg = colors.fg }) + set(0, "BlinkCmpLabelDetail", { fg = colors.gray7 }) + set(0, "BlinkCmpLabelDescription",{ fg = colors.gray8 }) + set(0, "BlinkCmpLabelMatch", { fg = colors.orange, bold = true }) + set(0, "BlinkCmpKind", { fg = colors.cyan }) + set(0, "BlinkCmpDoc", { fg = colors.fg, bg = colors.gray2 }) + set(0, "BlinkCmpDocBorder", { fg = colors.gray5, bg = colors.gray2 }) + + if package.loaded['lualine'] then + require('lualine').setup({ + options = { theme = 'auto' }, + }) + end + +end + +return M diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua new file mode 100755 index 0000000..e2987bc --- /dev/null +++ b/.config/nvim/lua/config/keymaps.lua @@ -0,0 +1,13 @@ +localopts = { noremap = true, silent = true } + +vim.g.mapleader = " " +vim.g.maplocalleader = " " + +vim.keymap.set({"n", "v"}, "y", '"+y', { noremap = true, silent = true }) + +vim.keymap.set("v", "J", ":m '>+1gv=gv", { desc = "moves lines down in visual selection" }) +vim.keymap.set("v", "K", ":m '<-2gv=gv", { desc = "moves lines up in visual selection" }) + +vim.keymap.set("n", "al", "term", { desc = "Open terminal" }) + +vim.keymap.set("n", "f", vim.lsp.buf.format) diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua new file mode 100755 index 0000000..dac7c76 --- /dev/null +++ b/.config/nvim/lua/config/options.lua @@ -0,0 +1,40 @@ +vim.cmd("let g:netrw_banner = 0") +vim.cmd("set termguicolors") + +vim.opt.guicursor = "" +vim.opt.nu = true +vim.opt.relativenumber = false + +vim.opt.tabstop = 2 +vim.opt.softtabstop = 2 +vim.opt.shiftwidth = 2 +vim.opt.expandtab = true +vim.opt.autoindent = true +vim.opt.smartindent = true +vim.opt.wrap = true + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undofile = true + +vim.opt.incsearch = true +vim.opt.inccommand = "split" +vim.opt.ignorecase = true +vim.opt.smartcase = true + +vim.opt.termguicolors = true +vim.opt.background = "dark" +vim.opt.scrolloff = 8 +vim.opt.signcolumn = "yes" + +vim.opt.backspace = { "start", "eol", "indent" } + +vim.opt.splitright = true +vim.opt.splitbelow = true + +vim.opt.hlsearch = true + +vim.opt.mouse = "a" +vim.g.editorconfig = true + +vim.g.markdown_folding = 1 diff --git a/.config/nvim/lua/config/plugins.lua b/.config/nvim/lua/config/plugins.lua new file mode 100644 index 0000000..464a5ae --- /dev/null +++ b/.config/nvim/lua/config/plugins.lua @@ -0,0 +1,101 @@ +vim.pack.add { + 'https://github.com/ollykel/v-vim', + 'https://github.com/hrsh7th/nvim-cmp', + 'https://github.com/saghen/blink.cmp', + 'https://github.com/alaviss/nim.nvim', + 'https://github.com/stevearc/oil.nvim', + 'https://github.com/folke/trouble.nvim', + 'https://github.com/nvim-mini/mini.nvim', + 'https://github.com/jiaoshijie/undotree', + 'https://github.com/thePrimeagen/harpoon', + 'https://github.com/hrsh7th/cmp-nvim-lsp', + 'https://github.com/mason-org/mason.nvim', + 'https://github.com/nvim-orgmode/orgmode', + 'https://github.com/windwp/nvim-autopairs', + 'https://github.com/neovim/nvim-lspconfig', + 'https://github.com/nvim-lua/plenary.nvim', + 'https://github.com/mfussenegger/nvim-lint', + 'https://github.com/akinsho/org-bullets.nvim', + 'https://github.com/nvim-lualine/lualine.nvim', + 'https://github.com/norcalli/nvim-colorizer.lua', + 'https://github.com/nvim-tree/nvim-web-devicons', + 'https://github.com/rafamadriz/friendly-snippets', + 'https://github.com/nvim-telescope/telescope.nvim', + 'https://github.com/mason-org/mason-lspconfig.nvim', + 'https://github.com/nvim-treesitter/nvim-treesitter', + 'https://github.com/brenoprata10/nvim-highlight-colors', + 'https://github.com/antosha417/nvim-lsp-file-operations', + 'https://github.com/nvim-telescope/telescope-ui-select.nvim', + 'https://github.com/MeanderingProgrammer/render-markdown.nvim', +} + +-- vlang +--vim.lsp.config.vlang.setup({}) + +-- oil +-- oil +require("oil").setup({ + default_file_explorer = true, + columns = {}, + keymaps = { + ["q"] = "actions.close", + ["l"] = "actions.select", -- Opens the file or enters the directory + ["h"] = "actions.parent", -- Goes up to the parent directory + }, + delete_to_trash = true, + view_options = { + show_hidden = true, + }, + skip_confirm_for_simple_edits = true, +}) +vim.keymap.set("n", "fm", "Oil", { desc = "Open parent directory" }) + +-- harpoon +vim.keymap.set("n", "ad", function() + harpoon:list():add() +end, { desc = "Harpoon add file" }) +vim.keymap.set("n", "", function() + harpoon.ui:toggle_quick_menu(harpoon:list()) +end) + +-- mason +require("mason").setup({ + opts = { + ui = { + icons = { + package_installed = "*", + package_pending = ">", + package_uninstalled = "x" + } + } + } +}) + +-- autopairs +require("nvim-autopairs").setup({ + check_ts = true, + ts_config = { + lua = { "string" }, + javascript = { "template_string" }, + java = false, + }, +}) + +-- lspconfig +vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) +vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts) +vim.keymap.set("n", "vrn", function() vim.lsp.buf.rename() end, opts) + +-- lualine +require('lualine').setup { + options = { + icons_enabled = true, + theme = 'auto', + } +} + +-- colorizer +require("colorizer").setup() + +-- mason-lspconfig +require("mason-lspconfig").setup() diff --git a/.config/nvim/nvim-pack-lock.json b/.config/nvim/nvim-pack-lock.json new file mode 100644 index 0000000..dc69b9a --- /dev/null +++ b/.config/nvim/nvim-pack-lock.json @@ -0,0 +1,116 @@ +{ + "plugins": { + "blink.cmp": { + "rev": "679a2ffad4bae720bb12e6bcdf57b0dd8b8a80f8", + "src": "https://github.com/saghen/blink.cmp" + }, + "cmp-nvim-lsp": { + "rev": "cbc7b02bb99fae35cb42f514762b89b5126651ef", + "src": "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + "friendly-snippets": { + "rev": "6cd7280adead7f586db6fccbd15d2cac7e2188b9", + "src": "https://github.com/rafamadriz/friendly-snippets" + }, + "harpoon": { + "rev": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3", + "src": "https://github.com/thePrimeagen/harpoon" + }, + "lualine.nvim": { + "rev": "47f91c416daef12db467145e16bed5bbfe00add8", + "src": "https://github.com/nvim-lualine/lualine.nvim" + }, + "mason-lspconfig.nvim": { + "rev": "25f609e7fca78af7cede4f9fa3af8a94b1c4950b", + "src": "https://github.com/mason-org/mason-lspconfig.nvim" + }, + "mason.nvim": { + "rev": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65", + "src": "https://github.com/mason-org/mason.nvim" + }, + "mini.nvim": { + "rev": "3923662bf3d6ca49a9503f8d7196ea0450983e6a", + "src": "https://github.com/nvim-mini/mini.nvim" + }, + "nim.nvim": { + "rev": "9ee8fdc04ad3d7fcbd9679e0be3477543f17b9d9", + "src": "https://github.com/alaviss/nim.nvim" + }, + "nvim-autopairs": { + "rev": "59bce2eef357189c3305e25bc6dd2d138c1683f5", + "src": "https://github.com/windwp/nvim-autopairs" + }, + "nvim-cmp": { + "rev": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca", + "src": "https://github.com/hrsh7th/nvim-cmp" + }, + "nvim-colorizer.lua": { + "rev": "a065833f35a3a7cc3ef137ac88b5381da2ba302e", + "src": "https://github.com/norcalli/nvim-colorizer.lua" + }, + "nvim-highlight-colors": { + "rev": "e2cb22089cc2358b2b995c09578224f142de6039", + "src": "https://github.com/brenoprata10/nvim-highlight-colors" + }, + "nvim-lint": { + "rev": "4b03656c09c1561f89b6aa0665c15d292ba9499d", + "src": "https://github.com/mfussenegger/nvim-lint" + }, + "nvim-lsp-file-operations": { + "rev": "b9c795d3973e8eec22706af14959bc60c579e771", + "src": "https://github.com/antosha417/nvim-lsp-file-operations" + }, + "nvim-lspconfig": { + "rev": "8e2084bf5e40c79c1f42210a6ef96a0a4793a763", + "src": "https://github.com/neovim/nvim-lspconfig" + }, + "nvim-treesitter": { + "rev": "539abf6da5ee8702e37b82cc953131dadd570da2", + "src": "https://github.com/nvim-treesitter/nvim-treesitter" + }, + "nvim-web-devicons": { + "rev": "d7462543c9e366c0d196c7f67a945eaaf5d99414", + "src": "https://github.com/nvim-tree/nvim-web-devicons" + }, + "oil.nvim": { + "rev": "0fcc83805ad11cf714a949c98c605ed717e0b83e", + "src": "https://github.com/stevearc/oil.nvim" + }, + "org-bullets.nvim": { + "rev": "503fe053550879cc202086a40454e46a87c41ddb", + "src": "https://github.com/akinsho/org-bullets.nvim" + }, + "orgmode": { + "rev": "1ab7b456020de8bdaed7d8135b5376a0b4419b11", + "src": "https://github.com/nvim-orgmode/orgmode" + }, + "plenary.nvim": { + "rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509", + "src": "https://github.com/nvim-lua/plenary.nvim" + }, + "render-markdown.nvim": { + "rev": "c7188a8f9d2953696b6303caccbf39c51fa2c1b1", + "src": "https://github.com/MeanderingProgrammer/render-markdown.nvim" + }, + "telescope-ui-select.nvim": { + "rev": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2", + "src": "https://github.com/nvim-telescope/telescope-ui-select.nvim" + }, + "telescope.nvim": { + "rev": "cfb85dcf7f822b79224e9e6aef9e8c794211b20b", + "src": "https://github.com/nvim-telescope/telescope.nvim" + }, + "trouble.nvim": { + "rev": "bd67efe408d4816e25e8491cc5ad4088e708a69a", + "src": "https://github.com/folke/trouble.nvim" + }, + "undotree": { + "rev": "0e6d41d55ad147407e4ba00a292973de8db0b836", + "src": "https://github.com/jiaoshijie/undotree" + }, + "v-vim": { + "rev": "1dc1388bafb89072f8349dbd96f9462ae22237cb", + "src": "https://github.com/ollykel/v-vim" + } + } +} diff --git a/.config/rmpc/config.ron b/.config/rmpc/config.ron new file mode 100644 index 0000000..765d13b --- /dev/null +++ b/.config/rmpc/config.ron @@ -0,0 +1,84 @@ +#![enable(implicit_some)] +#![enable(unwrap_newtypes)] +#![enable(unwrap_variant_newtypes)] + +( + address: "127.0.0.1:6600", + max_fps: 180, + + music_dir: "/mnt/giga/music", + lyrics_dir: "/mnt/giga/music", + theme: "~/.config/rmpc/theme.ron", + + album_art: ( + method: Sixel, + max_size_px: (width: 1600, height: 1600), + ), + lyrics: ( + fetch: true, + ), + tabs: [ + ( + name: "Player", + pane: Split( + direction: Horizontal, + panes: [ + ( + size: "40%", + pane: Split( + direction: Vertical, + panes: [ + (size: "55%", pane: Pane(AlbumArt)), + (size: "45%", pane: Pane(Lyrics)), + ] + ) + ), + ( + size: "60%", + pane: Split( + direction: Vertical, + panes: [ + (size: "1", pane: Pane(QueueHeader())), + (size: "100%", pane: Pane(Queue)), + ] + ) + ), + ], + ), + ), + (name: "Files", pane: Pane(Directories)), + (name: "Artists", pane: Pane(Artists)), + (name: "Playlists", pane: Pane(Playlists)), + (name: "Search", pane: Pane(Search)), + ], + + keybinds: ( + global: { + "1": SwitchToTab("Player"), + "2": SwitchToTab("Files"), + "3": SwitchToTab("Artists"), + "4": SwitchToTab("Playlists"), + "5": SwitchToTab("Search"), + "/": SwitchToTab("Search"), + + "": TogglePause, + "+": VolumeUp, + "-": VolumeDown, + "n": NextTrack, + "b": PreviousTrack, + + "": SeekForward, + "": SeekBack, + ">": SeekForward, + "<": SeekBack, + + "r": ToggleRepeat, + "s": ToggleSingle, + "c": ToggleConsume, + "z": ToggleRandom, + }, + navigation: { + "Enter": Select, + }, + ), +) diff --git a/.config/rmpc/theme.ron b/.config/rmpc/theme.ron new file mode 100644 index 0000000..f23418a --- /dev/null +++ b/.config/rmpc/theme.ron @@ -0,0 +1,47 @@ +#![enable(implicit_some)] +#![enable(unwrap_newtypes)] +#![enable(unwrap_variant_newtypes)] + +( + show_song_table_header: true, + + song_table_format: [ + ( + prop: (kind: Property(Position)), + width: "3", + alignment: Right, + label: "#" + ), + ( + prop: (kind: Property(Title), default: (kind: Property(Filename))), + width: "45%", + alignment: Left, + label: "Title" + ), + ( + prop: (kind: Property(Artist), default: (kind: Text("Unknown"))), + width: "35%", + alignment: Left, + label: "Artist" + ), + ( + prop: (kind: Property(Duration)), + width: "15%", + alignment: Right, + label: "Time" + ), + ], + + text_color: None, + borders_style: (fg: "#4c566a"), + + highlighted_item_style: (fg: "#81a1c1", modifiers: "Bold"), + current_item_style: (fg: "#88c0d0", modifiers: "Bold | Reversed"), + + lyrics: ( + unplayed_style: (fg: "#4c566a"), + played_style: (fg: "#88c0d0", modifiers: "Bold"), + dir: "/mnt/giga/music/", + fetch: true, + ), +) diff --git a/.config/starship.toml b/.config/starship.toml new file mode 100644 index 0000000..ab9064a --- /dev/null +++ b/.config/starship.toml @@ -0,0 +1,91 @@ +palette = "noctalia" +add_newline = true +command_timeout = 200 +format = "$username$hostname$character [$directory$git_branch$git_status]($style)" + +[username] +show_always = true +format = "[$user]($style)" +style_user = "#8C00FF" +# style_user = "bold #8C00FF" +[hostname] +disabled = false +ssh_only = false +format = "[@$hostname]($style)" +style = "#8C00FF" + +[character] +format = "$symbol" # Removes the default trailing space after # +error_symbol = "[:~✗](bold red)" +success_symbol = "[:~#](bold #8C00FF)" + +[directory] +style = "#AA40FF" +truncation_length = 2 +truncation_symbol = "///" +repo_root_style = "#AA40FF" +repo_root_format = "[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) " + +[git_branch] +symbol = "> " +format = "[$symbol$branch]($style) " +style = "italic #AA40FF" + +[git_status] +format = '[$all_status]($style)' +style = "purple" +ahead = "⇡${count} " +diverged = "⇕⇡${ahead_count}⇣${behind_count} " +behind = "⇣${count} " +conflicted = " " +up_to_date = " " +untracked = "? " +modified = " " +stashed = "" +staged = "" +renamed = "" +deleted = "" + +# >>> NOCTALIA STARSHIP PALETTE >>> +# Noctalia Starship Palette +# Generated by Noctalia - do not edit manually + +[palettes.noctalia] +# Standard colors +blue = "#54604a" +red = "#ba1a1a" +green = "#645c3f" +yellow = "#635e50" +cyan = "#797263" +magenta = "#7e7252" +white = "#1d1b19" +black = "#e9e2d4" + +# Extended palette (Catppuccin-compatible names) +rosewater = "#635e50" +flamingo = "#ba1a1a" +pink = "#7e7252" +mauve = "#7e7252" +maroon = "#ba1a1a" +peach = "#635e50" +teal = "#797263" +sky = "#797263" +sapphire = "#54604a" +lavender = "#7e7252" + +# Text shades +text = "#1d1b19" +subtext1 = "#1d1b19" +subtext0 = "#7b776c" + +# Surface shades +overlay2 = "#7b776c" +overlay1 = "#7b776c" +overlay0 = "#e9e2d4" +surface2 = "#e9e2d4" +surface1 = "#e9e2d4" +surface0 = "#fef8f4" +base = "#fef8f4" +mantle = "#fef8f4" +crust = "#fef8f4" +# <<< NOCTALIA STARSHIP PALETTE <<< diff --git a/.config/vicinae/settings.json b/.config/vicinae/settings.json new file mode 100644 index 0000000..b9a5a02 --- /dev/null +++ b/.config/vicinae/settings.json @@ -0,0 +1,234 @@ +// This configuration is merged with the default vicinae configuration file, which you can obtain by running the `vicinae config default` command. +// Every item defined in this file takes precedence over the values defined in the default config or any other imported file. +// +// You can make manual edits to this file, however you should keep in mind that this file may be written to by vicinae when a configuration change is made through the GUI. +// When that happens, any custom comments or formatting will be lost. +// +// If you want to maintain a configuration file with your own comments and formatting, you should create a separate file and add it to the 'imports' array. +// +// Learn more about configuration at https://docs.vicinae.com/config + +{ + "$schema": "https://vicinae.com/schemas/config.json", + "encrypt_sensitive_data": true, + "favicon_service": "google", + "font": { + "normal": { + "family": "JetBrains Mono ExtraBold" + } + }, + "theme": { + "light": { + "name": "vicinae-wallust-light" + }, + "dark": { + "name": "vicinae-wallust-dark", + "icon_theme": "Hicolor" + } + }, + "telemetry": { + "system_info": false + }, + "launcher_window": { + "rounding": 1, + "opacity": 1, + "client_side_decorations": { + "shadow_size": 0 + }, + "compact_mode": { + "enabled": true + } + }, + "providers": { + "applications": { + "entrypoints": { + "PEAK": { + "enabled": false + }, + "assistant": { + "enabled": false + }, + "blueman-manager": { + "enabled": false + }, + "btop": { + "enabled": false + }, + "darkman": { + "enabled": false + }, + "foot-server": { + "enabled": false + }, + "footclient": { + "enabled": false + }, + "linguist": { + "enabled": false + }, + "nvidia-settings": { + "enabled": false + }, + "qdbusviewer": { + "enabled": false + }, + "qphotorec": { + "enabled": false + }, + "rmpc": { + "enabled": false + } + } + }, + "clipboard": { + "preferences": { + "monitoring": true + } + }, + "core": { + "entrypoints": { + "about": { + "enabled": false + }, + "documentation": { + "enabled": false + }, + "keybind-settings": { + "enabled": false + }, + "list-extensions": { + "enabled": false + }, + "manage-fallback": { + "enabled": false + }, + "oauth-token-store": { + "enabled": false + }, + "open-config-file": { + "enabled": false + }, + "open-default-config": { + "enabled": false + }, + "prune-memory": { + "enabled": false + }, + "refresh-apps": { + "enabled": false + }, + "reload-scripts": { + "enabled": false + }, + "report-bug": { + "enabled": false + }, + "search-builtin-icons": { + "enabled": false + }, + "search-emojis": { + "enabled": true + }, + "settings": { + "enabled": false + }, + "show-logs": { + "enabled": false + }, + "sponsor": { + "enabled": false + }, + "store": { + "enabled": true + } + } + }, + "font": { + "enabled": false + }, + "manage-shortcuts": { + "enabled": false + }, + "power": { + "enabled": true, + "entrypoints": { + "hibernate": { + "enabled": false + }, + "lock": { + "enabled": false + }, + "logout": { + "enabled": false + }, + "power-off": { + "enabled": true + }, + "reboot": { + "enabled": true + }, + "sleep": { + "enabled": false + }, + "soft-reboot": { + "enabled": false + }, + "suspend": { + "enabled": false + } + } + }, + "snippets": { + "enabled": false + }, + "system": { + "enabled": false, + "entrypoints": { + "run": { + "enabled": false + }, + "toggle-mute": { + "enabled": false + }, + "volume-0": { + "enabled": false + }, + "volume-100": { + "enabled": false + }, + "volume-25": { + "enabled": false + }, + "volume-50": { + "enabled": false + }, + "volume-75": { + "enabled": false + }, + "volume-down": { + "enabled": false + }, + "volume-up": { + "enabled": false + } + } + }, + "wm": { + "enabled": false, + "entrypoints": { + "switch-windows": { + "enabled": false + }, + "toggle-floating": { + "enabled": false + }, + "toggle-fullscreen": { + "enabled": false + }, + "toggle-overview": { + "enabled": false + } + } + } + } +} \ No newline at end of file diff --git a/.config/wallust/templates/dbg.ini b/.config/wallust/templates/dbg.ini new file mode 100644 index 0000000..edc18bb --- /dev/null +++ b/.config/wallust/templates/dbg.ini @@ -0,0 +1,4 @@ +plain={{background}} +strip={{background.strip}} +hex={{background.hex}} +rgb={{background.rgb}} diff --git a/.config/wallust/templates/foot-colors-custom.ini b/.config/wallust/templates/foot-colors-custom.ini new file mode 100644 index 0000000..5fc7983 --- /dev/null +++ b/.config/wallust/templates/foot-colors-custom.ini @@ -0,0 +1,20 @@ +# wallust foot template — foot expects colors without '#' +[colors] +background={{background}} +foreground={{foreground}} +regular0={{color0}} +regular1={{color1}} +regular2={{color2}} +regular3={{color3}} +regular4={{color4}} +regular5={{color5}} +regular6={{color6}} +regular7={{color7}} +bright0={{color8}} +bright1={{color9}} +bright2={{color10}} +bright3={{color11}} +bright4={{color12}} +bright5={{color13}} +bright6={{color14}} +bright7={{color15}} diff --git a/.config/wallust/templates/nvim.lua b/.config/wallust/templates/nvim.lua new file mode 100644 index 0000000..be60dd7 --- /dev/null +++ b/.config/wallust/templates/nvim.lua @@ -0,0 +1,306 @@ +-- Generated by wallust from your system color scheme. Do not edit by hand. +-- Source of truth: wallust/.config/wallust/templates/nvim.lua +local bg = "{{background}}" +local fg = "{{foreground}}" +local cursor = "{{cursor}}" +local c = { + "{{color0}}", "{{color1}}", "{{color2}}", "{{color3}}", + "{{color4}}", "{{color5}}", "{{color6}}", "{{color7}}", + "{{color8}}", "{{color9}}", "{{color10}}", "{{color11}}", + "{{color12}}", "{{color13}}", "{{color14}}", "{{color15}}", +} + +-- Pick light/dark from the background luminance so plugins (diff, signs, …) behave. +local function lum(hex) + hex = hex:gsub("#", "") + local r = tonumber(hex:sub(1, 2), 16) / 255 + local g = tonumber(hex:sub(3, 4), 16) / 255 + local b = tonumber(hex:sub(5, 6), 16) / 255 + return 0.2126 * r + 0.7152 * g + 0.0722 * b +end + +vim.opt.background = lum(bg) < 0.5 and "dark" or "light" +vim.g.colors_name = "wallust" + +local set = function(name, opts) + vim.api.nvim_set_hl(0, name, opts) +end + +-- semantic aliases for the 16-color palette +local black, red, green, yellow, blue, magenta, cyan, white = + c[1], c[2], c[3], c[4], c[5], c[6], c[7], c[8] +local brblack, brred, brgreen, bryellow, brblue, brmagenta, brcyan, brwhite = + c[9], c[10], c[11], c[12], c[13], c[14], c[15], c[16] + +local panel = c[1] -- floating / panel background (near bg) +local sel = brblack -- selection / visual background +local muted = brblack -- dimmed / secondary text + +-- ── Editor ────────────────────────────────────────────────────────────── +set("Normal", { fg = fg, bg = bg }) +set("NormalFloat", { fg = fg, bg = panel }) +set("NormalNC", { fg = fg, bg = bg }) +set("ColorColumn", { bg = panel }) +set("Conceal", { fg = muted }) +set("Cursor", { fg = bg, bg = cursor }) +set("CursorIM", { fg = bg, bg = cursor }) +set("CursorLine", { bg = panel }) +set("CursorColumn", { bg = panel }) +set("CursorLineNr", { fg = fg, bg = panel }) +set("LineNr", { fg = muted }) +set("SignColumn", { fg = muted, bg = bg }) +set("WinSeparator", { fg = muted }) +set("VertSplit", { fg = muted }) +set("Directory", { fg = blue }) +set("DiffAdd", { fg = green, bg = bg }) +set("DiffChange", { fg = yellow, bg = bg }) +set("DiffDelete", { fg = red, bg = bg }) +set("DiffText", { fg = yellow, bg = panel }) +set("ErrorMsg", { fg = red, bold = true }) +set("WarningMsg", { fg = yellow, bold = true }) +set("ModeMsg", { fg = fg }) +set("MsgArea", { fg = fg }) +set("MoreMsg", { fg = green }) +set("Question", { fg = green }) +set("NonText", { fg = muted }) +set("SpecialKey", { fg = muted }) +set("Whitespace", { fg = panel }) +set("Title", { fg = yellow, bold = true }) +set("Folded", { fg = muted, bg = panel }) +set("FoldColumn", { fg = muted, bg = bg }) +set("MatchParen", { fg = yellow, bg = panel, bold = true }) +set("Search", { fg = bg, bg = yellow }) +set("IncSearch", { fg = bg, bg = magenta }) +set("CurSearch", { fg = bg, bg = magenta }) +set("QuickFixLine", { fg = bg, bg = blue }) +set("Visual", { bg = sel }) +set("VisualNOS", { bg = sel }) +set("StatusLine", { fg = fg, bg = panel }) +set("StatusLineNC", { fg = muted, bg = bg }) +set("TabLine", { fg = muted, bg = bg }) +set("TabLineFill", { fg = muted, bg = bg }) +set("TabLineSel", { fg = bg, bg = blue }) +set("WildMenu", { fg = bg, bg = blue }) +set("Winbar", { fg = fg, bg = panel }) +set("WinbarNC", { fg = muted, bg = bg }) +set("Pmenu", { fg = fg, bg = panel }) +set("PmenuSel", { fg = bg, bg = blue }) +set("PmenuSbar", { bg = panel }) +set("PmenuThumb", { bg = muted }) +set("FloatBorder", { fg = muted }) +set("FloatTitle", { fg = yellow, bg = panel }) +set("FloatFooter", { fg = muted, bg = panel }) +set("SpellBad", { undercurl = true, sp = red }) +set("SpellCap", { undercurl = true, sp = yellow }) +set("SpellLocal", { undercurl = true, sp = cyan }) +set("SpellRare", { undercurl = true, sp = magenta }) + +-- ── Legacy syntax groups ──────────────────────────────────────────────── +set("Comment", { fg = muted, italic = true }) +set("Constant", { fg = cyan }) +set("String", { fg = green }) +set("Character", { fg = green }) +set("Number", { fg = red }) +set("Boolean", { fg = red }) +set("Float", { fg = red }) +set("Identifier", { fg = brcyan }) +set("Function", { fg = blue }) +set("Statement", { fg = magenta }) +set("Conditional", { fg = magenta }) +set("Repeat", { fg = magenta }) +set("Label", { fg = magenta }) +set("Operator", { fg = fg }) +set("Keyword", { fg = magenta }) +set("Exception", { fg = magenta }) +set("PreProc", { fg = brblue }) +set("Include", { fg = brblue }) +set("Define", { fg = brblue }) +set("Macro", { fg = brblue }) +set("PreCondit", { fg = brblue }) +set("Type", { fg = yellow }) +set("StorageClass", { fg = yellow }) +set("Structure", { fg = yellow }) +set("Typedef", { fg = yellow }) +set("Special", { fg = brgreen }) +set("SpecialChar", { fg = brgreen }) +set("Tag", { fg = red }) +set("Delimiter", { fg = muted }) +set("SpecialComment", { fg = muted, italic = true }) +set("Debug", { fg = red }) +set("Underlined", { fg = blue, underline = true }) +set("Ignore", { fg = muted }) +set("Error", { fg = red, bold = true }) +set("Todo", { fg = bg, bg = yellow, bold = true }) + +-- ── Treesitter ────────────────────────────────────────────────────────── +set("@comment", { fg = muted, italic = true }) +set("@comment.lua", { fg = muted, italic = true }) +set("@error", { fg = red, undercurl = true, sp = red }) +set("@none", {}) +set("@preproc", { fg = brblue }) +set("@define", { fg = brblue }) +set("@operator", { fg = fg }) + +set("@string", { fg = green }) +set("@string.escape", { fg = red }) +set("@string.special", { fg = brgreen }) +set("@character", { fg = green }) +set("@character.special", { fg = brgreen }) + +set("@number", { fg = red }) +set("@float", { fg = red }) +set("@boolean", { fg = red }) +set("@constant", { fg = cyan }) +set("@constant.builtin", { fg = brcyan }) +set("@constant.macro", { fg = brblue }) + +set("@variable", { fg = fg }) +set("@variable.builtin", { fg = red }) +set("@variable.parameter", { fg = fg }) +set("@variable.parameter.builtin", { fg = fg }) +set("@field", { fg = fg }) +set("@property", { fg = fg }) + +set("@function", { fg = blue }) +set("@function.builtin", { fg = blue }) +set("@function.macro", { fg = brblue }) +set("@method", { fg = blue }) +set("@constructor", { fg = yellow }) + +set("@parameter", { fg = fg }) +set("@keyword", { fg = magenta }) +set("@keyword.function", { fg = magenta }) +set("@keyword.operator", { fg = magenta }) +set("@keyword.modifier", { fg = magenta }) +set("@storageclass", { fg = yellow }) +set("@structure", { fg = yellow }) +set("@namespace", { fg = blue }) + +set("@type", { fg = yellow }) +set("@type.builtin", { fg = bryellow }) +set("@type.definition", { fg = yellow }) + +set("@punctuation.delimiter", { fg = muted }) +set("@punctuation.bracket", { fg = fg }) +set("@punctuation.special", { fg = magenta }) + +set("@text", { fg = fg }) +set("@text.strong", { bold = true }) +set("@text.emphasis", { italic = true }) +set("@text.underline", { underline = true }) +set("@text.strike", { strikethrough = true }) +set("@text.title", { fg = blue, bold = true }) +set("@text.title.1", { fg = blue, bold = true }) +set("@text.title.2", { fg = cyan, bold = true }) +set("@text.title.3", { fg = green, bold = true }) +set("@text.title.4", { fg = yellow, bold = true }) +set("@text.title.5", { fg = magenta, bold = true }) +set("@text.title.6", { fg = red, bold = true }) +set("@text.literal", { fg = green }) +set("@text.uri", { fg = cyan, underline = true }) +set("@text.todo", { fg = bg, bg = yellow, bold = true }) +set("@text.note", { fg = bg, bg = blue, bold = true }) +set("@text.warning", { fg = bg, bg = yellow, bold = true }) +set("@text.danger", { fg = bg, bg = red, bold = true }) + +set("@tag", { fg = red }) +set("@tag.attribute", { fg = yellow }) +set("@tag.delimiter", { fg = muted }) + +set("@markup.heading", { fg = blue, bold = true }) +set("@markup.strong", { bold = true }) +set("@markup.italic", { italic = true }) +set("@markup.link", { fg = cyan, underline = true }) +set("@markup.link.url", { fg = cyan, underline = true }) +set("@markup.raw", { fg = green }) +set("@markup.list", { fg = magenta }) +set("@markup.quote", { fg = muted, italic = true }) + +set("@diff.add", { fg = green }) +set("@diff.delete", { fg = red }) +set("@diff.change", { fg = yellow }) + +set("@conceal", { fg = muted }) + +-- ── LSP / Diagnostics ─────────────────────────────────────────────────── +set("DiagnosticError", { fg = red }) +set("DiagnosticWarn", { fg = yellow }) +set("DiagnosticInfo", { fg = blue }) +set("DiagnosticHint", { fg = cyan }) +set("DiagnosticOk", { fg = green }) +set("DiagnosticVirtualTextError", { fg = red }) +set("DiagnosticVirtualTextWarn", { fg = yellow }) +set("DiagnosticVirtualTextInfo", { fg = blue }) +set("DiagnosticVirtualTextHint", { fg = cyan }) +set("DiagnosticUnderlineError", { undercurl = true, sp = red }) +set("DiagnosticUnderlineWarn", { undercurl = true, sp = yellow }) +set("DiagnosticUnderlineInfo", { undercurl = true, sp = blue }) +set("DiagnosticUnderlineHint", { undercurl = true, sp = cyan }) +set("DiagnosticSignError", { fg = red }) +set("DiagnosticSignWarn", { fg = yellow }) +set("DiagnosticSignInfo", { fg = blue }) +set("DiagnosticSignHint", { fg = cyan }) +set("DiagnosticFloatingError", { fg = red }) +set("DiagnosticFloatingWarn", { fg = yellow }) +set("DiagnosticFloatingInfo", { fg = blue }) +set("DiagnosticFloatingHint", { fg = cyan }) +set("DiagnosticUnnecessary", { undercurl = true, sp = muted }) + +set("LspReferenceText", { bg = sel }) +set("LspReferenceRead", { bg = sel }) +set("LspReferenceWrite", { bg = sel }) +set("LspCodeLens", { fg = muted }) +set("LspCodeLensSeparator", { fg = muted }) +set("LspSignatureActiveParameter", { fg = yellow, bold = true }) +set("LspInlayHint", { fg = muted, italic = true }) + +-- ── Git / signs ───────────────────────────────────────────────────────── +set("GitSignsAdd", { fg = green }) +set("GitSignsChange", { fg = yellow }) +set("GitSignsDelete", { fg = red }) +set("GitSignsAddLn", { fg = green }) +set("GitSignsChangeLn", { fg = yellow }) +set("GitSignsDeleteLn", { fg = red }) +set("GitSignsCurrentLineBlame", { fg = muted }) +set("SignAdd", { fg = green }) +set("SignChange", { fg = yellow }) +set("SignDelete", { fg = red }) + +-- ── Misc plugin UI ────────────────────────────────────────────────────── +set("TelescopeNormal", { fg = fg, bg = panel }) +set("TelescopeBorder", { fg = muted }) +set("TelescopePromptBorder", { fg = muted }) +set("TelescopeResultsBorder", { fg = muted }) +set("TelescopeTitle", { fg = yellow, bold = true }) +set("TelescopeSelection", { fg = bg, bg = blue }) +set("TelescopeMatching", { fg = yellow, bold = true }) + +set("WhichKey", { fg = fg }) +set("WhichKeyGroup", { fg = blue }) +set("WhichKeyDesc", { fg = fg }) +set("WhichKeySeparator", { fg = muted }) +set("WhichKeyFloat", { bg = panel }) +set("WhichKeyValue", { fg = muted }) + +set("CmpItemAbbr", { fg = fg }) +set("CmpItemAbbrDeprecated", { fg = muted, strikethrough = true }) +set("CmpItemAbbrMatch", { fg = yellow, bold = true }) +set("CmpItemKind", { fg = blue }) +set("CmpItemMenu", { fg = muted }) + +set("NvimTreeNormal", { fg = fg, bg = bg }) +set("NvimTreeIndentMarker", { fg = panel }) +set("NvimTreeFolderIcon", { fg = blue }) +set("NvimTreeOpenedFile", { fg = blue }) +set("NvimTreeGitDirty", { fg = yellow }) +set("NvimTreeGitNew", { fg = green }) +set("NvimTreeGitDeleted", { fg = red }) + +set("BufferLineFill", { bg = bg }) +set("BufferLineBackground", { fg = muted }) +set("BufferLineBufferSelected", { fg = fg, bold = true }) +set("BufferLineIndicatorSelected", { fg = blue }) +set("BufferLineTabSelected", { fg = blue, bold = true }) +set("BufferLineModified", { fg = yellow }) + +set("NeoTreeNormal", { fg = fg, bg = bg }) diff --git a/.config/wallust/templates/shell-colors.sh b/.config/wallust/templates/shell-colors.sh new file mode 100644 index 0000000..3cfb24d --- /dev/null +++ b/.config/wallust/templates/shell-colors.sh @@ -0,0 +1,20 @@ +# CUSTOM wallust shell template +color0={{color0}} +color1={{color1}} +color2={{color2}} +color3={{color3}} +color4={{color4}} +color5={{color5}} +color6={{color6}} +color7={{color7}} +color8={{color8}} +color9={{color9}} +color10={{color10}} +color11={{color11}} +color12={{color12}} +color13={{color13}} +color14={{color14}} +color15={{color15}} +background={{background}} +foreground={{foreground}} +cursor={{cursor}} diff --git a/.config/wallust/templates/vicinae-dark.toml b/.config/wallust/templates/vicinae-dark.toml new file mode 100644 index 0000000..5c2c9b3 --- /dev/null +++ b/.config/wallust/templates/vicinae-dark.toml @@ -0,0 +1,78 @@ +[meta] +name = "vicinae-wallust-dark" +description = "Wallust-generated dark theme for Vicinae" +variant = "dark" +inherits = "vicinae-dark" + +[colors.core] +accent = "{{color4}}" +accent_foreground = "{{background}}" +background = "{{background}}" +foreground = "{{foreground}}" +secondary_background = "{{color0}}" +border = "{{color8}}" + +[colors.main_window] +border = "{{color8}}" +footer = { background = "colors.core.secondary_background" } + +[colors.settings_window] +border = "{{color8}}" + +[colors.accents] +blue = "{{color4}}" +green = "{{color2}}" +magenta = "{{color5}}" +orange = "{{color1}}" +red = "{{color1}}" +yellow = "{{color3}}" +cyan = "{{color6}}" +purple = "{{color5}}" + +[colors.shortcut] +border = "colors.core.border" + +[colors.text] +default = "colors.core.foreground" +muted = "{{color7}}" +danger = "{{color1}}" +success = "{{color2}}" +placeholder = "{{color8}}" +selection = { background = "{{color4}}", foreground = "{{background}}" } + +[colors.text.links] +default = "{{color3}}" +visited = "{{color5}}" + +[colors.input] +border = "{{color8}}" +border_focus = "{{color4}}" +border_error = "{{color1}}" + +[colors.button.primary] +background = "{{color0}}" +foreground = "{{foreground}}" +hover = { background = "{{color8}}" } +focus = { outline = "colors.core.accent" } + +[colors.list.item.hover] +foreground = "{{foreground}}" +secondary_foreground = "{{color7}}" + +[colors.list.item.selection] +background = "{{color0}}" +foreground = "{{foreground}}" +secondary_background = "{{color0}}" +secondary_foreground = "{{color7}}" + +[colors.grid.item] +background = "{{color0}}" +hover = { outline = "{{foreground}}" } +selection = { outline = "{{foreground}}" } + +[colors.scrollbars] +background = "{{color8}}" + +[colors.loading] +bar = "{{color4}}" +spinner = "{{foreground}}" diff --git a/.config/wallust/templates/vicinae-light.toml b/.config/wallust/templates/vicinae-light.toml new file mode 100644 index 0000000..92516f8 --- /dev/null +++ b/.config/wallust/templates/vicinae-light.toml @@ -0,0 +1,78 @@ +[meta] +name = "vicinae-wallust-light" +description = "Wallust-generated light theme for Vicinae" +variant = "light" +inherits = "vicinae-light" + +[colors.core] +accent = "{{color4}}" +accent_foreground = "{{foreground}}" +background = "{{foreground}}" +foreground = "{{background}}" +secondary_background = "{{color7}}" +border = "{{color8}}" + +[colors.main_window] +border = "{{color8}}" +footer = { background = "colors.core.secondary_background" } + +[colors.settings_window] +border = "{{color8}}" + +[colors.accents] +blue = "{{color4}}" +green = "{{color2}}" +magenta = "{{color5}}" +orange = "{{color1}}" +red = "{{color1}}" +yellow = "{{color3}}" +cyan = "{{color6}}" +purple = "{{color5}}" + +[colors.shortcut] +border = "colors.core.border" + +[colors.text] +default = "colors.core.foreground" +muted = "{{color8}}" +danger = "{{color1}}" +success = "{{color2}}" +placeholder = "{{color7}}" +selection = { background = "{{color4}}", foreground = "{{foreground}}" } + +[colors.text.links] +default = "{{color3}}" +visited = "{{color5}}" + +[colors.input] +border = "{{color8}}" +border_focus = "{{color4}}" +border_error = "{{color1}}" + +[colors.button.primary] +background = "{{color7}}" +foreground = "{{background}}" +hover = { background = "{{color8}}" } +focus = { outline = "colors.core.accent" } + +[colors.list.item.hover] +foreground = "{{background}}" +secondary_foreground = "{{color8}}" + +[colors.list.item.selection] +background = "{{color7}}" +foreground = "{{background}}" +secondary_background = "{{color7}}" +secondary_foreground = "{{color8}}" + +[colors.grid.item] +background = "{{color7}}" +hover = { outline = "{{background}}" } +selection = { outline = "{{background}}" } + +[colors.scrollbars] +background = "{{color8}}" + +[colors.loading] +bar = "{{color4}}" +spinner = "{{background}}" diff --git a/.config/wallust/wallust.toml b/.config/wallust/wallust.toml new file mode 100644 index 0000000..d1e8925 --- /dev/null +++ b/.config/wallust/wallust.toml @@ -0,0 +1,11 @@ +backend = "fastresize" + +[templates] +nvim = { template = "nvim.lua", target = "~/.cache/wallust/colors/wallust.lua" } +foottheme = { template = "foot-colors-custom.ini", target = "~/.cache/wallust/foot-theme.ini" } +vicinae_dark = { template = "vicinae-dark.toml", target = "~/.cache/wallust/vicinae-dark.toml" } +vicinae_light = { template = "vicinae-light.toml", target = "~/.cache/wallust/vicinae-light.toml" } + +[hooks] +strip_foot_hash = "sed -i '/^[^#]/s/#//g' ~/.cache/wallust/foot-theme.ini" +symlink_vicinae = "mkdir -p ~/.local/share/vicinae/themes && ln -sf ~/.cache/wallust/vicinae-dark.toml ~/.local/share/vicinae/themes/vicinae-wallust-dark.toml && ln -sf ~/.cache/wallust/vicinae-light.toml ~/.local/share/vicinae/themes/vicinae-wallust-light.toml" diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..c20a95c --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,112 @@ +{ + "exclusive": true, + "reload_style_on_change": true, + "position": "top", + "margin-top": 0, + "spacing": 0, + "height": 0, + "margin-bottom": 0, + "modules-left": [ + "niri/workspaces", + "custom/separator", + "tray", + "custom/separator2", + "custom/separator5", + "custom/media", + "custom/separator6" + ], + "modules-center": ["custom/separator", "custom/clock", "custom/separator2"], + "modules-right": [ + "custom/separator", + "custom/separator3", + "custom/kbd", + "custom/separator3", + "pulseaudio", + "custom/separator3", + "memory", + "custom/separator2" + ], + "niri/workspaces": { + "disable-scroll": true, + "format": "{index}" + }, + "custom/separator": { + "format": "[", + "tooltip": false + }, + "custom/separator2": { + "format": "]", + "tooltip": false + }, + "custom/separator3": { + "format": "󰿟", + "tooltip": false + }, + "custom/separator5": { + "exec": "sh -c 'if pgrep -x cliamp >/dev/null || playerctl status 2>/dev/null | grep -qE \"Playing|Paused\"; then echo \"{\\\"text\\\":\\\"[\\\",\\\"class\\\":\\\"show\\\"}\"; else echo \"{\\\"text\\\":\\\"\\\",\\\"class\\\":\\\"hide\\\"}\"; fi'", + "return-type": "json", + "interval": 2, + "format": "{}" + }, + "custom/separator6": { + "exec": "sh -c 'if pgrep -x cliamp >/dev/null || playerctl status 2>/dev/null | grep -qE \"Playing|Paused\"; then echo \"{\\\"text\\\":\\\"]\\\",\\\"class\\\":\\\"show\\\"}\"; else echo \"{\\\"text\\\":\\\"\\\",\\\"class\\\":\\\"hide\\\"}\"; fi'", + "return-type": "json", + "interval": 2, + "format": "{}" + }, + + "memory": { + "interval": 2, + "format": "RAM {percentage:02}%", + "on-click": "foot btop", + "states": { + "warning": 50, + "critical": 80 + } + }, + "custom/kbd": { + "exec": "/home/seraphim/dotfiles-gentoo/waybar/.config/waybar/kbd-layout.sh", + "tooltip": false + }, + "custom/clock": { + "exec": "date +'%H:%M %p - %A, %b %d' | tr '[:upper:]' '[:lower:]'", + "interval": 1, + "tooltip": false + }, + "pulseaudio": { + "justify": "center", + "format": "vol {volume}%", + "on-click": "foot wiremix", + "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", + "tooltip-format": "Playing at {volume}%", + "scroll-step": 5, + "format-muted": "vol muted", + "format-icons": { + "headphone": "", + "default": ["", "", ""] + }, + "states": { + "warning": 50, + "critical": 10 + } + }, + "custom/media": { + "format": "{}", + "max-length": 30, + "interval": 2, + "exec": "playerctl metadata --format '{{ artist }} - {{ title }}' 2>/dev/null || echo \"\"", + "on-click": "playerctl play-pause" + }, +"tray": { + "icon-size": 14, + "spacing": 3 + }, + "custom/analyze-theme": { + "exec": "node /home/seraphim/dotfiles-gentoo/waybar/.config/waybar/custom/analyze-theme.js", + "interval": 5, + "tooltip": true, + "format": "{}", + "return-type": "json", + "on-click": "sh -c '~/.config/niri/apply-colors.sh \"$(find ~/Pictures/wallpapers -type f | shuf -n 1)\"'" + } +} diff --git a/.config/waybar/kbd-layout.sh b/.config/waybar/kbd-layout.sh new file mode 100755 index 0000000..e81462a --- /dev/null +++ b/.config/waybar/kbd-layout.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +# Kill any leftover instances so reloads don't pile up. +for p in $(pgrep -f "kbd-layout.sh"); do + [ "$p" != "$$" ] && kill "$p" 2>/dev/null +done + +STATE="${XDG_RUNTIME_DIR:-/tmp}/waybar-kbd.state" +rm -f "$STATE" + +# Index of the Russian layout (from configured layouts), so we don't hardcode order. +RUS_IDX=$(niri msg keyboard-layouts 2>/dev/null | grep -i russian | grep -oE '^[ *]*[0-9]+' | tr -d ' *' | head -1) + +kbd_query() { + niri msg keyboard-layouts 2>/dev/null | grep -Fm1 '*' | grep -qi russian && echo Ru || echo En +} + +# Parse a "Keyboard layout switched: N" or "...current_idx: N" event line. +kbd_event() { + idx=$(printf '%s' "$1" | grep -oE '[0-9]+' | tail -1) + [ "$idx" = "$RUS_IDX" ] && echo Ru || echo En +} + +emit() { + v="$1"; src="$2" + echo "$v" + echo "$v" > "$STATE" +} + +# Instant path: react to niri's layout-change events. +niri msg event-stream 2>/dev/null | { + while true; do + if IFS= read -r -t 0.2 line; then + case "$line" in + *"Keyboard layout switched"*|*"Keyboard layouts changed"*) emit "$(kbd_event "$line")" event ;; + esac + else + v=$(kbd_query) + [ "$(cat "$STATE" 2>/dev/null)" != "$v" ] && emit "$v" poll + fi + done +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..cf8dbee --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,166 @@ +@import "/home/seraphim/dotfiles-gentoo/waybar/.config/waybar/theme.css"; +@define-color bg @background; +@define-color fg @foreground; + +* { + border: none; + padding: 0px; + font-family: "JetBrains Mono Nerd Font"; + transition: background-color .3s ease-out; + font-weight: bold; + font-size: 12px; +} + +window#waybar { + background-color: transparent; +} + +#waybar > box { + border-radius: 0px; + border-bottom: 1.5px solid alpha(@foreground, 0.12); + margin: 0px 0px 2px 0px; + background-color: @background; + box-shadow: 0 1px 2px rgba(0, 0, 0, 1); + min-height: 25px; + transition-property: background-color; + transition-duration: .5s; +} + +.modules-left { + margin-left: 4px; +} + +.modules-right { + margin-right: 4px; +} + +#workspaces { + margin: 0px 0px; + transition: 0.1s ease-in-out; + padding: 0px 0px; +} + +#workspaces button { + all: initial; + padding: 0px 4px; + margin: 4px 2px; + min-width: 10px; + color: @foreground; + opacity: 1; + font-weight: 900; +} + +#workspaces button.active { + color: @background; + background-color: @foreground; + padding: 0px 4px; + margin: 4px 2px; + opacity: 1.0; +} + +#workspaces button.empty:hover, +#workspaces button:hover { + background: transparent; + color: alpha(@foreground, 1); + transition: all 150ms ease; + opacity: 0.75; +} + +#workspaces button.empty { + opacity: 0.4; + padding: 0px 4px; + margin: 4px 2px; + color: alpha(@foreground, 0.45); +} + +#workspaces button.empty.active { + opacity: 1; + background-color: @foreground; + color: @background; +} + +#memory, +#custom-media, +#custom-kbd, +#tray, +#cpu, +#custom-clock, +#bluetooth, +#pulseaudio { + min-width: 12px; + padding: 0 4px; + margin: 1px 3px 1px 3px; + opacity: 1; + color: @foreground; +} + +#tray { + opacity: 1; + padding-top: 2px; +} + +#custom-separator6, +#custom-separator5, +#custom-separator4, +#custom-separator3, +#custom-separator2, +#custom-separator { + opacity: 0.2; + padding-top: 2px; + padding-left: 2px; + padding-right: 2px; + font-size: 14px; +} + +tooltip { + padding: 2px; +} + +.hidden { + opacity: 0; +} + +tooltip { + padding: 4px; + background: @background; + font-size: 10px; + border: 1.5px solid alpha(@foreground, 0.6); + border-radius: 8px; +} + +tooltip label { + color: alpha(@foreground, 0.65); + font-weight: normal; +} + +#custom-media { + opacity: 1; + color: @foreground; + animation: repeat; + animation-name: blink; + animation-duration: 3s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +@keyframes blink { + to { + color: #999999; + } +} + +#pulseaudio.warning, +#memory.warning, +#cpu.warning { + color: alpha(@foreground, 0.65); + background-color: @background; +} + +#pulseaudio.critical, +#memory.critical, +#cpu.critical { + color: @foreground; + background-color: @background; + font-weight: 900; +} diff --git a/.config/waybar/theme-dark.css b/.config/waybar/theme-dark.css new file mode 100644 index 0000000..d88a91d --- /dev/null +++ b/.config/waybar/theme-dark.css @@ -0,0 +1,2 @@ +@define-color background #111111; +@define-color foreground #fafafa; diff --git a/.config/waybar/theme-light.css b/.config/waybar/theme-light.css new file mode 100644 index 0000000..b757ab6 --- /dev/null +++ b/.config/waybar/theme-light.css @@ -0,0 +1,2 @@ +@define-color background #fafafa; +@define-color foreground #111111; diff --git a/.config/waybar/theme.css b/.config/waybar/theme.css new file mode 120000 index 0000000..aea3c67 --- /dev/null +++ b/.config/waybar/theme.css @@ -0,0 +1 @@ +theme-dark.css \ No newline at end of file diff --git a/.config/xdg-desktop-portal/portals.conf b/.config/xdg-desktop-portal/portals.conf new file mode 100644 index 0000000..c651895 --- /dev/null +++ b/.config/xdg-desktop-portal/portals.conf @@ -0,0 +1,5 @@ +[preferred] +default=gtk +org.freedesktop.impl.portal.Settings=darkman +org.freedesktop.impl.portal.Screencast=wlr +org.freedesktop.impl.portal.Screenshot=wlr diff --git a/.config/yazi/keymap.toml b/.config/yazi/keymap.toml new file mode 100644 index 0000000..f275171 --- /dev/null +++ b/.config/yazi/keymap.toml @@ -0,0 +1,9 @@ +[[mgr.prepend_keymap]] +on = [ "" ] +run = 'shell -- dragon -i -T %s' +desc = "Drag and drop (dragon)" + +[[mgr.prepend_keymap]] +on = "y" +run = [ 'shell -- for path in %s; do echo "file://$path"; done | wl-copy -t text/uri-list', "yank" ] +desc = "Copy file URIs to clipboard" diff --git a/.config/yazi/yazi.toml b/.config/yazi/yazi.toml new file mode 100644 index 0000000..7f1fde1 --- /dev/null +++ b/.config/yazi/yazi.toml @@ -0,0 +1,2 @@ +[mgr] +show_hidden = true diff --git a/darkman/.config/darkman/config.yaml b/darkman/.config/darkman/config.yaml deleted file mode 100644 index ef00ec3..0000000 --- a/darkman/.config/darkman/config.yaml +++ /dev/null @@ -1,3 +0,0 @@ -portal: true -dbusserver: true -usegeoclue: false \ No newline at end of file diff --git a/doom/.config/doom/config.el b/doom/.config/doom/config.el deleted file mode 100644 index ce1b792..0000000 --- a/doom/.config/doom/config.el +++ /dev/null @@ -1,102 +0,0 @@ -;; Place your private configuration here! Remember, you do not need to run 'doom -;; sync' after modifying this file! - - -;; Some functionality uses this to identify you, e.g. GPG configuration, email -;; clients, file templates and snippets. It is optional. -;; (setq user-full-name "John Doe" -;; user-mail-address "john@doe.com") - -;; Doom exposes five (optional) variables for controlling fonts in Doom: -;; -;; - `doom-font' -- the primary font to use -;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable) -;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for -;; presentations or streaming. -;; - `doom-symbol-font' -- for symbols -;; - `doom-serif-font' -- for the `fixed-pitch-serif' face -;; -;; See 'C-h v doom-font' for documentation and more examples of what they -;; accept. For example: -;; -;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light) -;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13)) -;; -;; If you or Emacs can't find your font, use 'M-x describe-font' to look them -;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to -;; refresh your font settings. If Emacs still can't find your font, it likely -;; wasn't installed correctly. Font issues are rarely Doom issues! - -;; There are two ways to load a theme. Both assume the theme is installed and -;; available. You can either set `doom-theme' or manually load a theme with the -;; `load-theme' function. This is the default: -;; <----------------------------- Theme --------------------------------> -(setq doom-theme 'doom-tokyo-night) - -;; This determines the style of line numbers in effect. If set to `nil', line -;; numbers are disabled. For relative line numbers, set this to `relative'. -(setq display-line-numbers-type t) - -;; If you use `org' and don't want your org files in the default location below, -;; change `org-directory'. It must be set before org loads! -(setq org-directory "~/org/") - -;; Whenever you reconfigure a package, make sure to wrap your config in an -;; `with-eval-after-load' block, otherwise Doom's defaults may override your -;; settings. E.g. -;; -;; (with-eval-after-load 'PACKAGE -;; (setq x y)) -;; -;; The exceptions to this rule: -;; -;; - Setting file/directory variables (like `org-directory') -;; - Setting variables which explicitly tell you to set them before their -;; package is loaded (see 'C-h v VARIABLE' to look them up). -;; - Setting doom variables (which start with 'doom-' or '+'). -;; -;; Here are some additional functions/macros that will help you configure Doom. -;; -;; - `load!' for loading external *.el files relative to this one -;; - `add-load-path!' for adding directories to the `load-path', relative to -;; this file. Emacs searches the `load-path' when you load packages with -;; `require' or `use-package'. -;; - `map!' for binding new keys -;; -;; To get information about any of these functions/macros, move the cursor over -;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). -;; This will open documentation for it, including demos of how they are used. -;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces, -;; etc). -;; -;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how -;; Gcal setting -(setq doom-font (font-spec :family "JetBrains Mono" :size 16 :weight 'medium) - doom-variable-pitch-font (font-spec :family "JetBrains Mono" :size 16)) -(setq org-gcal-client-id "" - org-gcal-client-secret "" - org-gcal-fetch-file-alist '(("" . "~/org/gcal.org"))) -(setq org-agenda-files '("~/org/gcal.org")) - -;; Scroll fixing, 'cause it's broken a little bit. -(setq inhibit-compacting-font-caches t) -(setq scroll-conservatively 101 ; - scroll-margin 0 - auto-window-vscroll nil) - -;; Prevent PGTK 100% CPU core spinning on Wayland -;; Changed from nil to 0.001 to stop the event loop from going crazy -(when (boundp 'pgtk-wait-for-event-timeout) - (setq pgtk-wait-for-event-timeout 0.01)) - -;; Scroll settings (Consolidated) -;; Smooth scrolling is currently disabled to save CPU on your 180Hz monitor. -;; If you want smooth scrolling back, change -1 to 1 and change nil to t below. -(pixel-scroll-precision-mode -1) -(setq pixel-scroll-precision-mode nil) - -;; Reduce redraw frequency -(setq redisplay-dont-pause t - fast-but-imprecise-scrolling t) -;; (setq gc-cons-threshold 100000000) -(setq read-process-output-max (* 1024 1024)) ; 1MB diff --git a/doom/.config/doom/init.el b/doom/.config/doom/init.el deleted file mode 100644 index 91a3004..0000000 --- a/doom/.config/doom/init.el +++ /dev/null @@ -1,201 +0,0 @@ -;;; init.el -*- lexical-binding: t; -*- - -;; This file controls what Doom modules are enabled and what order they load -;; in. Remember to run 'doom sync' after modifying it! - -;; NOTE: Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's -;; documentation. There you'll find a link to Doom's Module Index where all of -;; our modules are listed, including what flags they support. - -;; NOTE: Move your cursor over a module's name (or its flags) and press 'K' (or -;; 'C-c c k' for non-vim users) to view its documentation. This works on flags -;; as well (those symbols that start with a plus). -;; -;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its -;; directory (for easy access to its source code). - -(doom! :input - ;;bidi ; (tfel ot) thgir etirw uoy gnipleh - ;;chinese - ;;japanese - ;;layout ; auie,ctsrnm is the superior home row - - :completion - ;;company ; the ultimate code completion backend - (corfu +orderless) ; complete with cap(f), cape and a flying feather! - ;;helm ; the *other* search engine for love and life - ;;ido ; the other *other* search engine... - ;;ivy ; a search engine for love and life - vertico ; the search engine of the future - - :ui - ;;deft ; notational velocity for Emacs - doom ; what makes DOOM look the way it does - dashboard ; a nifty splash screen for Emacs - ;;doom-quit ; DOOM quit-message prompts when you quit Emacs - ;;(emoji +unicode) ; 🙂 - hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW - ;;indent-guides ; highlighted indent columns - ;;ligatures ; ligatures and symbols to make your code pretty again - ;;minimap ; show a map of the code on the side - modeline ; snazzy, Atom-inspired modeline, plus API - ;;nav-flash ; blink cursor line after big motions - ;;neotree ; a project drawer, like NERDTree for vim - ophints ; highlight the region an operation acts on - (popup +defaults) ; tame sudden yet inevitable temporary windows - ;;smooth-scroll ; So smooth you won't believe it's not butter - ;;tabs ; a tab bar for Emacs - ;;treemacs ; a project drawer, like neotree but cooler - ;;unicode ; extended unicode support for various languages - (vc-gutter +pretty) ; vcs diff in the fringe - vi-tilde-fringe ; fringe tildes to mark beyond EOB - ;;window-select ; visually switch windows - workspaces ; tab emulation, persistence & separate workspaces - ;;zen ; distraction-free coding or writing - - :editor - (evil +everywhere); come to the dark side, we have cookies - file-templates ; auto-snippets for empty files - fold ; (nigh) universal code folding - ;;(format +onsave) ; automated prettiness - ;;god ; run Emacs commands without modifier keys - ;;lispy ; vim for lisp, for people who don't like vim - ;;multiple-cursors ; editing in many places at once - ;;objed ; text object editing for the innocent - ;;parinfer ; turn lisp into python, sort of - ;;rotate-text ; cycle region at point between text candidates - snippets ; my elves. They type so I don't have to - (whitespace +guess +trim) ; a butler for your whitespace - ;;word-wrap ; soft wrapping with language-aware indent - - :emacs - dired ; making dired pretty [functional] - electric ; smarter, keyword-based electric-indent - ;;eww ; the internet is gross - ;;ibuffer ; interactive buffer management - tramp ; remote files at your arthritic fingertips - undo ; persistent, smarter undo for your inevitable mistakes - vc ; version-control and Emacs, sitting in a tree - - :term - ;;eshell ; the elisp shell that works everywhere - ;;shell ; simple shell REPL for Emacs - ;;term ; basic terminal emulator for Emacs - vterm ; the best terminal emulation in Emacs - - :checkers - syntax ; tasing you for every semicolon you forget - (spell +flyspell) ; tasing you for misspelling mispelling - grammar ; tasing grammar mistake every you make - - :tools - ;;ansible - ;;biblio ; Writes a PhD for you (citation needed) - ;;collab ; buffers with friends - ;;debugger ; stepping through code, to help you add bugs - ;;direnv - ;;docker - ;;editorconfig ; let someone else argue about tabs vs spaces - ;;ein ; tame Jupyter notebooks with emacs - (eval +overlay) ; run code, run (also, repls) - lookup ; navigate your code and its documentation - ;;llm ; when I said you needed friends, I didn't mean... - ;;(lsp +eglot) ; M-x vscode - magit ; a git porcelain for Emacs - ;;make ; run make tasks from Emacs - ;;pass ; password manager for nerds - ;;pdf ; pdf enhancements - ;;terraform ; infrastructure as code - ;;tmux ; an API for interacting with tmux - ;;tree-sitter ; syntax and parsing, sitting in a tree... - ;;upload ; map local to remote projects via ssh/ftp - - :os - (:if (featurep :system 'macos) macos) ; improve compatibility with macOS - tty ; improve the terminal Emacs experience - - :lang - ;;ada ; In strong typing we (blindly) trust - ;;(agda +local) ; types of types of types of types... - ;;beancount ; mind the GAAP - (cc +lsp) ; C > C++ == 1 - ;;clojure ; java with a lisp - ;;common-lisp ; if you've seen one lisp, you've seen them all - ;;coq ; proofs-as-programs - ;;crystal ; ruby at the speed of c - ;;csharp ; unity, .NET, and mono shenanigans - ;;data ; config/data formats - ;;(dart +flutter) ; paint ui and not much else - ;;dhall - ;;elixir ; erlang done right - ;;elm ; care for a cup of TEA? - emacs-lisp ; drown in parentheses - ;;erlang ; an elegant language for a more civilized age - ;;ess ; emacs speaks statistics - ;;factor - ;;faust ; dsp, but you get to keep your soul - ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) - ;;fsharp ; ML stands for Microsoft's Language - ;;fstar ; (dependent) types and (monadic) effects and Z3 - ;;gdscript ; the language you waited for - ;;(go +lsp) ; the hipster dialect - ;;(graphql +lsp) ; Give queries a REST - ;;(haskell +lsp) ; a language that's lazier than I am - ;;hy ; readability of scheme w/ speed of python - ;;idris ; a language you can depend on - ;;json ; At least it ain't XML - ;;janet ; Fun fact: Janet is me! - ;;(java +lsp) ; the poster child for carpal tunnel syndrome - ;;javascript ; all(hope(abandon(ye(who(enter(here)))))) - ;;julia ; a better, faster MATLAB - ;;kotlin ; a better, slicker Java(Script) - ;;latex ; writing papers in Emacs has never been so fun - ;;lean ; for folks with too much to prove - ;;ledger ; be audit you can be - ;;lua ; one-based indices? one-based indices - markdown ; writing docs for people to ignore - ;;nim ; python + lisp at the speed of c - ;;nix ; I hereby declare "nix geht mehr!" - ;;ocaml ; an objective camel - ;;odin ; C, minus its footguns - (org +roam@) ; organize your plain life in plain text - ;;php ; perl's insecure younger brother - ;;plantuml ; diagrams for confusing people more - ;;graphviz ; diagrams for confusing yourself even more - ;;purescript ; javascript, but functional - python ; beautiful is better than ugly - ;;qt ; the 'cutest' gui framework ever - ;;racket ; a DSL for DSLs - ;;raku ; the artist formerly known as perl6 - ;;rest ; Emacs as a REST client - ;;rst ; ReST in peace - ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} - (rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() - ;;scad ; trust the preview, regret the render - ;;scala ; java, but good - ;;(scheme +guile) ; a fully conniving family of lisps - sh ; she sells {ba,z,fi}sh shells on the C xor - ;;sml - ;;solidity ; do you need a blockchain? No. - ;;swift ; who asked for emoji variables? - ;;terra ; Earth and Moon in alignment for performance. - ;;web ; the tubes - ;;yaml ; JSON, but readable - ;;zig ; C, but simpler - - - :email - ;;(mu4e +org +gmail) - ;;notmuch - ;;(wanderlust +gmail) - - :app - calendar - ;;emms - ;;everywhere ; *leave* Emacs!? You must be joking - ;;irc ; how neckbeards socialize - ;;(rss +org) ; emacs as an RSS reader - - :config - ;;literate - (default +bindings +smartparens)) diff --git a/doom/.config/doom/packages.el b/doom/.config/doom/packages.el deleted file mode 100644 index e50988d..0000000 --- a/doom/.config/doom/packages.el +++ /dev/null @@ -1,57 +0,0 @@ -;; -*- no-byte-compile: t; -*- -;;; $DOOMDIR/packages.el - -;; To install a package: -;; -;; 1. Declare them here in a `package!' statement, -;; 2. Run 'doom sync' in the shell, -;; 3. Restart Emacs. -;; -;; Use 'C-h f package\!' to look up documentation for the `package!' macro. - - -;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: -;; (package! some-package) - -;; To install a package directly from a remote git repo, you must specify a -;; `:recipe'. You'll find documentation on what `:recipe' accepts here: -;; https://github.com/radian-software/straight.el#the-recipe-format -;; (package! another-package -;; :recipe (:host github :repo "username/repo")) - -;; If the package you are trying to install does not contain a PACKAGENAME.el -;; file, or is located in a subdirectory of the repo, you'll need to specify -;; `:files' in the `:recipe': -;; (package! this-package -;; :recipe (:host github :repo "username/repo" -;; :files ("some-file.el" "src/lisp/*.el"))) - -;; If you'd like to disable a package included with Doom, you can do so here -;; with the `:disable' property: -;; (package! builtin-package :disable t) - -;; You can override the recipe of a built in package without having to specify -;; all the properties for `:recipe'. These will inherit the rest of its recipe -;; from Doom or MELPA/ELPA/Emacsmirror: -;; (package! builtin-package :recipe (:nonrecursive t)) -;; (package! builtin-package-2 :recipe (:repo "myfork/package")) - -;; Specify a `:branch' to install a package from a particular branch or tag. -;; This is required for some packages whose default branch isn't 'master' (which -;; our package manager can't deal with; see radian-software/straight.el#279) -;; (package! builtin-package :recipe (:branch "develop")) - -;; Use `:pin' to specify a particular commit to install. -;; (package! builtin-package :pin "1a2b3c4d5e") - - -;; Doom's packages are pinned to a specific commit and updated from release to -;; release. The `unpin!' macro allows you to unpin single packages... -;; (unpin! pinned-package) -;; ...or multiple packages -;; (unpin! pinned-package another-pinned-package) -;; ...Or *all* packages (NOT RECOMMENDED; will likely break things) -;; (unpin! t) -(package! org-gcal) -(package! calfw) -(package! calfw-org) diff --git a/doom/.config/doom/themes/noctalia-theme.el b/doom/.config/doom/themes/noctalia-theme.el deleted file mode 100644 index be14fda..0000000 --- a/doom/.config/doom/themes/noctalia-theme.el +++ /dev/null @@ -1,360 +0,0 @@ -;;; noctalia-theme.el --- Theme using Template SCSS variables -*- lexical-binding: t -*- - -;; Copyright (C) 2025 - -;; Author: Generated (Improved) -;; Version: 1.2 -;; Package-Requires: ((emacs "24.1")) -;; Keywords: faces - -;;; Commentary: - -;; A theme using Template SCSS variables with quality of life improvements: -;; - Better source block distinction -;; - Improved text visibility when selected -;; - Refined org-mode styling with hidden asterisks -;; - Enhanced contrast and readability -;; - Seamless integration of source blocks with consistent styling - -;;; Code: - -(deftheme noctalia "Theme using Template variables with quality of life improvements.") - -;; Define all the color variables (replaced by template processor) -(let* ((bg "#fef8f4") - (err "#ba1a1a") - (err-container "#ffdad6") - (on-background "#1d1b19") - (on-err "#ffffff") - (on-err-container "#93000a") - (on-primary "#ffffff") - (on-primary-container "#fffbff") - (on-secondary "#ffffff") - (on-secondary-container "#696456") - (on-surface "#1d1b19") - (on-surface-variant "#4a463d") - (on-tertiary "#ffffff") - (on-tertiary-container "#f9ffed") - (outline-color "#7b776c") - (outline-variant "#ccc6b9") - (primary "#645c3f") - (primary-container "#7e7456") - (secondary "#635e50") - (secondary-container "#eae2d0") - (shadow "#000000") - (surface "#fef8f4") - (surface-container "#f2ede9") - (surface-container-high "#ece7e3") - (surface-container-highest "#e6e2dd") - (surface-container-low "#f8f3ee") - (surface-container-lowest "#ffffff") - (surface-variant "#e9e2d4") - (tertiary "#54604a") - (tertiary-container "#6c7861") - ;; Map success colors to tertiary (as used in other templates) - (success "#54604a") - (on-success "#ffffff") - (success-container "#6c7861") - (on-success-container "#f9ffed") - ;; Map fixed colors to regular colors - (primary-fixed "#645c3f") - (primary-fixed-dim "#7e7456") - (secondary-fixed "#635e50") - (secondary-fixed-dim "#eae2d0") - (tertiary-fixed "#54604a") - (tertiary-fixed-dim "#6c7861") - (on-primary-fixed "#ffffff") - (on-primary-fixed-variant "#fffbff") - (on-secondary-fixed "#ffffff") - (on-secondary-fixed-variant "#696456") - (on-tertiary-fixed "#ffffff") - (on-tertiary-fixed-variant "#f9ffed") - ;; Map inverse colors to surface variants - (inverse-on-surface "#1d1b19") - (inverse-primary "#645c3f") - (inverse-surface "#fef8f4") - ;; ANSI terminal colors - (term0 "#e9e2d4") - (term1 "#ba1a1a") - (term2 "#645c3f") - (term3 "#635e50") - (term4 "#54604a") - (term5 "#7e7252") - (term6 "#797263") - (term7 "#1d1b19") - (term8 "#7b776c") - (term9 "#ba1a1a") - (term10 "#645c3f") - (term11 "#635e50") - (term12 "#54604a") - (term13 "#7e7252") - (term14 "#797263") - (term15 "#1d1b19")) - - (custom-theme-set-faces - 'noctalia - ;; Basic faces - `(default ((t (:background ,bg :foreground ,on-background)))) - `(cursor ((t (:background ,primary)))) - `(highlight ((t (:background ,surface-container-high)))) - `(region ((t (:background ,primary-container :foreground ,on-primary-container :extend t)))) - `(secondary-selection ((t (:background ,secondary-container :foreground ,on-secondary-container :extend t)))) - `(isearch ((t (:background ,tertiary-container :foreground ,on-tertiary-container :weight bold)))) - `(lazy-highlight ((t (:background ,secondary-container :foreground ,on-secondary-container)))) - `(vertical-border ((t (:foreground ,surface-variant)))) - `(border ((t (:background ,surface-variant :foreground ,surface-variant)))) - `(fringe ((t (:background ,surface :foreground ,outline-variant)))) - `(shadow ((t (:foreground ,outline-variant)))) - `(link ((t (:foreground ,primary :underline t)))) - `(link-visited ((t (:foreground ,tertiary :underline t)))) - `(success ((t (:foreground ,success)))) - `(warning ((t (:foreground ,secondary)))) - `(error ((t (:foreground ,err)))) - `(match ((t (:background ,secondary-container :foreground ,on-secondary-container)))) - - ;; Font-lock - `(font-lock-builtin-face ((t (:foreground ,primary)))) - `(font-lock-comment-face ((t (:foreground ,outline-color :slant italic)))) - `(font-lock-comment-delimiter-face ((t (:foreground ,outline-variant)))) - `(font-lock-constant-face ((t (:foreground ,tertiary :weight bold)))) - `(font-lock-doc-face ((t (:foreground ,on-surface-variant :slant italic)))) - `(font-lock-function-name-face ((t (:foreground ,primary :weight bold)))) - `(font-lock-keyword-face ((t (:foreground ,secondary :weight bold)))) - `(font-lock-string-face ((t (:foreground ,tertiary)))) - `(font-lock-type-face ((t (:foreground ,primary-fixed)))) - `(font-lock-variable-name-face ((t (:foreground ,on-surface)))) - `(font-lock-warning-face ((t (:foreground ,err :weight bold)))) - `(font-lock-preprocessor-face ((t (:foreground ,secondary-fixed-dim)))) - `(font-lock-negation-char-face ((t (:foreground ,tertiary-fixed)))) - - ;; Show paren - `(show-paren-match ((t (:background ,primary-container :foreground ,on-primary-container :weight bold)))) - `(show-paren-mismatch ((t (:background ,err-container :foreground ,on-err-container :weight bold)))) - - ;; Mode line - improved status bar styling - `(mode-line ((t (:background ,surface-container-high :foreground ,on-surface :box nil)))) - `(mode-line-inactive ((t (:background ,surface :foreground ,on-surface-variant :box nil)))) - `(mode-line-buffer-id ((t (:foreground ,primary :weight bold)))) - `(mode-line-emphasis ((t (:foreground ,primary :weight bold)))) - `(mode-line-highlight ((t (:foreground ,primary :box nil)))) - - ;; Improved Source blocks - make them integrated with the theme - `(org-block ((t (:background ,surface-container-low :extend t :inherit fixed-pitch)))) - `(org-block-begin-line ((t (:background ,surface-container-low :foreground ,primary-fixed-dim :extend t :slant italic :inherit fixed-pitch)))) - `(org-block-end-line ((t (:background ,surface-container-low :foreground ,primary-fixed-dim :extend t :slant italic :inherit fixed-pitch)))) - `(org-code ((t (:background ,surface-container-low :foreground ,tertiary-fixed :inherit fixed-pitch)))) - `(org-verbatim ((t (:background ,surface-container-low :foreground ,primary-fixed :inherit fixed-pitch)))) - `(org-meta-line ((t (:foreground ,outline-color :slant italic)))) - - ;; Org mode with hidden asterisks - `(org-level-1 ((t (:foreground ,primary :weight bold :height 1.2)))) - `(org-level-2 ((t (:foreground ,secondary :weight bold :height 1.1)))) - `(org-level-3 ((t (:foreground ,tertiary :weight bold)))) - `(org-level-4 ((t (:foreground ,primary :weight bold)))) - `(org-level-5 ((t (:foreground ,secondary :weight bold)))) - `(org-level-6 ((t (:foreground ,tertiary :weight bold)))) - `(org-level-7 ((t (:foreground ,primary :weight bold)))) - `(org-level-8 ((t (:foreground ,secondary :weight bold)))) - `(org-document-title ((t (:foreground ,primary :weight bold :height 1.3)))) - `(org-document-info ((t (:foreground ,primary-container)))) - `(org-todo ((t (:foreground ,err :weight bold)))) - `(org-done ((t (:foreground ,success :weight bold)))) - `(org-headline-done ((t (:foreground ,on-surface-variant)))) - `(org-hide ((t (:foreground ,bg)))) ;; Hide leading asterisks - `(org-ellipsis ((t (:foreground ,tertiary :underline nil)))) ;; Style for folded content indicator - `(org-table ((t (:foreground ,secondary-fixed :inherit fixed-pitch)))) - `(org-formula ((t (:foreground ,tertiary :inherit fixed-pitch)))) - `(org-checkbox ((t (:foreground ,primary :weight bold :inherit fixed-pitch)))) - `(org-date ((t (:foreground ,secondary-fixed :underline t)))) - `(org-special-keyword ((t (:foreground ,on-surface-variant :slant italic)))) - `(org-tag ((t (:foreground ,outline-color :weight normal)))) - - ;; Magit - `(magit-section-highlight ((t (:background ,surface-container-low)))) - `(magit-diff-hunk-heading ((t (:background ,surface-container :foreground ,on-surface-variant)))) - `(magit-diff-hunk-heading-highlight ((t (:background ,surface-container-high :foreground ,on-surface)))) - `(magit-diff-context ((t (:foreground ,on-surface-variant)))) - `(magit-diff-context-highlight ((t (:background ,surface-container-low :foreground ,on-surface)))) - `(magit-diff-added ((t (:background ,success-container :foreground ,on-success-container)))) - `(magit-diff-added-highlight ((t (:background ,success-container :foreground ,on-success-container :weight bold)))) - `(magit-diff-removed ((t (:background ,err-container :foreground ,on-err-container)))) - `(magit-diff-removed-highlight ((t (:background ,err-container :foreground ,on-err-container :weight bold)))) - `(magit-hash ((t (:foreground ,outline-color)))) - `(magit-branch-local ((t (:foreground ,tertiary :weight bold)))) - `(magit-branch-remote ((t (:foreground ,primary :weight bold)))) - - ;; Company - `(company-tooltip ((t (:background ,surface-container :foreground ,on-surface)))) - `(company-tooltip-selection ((t (:background ,primary-container :foreground ,on-primary-container)))) - `(company-tooltip-common ((t (:foreground ,primary)))) - `(company-tooltip-common-selection ((t (:foreground ,on-primary-container :weight bold)))) - `(company-tooltip-annotation ((t (:foreground ,tertiary)))) - `(company-scrollbar-fg ((t (:background ,primary)))) - `(company-scrollbar-bg ((t (:background ,surface-variant)))) - `(company-preview ((t (:foreground ,on-surface-variant :slant italic)))) - `(company-preview-common ((t (:foreground ,primary :slant italic)))) - - ;; Ido - `(ido-first-match ((t (:foreground ,primary :weight bold)))) - `(ido-only-match ((t (:foreground ,tertiary :weight bold)))) - `(ido-subdir ((t (:foreground ,secondary)))) - `(ido-indicator ((t (:foreground ,err)))) - `(ido-virtual ((t (:foreground ,outline-color)))) - - ;; Helm - `(helm-selection ((t (:background ,primary-container :foreground ,on-primary-container)))) - `(helm-match ((t (:foreground ,primary :weight bold)))) - `(helm-source-header ((t (:background ,surface-container-high :foreground ,primary :weight bold :height 1.1)))) - `(helm-candidate-number ((t (:foreground ,tertiary :weight bold)))) - `(helm-ff-directory ((t (:foreground ,primary :weight bold)))) - `(helm-ff-file ((t (:foreground ,on-surface)))) - `(helm-ff-executable ((t (:foreground ,tertiary)))) - - ;; corfu - `(corfu-default ((t (:background ,surface-container :foreground ,on-surface)))) - `(corfu-current ((t (:background ,primary-container :foreground ,on-primary-container)))) - - ;; Which-key - `(which-key-key-face ((t (:foreground ,primary :weight bold)))) - `(which-key-separator-face ((t (:foreground ,outline-variant)))) - `(which-key-command-description-face ((t (:foreground ,on-surface)))) - `(which-key-group-description-face ((t (:foreground ,secondary)))) - `(which-key-special-key-face ((t (:foreground ,tertiary :weight bold)))) - - ;; Line numbers - `(line-number ((t (:foreground ,outline-variant :inherit fixed-pitch)))) - `(line-number-current-line ((t (:foreground ,primary :weight bold :inherit fixed-pitch)))) - - ;; Parenthesis matching - `(sp-show-pair-match-face ((t (:background ,primary-container :foreground ,on-primary-container)))) - `(sp-show-pair-mismatch-face ((t (:background ,err-container :foreground ,on-err-container)))) - - ;; Rainbow delimiters - `(rainbow-delimiters-depth-1-face ((t (:foreground ,primary)))) - `(rainbow-delimiters-depth-2-face ((t (:foreground ,secondary)))) - `(rainbow-delimiters-depth-3-face ((t (:foreground ,tertiary)))) - `(rainbow-delimiters-depth-4-face ((t (:foreground ,primary-fixed)))) - `(rainbow-delimiters-depth-5-face ((t (:foreground ,secondary-fixed)))) - `(rainbow-delimiters-depth-6-face ((t (:foreground ,tertiary-fixed)))) - `(rainbow-delimiters-depth-7-face ((t (:foreground ,primary-fixed-dim)))) - `(rainbow-delimiters-depth-8-face ((t (:foreground ,secondary-fixed-dim)))) - `(rainbow-delimiters-depth-9-face ((t (:foreground ,tertiary-fixed-dim)))) - `(rainbow-delimiters-mismatched-face ((t (:foreground ,err :weight bold)))) - `(rainbow-delimiters-unmatched-face ((t (:foreground ,err :weight bold)))) - - ;; Dired - `(dired-directory ((t (:foreground ,primary :weight bold)))) - `(dired-ignored ((t (:foreground ,outline-variant)))) - `(dired-flagged ((t (:foreground ,err)))) - `(dired-marked ((t (:foreground ,tertiary :weight bold)))) - `(dired-symlink ((t (:foreground ,secondary :slant italic)))) - `(dired-header ((t (:foreground ,primary :weight bold :height 1.1)))) - - ;; Terminal colors - `(term-color-black ((t (:foreground ,term0 :background ,term0)))) - `(term-color-red ((t (:foreground ,term1 :background ,term1)))) - `(term-color-green ((t (:foreground ,term2 :background ,term2)))) - `(term-color-yellow ((t (:foreground ,term3 :background ,term3)))) - `(term-color-blue ((t (:foreground ,term4 :background ,term4)))) - `(term-color-magenta ((t (:foreground ,term5 :background ,term5)))) - `(term-color-cyan ((t (:foreground ,term6 :background ,term6)))) - `(term-color-white ((t (:foreground ,term7 :background ,term7)))) - - ;; EShell - `(eshell-prompt ((t (:foreground ,primary :weight bold)))) - `(eshell-ls-directory ((t (:foreground ,primary :weight bold)))) - `(eshell-ls-symlink ((t (:foreground ,secondary :slant italic)))) - `(eshell-ls-executable ((t (:foreground ,tertiary)))) - `(eshell-ls-archive ((t (:foreground ,on-tertiary-container)))) - `(eshell-ls-backup ((t (:foreground ,outline-variant)))) - `(eshell-ls-clutter ((t (:foreground ,err)))) - `(eshell-ls-missing ((t (:foreground ,err)))) - `(eshell-ls-product ((t (:foreground ,on-surface-variant)))) - `(eshell-ls-readonly ((t (:foreground ,on-surface-variant)))) - `(eshell-ls-special ((t (:foreground ,secondary-fixed)))) - `(eshell-ls-unreadable ((t (:foreground ,outline-variant)))) - - ;; Improved markdown mode - `(markdown-header-face ((t (:foreground ,primary :weight bold)))) - `(markdown-header-face-1 ((t (:foreground ,primary :weight bold :height 1.2)))) - `(markdown-header-face-2 ((t (:foreground ,primary-container :weight bold :height 1.1)))) - `(markdown-header-face-3 ((t (:foreground ,secondary :weight bold)))) - `(markdown-header-face-4 ((t (:foreground ,secondary-container :weight bold)))) - `(markdown-inline-code-face ((t (:foreground ,tertiary-fixed :background ,surface-container-low :inherit fixed-pitch)))) - `(markdown-code-face ((t (:background ,surface-container-low :extend t :inherit fixed-pitch)))) - `(markdown-pre-face ((t (:background ,surface-container-low :inherit fixed-pitch)))) - `(markdown-table-face ((t (:foreground ,secondary-fixed :inherit fixed-pitch)))) - - ;; Web mode - `(web-mode-html-tag-face ((t (:foreground ,primary)))) - `(web-mode-html-tag-bracket-face ((t (:foreground ,on-surface-variant)))) - `(web-mode-html-attr-name-face ((t (:foreground ,secondary)))) - `(web-mode-html-attr-value-face ((t (:foreground ,tertiary)))) - `(web-mode-css-selector-face ((t (:foreground ,primary)))) - `(web-mode-css-property-name-face ((t (:foreground ,secondary)))) - `(web-mode-css-string-face ((t (:foreground ,tertiary)))) - - ;; Flycheck - `(flycheck-error ((t (:underline (:style wave :color ,err))))) - `(flycheck-warning ((t (:underline (:style wave :color ,secondary))))) - `(flycheck-info ((t (:underline (:style wave :color ,tertiary))))) - `(flycheck-fringe-error ((t (:foreground ,err)))) - `(flycheck-fringe-warning ((t (:foreground ,secondary)))) - `(flycheck-fringe-info ((t (:foreground ,tertiary)))) - - ;; Mini-buffer customization - `(minibuffer-prompt ((t (:foreground ,primary :weight bold)))) - - ;; Improved search highlighting - `(lsp-face-highlight-textual ((t (:background ,primary-container :foreground ,on-primary-container :weight bold)))) - `(lsp-face-highlight-read ((t (:background ,secondary-container :foreground ,on-secondary-container :weight bold)))) - `(lsp-face-highlight-write ((t (:background ,tertiary-container :foreground ,on-tertiary-container :weight bold)))) - - ;; Info and help modes - `(info-title-1 ((t (:foreground ,primary :weight bold :height 1.3)))) - `(info-title-2 ((t (:foreground ,primary-container :weight bold :height 1.2)))) - `(info-title-3 ((t (:foreground ,secondary :weight bold :height 1.1)))) - `(info-title-4 ((t (:foreground ,secondary-container :weight bold)))) - `(Info-quoted ((t (:foreground ,tertiary)))) - `(info-menu-header ((t (:foreground ,primary :weight bold)))) - `(info-menu-star ((t (:foreground ,primary)))) - `(info-node ((t (:foreground ,tertiary :weight bold)))) - - ;; Tabs - `(tab-bar ((t (:background ,surface-container-high :foreground ,on-surface :box nil)))) - `(tab-bar-tab ((t (:background ,surface-container-high :foreground ,on-surface :weight bold :box nil)))) - `(tab-bar-tab-inactive ((t (:background ,surface :foreground ,on-surface-variant :box nil)))) - - `(tab-line ((t (:background ,surface-container-high :foreground ,on-surface :box nil)))) - `(tab-line-tab ((t (:background ,surface :foreground ,on-surface-variant :box nil)))) - `(tab-line-tab-current ((t (:background ,surface-container-high :foreground ,on-surface :weight bold :box nil)))) - `(tab-line-tab-inactive ((t (:background ,surface :foreground ,on-surface-variant :box nil)))) - `(tab-line-highlight ((t (:background ,surface-container-highest :foreground ,on-surface)))) - - `(centaur-tabs-default ((t (:background ,surface-container-high :foreground ,on-surface)))) - `(centaur-tabs-selected ((t (:background ,surface-container-high :foreground ,on-surface :weight bold)))) - `(centaur-tabs-unselected ((t (:background ,surface :foreground ,on-surface-variant)))) - `(centaur-tabs-selected-modified ((t (:background ,surface-container-high :foreground ,tertiary :weight bold)))) - `(centaur-tabs-unselected-modified ((t (:background ,surface :foreground ,tertiary)))) - `(centaur-tabs-active-bar-face ((t (:background ,primary)))) - - ;; Fixed-pitch faces - `(fixed-pitch ((t (:family "monospace")))) - `(fixed-pitch-serif ((t (:family "monospace serif")))) - - ;; Variable-pitch face - `(variable-pitch ((t (:family "sans serif")))) - )) - -;; Add org-mode hooks for hiding leading stars -(with-eval-after-load 'org - (setq org-hide-leading-stars t) - (setq org-startup-indented t)) - -;;;###autoload -(when load-file-name - (add-to-list 'custom-theme-load-path - (file-name-as-directory (file-name-directory load-file-name)))) - -(provide-theme 'noctalia) -;;; noctalia-theme.el ends here diff --git a/foot/.config/foot/foot.ini b/foot/.config/foot/foot.ini deleted file mode 100644 index 2a81398..0000000 --- a/foot/.config/foot/foot.ini +++ /dev/null @@ -1,26 +0,0 @@ -[main] -include=~/.cache/wallust/foot-theme.ini -font=JetBrainsMono Nerd Font:size=13 -pad=0x0 - -# paste the rest of your theme colors here - -[cursor] -style=block -blink=yes - -[mouse] -hide-when-typing=yes - -[scrollback] -lines=10000 -multiplier=1.5 - -[key-bindings] -clipboard-copy=Control+Shift+c Control+Insert -clipboard-paste=Control+Shift+v Shift+Insert -primary-paste=none - -search-start=Control+Shift+f -spawn-terminal=Control+Shift+Return - diff --git a/gtk/.config/gtk-3.0/settings-dark.ini b/gtk/.config/gtk-3.0/settings-dark.ini deleted file mode 100644 index 0f580e6..0000000 --- a/gtk/.config/gtk-3.0/settings-dark.ini +++ /dev/null @@ -1,2 +0,0 @@ -[Settings] -gtk-application-prefer-dark-theme=1 \ No newline at end of file diff --git a/gtk/.config/gtk-3.0/settings-light.ini b/gtk/.config/gtk-3.0/settings-light.ini deleted file mode 100644 index d9938f7..0000000 --- a/gtk/.config/gtk-3.0/settings-light.ini +++ /dev/null @@ -1,2 +0,0 @@ -[Settings] -gtk-application-prefer-dark-theme=0 \ No newline at end of file diff --git a/gtk/.config/gtk-3.0/settings.ini b/gtk/.config/gtk-3.0/settings.ini deleted file mode 120000 index 4e1634f..0000000 --- a/gtk/.config/gtk-3.0/settings.ini +++ /dev/null @@ -1 +0,0 @@ -settings-light.ini \ No newline at end of file diff --git a/install.sh b/install.sh index 94d4e27..bc33b46 100755 --- a/install.sh +++ b/install.sh @@ -5,11 +5,10 @@ REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" TMP_ERR="$(mktemp)" trap 'rm -f "$TMP_ERR"' EXIT -# Packages whose config lives in a well-formed directory (stowable from repo root) -STOW_PKGS=( - darkman doom fastfetch foot gtk matugen mpv niri nvim rmpc starship - tmux vicinae wallust waybar xdg-desktop-portal yazi zshrc -) +# The .config tree is stowed into $HOME/.config +CONFIG_PKG=".config" +# Remaining home-dotfile packages (stowed into $HOME) +HOME_PKGS=( zshrc ) # Empty portage dirs, recreated because git does not track empty directories PORTAGE_EMPTY_DIRS=( @@ -44,7 +43,19 @@ need_stow() { stow_dotfiles() { cd "$REPO_DIR" local ok=0 fail=0 - for pkg in "${STOW_PKGS[@]}"; do + + # .config package -> ~/.config + if stow -R -v -t "$HOME/.config" "$CONFIG_PKG" >"$TMP_ERR" 2>&1; then + printf ' %s\n' "$(grep '^LINK' "$TMP_ERR" || true)" + ok=$((ok + 1)) + else + warn "stow '$CONFIG_PKG' (-> \$HOME/.config) failed — resolve manually:" + sed 's/^/ /' "$TMP_ERR" || true + fail=$((fail + 1)) + fi + + # remaining home-dotfile packages -> ~ + for pkg in "${HOME_PKGS[@]}"; do if [[ ! -d "$pkg" ]]; then warn "package dir '$pkg' missing — skipped" continue diff --git a/matugen/.config/matugen/config.toml b/matugen/.config/matugen/config.toml deleted file mode 100644 index 9b72eee..0000000 --- a/matugen/.config/matugen/config.toml +++ /dev/null @@ -1,8 +0,0 @@ -[config] -# Disable caching so the -m light/dark mode flag is always respected. -caching = false -version_check = false - -[templates.niri] -input_path = './templates/niri.kdl' -output_path = '/home/seraphim/.cache/matugen/theme.kdl' diff --git a/matugen/.config/matugen/templates/niri.kdl b/matugen/.config/matugen/templates/niri.kdl deleted file mode 100644 index afc1f04..0000000 --- a/matugen/.config/matugen/templates/niri.kdl +++ /dev/null @@ -1,6 +0,0 @@ -layout { - focus-ring { - active-color "{{ colors.primary.default.hex }}" - inactive-color "{{ colors.outline.default.hex }}" - } -} diff --git a/mpv/.config/mpv/mpv.conf b/mpv/.config/mpv/mpv.conf deleted file mode 100644 index 8311c18..0000000 --- a/mpv/.config/mpv/mpv.conf +++ /dev/null @@ -1,7 +0,0 @@ -volume=30 -ytdl-raw-options-append=cookies=/home/seraphim/Documents/yt-dlp-things/cookies.txt -#ytdl-raw-options-append=cookies-from-browser=chromium+gnomekeyring -ytdl-raw-options-append=write-subs= -ytdl-raw-options-append=write-auto-subs= -ytdl-raw-options-append=sub-langs=en,en-US,en-GB -slang=en,eng diff --git a/niri/.config/niri/apply-colors.sh b/niri/.config/niri/apply-colors.sh deleted file mode 100755 index 505578c..0000000 --- a/niri/.config/niri/apply-colors.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -# Apply a wallpaper and generate colors with wallust (16-color palette) + matugen (Material You / M3). -# Usage: apply-colors.sh [light|dark] -# Called by theme-switcher.sh and the waybar random-wallpaper click. - -set -euo pipefail - -SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)" -IMG="${1:-}" -MODE="${2:-auto}" -LOG="${THEME_LOG:-/tmp/theme-switcher.log}" - -log() { - printf '%s %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >>"$LOG" -} - -# Record the exact failing command + line on any error. -trap 'log "apply-colors FAILED (exit $?) in ${BASH_SOURCE[0]}:$LINENO: $BASH_COMMAND"' ERR - -if [ -z "$IMG" ] || [ ! -f "$IMG" ]; then - echo "usage: $0 [light|dark]" >&2 - exit 1 -fi - -# wait for the awww daemon to be ready (it is spawned next to this script at login) -log "awww img $IMG" -for _ in $(seq 1 10); do - if awww query >/dev/null 2>&1; then - break - fi - sleep 1 -done - -# set the wallpaper FIRST and unconditionally — this is the critical, must-work -# step. Color generation below is best-effort: a failure there must never block -# the wallpaper from changing (that coupling is what froze the wallpaper before). -awww img "$IMG" || { log "awww img FAILED ($IMG)"; exit 1; } - -# blurred copy for the Overview backdrop (sibling or on-the-fly generation) -"$SCRIPT_DIR/set-backdrop.sh" "$IMG" || log "set-backdrop FAILED ($IMG)" - -# wallust: classic 16-color palette (foot, btop, ...) -# fastresize (the config default) is flaky on some images — always use resized. -# Best-effort: a wallust failure must not prevent the wallpaper from sticking. -log "wallust palette=$MODE $IMG" -case "$MODE" in -light|dark) WALLUST_PALETTE=("--palette" "$MODE") ;; -*) WALLUST_PALETTE=() ;; -esac -# wallust's `resized` backend is intermittently flaky on some images; retry a -# few times, but ultimately tolerate failure. -ok=0 -for attempt in 1 2 3; do - if wallust run -b resized "${WALLUST_PALETTE[@]}" "$IMG"; then - ok=1 - break - fi - log "wallust attempt $attempt FAILED ($IMG, mode=$MODE)" - [ "$attempt" -lt 3 ] && sleep 2 -done -if [ "$ok" -ne 1 ]; then - log "wallust FAILED after 3 attempts ($IMG, mode=$MODE) — continuing without wallust colors" -else - # foot needs bare RRGGBB, not #RRGGBB — strip the leading '#' - sed -i 's/#\([0-9a-fA-F]\)/\1/g' ~/.cache/wallust/foot-theme.ini 2>/dev/null || true -fi - -# matugen: Material You / M3 colors (niri focus ring, ...) -# --prefer is required for non-interactive runs (multiple source colors). -# Best-effort: a matugen failure (e.g. bad config after an upgrade) must not -# block the wallpaper. -log "matugen mode=$MODE $IMG" -case "$MODE" in -light) matugen image "$IMG" -m "light" --prefer saturation ;; -dark) matugen image "$IMG" -m "dark" --prefer saturation ;; -*) matugen image "$IMG" --prefer saturation ;; -esac || log "matugen FAILED ($IMG, mode=$MODE) — continuing without matugen colors" - -# reload consumers -killall -SIGUSR2 waybar 2>/dev/null || true -killall -USR1 foot 2>/dev/null || true -niri msg action load-config-file 2>/dev/null || true - -log "apply-colors OK ($IMG, $MODE)" diff --git a/niri/.config/niri/config.kdl b/niri/.config/niri/config.kdl deleted file mode 100644 index 24b0896..0000000 --- a/niri/.config/niri/config.kdl +++ /dev/null @@ -1,321 +0,0 @@ -include optional=true "/home/seraphim/.cache/matugen/theme.kdl" -spawn-at-startup "mako" -spawn-at-startup "xrdb" "-merge" "/home/seraphim/.Xresources" -spawn-at-startup "vicinae" "server" -spawn-at-startup "gentoo-pipewire-launcher" -spawn-at-startup "telegram-desktop" "-autostart" "--minimized" -spawn-at-startup "keepassxc" "--minimized" -spawn-at-startup "awww-daemon" -spawn-at-startup "awww-daemon" "--namespace" "backdrop" -spawn-at-startup "/usr/libexec/hyprpolkitagent" -spawn-at-startup "dbus-update-activation-environment" "WAYLAND_DISPLAY" "DISPLAY" "XDG_CURRENT_DESKTOP" -spawn-at-startup "darkman" "run" -spawn-at-startup "/home/seraphim/dotfiles-gentoo/niri/.config/niri/theme-switcher.sh" "--daemon" -spawn-at-startup "sh" "-c" "NO_AT_BRIDGE=1 waybar" -spawn-at-startup "/usr/bin/Throne" -spawn-at-startup "mpd" -prefer-no-csd -screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" - -environment { - OZONE_PLATFORM "wayland" - ELECTRON_OZONE_PLATFORM_HINT "auto" - XDG_CURRENT_DESKTOP "niri" -} -blur { - passes 4 - offset 5.0 - noise 0.02 - saturation 1.1 -} - -// awww-daemon --namespace backdrop: pre-blurred wallpaper shown in the -// Overview backdrop. niri cannot blur a backdrop surface itself. -layer-rule { - match namespace="^awww-daemonbackdrop$" - place-within-backdrop true -} -input { - focus-follows-mouse max-scroll-amount="100%" - - keyboard { - xkb { - layout "us,ru" - options "grp:lalt_lshift_toggle,compose:ralt,ctrl:nocaps" - } - repeat-delay 300 - repeat-rate 60 - numlock - } - - mouse { - accel-speed -0.8 - accel-profile "flat" - } -} - -output "DP-2" { - mode "2560x1440" - scale 1.5 - position x=0 y=0 -} - -output "HDMI-A-1" { - mode "1920x1080@71.910" - scale 1 -} - -layout { - gaps 0.5 - center-focused-column "never" - - preset-column-widths { - proportion 0.33333 - proportion 0.5 - proportion 0.66667 - } - - default-column-width { proportion 0.5; } - - focus-ring { - width 2 - } - - border { - off //width 0.5 - //active-color "#ffc87f" - //inactive-color "#505050" - //urgent-color "#9b0000" - } - - shadow { - off - //softness 30 - //spread 5 - //offset x=0 y=5 - //color "#0007" - } -} - -animations { - workspace-switch { - duration-ms 275 - curve "ease-out-cubic" - } - horizontal-view-movement { - spring damping-ratio=1.0 stiffness=800 epsilon=0.0001 - } - window-movement { - spring damping-ratio=1.0 stiffness=800 epsilon=0.0001 - } -// window-open { -// duration-ms 150 -// curve "ease-out-expo" -// } -// window-close { -// duration-ms 150 -// curve "ease-out-quad" -// } - window-resize { - spring damping-ratio=1.0 stiffness=800 epsilon=0.0001 - } - overview-open-close { - duration-ms 150 - curve "ease-out-quad" - } -} - -window-rule { - match app-id=r#"^org\.wezfurlong\.wezterm$"# - geometry-corner-radius 12 - clip-to-geometry true - background-effect { - xray false - } -} - -// Helium PiP fix -window-rule { - match app-id=r#"helium$"# title="^Picture-in-Picture$" - open-floating true - geometry-corner-radius 9000 - clip-to-geometry true - shadow { - off - } -} - -// Steam notifs fix -window-rule { - match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"# - open-floating true - open-focused false - default-floating-position x=16 y=16 relative-to="bottom-right" -} - -gestures { - hot-corners { - off - } -} - -cursor { - xcursor-theme "Bibata-Modern-Classic" - xcursor-size 15 -} - -overview { - zoom 0.5 - workspace-shadow { - off - //softness 15 - //spread 3 - //offset x=0 y=6 - //color "#00000080" - } -} -debug { - honor-xdg-activation-with-invalid-serial -} -binds { - // Application Launchers - Mod+Shift+T { spawn "telegram-desktop"; } - Mod+Shift+B { spawn "/opt/helium/helium" "--enable-features=UseOzonePlatform" "--ozone-platform=wayland"; } - Mod+D { spawn "vicinae" "toggle"; } - Mod+Ctrl+V { spawn "vicinae" "deeplink" "vicinae://launch/clipboard/history"; } - Mod+T hotkey-overlay-title="File Manager" { spawn "foot" "-e" "yazi"; } - Mod+Alt+R { spawn "foot" "-e" "rmpc"; } - Mod+S hotkey-overlay-title="Terminal" { spawn "foot"; } - Super+Alt+L hotkey-overlay-title="Lock Screen" { spawn "swaylock"; } - - // Audio & Media Controls - XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; } - XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } - XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } - XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } - - XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; } - XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; } - XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; } - XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; } - - // universal clipboard hotkeys (super + c / v / x) - mod+c { spawn-sh "sleep 0.001 && wtype -M ctrl -k insert -m ctrl"; } - mod+v { spawn-sh "sleep 0.001 && wtype -M shift -k insert -m shift"; } - mod+x { spawn-sh "sleep 0.001 && wtype -M shift -k delete -m shift"; } - - // Window Management & Views - Mod+Tab repeat=false { toggle-overview; } - Mod+Grave repeat=false { toggle-overview; } - Mod+W repeat=false { close-window; } - Mod+F { maximize-column; } - Mod+Shift+F { fullscreen-window; } - Mod+Ctrl+F { maximize-window-to-edges; } - //Mod+Ctrl+F { expand-column-to-available-width; } - Mod+Ctrl+C { center-visible-columns; } - Mod+Shift+V { toggle-window-floating; } - Mod+Q { toggle-column-tabbed-display; } - - // Focus Navigation - Mod+Left { focus-column-left; } - Mod+Down { focus-window-down; } - Mod+Up { focus-window-up; } - Mod+Right { focus-column-right; } - Mod+H { focus-column-left; } - Mod+J { focus-window-down; } - Mod+K { focus-window-up; } - Mod+L { focus-column-right; } - Mod+Shift+WheelScrollUp { focus-monitor-left; } - Mod+Shift+WheelScrollDown { focus-monitor-right; } - - // Window Movement - Mod+Ctrl+Left { move-column-left; } - Mod+Ctrl+Down { move-window-down; } - Mod+Ctrl+Up { move-window-up; } - Mod+Ctrl+Right { move-column-right; } - Mod+Ctrl+H { move-column-left; } - Mod+Ctrl+J { move-window-down; } - Mod+Ctrl+K { move-window-up; } - Mod+Ctrl+L { move-column-right; } - - Mod+Home { focus-column-first; } - Mod+End { focus-column-last; } - Mod+Ctrl+Home { move-column-to-first; } - Mod+Ctrl+End { move-column-to-last; } - - // Monitor Focus & Movement - Mod+Shift+1 { focus-monitor-left; } - Mod+Shift+2 { focus-monitor-right; } - Mod+Shift+Left { focus-monitor-left; } - Mod+Shift+Down { focus-monitor-down; } - Mod+Shift+Up { focus-monitor-up; } - Mod+Shift+Right { focus-monitor-right; } - Mod+Shift+H { focus-monitor-left; } - Mod+Shift+J { focus-monitor-down; } - Mod+Shift+K { focus-monitor-up; } - Mod+Shift+L { focus-monitor-right; } - - Mod+Shift+Ctrl+1 { move-column-to-monitor-left; } - Mod+Shift+Ctrl+2 { move-column-to-monitor-right; } - Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } - Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } - Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } - Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } - Mod+Shift+Ctrl+H { move-column-to-monitor-left; } - Mod+Shift+Ctrl+J { move-column-to-monitor-down; } - Mod+Shift+Ctrl+K { move-column-to-monitor-up; } - Mod+Shift+Ctrl+L { move-column-to-monitor-right; } - - // Workspace Navigation - Mod+Shift+Page_Down { move-workspace-down; } - Mod+Shift+Page_Up { move-workspace-up; } - Mod+Shift+U { move-workspace-down; } - Mod+Shift+I { move-workspace-up; } - - // Direct Workspace Switching (1-9) - Mod+1 { focus-workspace 1; } - Mod+2 { focus-workspace 2; } - Mod+3 { focus-workspace 3; } - Mod+4 { focus-workspace 4; } - Mod+5 { focus-workspace 5; } - Mod+6 { focus-workspace 6; } - Mod+7 { focus-workspace 7; } - Mod+8 { focus-workspace 8; } - Mod+9 { focus-workspace 9; } - - Mod+Ctrl+1 { move-column-to-workspace 1; } - Mod+Ctrl+2 { move-column-to-workspace 2; } - Mod+Ctrl+3 { move-column-to-workspace 3; } - Mod+Ctrl+4 { move-column-to-workspace 4; } - Mod+Ctrl+5 { move-column-to-workspace 5; } - Mod+Ctrl+6 { move-column-to-workspace 6; } - Mod+Ctrl+7 { move-column-to-workspace 7; } - Mod+Ctrl+8 { move-column-to-workspace 8; } - Mod+Ctrl+9 { move-column-to-workspace 9; } - - // Column & Window Sizing - Mod+BracketLeft { consume-or-expel-window-left; } - Mod+BracketRight { consume-or-expel-window-right; } - - Mod+R { switch-preset-column-width; } - Mod+Shift+R { switch-preset-column-width-back; } - Mod+Ctrl+Shift+R { switch-preset-window-height; } - Mod+Ctrl+R { reset-window-height; } - - Mod+Minus { set-column-width "-10%"; } - Mod+Equal { set-column-width "+10%"; } - Mod+Shift+Minus { set-window-height "-10%"; } - Mod+Shift+Equal { set-window-height "+10%"; } - - // Mouse Wheel Bindings - Mod+WheelScrollUp { focus-column-left; } - Mod+WheelScrollDown { focus-column-right; } - - // Screenshots - Print { screenshot; } - Ctrl+Print { screenshot-screen; } - Alt+Print { screenshot-window; } - - // System Control - Mod+Shift+E { quit; } -} diff --git a/niri/.config/niri/set-backdrop.sh b/niri/.config/niri/set-backdrop.sh deleted file mode 100755 index efd02b3..0000000 --- a/niri/.config/niri/set-backdrop.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -# Push a blurred copy of a wallpaper to the awww-daemon backdrop namespace. -# Prefers a pre-made -blur. sibling; otherwise generates one into the cache. -# Used by theme-switcher.sh and apply-colors.sh for the niri Overview backdrop. - -set -euo pipefail - -IMG="${1:-}" -if [ -z "$IMG" ] || [ ! -f "$IMG" ]; then - echo "usage: $0 " >&2 - exit 1 -fi - -EXT="${IMG##*.}" -SIBLING="${IMG%.*}-blur.${EXT}" -if [ -f "$SIBLING" ]; then - BLURRED="$SIBLING" -else - CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/niri-backdrop" - mkdir -p "$CACHE_DIR" - BASE=$(basename "${IMG%.*}") - BLURRED="$CACHE_DIR/${BASE}-blur.jpg" - if [ ! -f "$BLURRED" ] || [ "$IMG" -nt "$BLURRED" ]; then - magick "$IMG" -blur 0x16 -quality 90 "$BLURRED" - fi -fi - -awww img "$BLURRED" -n backdrop -echo "$BLURRED" >/tmp/current_backdrop_state \ No newline at end of file diff --git a/niri/.config/niri/theme-switcher.sh b/niri/.config/niri/theme-switcher.sh deleted file mode 100755 index 6d1f548..0000000 --- a/niri/.config/niri/theme-switcher.sh +++ /dev/null @@ -1,135 +0,0 @@ -#!/bin/bash - -# Day/night theme switcher + wallpaper/color applier. -# Two wallpapers: day.jpg (9:00-18:00) and night.jpg (18:00-9:00). -# -# Usage: -# ./theme-switcher.sh one-shot: apply based on current time, then exit -# ./theme-switcher.sh day|light force light theme, then exit -# ./theme-switcher.sh night|dark force dark theme, then exit -# ./theme-switcher.sh --daemon continuous time-based loop (used at login) - -WALLPAPERS="$HOME/Pictures/wallpapers" -STATE_FILE="/tmp/current_theme_state" -WALLPAPER_STATE_FILE="/tmp/current_wallpaper_state" -BACKDROP_STATE_FILE="/tmp/current_backdrop_state" -PID_FILE="/tmp/theme-switcher.daemon.pid" -LOG="/tmp/theme-switcher.log" -SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)" -SET_BACKDROP="$SCRIPT_DIR/set-backdrop.sh" - -log() { - printf '%s %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >>"$LOG" -} - -# Resolve TARGET_STATE / MODE / WALLPAPER. Optional $1 forces day|night. -resolve_target() { - local force="${1:-}" - if [ "$force" = "day" ] || [ "$force" = "light" ]; then - TARGET_STATE="light" - MODE="light" - WALLPAPER="$WALLPAPERS/day.jpg" - elif [ "$force" = "night" ] || [ "$force" = "dark" ]; then - TARGET_STATE="dark" - MODE="dark" - WALLPAPER="$WALLPAPERS/night.jpg" - else - local HOUR - HOUR=$(date +%H) - HOUR=$((10#$HOUR)) - if [ "$HOUR" -ge 9 ] && [ "$HOUR" -lt 18 ]; then - TARGET_STATE="light" - MODE="light" - WALLPAPER="$WALLPAPERS/day.jpg" - else - TARGET_STATE="dark" - MODE="dark" - WALLPAPER="$WALLPAPERS/night.jpg" - fi - fi -} - -# Apply the resolved target once. Returns 0 on success. -apply_target() { - if [ ! -f "$WALLPAPER" ]; then - log "wallpaper missing: $WALLPAPER" - return 1 - fi - - local CURRENT_THEME CURRENT_WALLPAPER EXPECTED_BACKDROP ACTUAL_BACKDROP - - CURRENT_THEME=$(cat "$STATE_FILE" 2>/dev/null || true) - # Already in the correct theme: don't re-run wallust/matugen every loop tick. - # Still self-heal a drifted backdrop below, then bail out. - if [ "$CURRENT_THEME" = "$TARGET_STATE" ]; then - EXPECTED_BACKDROP=$(cat "$BACKDROP_STATE_FILE" 2>/dev/null || true) - ACTUAL_BACKDROP=$(awww query -n backdrop -j 2>/dev/null | jq -r '.["backdrop"][0].displaying.image // empty') - if [ -n "$EXPECTED_BACKDROP" ] && [ "$ACTUAL_BACKDROP" != "$EXPECTED_BACKDROP" ]; then - "$SET_BACKDROP" "$WALLPAPER" - fi - return 0 - fi - CURRENT_WALLPAPER=$(cat "$WALLPAPER_STATE_FILE" 2>/dev/null || true) - - # Self-heal the Overview backdrop if it drifted from the expected image. - EXPECTED_BACKDROP=$(cat "$BACKDROP_STATE_FILE" 2>/dev/null || true) - ACTUAL_BACKDROP=$(awww query -n backdrop -j 2>/dev/null | jq -r '.["backdrop"][0].displaying.image // empty') - if [ -n "$EXPECTED_BACKDROP" ] && [ "$ACTUAL_BACKDROP" != "$EXPECTED_BACKDROP" ]; then - "$SET_BACKDROP" "$WALLPAPER" - fi - - log "switching to $TARGET_STATE ($WALLPAPER)" - if sh "$SCRIPT_DIR/apply-colors.sh" "$WALLPAPER" "$MODE"; then - if [ "$CURRENT_THEME" != "$TARGET_STATE" ]; then - darkman set "$TARGET_STATE" - fi - - ln -sf \ - "theme-${TARGET_STATE}.css" \ - "$HOME/dotfiles-gentoo/waybar/.config/waybar/theme.css" - - ln -sf \ - "settings-${TARGET_STATE}.ini" \ - "$HOME/dotfiles-gentoo/gtk/.config/gtk-3.0/settings.ini" - - echo "$TARGET_STATE" >"$STATE_FILE" - echo "$WALLPAPER" >"$WALLPAPER_STATE_FILE" - log "switched to $TARGET_STATE ($WALLPAPER)" - return 0 - else - log "FAILED to apply $TARGET_STATE ($WALLPAPER)" - return 1 - fi -} - -daemon_loop() { - # Refuse to run a second daemon instance (e.g. manual run while one is alive). - if [ -f "$PID_FILE" ] && kill -0 "$(cat "$PID_FILE" 2>/dev/null)" 2>/dev/null; then - log "daemon already running (pid $(cat "$PID_FILE")), exiting" - exit 0 - fi - echo $$ >"$PID_FILE" - - while true; do - resolve_target - apply_target || true # failure is retried on the next loop, state is left untouched - sleep 60 - done -} - -case "${1:-}" in ---daemon | -d) daemon_loop ;; -"" | day | light | night | dark) - resolve_target "${1:-}" - apply_target - exit $? - ;; --h | --help) - echo "usage: $0 [day|night|--daemon]" >&2 - exit 0 - ;; -*) - echo "usage: $0 [day|night|--daemon]" >&2 - exit 1 - ;; -esac diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua deleted file mode 100644 index 6bf6f8e..0000000 --- a/nvim/.config/nvim/init.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("caelus.init").colorscheme() -require("config.keymaps") -require("config.options") -require("config.plugins") diff --git a/nvim/.config/nvim/lua/caelus/init.lua b/nvim/.config/nvim/lua/caelus/init.lua deleted file mode 100644 index dec0a41..0000000 --- a/nvim/.config/nvim/lua/caelus/init.lua +++ /dev/null @@ -1,100 +0,0 @@ -local M = {}; - -local colors = { - bg = "#0f0f0f", - gray0 = "#141514"; - gray1 = "#1e1f1e"; - gray2 = "#272a28"; - gray3 = "#3b403c"; - gray4 = "#585f5b"; - gray5 = "#6c756f"; - gray6 = "#888e7b"; - gray7 = "#9a9c8b"; - gray8 = "#b6b69a"; - gray9 = "#d9cdb5"; - gray10 = "#e3d6c9"; - fg = "#f4decd", - red = "#f16e65"; - lred = "#ef968f"; - orange = "#ef934d"; - yellow = "#efbf71"; - green = "#7ec97e"; - lgreen = "#a4daa4"; - cyan = "#7ec9a3"; - lcyan = "#abd4bf"; - blue = "#71b4d6"; - lblue = "#b0d4e8"; - magenta = "#e28dc6"; - lmagenta = "#ebadd6"; -} - -function M.colorscheme() - vim.cmd("highlight clear") - vim.cmd("syntax reset") - - vim.o.background = "dark"; - vim.g.colors_name = "caelus"; - - local set = vim.api.nvim_set_hl - - -- ui - set(0, "Normal", { fg = colors.fg, bg = colors.bg }) - set(0, "NormalFloat", { fg = colors.fg, bg = colors.bg }) - set(0, "FloatBorder", { fg = colors.fg, bg = colors.bg }) - set(0, "CursorLine", { bg = colors.gray2 }) - set(0, "Visual", { bg = colors.gray3 }) - set(0, "Search", { fg = colors.bg, bg = colors.orange }) - set(0, "IncSearch", { fg = colors.bg, bg = colors.orange }) - set(0, "StatusLine", { bg = colors.gray2 }) - set(0, "StatusLineNC", { bg = colors.orange }) - set(0, "VertSplit", { fg = colors.gray8 }) - set(0, "WinSeparator", { fg = colors.gray8 }) - set(0, "LineNr", { fg = colors.gray6 }) - set(0, "CursorLineNr", { fg = colors.orange, bold = true }) - set(0, "SignColumn", { bg = colors.bg }) - set(0, "Folded", { fg = colors.gray8, bg = colors.gray3 }) - - -- popup - set(0, "Pmenu", { fg = colors.fg, bg = colors.gray10 }) - set(0, "PmenuSel", { fg = colors.bg, bg = colors.orange }) - set(0, "PmenuSbar", { bg = colors.gray10 }) - set(0, "PmenuThumb", { bg = colors.orange }) - - -- syntax - set(0, "Comment", { fg = colors.gray8, italic = true }) - set(0, "Constant", { fg = colors.magenta }) - set(0, "String", { fg = colors.green }) - set(0, "Identifier", { fg = colors.blue }) - set(0, "Function", { fg = colors.yellow }) - set(0, "Statement", { fg = colors.red }) - set(0, "Type", { fg = colors.cyan, bold = true }) - set(0, "Special", { fg = colors.yellow }) - set(0, "Error", { fg = colors.red, bold = true }) - set(0, "Keyword", { fg = colors.red }) - set(0, "Variable", { fg = colors.fg }) - set(0, "TSKeyword", { fg = colors.red }) - set(0, "TSFunction", { fg = colors.yellow }) - set(0, "TSVariable", { fg = colors.fg }) - set(0, "TSType", { fg = colors.cyan }) - - -- blink - set(0, "BlinkCmpMenu", { bg = colors.gray1 }) - set(0, "BlinkCmpMenuBorder", { fg = colors.gray6, bg = colors.gray1 }) - set(0, "BlinkCmpMenuSelection", { fg = colors.bg, bg = colors.orange }) - set(0, "BlinkCmpLabel", { fg = colors.fg }) - set(0, "BlinkCmpLabelDetail", { fg = colors.gray7 }) - set(0, "BlinkCmpLabelDescription",{ fg = colors.gray8 }) - set(0, "BlinkCmpLabelMatch", { fg = colors.orange, bold = true }) - set(0, "BlinkCmpKind", { fg = colors.cyan }) - set(0, "BlinkCmpDoc", { fg = colors.fg, bg = colors.gray2 }) - set(0, "BlinkCmpDocBorder", { fg = colors.gray5, bg = colors.gray2 }) - - if package.loaded['lualine'] then - require('lualine').setup({ - options = { theme = 'auto' }, - }) - end - -end - -return M diff --git a/nvim/.config/nvim/lua/config/keymaps.lua b/nvim/.config/nvim/lua/config/keymaps.lua deleted file mode 100755 index e2987bc..0000000 --- a/nvim/.config/nvim/lua/config/keymaps.lua +++ /dev/null @@ -1,13 +0,0 @@ -localopts = { noremap = true, silent = true } - -vim.g.mapleader = " " -vim.g.maplocalleader = " " - -vim.keymap.set({"n", "v"}, "y", '"+y', { noremap = true, silent = true }) - -vim.keymap.set("v", "J", ":m '>+1gv=gv", { desc = "moves lines down in visual selection" }) -vim.keymap.set("v", "K", ":m '<-2gv=gv", { desc = "moves lines up in visual selection" }) - -vim.keymap.set("n", "al", "term", { desc = "Open terminal" }) - -vim.keymap.set("n", "f", vim.lsp.buf.format) diff --git a/nvim/.config/nvim/lua/config/options.lua b/nvim/.config/nvim/lua/config/options.lua deleted file mode 100755 index dac7c76..0000000 --- a/nvim/.config/nvim/lua/config/options.lua +++ /dev/null @@ -1,40 +0,0 @@ -vim.cmd("let g:netrw_banner = 0") -vim.cmd("set termguicolors") - -vim.opt.guicursor = "" -vim.opt.nu = true -vim.opt.relativenumber = false - -vim.opt.tabstop = 2 -vim.opt.softtabstop = 2 -vim.opt.shiftwidth = 2 -vim.opt.expandtab = true -vim.opt.autoindent = true -vim.opt.smartindent = true -vim.opt.wrap = true - -vim.opt.swapfile = false -vim.opt.backup = false -vim.opt.undofile = true - -vim.opt.incsearch = true -vim.opt.inccommand = "split" -vim.opt.ignorecase = true -vim.opt.smartcase = true - -vim.opt.termguicolors = true -vim.opt.background = "dark" -vim.opt.scrolloff = 8 -vim.opt.signcolumn = "yes" - -vim.opt.backspace = { "start", "eol", "indent" } - -vim.opt.splitright = true -vim.opt.splitbelow = true - -vim.opt.hlsearch = true - -vim.opt.mouse = "a" -vim.g.editorconfig = true - -vim.g.markdown_folding = 1 diff --git a/nvim/.config/nvim/lua/config/plugins.lua b/nvim/.config/nvim/lua/config/plugins.lua deleted file mode 100644 index 464a5ae..0000000 --- a/nvim/.config/nvim/lua/config/plugins.lua +++ /dev/null @@ -1,101 +0,0 @@ -vim.pack.add { - 'https://github.com/ollykel/v-vim', - 'https://github.com/hrsh7th/nvim-cmp', - 'https://github.com/saghen/blink.cmp', - 'https://github.com/alaviss/nim.nvim', - 'https://github.com/stevearc/oil.nvim', - 'https://github.com/folke/trouble.nvim', - 'https://github.com/nvim-mini/mini.nvim', - 'https://github.com/jiaoshijie/undotree', - 'https://github.com/thePrimeagen/harpoon', - 'https://github.com/hrsh7th/cmp-nvim-lsp', - 'https://github.com/mason-org/mason.nvim', - 'https://github.com/nvim-orgmode/orgmode', - 'https://github.com/windwp/nvim-autopairs', - 'https://github.com/neovim/nvim-lspconfig', - 'https://github.com/nvim-lua/plenary.nvim', - 'https://github.com/mfussenegger/nvim-lint', - 'https://github.com/akinsho/org-bullets.nvim', - 'https://github.com/nvim-lualine/lualine.nvim', - 'https://github.com/norcalli/nvim-colorizer.lua', - 'https://github.com/nvim-tree/nvim-web-devicons', - 'https://github.com/rafamadriz/friendly-snippets', - 'https://github.com/nvim-telescope/telescope.nvim', - 'https://github.com/mason-org/mason-lspconfig.nvim', - 'https://github.com/nvim-treesitter/nvim-treesitter', - 'https://github.com/brenoprata10/nvim-highlight-colors', - 'https://github.com/antosha417/nvim-lsp-file-operations', - 'https://github.com/nvim-telescope/telescope-ui-select.nvim', - 'https://github.com/MeanderingProgrammer/render-markdown.nvim', -} - --- vlang ---vim.lsp.config.vlang.setup({}) - --- oil --- oil -require("oil").setup({ - default_file_explorer = true, - columns = {}, - keymaps = { - ["q"] = "actions.close", - ["l"] = "actions.select", -- Opens the file or enters the directory - ["h"] = "actions.parent", -- Goes up to the parent directory - }, - delete_to_trash = true, - view_options = { - show_hidden = true, - }, - skip_confirm_for_simple_edits = true, -}) -vim.keymap.set("n", "fm", "Oil", { desc = "Open parent directory" }) - --- harpoon -vim.keymap.set("n", "ad", function() - harpoon:list():add() -end, { desc = "Harpoon add file" }) -vim.keymap.set("n", "", function() - harpoon.ui:toggle_quick_menu(harpoon:list()) -end) - --- mason -require("mason").setup({ - opts = { - ui = { - icons = { - package_installed = "*", - package_pending = ">", - package_uninstalled = "x" - } - } - } -}) - --- autopairs -require("nvim-autopairs").setup({ - check_ts = true, - ts_config = { - lua = { "string" }, - javascript = { "template_string" }, - java = false, - }, -}) - --- lspconfig -vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) -vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts) -vim.keymap.set("n", "vrn", function() vim.lsp.buf.rename() end, opts) - --- lualine -require('lualine').setup { - options = { - icons_enabled = true, - theme = 'auto', - } -} - --- colorizer -require("colorizer").setup() - --- mason-lspconfig -require("mason-lspconfig").setup() diff --git a/nvim/.config/nvim/nvim-pack-lock.json b/nvim/.config/nvim/nvim-pack-lock.json deleted file mode 100644 index dc69b9a..0000000 --- a/nvim/.config/nvim/nvim-pack-lock.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "plugins": { - "blink.cmp": { - "rev": "679a2ffad4bae720bb12e6bcdf57b0dd8b8a80f8", - "src": "https://github.com/saghen/blink.cmp" - }, - "cmp-nvim-lsp": { - "rev": "cbc7b02bb99fae35cb42f514762b89b5126651ef", - "src": "https://github.com/hrsh7th/cmp-nvim-lsp" - }, - "friendly-snippets": { - "rev": "6cd7280adead7f586db6fccbd15d2cac7e2188b9", - "src": "https://github.com/rafamadriz/friendly-snippets" - }, - "harpoon": { - "rev": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3", - "src": "https://github.com/thePrimeagen/harpoon" - }, - "lualine.nvim": { - "rev": "47f91c416daef12db467145e16bed5bbfe00add8", - "src": "https://github.com/nvim-lualine/lualine.nvim" - }, - "mason-lspconfig.nvim": { - "rev": "25f609e7fca78af7cede4f9fa3af8a94b1c4950b", - "src": "https://github.com/mason-org/mason-lspconfig.nvim" - }, - "mason.nvim": { - "rev": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65", - "src": "https://github.com/mason-org/mason.nvim" - }, - "mini.nvim": { - "rev": "3923662bf3d6ca49a9503f8d7196ea0450983e6a", - "src": "https://github.com/nvim-mini/mini.nvim" - }, - "nim.nvim": { - "rev": "9ee8fdc04ad3d7fcbd9679e0be3477543f17b9d9", - "src": "https://github.com/alaviss/nim.nvim" - }, - "nvim-autopairs": { - "rev": "59bce2eef357189c3305e25bc6dd2d138c1683f5", - "src": "https://github.com/windwp/nvim-autopairs" - }, - "nvim-cmp": { - "rev": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca", - "src": "https://github.com/hrsh7th/nvim-cmp" - }, - "nvim-colorizer.lua": { - "rev": "a065833f35a3a7cc3ef137ac88b5381da2ba302e", - "src": "https://github.com/norcalli/nvim-colorizer.lua" - }, - "nvim-highlight-colors": { - "rev": "e2cb22089cc2358b2b995c09578224f142de6039", - "src": "https://github.com/brenoprata10/nvim-highlight-colors" - }, - "nvim-lint": { - "rev": "4b03656c09c1561f89b6aa0665c15d292ba9499d", - "src": "https://github.com/mfussenegger/nvim-lint" - }, - "nvim-lsp-file-operations": { - "rev": "b9c795d3973e8eec22706af14959bc60c579e771", - "src": "https://github.com/antosha417/nvim-lsp-file-operations" - }, - "nvim-lspconfig": { - "rev": "8e2084bf5e40c79c1f42210a6ef96a0a4793a763", - "src": "https://github.com/neovim/nvim-lspconfig" - }, - "nvim-treesitter": { - "rev": "539abf6da5ee8702e37b82cc953131dadd570da2", - "src": "https://github.com/nvim-treesitter/nvim-treesitter" - }, - "nvim-web-devicons": { - "rev": "d7462543c9e366c0d196c7f67a945eaaf5d99414", - "src": "https://github.com/nvim-tree/nvim-web-devicons" - }, - "oil.nvim": { - "rev": "0fcc83805ad11cf714a949c98c605ed717e0b83e", - "src": "https://github.com/stevearc/oil.nvim" - }, - "org-bullets.nvim": { - "rev": "503fe053550879cc202086a40454e46a87c41ddb", - "src": "https://github.com/akinsho/org-bullets.nvim" - }, - "orgmode": { - "rev": "1ab7b456020de8bdaed7d8135b5376a0b4419b11", - "src": "https://github.com/nvim-orgmode/orgmode" - }, - "plenary.nvim": { - "rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509", - "src": "https://github.com/nvim-lua/plenary.nvim" - }, - "render-markdown.nvim": { - "rev": "c7188a8f9d2953696b6303caccbf39c51fa2c1b1", - "src": "https://github.com/MeanderingProgrammer/render-markdown.nvim" - }, - "telescope-ui-select.nvim": { - "rev": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2", - "src": "https://github.com/nvim-telescope/telescope-ui-select.nvim" - }, - "telescope.nvim": { - "rev": "cfb85dcf7f822b79224e9e6aef9e8c794211b20b", - "src": "https://github.com/nvim-telescope/telescope.nvim" - }, - "trouble.nvim": { - "rev": "bd67efe408d4816e25e8491cc5ad4088e708a69a", - "src": "https://github.com/folke/trouble.nvim" - }, - "undotree": { - "rev": "0e6d41d55ad147407e4ba00a292973de8db0b836", - "src": "https://github.com/jiaoshijie/undotree" - }, - "v-vim": { - "rev": "1dc1388bafb89072f8349dbd96f9462ae22237cb", - "src": "https://github.com/ollykel/v-vim" - } - } -} diff --git a/rmpc/.config/rmpc/config.ron b/rmpc/.config/rmpc/config.ron deleted file mode 100644 index 765d13b..0000000 --- a/rmpc/.config/rmpc/config.ron +++ /dev/null @@ -1,84 +0,0 @@ -#![enable(implicit_some)] -#![enable(unwrap_newtypes)] -#![enable(unwrap_variant_newtypes)] - -( - address: "127.0.0.1:6600", - max_fps: 180, - - music_dir: "/mnt/giga/music", - lyrics_dir: "/mnt/giga/music", - theme: "~/.config/rmpc/theme.ron", - - album_art: ( - method: Sixel, - max_size_px: (width: 1600, height: 1600), - ), - lyrics: ( - fetch: true, - ), - tabs: [ - ( - name: "Player", - pane: Split( - direction: Horizontal, - panes: [ - ( - size: "40%", - pane: Split( - direction: Vertical, - panes: [ - (size: "55%", pane: Pane(AlbumArt)), - (size: "45%", pane: Pane(Lyrics)), - ] - ) - ), - ( - size: "60%", - pane: Split( - direction: Vertical, - panes: [ - (size: "1", pane: Pane(QueueHeader())), - (size: "100%", pane: Pane(Queue)), - ] - ) - ), - ], - ), - ), - (name: "Files", pane: Pane(Directories)), - (name: "Artists", pane: Pane(Artists)), - (name: "Playlists", pane: Pane(Playlists)), - (name: "Search", pane: Pane(Search)), - ], - - keybinds: ( - global: { - "1": SwitchToTab("Player"), - "2": SwitchToTab("Files"), - "3": SwitchToTab("Artists"), - "4": SwitchToTab("Playlists"), - "5": SwitchToTab("Search"), - "/": SwitchToTab("Search"), - - "": TogglePause, - "+": VolumeUp, - "-": VolumeDown, - "n": NextTrack, - "b": PreviousTrack, - - "": SeekForward, - "": SeekBack, - ">": SeekForward, - "<": SeekBack, - - "r": ToggleRepeat, - "s": ToggleSingle, - "c": ToggleConsume, - "z": ToggleRandom, - }, - navigation: { - "Enter": Select, - }, - ), -) diff --git a/rmpc/.config/rmpc/theme.ron b/rmpc/.config/rmpc/theme.ron deleted file mode 100644 index f23418a..0000000 --- a/rmpc/.config/rmpc/theme.ron +++ /dev/null @@ -1,47 +0,0 @@ -#![enable(implicit_some)] -#![enable(unwrap_newtypes)] -#![enable(unwrap_variant_newtypes)] - -( - show_song_table_header: true, - - song_table_format: [ - ( - prop: (kind: Property(Position)), - width: "3", - alignment: Right, - label: "#" - ), - ( - prop: (kind: Property(Title), default: (kind: Property(Filename))), - width: "45%", - alignment: Left, - label: "Title" - ), - ( - prop: (kind: Property(Artist), default: (kind: Text("Unknown"))), - width: "35%", - alignment: Left, - label: "Artist" - ), - ( - prop: (kind: Property(Duration)), - width: "15%", - alignment: Right, - label: "Time" - ), - ], - - text_color: None, - borders_style: (fg: "#4c566a"), - - highlighted_item_style: (fg: "#81a1c1", modifiers: "Bold"), - current_item_style: (fg: "#88c0d0", modifiers: "Bold | Reversed"), - - lyrics: ( - unplayed_style: (fg: "#4c566a"), - played_style: (fg: "#88c0d0", modifiers: "Bold"), - dir: "/mnt/giga/music/", - fetch: true, - ), -) diff --git a/starship/.config/starship.toml b/starship/.config/starship.toml deleted file mode 100644 index ab9064a..0000000 --- a/starship/.config/starship.toml +++ /dev/null @@ -1,91 +0,0 @@ -palette = "noctalia" -add_newline = true -command_timeout = 200 -format = "$username$hostname$character [$directory$git_branch$git_status]($style)" - -[username] -show_always = true -format = "[$user]($style)" -style_user = "#8C00FF" -# style_user = "bold #8C00FF" -[hostname] -disabled = false -ssh_only = false -format = "[@$hostname]($style)" -style = "#8C00FF" - -[character] -format = "$symbol" # Removes the default trailing space after # -error_symbol = "[:~✗](bold red)" -success_symbol = "[:~#](bold #8C00FF)" - -[directory] -style = "#AA40FF" -truncation_length = 2 -truncation_symbol = "///" -repo_root_style = "#AA40FF" -repo_root_format = "[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) " - -[git_branch] -symbol = "> " -format = "[$symbol$branch]($style) " -style = "italic #AA40FF" - -[git_status] -format = '[$all_status]($style)' -style = "purple" -ahead = "⇡${count} " -diverged = "⇕⇡${ahead_count}⇣${behind_count} " -behind = "⇣${count} " -conflicted = " " -up_to_date = " " -untracked = "? " -modified = " " -stashed = "" -staged = "" -renamed = "" -deleted = "" - -# >>> NOCTALIA STARSHIP PALETTE >>> -# Noctalia Starship Palette -# Generated by Noctalia - do not edit manually - -[palettes.noctalia] -# Standard colors -blue = "#54604a" -red = "#ba1a1a" -green = "#645c3f" -yellow = "#635e50" -cyan = "#797263" -magenta = "#7e7252" -white = "#1d1b19" -black = "#e9e2d4" - -# Extended palette (Catppuccin-compatible names) -rosewater = "#635e50" -flamingo = "#ba1a1a" -pink = "#7e7252" -mauve = "#7e7252" -maroon = "#ba1a1a" -peach = "#635e50" -teal = "#797263" -sky = "#797263" -sapphire = "#54604a" -lavender = "#7e7252" - -# Text shades -text = "#1d1b19" -subtext1 = "#1d1b19" -subtext0 = "#7b776c" - -# Surface shades -overlay2 = "#7b776c" -overlay1 = "#7b776c" -overlay0 = "#e9e2d4" -surface2 = "#e9e2d4" -surface1 = "#e9e2d4" -surface0 = "#fef8f4" -base = "#fef8f4" -mantle = "#fef8f4" -crust = "#fef8f4" -# <<< NOCTALIA STARSHIP PALETTE <<< diff --git a/vicinae/.config/vicinae/settings.json b/vicinae/.config/vicinae/settings.json deleted file mode 100644 index b9a5a02..0000000 --- a/vicinae/.config/vicinae/settings.json +++ /dev/null @@ -1,234 +0,0 @@ -// This configuration is merged with the default vicinae configuration file, which you can obtain by running the `vicinae config default` command. -// Every item defined in this file takes precedence over the values defined in the default config or any other imported file. -// -// You can make manual edits to this file, however you should keep in mind that this file may be written to by vicinae when a configuration change is made through the GUI. -// When that happens, any custom comments or formatting will be lost. -// -// If you want to maintain a configuration file with your own comments and formatting, you should create a separate file and add it to the 'imports' array. -// -// Learn more about configuration at https://docs.vicinae.com/config - -{ - "$schema": "https://vicinae.com/schemas/config.json", - "encrypt_sensitive_data": true, - "favicon_service": "google", - "font": { - "normal": { - "family": "JetBrains Mono ExtraBold" - } - }, - "theme": { - "light": { - "name": "vicinae-wallust-light" - }, - "dark": { - "name": "vicinae-wallust-dark", - "icon_theme": "Hicolor" - } - }, - "telemetry": { - "system_info": false - }, - "launcher_window": { - "rounding": 1, - "opacity": 1, - "client_side_decorations": { - "shadow_size": 0 - }, - "compact_mode": { - "enabled": true - } - }, - "providers": { - "applications": { - "entrypoints": { - "PEAK": { - "enabled": false - }, - "assistant": { - "enabled": false - }, - "blueman-manager": { - "enabled": false - }, - "btop": { - "enabled": false - }, - "darkman": { - "enabled": false - }, - "foot-server": { - "enabled": false - }, - "footclient": { - "enabled": false - }, - "linguist": { - "enabled": false - }, - "nvidia-settings": { - "enabled": false - }, - "qdbusviewer": { - "enabled": false - }, - "qphotorec": { - "enabled": false - }, - "rmpc": { - "enabled": false - } - } - }, - "clipboard": { - "preferences": { - "monitoring": true - } - }, - "core": { - "entrypoints": { - "about": { - "enabled": false - }, - "documentation": { - "enabled": false - }, - "keybind-settings": { - "enabled": false - }, - "list-extensions": { - "enabled": false - }, - "manage-fallback": { - "enabled": false - }, - "oauth-token-store": { - "enabled": false - }, - "open-config-file": { - "enabled": false - }, - "open-default-config": { - "enabled": false - }, - "prune-memory": { - "enabled": false - }, - "refresh-apps": { - "enabled": false - }, - "reload-scripts": { - "enabled": false - }, - "report-bug": { - "enabled": false - }, - "search-builtin-icons": { - "enabled": false - }, - "search-emojis": { - "enabled": true - }, - "settings": { - "enabled": false - }, - "show-logs": { - "enabled": false - }, - "sponsor": { - "enabled": false - }, - "store": { - "enabled": true - } - } - }, - "font": { - "enabled": false - }, - "manage-shortcuts": { - "enabled": false - }, - "power": { - "enabled": true, - "entrypoints": { - "hibernate": { - "enabled": false - }, - "lock": { - "enabled": false - }, - "logout": { - "enabled": false - }, - "power-off": { - "enabled": true - }, - "reboot": { - "enabled": true - }, - "sleep": { - "enabled": false - }, - "soft-reboot": { - "enabled": false - }, - "suspend": { - "enabled": false - } - } - }, - "snippets": { - "enabled": false - }, - "system": { - "enabled": false, - "entrypoints": { - "run": { - "enabled": false - }, - "toggle-mute": { - "enabled": false - }, - "volume-0": { - "enabled": false - }, - "volume-100": { - "enabled": false - }, - "volume-25": { - "enabled": false - }, - "volume-50": { - "enabled": false - }, - "volume-75": { - "enabled": false - }, - "volume-down": { - "enabled": false - }, - "volume-up": { - "enabled": false - } - } - }, - "wm": { - "enabled": false, - "entrypoints": { - "switch-windows": { - "enabled": false - }, - "toggle-floating": { - "enabled": false - }, - "toggle-fullscreen": { - "enabled": false - }, - "toggle-overview": { - "enabled": false - } - } - } - } -} \ No newline at end of file diff --git a/wallust/.config/wallust/templates/dbg.ini b/wallust/.config/wallust/templates/dbg.ini deleted file mode 100644 index edc18bb..0000000 --- a/wallust/.config/wallust/templates/dbg.ini +++ /dev/null @@ -1,4 +0,0 @@ -plain={{background}} -strip={{background.strip}} -hex={{background.hex}} -rgb={{background.rgb}} diff --git a/wallust/.config/wallust/templates/foot-colors-custom.ini b/wallust/.config/wallust/templates/foot-colors-custom.ini deleted file mode 100644 index 5fc7983..0000000 --- a/wallust/.config/wallust/templates/foot-colors-custom.ini +++ /dev/null @@ -1,20 +0,0 @@ -# wallust foot template — foot expects colors without '#' -[colors] -background={{background}} -foreground={{foreground}} -regular0={{color0}} -regular1={{color1}} -regular2={{color2}} -regular3={{color3}} -regular4={{color4}} -regular5={{color5}} -regular6={{color6}} -regular7={{color7}} -bright0={{color8}} -bright1={{color9}} -bright2={{color10}} -bright3={{color11}} -bright4={{color12}} -bright5={{color13}} -bright6={{color14}} -bright7={{color15}} diff --git a/wallust/.config/wallust/templates/nvim.lua b/wallust/.config/wallust/templates/nvim.lua deleted file mode 100644 index be60dd7..0000000 --- a/wallust/.config/wallust/templates/nvim.lua +++ /dev/null @@ -1,306 +0,0 @@ --- Generated by wallust from your system color scheme. Do not edit by hand. --- Source of truth: wallust/.config/wallust/templates/nvim.lua -local bg = "{{background}}" -local fg = "{{foreground}}" -local cursor = "{{cursor}}" -local c = { - "{{color0}}", "{{color1}}", "{{color2}}", "{{color3}}", - "{{color4}}", "{{color5}}", "{{color6}}", "{{color7}}", - "{{color8}}", "{{color9}}", "{{color10}}", "{{color11}}", - "{{color12}}", "{{color13}}", "{{color14}}", "{{color15}}", -} - --- Pick light/dark from the background luminance so plugins (diff, signs, …) behave. -local function lum(hex) - hex = hex:gsub("#", "") - local r = tonumber(hex:sub(1, 2), 16) / 255 - local g = tonumber(hex:sub(3, 4), 16) / 255 - local b = tonumber(hex:sub(5, 6), 16) / 255 - return 0.2126 * r + 0.7152 * g + 0.0722 * b -end - -vim.opt.background = lum(bg) < 0.5 and "dark" or "light" -vim.g.colors_name = "wallust" - -local set = function(name, opts) - vim.api.nvim_set_hl(0, name, opts) -end - --- semantic aliases for the 16-color palette -local black, red, green, yellow, blue, magenta, cyan, white = - c[1], c[2], c[3], c[4], c[5], c[6], c[7], c[8] -local brblack, brred, brgreen, bryellow, brblue, brmagenta, brcyan, brwhite = - c[9], c[10], c[11], c[12], c[13], c[14], c[15], c[16] - -local panel = c[1] -- floating / panel background (near bg) -local sel = brblack -- selection / visual background -local muted = brblack -- dimmed / secondary text - --- ── Editor ────────────────────────────────────────────────────────────── -set("Normal", { fg = fg, bg = bg }) -set("NormalFloat", { fg = fg, bg = panel }) -set("NormalNC", { fg = fg, bg = bg }) -set("ColorColumn", { bg = panel }) -set("Conceal", { fg = muted }) -set("Cursor", { fg = bg, bg = cursor }) -set("CursorIM", { fg = bg, bg = cursor }) -set("CursorLine", { bg = panel }) -set("CursorColumn", { bg = panel }) -set("CursorLineNr", { fg = fg, bg = panel }) -set("LineNr", { fg = muted }) -set("SignColumn", { fg = muted, bg = bg }) -set("WinSeparator", { fg = muted }) -set("VertSplit", { fg = muted }) -set("Directory", { fg = blue }) -set("DiffAdd", { fg = green, bg = bg }) -set("DiffChange", { fg = yellow, bg = bg }) -set("DiffDelete", { fg = red, bg = bg }) -set("DiffText", { fg = yellow, bg = panel }) -set("ErrorMsg", { fg = red, bold = true }) -set("WarningMsg", { fg = yellow, bold = true }) -set("ModeMsg", { fg = fg }) -set("MsgArea", { fg = fg }) -set("MoreMsg", { fg = green }) -set("Question", { fg = green }) -set("NonText", { fg = muted }) -set("SpecialKey", { fg = muted }) -set("Whitespace", { fg = panel }) -set("Title", { fg = yellow, bold = true }) -set("Folded", { fg = muted, bg = panel }) -set("FoldColumn", { fg = muted, bg = bg }) -set("MatchParen", { fg = yellow, bg = panel, bold = true }) -set("Search", { fg = bg, bg = yellow }) -set("IncSearch", { fg = bg, bg = magenta }) -set("CurSearch", { fg = bg, bg = magenta }) -set("QuickFixLine", { fg = bg, bg = blue }) -set("Visual", { bg = sel }) -set("VisualNOS", { bg = sel }) -set("StatusLine", { fg = fg, bg = panel }) -set("StatusLineNC", { fg = muted, bg = bg }) -set("TabLine", { fg = muted, bg = bg }) -set("TabLineFill", { fg = muted, bg = bg }) -set("TabLineSel", { fg = bg, bg = blue }) -set("WildMenu", { fg = bg, bg = blue }) -set("Winbar", { fg = fg, bg = panel }) -set("WinbarNC", { fg = muted, bg = bg }) -set("Pmenu", { fg = fg, bg = panel }) -set("PmenuSel", { fg = bg, bg = blue }) -set("PmenuSbar", { bg = panel }) -set("PmenuThumb", { bg = muted }) -set("FloatBorder", { fg = muted }) -set("FloatTitle", { fg = yellow, bg = panel }) -set("FloatFooter", { fg = muted, bg = panel }) -set("SpellBad", { undercurl = true, sp = red }) -set("SpellCap", { undercurl = true, sp = yellow }) -set("SpellLocal", { undercurl = true, sp = cyan }) -set("SpellRare", { undercurl = true, sp = magenta }) - --- ── Legacy syntax groups ──────────────────────────────────────────────── -set("Comment", { fg = muted, italic = true }) -set("Constant", { fg = cyan }) -set("String", { fg = green }) -set("Character", { fg = green }) -set("Number", { fg = red }) -set("Boolean", { fg = red }) -set("Float", { fg = red }) -set("Identifier", { fg = brcyan }) -set("Function", { fg = blue }) -set("Statement", { fg = magenta }) -set("Conditional", { fg = magenta }) -set("Repeat", { fg = magenta }) -set("Label", { fg = magenta }) -set("Operator", { fg = fg }) -set("Keyword", { fg = magenta }) -set("Exception", { fg = magenta }) -set("PreProc", { fg = brblue }) -set("Include", { fg = brblue }) -set("Define", { fg = brblue }) -set("Macro", { fg = brblue }) -set("PreCondit", { fg = brblue }) -set("Type", { fg = yellow }) -set("StorageClass", { fg = yellow }) -set("Structure", { fg = yellow }) -set("Typedef", { fg = yellow }) -set("Special", { fg = brgreen }) -set("SpecialChar", { fg = brgreen }) -set("Tag", { fg = red }) -set("Delimiter", { fg = muted }) -set("SpecialComment", { fg = muted, italic = true }) -set("Debug", { fg = red }) -set("Underlined", { fg = blue, underline = true }) -set("Ignore", { fg = muted }) -set("Error", { fg = red, bold = true }) -set("Todo", { fg = bg, bg = yellow, bold = true }) - --- ── Treesitter ────────────────────────────────────────────────────────── -set("@comment", { fg = muted, italic = true }) -set("@comment.lua", { fg = muted, italic = true }) -set("@error", { fg = red, undercurl = true, sp = red }) -set("@none", {}) -set("@preproc", { fg = brblue }) -set("@define", { fg = brblue }) -set("@operator", { fg = fg }) - -set("@string", { fg = green }) -set("@string.escape", { fg = red }) -set("@string.special", { fg = brgreen }) -set("@character", { fg = green }) -set("@character.special", { fg = brgreen }) - -set("@number", { fg = red }) -set("@float", { fg = red }) -set("@boolean", { fg = red }) -set("@constant", { fg = cyan }) -set("@constant.builtin", { fg = brcyan }) -set("@constant.macro", { fg = brblue }) - -set("@variable", { fg = fg }) -set("@variable.builtin", { fg = red }) -set("@variable.parameter", { fg = fg }) -set("@variable.parameter.builtin", { fg = fg }) -set("@field", { fg = fg }) -set("@property", { fg = fg }) - -set("@function", { fg = blue }) -set("@function.builtin", { fg = blue }) -set("@function.macro", { fg = brblue }) -set("@method", { fg = blue }) -set("@constructor", { fg = yellow }) - -set("@parameter", { fg = fg }) -set("@keyword", { fg = magenta }) -set("@keyword.function", { fg = magenta }) -set("@keyword.operator", { fg = magenta }) -set("@keyword.modifier", { fg = magenta }) -set("@storageclass", { fg = yellow }) -set("@structure", { fg = yellow }) -set("@namespace", { fg = blue }) - -set("@type", { fg = yellow }) -set("@type.builtin", { fg = bryellow }) -set("@type.definition", { fg = yellow }) - -set("@punctuation.delimiter", { fg = muted }) -set("@punctuation.bracket", { fg = fg }) -set("@punctuation.special", { fg = magenta }) - -set("@text", { fg = fg }) -set("@text.strong", { bold = true }) -set("@text.emphasis", { italic = true }) -set("@text.underline", { underline = true }) -set("@text.strike", { strikethrough = true }) -set("@text.title", { fg = blue, bold = true }) -set("@text.title.1", { fg = blue, bold = true }) -set("@text.title.2", { fg = cyan, bold = true }) -set("@text.title.3", { fg = green, bold = true }) -set("@text.title.4", { fg = yellow, bold = true }) -set("@text.title.5", { fg = magenta, bold = true }) -set("@text.title.6", { fg = red, bold = true }) -set("@text.literal", { fg = green }) -set("@text.uri", { fg = cyan, underline = true }) -set("@text.todo", { fg = bg, bg = yellow, bold = true }) -set("@text.note", { fg = bg, bg = blue, bold = true }) -set("@text.warning", { fg = bg, bg = yellow, bold = true }) -set("@text.danger", { fg = bg, bg = red, bold = true }) - -set("@tag", { fg = red }) -set("@tag.attribute", { fg = yellow }) -set("@tag.delimiter", { fg = muted }) - -set("@markup.heading", { fg = blue, bold = true }) -set("@markup.strong", { bold = true }) -set("@markup.italic", { italic = true }) -set("@markup.link", { fg = cyan, underline = true }) -set("@markup.link.url", { fg = cyan, underline = true }) -set("@markup.raw", { fg = green }) -set("@markup.list", { fg = magenta }) -set("@markup.quote", { fg = muted, italic = true }) - -set("@diff.add", { fg = green }) -set("@diff.delete", { fg = red }) -set("@diff.change", { fg = yellow }) - -set("@conceal", { fg = muted }) - --- ── LSP / Diagnostics ─────────────────────────────────────────────────── -set("DiagnosticError", { fg = red }) -set("DiagnosticWarn", { fg = yellow }) -set("DiagnosticInfo", { fg = blue }) -set("DiagnosticHint", { fg = cyan }) -set("DiagnosticOk", { fg = green }) -set("DiagnosticVirtualTextError", { fg = red }) -set("DiagnosticVirtualTextWarn", { fg = yellow }) -set("DiagnosticVirtualTextInfo", { fg = blue }) -set("DiagnosticVirtualTextHint", { fg = cyan }) -set("DiagnosticUnderlineError", { undercurl = true, sp = red }) -set("DiagnosticUnderlineWarn", { undercurl = true, sp = yellow }) -set("DiagnosticUnderlineInfo", { undercurl = true, sp = blue }) -set("DiagnosticUnderlineHint", { undercurl = true, sp = cyan }) -set("DiagnosticSignError", { fg = red }) -set("DiagnosticSignWarn", { fg = yellow }) -set("DiagnosticSignInfo", { fg = blue }) -set("DiagnosticSignHint", { fg = cyan }) -set("DiagnosticFloatingError", { fg = red }) -set("DiagnosticFloatingWarn", { fg = yellow }) -set("DiagnosticFloatingInfo", { fg = blue }) -set("DiagnosticFloatingHint", { fg = cyan }) -set("DiagnosticUnnecessary", { undercurl = true, sp = muted }) - -set("LspReferenceText", { bg = sel }) -set("LspReferenceRead", { bg = sel }) -set("LspReferenceWrite", { bg = sel }) -set("LspCodeLens", { fg = muted }) -set("LspCodeLensSeparator", { fg = muted }) -set("LspSignatureActiveParameter", { fg = yellow, bold = true }) -set("LspInlayHint", { fg = muted, italic = true }) - --- ── Git / signs ───────────────────────────────────────────────────────── -set("GitSignsAdd", { fg = green }) -set("GitSignsChange", { fg = yellow }) -set("GitSignsDelete", { fg = red }) -set("GitSignsAddLn", { fg = green }) -set("GitSignsChangeLn", { fg = yellow }) -set("GitSignsDeleteLn", { fg = red }) -set("GitSignsCurrentLineBlame", { fg = muted }) -set("SignAdd", { fg = green }) -set("SignChange", { fg = yellow }) -set("SignDelete", { fg = red }) - --- ── Misc plugin UI ────────────────────────────────────────────────────── -set("TelescopeNormal", { fg = fg, bg = panel }) -set("TelescopeBorder", { fg = muted }) -set("TelescopePromptBorder", { fg = muted }) -set("TelescopeResultsBorder", { fg = muted }) -set("TelescopeTitle", { fg = yellow, bold = true }) -set("TelescopeSelection", { fg = bg, bg = blue }) -set("TelescopeMatching", { fg = yellow, bold = true }) - -set("WhichKey", { fg = fg }) -set("WhichKeyGroup", { fg = blue }) -set("WhichKeyDesc", { fg = fg }) -set("WhichKeySeparator", { fg = muted }) -set("WhichKeyFloat", { bg = panel }) -set("WhichKeyValue", { fg = muted }) - -set("CmpItemAbbr", { fg = fg }) -set("CmpItemAbbrDeprecated", { fg = muted, strikethrough = true }) -set("CmpItemAbbrMatch", { fg = yellow, bold = true }) -set("CmpItemKind", { fg = blue }) -set("CmpItemMenu", { fg = muted }) - -set("NvimTreeNormal", { fg = fg, bg = bg }) -set("NvimTreeIndentMarker", { fg = panel }) -set("NvimTreeFolderIcon", { fg = blue }) -set("NvimTreeOpenedFile", { fg = blue }) -set("NvimTreeGitDirty", { fg = yellow }) -set("NvimTreeGitNew", { fg = green }) -set("NvimTreeGitDeleted", { fg = red }) - -set("BufferLineFill", { bg = bg }) -set("BufferLineBackground", { fg = muted }) -set("BufferLineBufferSelected", { fg = fg, bold = true }) -set("BufferLineIndicatorSelected", { fg = blue }) -set("BufferLineTabSelected", { fg = blue, bold = true }) -set("BufferLineModified", { fg = yellow }) - -set("NeoTreeNormal", { fg = fg, bg = bg }) diff --git a/wallust/.config/wallust/templates/shell-colors.sh b/wallust/.config/wallust/templates/shell-colors.sh deleted file mode 100644 index 3cfb24d..0000000 --- a/wallust/.config/wallust/templates/shell-colors.sh +++ /dev/null @@ -1,20 +0,0 @@ -# CUSTOM wallust shell template -color0={{color0}} -color1={{color1}} -color2={{color2}} -color3={{color3}} -color4={{color4}} -color5={{color5}} -color6={{color6}} -color7={{color7}} -color8={{color8}} -color9={{color9}} -color10={{color10}} -color11={{color11}} -color12={{color12}} -color13={{color13}} -color14={{color14}} -color15={{color15}} -background={{background}} -foreground={{foreground}} -cursor={{cursor}} diff --git a/wallust/.config/wallust/templates/vicinae-dark.toml b/wallust/.config/wallust/templates/vicinae-dark.toml deleted file mode 100644 index 5c2c9b3..0000000 --- a/wallust/.config/wallust/templates/vicinae-dark.toml +++ /dev/null @@ -1,78 +0,0 @@ -[meta] -name = "vicinae-wallust-dark" -description = "Wallust-generated dark theme for Vicinae" -variant = "dark" -inherits = "vicinae-dark" - -[colors.core] -accent = "{{color4}}" -accent_foreground = "{{background}}" -background = "{{background}}" -foreground = "{{foreground}}" -secondary_background = "{{color0}}" -border = "{{color8}}" - -[colors.main_window] -border = "{{color8}}" -footer = { background = "colors.core.secondary_background" } - -[colors.settings_window] -border = "{{color8}}" - -[colors.accents] -blue = "{{color4}}" -green = "{{color2}}" -magenta = "{{color5}}" -orange = "{{color1}}" -red = "{{color1}}" -yellow = "{{color3}}" -cyan = "{{color6}}" -purple = "{{color5}}" - -[colors.shortcut] -border = "colors.core.border" - -[colors.text] -default = "colors.core.foreground" -muted = "{{color7}}" -danger = "{{color1}}" -success = "{{color2}}" -placeholder = "{{color8}}" -selection = { background = "{{color4}}", foreground = "{{background}}" } - -[colors.text.links] -default = "{{color3}}" -visited = "{{color5}}" - -[colors.input] -border = "{{color8}}" -border_focus = "{{color4}}" -border_error = "{{color1}}" - -[colors.button.primary] -background = "{{color0}}" -foreground = "{{foreground}}" -hover = { background = "{{color8}}" } -focus = { outline = "colors.core.accent" } - -[colors.list.item.hover] -foreground = "{{foreground}}" -secondary_foreground = "{{color7}}" - -[colors.list.item.selection] -background = "{{color0}}" -foreground = "{{foreground}}" -secondary_background = "{{color0}}" -secondary_foreground = "{{color7}}" - -[colors.grid.item] -background = "{{color0}}" -hover = { outline = "{{foreground}}" } -selection = { outline = "{{foreground}}" } - -[colors.scrollbars] -background = "{{color8}}" - -[colors.loading] -bar = "{{color4}}" -spinner = "{{foreground}}" diff --git a/wallust/.config/wallust/templates/vicinae-light.toml b/wallust/.config/wallust/templates/vicinae-light.toml deleted file mode 100644 index 92516f8..0000000 --- a/wallust/.config/wallust/templates/vicinae-light.toml +++ /dev/null @@ -1,78 +0,0 @@ -[meta] -name = "vicinae-wallust-light" -description = "Wallust-generated light theme for Vicinae" -variant = "light" -inherits = "vicinae-light" - -[colors.core] -accent = "{{color4}}" -accent_foreground = "{{foreground}}" -background = "{{foreground}}" -foreground = "{{background}}" -secondary_background = "{{color7}}" -border = "{{color8}}" - -[colors.main_window] -border = "{{color8}}" -footer = { background = "colors.core.secondary_background" } - -[colors.settings_window] -border = "{{color8}}" - -[colors.accents] -blue = "{{color4}}" -green = "{{color2}}" -magenta = "{{color5}}" -orange = "{{color1}}" -red = "{{color1}}" -yellow = "{{color3}}" -cyan = "{{color6}}" -purple = "{{color5}}" - -[colors.shortcut] -border = "colors.core.border" - -[colors.text] -default = "colors.core.foreground" -muted = "{{color8}}" -danger = "{{color1}}" -success = "{{color2}}" -placeholder = "{{color7}}" -selection = { background = "{{color4}}", foreground = "{{foreground}}" } - -[colors.text.links] -default = "{{color3}}" -visited = "{{color5}}" - -[colors.input] -border = "{{color8}}" -border_focus = "{{color4}}" -border_error = "{{color1}}" - -[colors.button.primary] -background = "{{color7}}" -foreground = "{{background}}" -hover = { background = "{{color8}}" } -focus = { outline = "colors.core.accent" } - -[colors.list.item.hover] -foreground = "{{background}}" -secondary_foreground = "{{color8}}" - -[colors.list.item.selection] -background = "{{color7}}" -foreground = "{{background}}" -secondary_background = "{{color7}}" -secondary_foreground = "{{color8}}" - -[colors.grid.item] -background = "{{color7}}" -hover = { outline = "{{background}}" } -selection = { outline = "{{background}}" } - -[colors.scrollbars] -background = "{{color8}}" - -[colors.loading] -bar = "{{color4}}" -spinner = "{{background}}" diff --git a/wallust/.config/wallust/wallust.toml b/wallust/.config/wallust/wallust.toml deleted file mode 100644 index d1e8925..0000000 --- a/wallust/.config/wallust/wallust.toml +++ /dev/null @@ -1,11 +0,0 @@ -backend = "fastresize" - -[templates] -nvim = { template = "nvim.lua", target = "~/.cache/wallust/colors/wallust.lua" } -foottheme = { template = "foot-colors-custom.ini", target = "~/.cache/wallust/foot-theme.ini" } -vicinae_dark = { template = "vicinae-dark.toml", target = "~/.cache/wallust/vicinae-dark.toml" } -vicinae_light = { template = "vicinae-light.toml", target = "~/.cache/wallust/vicinae-light.toml" } - -[hooks] -strip_foot_hash = "sed -i '/^[^#]/s/#//g' ~/.cache/wallust/foot-theme.ini" -symlink_vicinae = "mkdir -p ~/.local/share/vicinae/themes && ln -sf ~/.cache/wallust/vicinae-dark.toml ~/.local/share/vicinae/themes/vicinae-wallust-dark.toml && ln -sf ~/.cache/wallust/vicinae-light.toml ~/.local/share/vicinae/themes/vicinae-wallust-light.toml" diff --git a/waybar/.config/waybar/config.jsonc b/waybar/.config/waybar/config.jsonc deleted file mode 100644 index c20a95c..0000000 --- a/waybar/.config/waybar/config.jsonc +++ /dev/null @@ -1,112 +0,0 @@ -{ - "exclusive": true, - "reload_style_on_change": true, - "position": "top", - "margin-top": 0, - "spacing": 0, - "height": 0, - "margin-bottom": 0, - "modules-left": [ - "niri/workspaces", - "custom/separator", - "tray", - "custom/separator2", - "custom/separator5", - "custom/media", - "custom/separator6" - ], - "modules-center": ["custom/separator", "custom/clock", "custom/separator2"], - "modules-right": [ - "custom/separator", - "custom/separator3", - "custom/kbd", - "custom/separator3", - "pulseaudio", - "custom/separator3", - "memory", - "custom/separator2" - ], - "niri/workspaces": { - "disable-scroll": true, - "format": "{index}" - }, - "custom/separator": { - "format": "[", - "tooltip": false - }, - "custom/separator2": { - "format": "]", - "tooltip": false - }, - "custom/separator3": { - "format": "󰿟", - "tooltip": false - }, - "custom/separator5": { - "exec": "sh -c 'if pgrep -x cliamp >/dev/null || playerctl status 2>/dev/null | grep -qE \"Playing|Paused\"; then echo \"{\\\"text\\\":\\\"[\\\",\\\"class\\\":\\\"show\\\"}\"; else echo \"{\\\"text\\\":\\\"\\\",\\\"class\\\":\\\"hide\\\"}\"; fi'", - "return-type": "json", - "interval": 2, - "format": "{}" - }, - "custom/separator6": { - "exec": "sh -c 'if pgrep -x cliamp >/dev/null || playerctl status 2>/dev/null | grep -qE \"Playing|Paused\"; then echo \"{\\\"text\\\":\\\"]\\\",\\\"class\\\":\\\"show\\\"}\"; else echo \"{\\\"text\\\":\\\"\\\",\\\"class\\\":\\\"hide\\\"}\"; fi'", - "return-type": "json", - "interval": 2, - "format": "{}" - }, - - "memory": { - "interval": 2, - "format": "RAM {percentage:02}%", - "on-click": "foot btop", - "states": { - "warning": 50, - "critical": 80 - } - }, - "custom/kbd": { - "exec": "/home/seraphim/dotfiles-gentoo/waybar/.config/waybar/kbd-layout.sh", - "tooltip": false - }, - "custom/clock": { - "exec": "date +'%H:%M %p - %A, %b %d' | tr '[:upper:]' '[:lower:]'", - "interval": 1, - "tooltip": false - }, - "pulseaudio": { - "justify": "center", - "format": "vol {volume}%", - "on-click": "foot wiremix", - "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", - "tooltip-format": "Playing at {volume}%", - "scroll-step": 5, - "format-muted": "vol muted", - "format-icons": { - "headphone": "", - "default": ["", "", ""] - }, - "states": { - "warning": 50, - "critical": 10 - } - }, - "custom/media": { - "format": "{}", - "max-length": 30, - "interval": 2, - "exec": "playerctl metadata --format '{{ artist }} - {{ title }}' 2>/dev/null || echo \"\"", - "on-click": "playerctl play-pause" - }, -"tray": { - "icon-size": 14, - "spacing": 3 - }, - "custom/analyze-theme": { - "exec": "node /home/seraphim/dotfiles-gentoo/waybar/.config/waybar/custom/analyze-theme.js", - "interval": 5, - "tooltip": true, - "format": "{}", - "return-type": "json", - "on-click": "sh -c '~/.config/niri/apply-colors.sh \"$(find ~/Pictures/wallpapers -type f | shuf -n 1)\"'" - } -} diff --git a/waybar/.config/waybar/kbd-layout.sh b/waybar/.config/waybar/kbd-layout.sh deleted file mode 100755 index e81462a..0000000 --- a/waybar/.config/waybar/kbd-layout.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh - -# Kill any leftover instances so reloads don't pile up. -for p in $(pgrep -f "kbd-layout.sh"); do - [ "$p" != "$$" ] && kill "$p" 2>/dev/null -done - -STATE="${XDG_RUNTIME_DIR:-/tmp}/waybar-kbd.state" -rm -f "$STATE" - -# Index of the Russian layout (from configured layouts), so we don't hardcode order. -RUS_IDX=$(niri msg keyboard-layouts 2>/dev/null | grep -i russian | grep -oE '^[ *]*[0-9]+' | tr -d ' *' | head -1) - -kbd_query() { - niri msg keyboard-layouts 2>/dev/null | grep -Fm1 '*' | grep -qi russian && echo Ru || echo En -} - -# Parse a "Keyboard layout switched: N" or "...current_idx: N" event line. -kbd_event() { - idx=$(printf '%s' "$1" | grep -oE '[0-9]+' | tail -1) - [ "$idx" = "$RUS_IDX" ] && echo Ru || echo En -} - -emit() { - v="$1"; src="$2" - echo "$v" - echo "$v" > "$STATE" -} - -# Instant path: react to niri's layout-change events. -niri msg event-stream 2>/dev/null | { - while true; do - if IFS= read -r -t 0.2 line; then - case "$line" in - *"Keyboard layout switched"*|*"Keyboard layouts changed"*) emit "$(kbd_event "$line")" event ;; - esac - else - v=$(kbd_query) - [ "$(cat "$STATE" 2>/dev/null)" != "$v" ] && emit "$v" poll - fi - done -} diff --git a/waybar/.config/waybar/style.css b/waybar/.config/waybar/style.css deleted file mode 100644 index cf8dbee..0000000 --- a/waybar/.config/waybar/style.css +++ /dev/null @@ -1,166 +0,0 @@ -@import "/home/seraphim/dotfiles-gentoo/waybar/.config/waybar/theme.css"; -@define-color bg @background; -@define-color fg @foreground; - -* { - border: none; - padding: 0px; - font-family: "JetBrains Mono Nerd Font"; - transition: background-color .3s ease-out; - font-weight: bold; - font-size: 12px; -} - -window#waybar { - background-color: transparent; -} - -#waybar > box { - border-radius: 0px; - border-bottom: 1.5px solid alpha(@foreground, 0.12); - margin: 0px 0px 2px 0px; - background-color: @background; - box-shadow: 0 1px 2px rgba(0, 0, 0, 1); - min-height: 25px; - transition-property: background-color; - transition-duration: .5s; -} - -.modules-left { - margin-left: 4px; -} - -.modules-right { - margin-right: 4px; -} - -#workspaces { - margin: 0px 0px; - transition: 0.1s ease-in-out; - padding: 0px 0px; -} - -#workspaces button { - all: initial; - padding: 0px 4px; - margin: 4px 2px; - min-width: 10px; - color: @foreground; - opacity: 1; - font-weight: 900; -} - -#workspaces button.active { - color: @background; - background-color: @foreground; - padding: 0px 4px; - margin: 4px 2px; - opacity: 1.0; -} - -#workspaces button.empty:hover, -#workspaces button:hover { - background: transparent; - color: alpha(@foreground, 1); - transition: all 150ms ease; - opacity: 0.75; -} - -#workspaces button.empty { - opacity: 0.4; - padding: 0px 4px; - margin: 4px 2px; - color: alpha(@foreground, 0.45); -} - -#workspaces button.empty.active { - opacity: 1; - background-color: @foreground; - color: @background; -} - -#memory, -#custom-media, -#custom-kbd, -#tray, -#cpu, -#custom-clock, -#bluetooth, -#pulseaudio { - min-width: 12px; - padding: 0 4px; - margin: 1px 3px 1px 3px; - opacity: 1; - color: @foreground; -} - -#tray { - opacity: 1; - padding-top: 2px; -} - -#custom-separator6, -#custom-separator5, -#custom-separator4, -#custom-separator3, -#custom-separator2, -#custom-separator { - opacity: 0.2; - padding-top: 2px; - padding-left: 2px; - padding-right: 2px; - font-size: 14px; -} - -tooltip { - padding: 2px; -} - -.hidden { - opacity: 0; -} - -tooltip { - padding: 4px; - background: @background; - font-size: 10px; - border: 1.5px solid alpha(@foreground, 0.6); - border-radius: 8px; -} - -tooltip label { - color: alpha(@foreground, 0.65); - font-weight: normal; -} - -#custom-media { - opacity: 1; - color: @foreground; - animation: repeat; - animation-name: blink; - animation-duration: 3s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; -} - -@keyframes blink { - to { - color: #999999; - } -} - -#pulseaudio.warning, -#memory.warning, -#cpu.warning { - color: alpha(@foreground, 0.65); - background-color: @background; -} - -#pulseaudio.critical, -#memory.critical, -#cpu.critical { - color: @foreground; - background-color: @background; - font-weight: 900; -} diff --git a/waybar/.config/waybar/theme-dark.css b/waybar/.config/waybar/theme-dark.css deleted file mode 100644 index d88a91d..0000000 --- a/waybar/.config/waybar/theme-dark.css +++ /dev/null @@ -1,2 +0,0 @@ -@define-color background #111111; -@define-color foreground #fafafa; diff --git a/waybar/.config/waybar/theme-light.css b/waybar/.config/waybar/theme-light.css deleted file mode 100644 index b757ab6..0000000 --- a/waybar/.config/waybar/theme-light.css +++ /dev/null @@ -1,2 +0,0 @@ -@define-color background #fafafa; -@define-color foreground #111111; diff --git a/waybar/.config/waybar/theme.css b/waybar/.config/waybar/theme.css deleted file mode 120000 index 1882049..0000000 --- a/waybar/.config/waybar/theme.css +++ /dev/null @@ -1 +0,0 @@ -theme-light.css \ No newline at end of file diff --git a/xdg-desktop-portal/.config/xdg-desktop-portal/portals.conf b/xdg-desktop-portal/.config/xdg-desktop-portal/portals.conf deleted file mode 100644 index c651895..0000000 --- a/xdg-desktop-portal/.config/xdg-desktop-portal/portals.conf +++ /dev/null @@ -1,5 +0,0 @@ -[preferred] -default=gtk -org.freedesktop.impl.portal.Settings=darkman -org.freedesktop.impl.portal.Screencast=wlr -org.freedesktop.impl.portal.Screenshot=wlr diff --git a/yazi/.config/yazi/keymap.toml b/yazi/.config/yazi/keymap.toml deleted file mode 100644 index f275171..0000000 --- a/yazi/.config/yazi/keymap.toml +++ /dev/null @@ -1,9 +0,0 @@ -[[mgr.prepend_keymap]] -on = [ "" ] -run = 'shell -- dragon -i -T %s' -desc = "Drag and drop (dragon)" - -[[mgr.prepend_keymap]] -on = "y" -run = [ 'shell -- for path in %s; do echo "file://$path"; done | wl-copy -t text/uri-list', "yank" ] -desc = "Copy file URIs to clipboard" diff --git a/yazi/.config/yazi/yazi.toml b/yazi/.config/yazi/yazi.toml deleted file mode 100644 index 7f1fde1..0000000 --- a/yazi/.config/yazi/yazi.toml +++ /dev/null @@ -1,2 +0,0 @@ -[mgr] -show_hidden = true -- cgit v1.2.3