diff options
| author | seraphim <18ycm9tx@anonaddy.me> | 2026-08-23 13:48:20 +0700 |
|---|---|---|
| committer | seraphim <18ycm9tx@anonaddy.me> | 2026-08-23 13:48:20 +0700 |
| commit | 9f12ea8a648fa6483b392dc9ba1d7dbf4e61057c (patch) | |
| tree | 35ec7c12203114c9e47cebbdb634c174094913c8 | |
| parent | b57f994aa7c74d1b4e17e3df31ddf94702a8f6de (diff) | |
-
49 files changed, 1988 insertions, 701 deletions
diff --git a/config.toml b/config.toml deleted file mode 100644 index 1c1cad4..0000000 --- a/config.toml +++ /dev/null @@ -1,8 +0,0 @@ -[terminal] -vt = 1 - -[default_session] -command = "tuigreet --cmd /home/seraphim/.local/bin/start-niri.sh" -#command = "tuigreet --time --cmd 'dbus-run-session niri'" -user = "greeter" -DISPLAYMANAGER="greetd" diff --git a/fastfetch/.config/fastfetch/config.jsonc b/fastfetch/.config/fastfetch/config.jsonc deleted file mode 100644 index ac7674f..0000000 --- a/fastfetch/.config/fastfetch/config.jsonc +++ /dev/null @@ -1,21 +0,0 @@ -{ - "modules": [ - "title", - "separator", - "os", - "kernel", - "shell", - "cpu", - "gpu", - "memory", - { "type": "wm" }, - "uptime", - "separator", - { - "type": "command", - "text": "curl -s 'wttr.in/Bern?format=%c+%t'", - "key": "Weather" - }, - { "type": "packages" } - ] -} diff --git a/foot/.config/foot/foot.ini b/foot/.config/foot/foot.ini index fd03722..2a81398 100644 --- a/foot/.config/foot/foot.ini +++ b/foot/.config/foot/foot.ini @@ -1,7 +1,7 @@ [main] include=~/.cache/wallust/foot-theme.ini -font=JetBrainsMono Nerd Font:size=12 -pad=2x0 +font=JetBrainsMono Nerd Font:size=13 +pad=0x0 # paste the rest of your theme colors here diff --git a/gtk/.config/gtk-3.0/settings.ini b/gtk/.config/gtk-3.0/settings.ini index ef98ebb..4e1634f 120000 --- a/gtk/.config/gtk-3.0/settings.ini +++ b/gtk/.config/gtk-3.0/settings.ini @@ -1 +1 @@ -settings-dark.ini
\ No newline at end of file +settings-light.ini
\ No newline at end of file diff --git a/matugen/.config/matugen/config.toml b/matugen/.config/matugen/config.toml index 338672f..9b72eee 100644 --- a/matugen/.config/matugen/config.toml +++ b/matugen/.config/matugen/config.toml @@ -1,10 +1,8 @@ -# matugen config — generates Material You / Material Design 3 colors. -# matugen is installed via portage (x11-misc/matugen). - [config] # Disable caching so the -m light/dark mode flag is always respected. caching = false +version_check = false [templates.niri] -input_path = '~/.config/matugen/templates/niri.kdl' -output_path = '~/.cache/matugen/theme.kdl' +input_path = './templates/niri.kdl' +output_path = '/home/seraphim/.cache/matugen/theme.kdl' diff --git a/mpv/.config/mpv/mpv.conf b/mpv/.config/mpv/mpv.conf index 8802c79..8311c18 100644 --- a/mpv/.config/mpv/mpv.conf +++ b/mpv/.config/mpv/mpv.conf @@ -1,6 +1,6 @@ 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=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 diff --git a/niri/.config/niri/apply-colors.sh b/niri/.config/niri/apply-colors.sh index 339e134..505578c 100755 --- a/niri/.config/niri/apply-colors.sh +++ b/niri/.config/niri/apply-colors.sh @@ -22,46 +22,59 @@ if [ -z "$IMG" ] || [ ! -f "$IMG" ]; then 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. -# A single attempt with honest error handling: the old retry loop swallowed -# failures (case && break defeats set -e) and kept the stale light theme. +# 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 -if ! wallust run -b resized "${WALLUST_PALETTE[@]}" "$IMG"; then - log "wallust FAILED ($IMG, mode=$MODE)" - exit 1 +# 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 -# 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 - # 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 - -# 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 -awww img "$IMG" - -# blurred copy for the Overview backdrop (sibling or on-the-fly generation) -"$SCRIPT_DIR/set-backdrop.sh" "$IMG" +esac || log "matugen FAILED ($IMG, mode=$MODE) — continuing without matugen colors" # reload consumers killall -SIGUSR2 waybar 2>/dev/null || true diff --git a/niri/.config/niri/config.kdl b/niri/.config/niri/config.kdl index 05b2240..24b0896 100644 --- a/niri/.config/niri/config.kdl +++ b/niri/.config/niri/config.kdl @@ -1,4 +1,3 @@ -// Material You / Material Design 3 colors, generated by matugen (see theme-switcher.sh / apply-colors.sh) include optional=true "/home/seraphim/.cache/matugen/theme.kdl" spawn-at-startup "mako" spawn-at-startup "xrdb" "-merge" "/home/seraphim/.Xresources" @@ -11,7 +10,7 @@ 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" +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" @@ -37,7 +36,7 @@ layer-rule { place-within-backdrop true } input { -// focus-follows-mouse max-scroll-amount="30%" + focus-follows-mouse max-scroll-amount="100%" keyboard { xkb { diff --git a/niri/.config/niri/theme-switcher.sh b/niri/.config/niri/theme-switcher.sh index 6b3b6e9..6d1f548 100755 --- a/niri/.config/niri/theme-switcher.sh +++ b/niri/.config/niri/theme-switcher.sh @@ -1,12 +1,19 @@ #!/bin/bash +# Day/night theme switcher + wallpaper/color applier. # Two wallpapers: day.jpg (9:00-18:00) and night.jpg (18:00-9:00). -# To switch, just rename the files in ~/Pictures/wallpapers/. +# +# 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" @@ -15,58 +22,114 @@ log() { printf '%s %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >>"$LOG" } -while true; do - HOUR=$(date +%H) - HOUR=$((10#$HOUR)) - - if [ "$HOUR" -ge 9 ] && [ "$HOUR" -lt 18 ]; then +# 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" - else + 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 - sleep 60 - continue + 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 + # 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 - if [ "$CURRENT_WALLPAPER" != "$WALLPAPER" ] || [ "$CURRENT_THEME" != "$TARGET_STATE" ]; then - 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 + 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 \ + "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" + 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)" - else - # State is intentionally NOT written so the next loop iteration retries. - log "FAILED to apply $TARGET_STATE ($WALLPAPER), will retry" - fi + 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 +} - 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/.gitignore b/nvim/.config/nvim/.gitignore deleted file mode 100644 index cc5457a..0000000 --- a/nvim/.config/nvim/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -tt.* -.tests -doc/tags -debug -.repro -foo.* -*.log -data diff --git a/nvim/.config/nvim/.neoconf.json b/nvim/.config/nvim/.neoconf.json deleted file mode 100644 index 7c48087..0000000 --- a/nvim/.config/nvim/.neoconf.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "neodev": { - "library": { - "enabled": true, - "plugins": true - } - }, - "neoconf": { - "plugins": { - "lua_ls": { - "enabled": true - } - } - } -} diff --git a/nvim/.config/nvim/LICENSE b/nvim/.config/nvim/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/nvim/.config/nvim/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/nvim/.config/nvim/README.md b/nvim/.config/nvim/README.md deleted file mode 100644 index 185280b..0000000 --- a/nvim/.config/nvim/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# 💤 LazyVim - -A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). -Refer to the [documentation](https://lazyvim.github.io/installation) to get started. diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index 2514f9e..6bf6f8e 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -1,2 +1,4 @@ --- bootstrap lazy.nvim, LazyVim and your plugins -require("config.lazy") +require("caelus.init").colorscheme() +require("config.keymaps") +require("config.options") +require("config.plugins") diff --git a/nvim/.config/nvim/lazyvim.json b/nvim/.config/nvim/lazyvim.json deleted file mode 100644 index d8bcaf6..0000000 --- a/nvim/.config/nvim/lazyvim.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extras": [ - - ], - "install_version": 8, - "news": { - "NEWS.md": "11866" - }, - "version": 8 -}
\ No newline at end of file diff --git a/nvim/.config/nvim/lua/caelus/init.lua b/nvim/.config/nvim/lua/caelus/init.lua new file mode 100644 index 0000000..dec0a41 --- /dev/null +++ b/nvim/.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/nvim/.config/nvim/lua/config/autocmds.lua b/nvim/.config/nvim/lua/config/autocmds.lua deleted file mode 100644 index 4221e75..0000000 --- a/nvim/.config/nvim/lua/config/autocmds.lua +++ /dev/null @@ -1,8 +0,0 @@ --- Autocmds are automatically loaded on the VeryLazy event --- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua --- --- Add any additional autocmds here --- with `vim.api.nvim_create_autocmd` --- --- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults) --- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell") diff --git a/nvim/.config/nvim/lua/config/keymaps.lua b/nvim/.config/nvim/lua/config/keymaps.lua index 2c134f7..e2987bc 100644..100755 --- a/nvim/.config/nvim/lua/config/keymaps.lua +++ b/nvim/.config/nvim/lua/config/keymaps.lua @@ -1,3 +1,13 @@ --- Keymaps are automatically loaded on the VeryLazy event --- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua --- Add any additional keymaps here +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 '>+1<CR>gv=gv", { desc = "moves lines down in visual selection" }) +vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "moves lines up in visual selection" }) + +vim.keymap.set("n", "<leader>al", "<CMD>term<CR>", { desc = "Open terminal" }) + +vim.keymap.set("n", "<leader>f", vim.lsp.buf.format) diff --git a/nvim/.config/nvim/lua/config/lazy.lua b/nvim/.config/nvim/lua/config/lazy.lua deleted file mode 100644 index d73bfa1..0000000 --- a/nvim/.config/nvim/lua/config/lazy.lua +++ /dev/null @@ -1,53 +0,0 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end -end -vim.opt.rtp:prepend(lazypath) - -require("lazy").setup({ - spec = { - -- add LazyVim and import its plugins - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - -- import/override with your plugins - { import = "plugins" }, - }, - defaults = { - -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. - -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. - lazy = false, - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = false, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - }, - install = { colorscheme = { "tokyonight", "habamax" } }, - checker = { - enabled = true, -- check for plugin updates periodically - notify = false, -- notify on update - }, -- automatically check for plugin updates - performance = { - rtp = { - -- disable some rtp plugins - disabled_plugins = { - "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - "tarPlugin", - "tohtml", - "tutor", - "zipPlugin", - }, - }, - }, -}) diff --git a/nvim/.config/nvim/lua/config/options.lua b/nvim/.config/nvim/lua/config/options.lua index 3ea1454..dac7c76 100644..100755 --- a/nvim/.config/nvim/lua/config/options.lua +++ b/nvim/.config/nvim/lua/config/options.lua @@ -1,3 +1,40 @@ --- Options are automatically loaded before lazy.nvim startup --- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua --- Add any additional options here +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 new file mode 100644 index 0000000..f0b7619 --- /dev/null +++ b/nvim/.config/nvim/lua/config/plugins.lua @@ -0,0 +1,97 @@ +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 +require("oil").setup({ default_file_explorer = true, + columns = {}, + keymaps = { + ["q"] = "actions.close", + }, + delete_to_trash = true, + view_options = { + show_hidden = true, + }, + skip_confirm_for_simple_edits = true, +}) +vim.keymap.set("n", "<leader>fm", "<CMD>Oil<CR>", { desc = "Open parent directory" }) + +-- harpoon +vim.keymap.set("n", "<leader>ad", function() + harpoon:list():add() +end, { desc = "Harpoon add file" }) +vim.keymap.set("n", "<C-e>", 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", "<leader>vca", function() vim.lsp.buf.code_action() end, opts) +vim.keymap.set("n", "<leader>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/lua/plugins/example.lua b/nvim/.config/nvim/lua/plugins/example.lua deleted file mode 100644 index 17f53d6..0000000 --- a/nvim/.config/nvim/lua/plugins/example.lua +++ /dev/null @@ -1,197 +0,0 @@ --- since this is just an example spec, don't actually load anything here and return an empty spec --- stylua: ignore -if true then return {} end - --- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim --- --- In your plugin files, you can: --- * add extra plugins --- * disable/enabled LazyVim plugins --- * override the configuration of LazyVim plugins -return { - -- add gruvbox - { "ellisonleao/gruvbox.nvim" }, - - -- Configure LazyVim to load gruvbox - { - "LazyVim/LazyVim", - opts = { - colorscheme = "gruvbox", - }, - }, - - -- change trouble config - { - "folke/trouble.nvim", - -- opts will be merged with the parent spec - opts = { use_diagnostic_signs = true }, - }, - - -- disable trouble - { "folke/trouble.nvim", enabled = false }, - - -- override nvim-cmp and add cmp-emoji - { - "hrsh7th/nvim-cmp", - dependencies = { "hrsh7th/cmp-emoji" }, - ---@param opts cmp.ConfigSchema - opts = function(_, opts) - table.insert(opts.sources, { name = "emoji" }) - end, - }, - - -- change some telescope options and a keymap to browse plugin files - { - "nvim-telescope/telescope.nvim", - keys = { - -- add a keymap to browse plugin files - -- stylua: ignore - { - "<leader>fp", - function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, - desc = "Find Plugin File", - }, - }, - -- change some options - opts = { - defaults = { - layout_strategy = "horizontal", - layout_config = { prompt_position = "top" }, - sorting_strategy = "ascending", - winblend = 0, - }, - }, - }, - - -- add pyright to lspconfig - { - "neovim/nvim-lspconfig", - ---@class PluginLspOpts - opts = { - ---@type lspconfig.options - servers = { - -- pyright will be automatically installed with mason and loaded with lspconfig - pyright = {}, - }, - }, - }, - - -- add tsserver and setup with typescript.nvim instead of lspconfig - { - "neovim/nvim-lspconfig", - dependencies = { - "jose-elias-alvarez/typescript.nvim", - init = function() - require("lazyvim.util").lsp.on_attach(function(_, buffer) - -- stylua: ignore - vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) - vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) - end) - end, - }, - ---@class PluginLspOpts - opts = { - ---@type lspconfig.options - servers = { - -- tsserver will be automatically installed with mason and loaded with lspconfig - tsserver = {}, - }, - -- you can do any additional lsp server setup here - -- return true if you don't want this server to be setup with lspconfig - ---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?> - setup = { - -- example to setup with typescript.nvim - tsserver = function(_, opts) - require("typescript").setup({ server = opts }) - return true - end, - -- Specify * to use this function as a fallback for any server - -- ["*"] = function(server, opts) end, - }, - }, - }, - - -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, - -- treesitter, mason and typescript.nvim. So instead of the above, you can use: - { import = "lazyvim.plugins.extras.lang.typescript" }, - - -- add more treesitter parsers - { - "nvim-treesitter/nvim-treesitter", - opts = { - ensure_installed = { - "bash", - "html", - "javascript", - "json", - "lua", - "markdown", - "markdown_inline", - "python", - "query", - "regex", - "tsx", - "typescript", - "vim", - "yaml", - }, - }, - }, - - -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above - -- would overwrite `ensure_installed` with the new value. - -- If you'd rather extend the default config, use the code below instead: - { - "nvim-treesitter/nvim-treesitter", - opts = function(_, opts) - -- add tsx and treesitter - vim.list_extend(opts.ensure_installed, { - "tsx", - "typescript", - }) - end, - }, - - -- the opts function can also be used to change the default opts: - { - "nvim-lualine/lualine.nvim", - event = "VeryLazy", - opts = function(_, opts) - table.insert(opts.sections.lualine_x, { - function() - return "😄" - end, - }) - end, - }, - - -- or you can return new options to override all the defaults - { - "nvim-lualine/lualine.nvim", - event = "VeryLazy", - opts = function() - return { - --[[add your custom lualine config here]] - } - end, - }, - - -- use mini.starter instead of alpha - { import = "lazyvim.plugins.extras.ui.mini-starter" }, - - -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc - { import = "lazyvim.plugins.extras.lang.json" }, - - -- add any tools you want to have installed below - { - "williamboman/mason.nvim", - opts = { - ensure_installed = { - "stylua", - "shellcheck", - "shfmt", - "flake8", - }, - }, - }, -} diff --git a/nvim/.config/nvim/nvim-pack-lock.json b/nvim/.config/nvim/nvim-pack-lock.json new file mode 100644 index 0000000..dc69b9a --- /dev/null +++ b/nvim/.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/nvim/.config/nvim/stylua.toml b/nvim/.config/nvim/stylua.toml deleted file mode 100644 index 5d6c50d..0000000 --- a/nvim/.config/nvim/stylua.toml +++ /dev/null @@ -1,3 +0,0 @@ -indent_type = "Spaces" -indent_width = 2 -column_width = 120
\ No newline at end of file diff --git a/portage/etc/portage/package.accept_keywords/badwolf b/portage/etc/portage/package.accept_keywords/badwolf new file mode 100644 index 0000000..dcf5199 --- /dev/null +++ b/portage/etc/portage/package.accept_keywords/badwolf @@ -0,0 +1 @@ +www-client/badwolf diff --git a/portage/etc/portage/package.accept_keywords/waypaper b/portage/etc/portage/package.accept_keywords/waypaper new file mode 100644 index 0000000..c8d3e43 --- /dev/null +++ b/portage/etc/portage/package.accept_keywords/waypaper @@ -0,0 +1,5 @@ +gui-apps/waypaper ~amd64 +dev-python/imageio ~amd64 +dev-python/imageio-ffmpeg ~amd64 +dev-python/imageio-ffmpeg ~amd64 +dev-python/screeninfo ~amd64 diff --git a/portage/etc/portage/package.use/libreoffice b/portage/etc/portage/package.use/libreoffice new file mode 100644 index 0000000..eda0a78 --- /dev/null +++ b/portage/etc/portage/package.use/libreoffice @@ -0,0 +1 @@ +app-office/libreoffice l10n_ru diff --git a/portage/etc/portage/package.use/qutebrowser b/portage/etc/portage/package.use/qutebrowser new file mode 100644 index 0000000..a4db9cf --- /dev/null +++ b/portage/etc/portage/package.use/qutebrowser @@ -0,0 +1 @@ +>=dev-python/pyqt6-6.11.0-r1 webchannel diff --git a/portage/etc/portage/package.use/waypaper b/portage/etc/portage/package.use/waypaper new file mode 100644 index 0000000..eb72065 --- /dev/null +++ b/portage/etc/portage/package.use/waypaper @@ -0,0 +1 @@ +gui-apps/waypaper python_targets_python3_12 diff --git a/portage/etc/portage/package.use/zz-autounmask b/portage/etc/portage/package.use/zz-autounmask index 4b6f92b..622a6b5 100644 --- a/portage/etc/portage/package.use/zz-autounmask +++ b/portage/etc/portage/package.use/zz-autounmask @@ -7,6 +7,7 @@ # required by dev-qt/qtmultimedia-6.11.1::gentoo[qml] # required by kde-apps/dolphin-26.04.3::gentoo # required by kde-apps/dolphin (argument) +>=dev-python/pyqt6-6.11.0-r1 quick >=sys-libs/zlib-1.3.2-r1 minizip # required by x11-libs/cairo-1.18.4-r1::gentoo # required by media-libs/harfbuzz-12.3.2::gentoo[cairo] @@ -476,3 +477,113 @@ x11-libs/libX11 abi_x86_32 x11-libs/libXext abi_x86_32 x11-libs/libGL abi_x86_32 media-libs/libglvnd abi_x86_32 +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/pygobject-3.56.3 python_targets_python3_12 +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/pillow-12.3.0 python_targets_python3_12 +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/imageio-2.37.4 python_targets_python3_12 +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/imageio-ffmpeg-0.6.0 python_targets_python3_12 +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/screeninfo-0.8.1 python_targets_python3_12 +# required by dev-python/screeninfo-0.8.1::guru +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/poetry-core-2.4.1 python_targets_python3_12 +# required by dev-python/poetry-core-2.4.1::gentoo +# required by dev-python/screeninfo-0.8.1::guru +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/fastjsonschema-2.21.2 python_targets_python3_12 +# required by dev-python/poetry-core-2.4.1::gentoo +# required by dev-python/screeninfo-0.8.1::guru +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/lark-1.3.1 python_targets_python3_12 +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/numpy-2.5.1 python_targets_python3_12 +# required by dev-python/numpy-2.5.1::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/cython-3.2.8 python_targets_python3_12 +# required by dev-python/numpy-2.5.1::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/meson-python-0.20.0 python_targets_python3_12 +# required by dev-python/meson-python-0.20.0::gentoo[-test] +# required by dev-python/numpy-2.5.1::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/pyproject-metadata-0.12.1 python_targets_python3_12 +# required by dev-python/pillow-12.3.0::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/olefile-0.47 python_targets_python3_12 +# required by dev-python/pillow-12.3.0::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/pybind11-3.0.4 python_targets_python3_12 +# required by dev-python/pybind11-3.0.4::gentoo +# required by dev-python/pillow-12.3.0::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/scikit-build-core-1.0.3 python_targets_python3_12 +# required by dev-python/scikit-build-core-1.0.3::gentoo +# required by dev-python/pybind11-3.0.4::gentoo +# required by dev-python/pillow-12.3.0::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/pathspec-1.1.1 python_targets_python3_12 +# required by dev-python/scikit-build-core-1.0.3::gentoo +# required by dev-python/pybind11-3.0.4::gentoo +# required by dev-python/pillow-12.3.0::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/hatch-vcs-0.5.0 python_targets_python3_12 +# required by dev-python/hatch-vcs-0.5.0::gentoo +# required by dev-python/scikit-build-core-1.0.3::gentoo +# required by dev-python/pybind11-3.0.4::gentoo +# required by dev-python/pillow-12.3.0::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/hatchling-1.31.0 python_targets_python3_12 +# required by dev-python/hatchling-1.31.0::gentoo +# required by dev-python/hatch-vcs-0.5.0::gentoo +# required by dev-python/scikit-build-core-1.0.3::gentoo +# required by dev-python/pybind11-3.0.4::gentoo +# required by dev-python/pillow-12.3.0::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/editables-0.6 python_targets_python3_12 +# required by dev-python/hatchling-1.31.0::gentoo +# required by dev-python/hatch-vcs-0.5.0::gentoo +# required by dev-python/scikit-build-core-1.0.3::gentoo +# required by dev-python/pybind11-3.0.4::gentoo +# required by dev-python/pillow-12.3.0::gentoo +# required by dev-python/imageio-2.37.4::gentoo +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/pluggy-1.6.0 python_targets_python3_12 +# required by dev-python/pygobject-3.56.3::gentoo[cairo] +# required by gui-apps/waypaper-2.7-r1::guru +# required by gui-apps/waypaper (argument) +>=dev-python/pycairo-1.29.0-r1 python_targets_python3_12 diff --git a/portage/etc/portage/savedconfig/www-client/badwolf-1.4.0-r2 b/portage/etc/portage/savedconfig/www-client/badwolf-1.4.0-r2 new file mode 100644 index 0000000..c3d5177 --- /dev/null +++ b/portage/etc/portage/savedconfig/www-client/badwolf-1.4.0-r2 @@ -0,0 +1,117 @@ +// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf> +// SPDX-License-Identifier: BSD-3-Clause + +#ifndef CONFIG_H_INCLUDED +#define CONFIG_H_INCLUDED +/* BADWOLF_TAB_POSITION: Position of the tab listing, can be one of: + * - GTK_POS_TOP + * - GTK_POS_BOTTOM + * - GTK_POS_RIGHT + * - GTK_POS_LEFT + * + * See https://docs.gtk.org/gtk3/enum.PositionType.html + */ +#define BADWOLF_TAB_POSITION GTK_POS_TOP + +/* BADWOLF_TAB_LABEL_CHARWIDTH: Amount of characters the tab label text fits + * Quite conflicts with BADWOLF_TAB_BOX_WIDTH, recommended to only define one + */ +#define BADWOLF_TAB_LABEL_CHARWIDTH 26 + +/* BADWOLF_TAB_BOX_WIDTH: Requested width (in pixels) for the whole tab + * Quite conflicts with BADWOLF_TAB_LABEL_CHARWIDTH, recommended to only define one + */ +//#define BADWOLF_TAB_BOX_WIDTH 120 + +// BADWOLF_TAB_HEXPAND: Should the tab try to fill the available horizontal space? +#define BADWOLF_TAB_HEXPAND FALSE + +/* BADWOLF_TAB_LABEL_ELLIPSIZE: pango ellipsize mode of the tab label text, can be one of: + * - PANGO_ELLIPSIZE_NONE + * - PANGO_ELLIPSIZE_START + * - PANGO_ELLIPSIZE_MIDDLE + * - PANGO_ELLIPSIZE_END + * + * See https://docs.gtk.org/Pango/enum.EllipsizeMode.html + */ +#define BADWOLF_TAB_LABEL_ELLIPSIZE PANGO_ELLIPSIZE_MIDDLE + +// BADWOLF_BOX_PADDING: Amount of padding between browser’s box (tab child) elements +#define BADWOLF_BOX_PADDING 0 + +// BADWOLF_TOOLBAR_PADDING: Amount of padding between toolbar elements +#define BADWOLF_TOOLBAR_PADDING 0 + +// BADWOLF_TOOLBAR_PADDING: Amount of padding between toolbar elements +#define BADWOLF_TOOLBAR_SEPARATOR_PADDING 4 + +// BADWOLF_STATUSBAR_PADDING: Amount of padding between statusbar elements +#define BADWOLF_STATUSBAR_PADDING 0 + +// BADWOLF_DOWNLOAD_PADDING: Amount of padding between download list row-elements +#define BADWOLF_DOWNLOAD_PADDING 5 + +/* BADWOLF_DEFAULT_WIDTH / BADWOLF_DEFAULT_HEIGHT: + * Used to define the default width/height of the window, + * useful for floating Window Managers, probably useless in tiling ones + * + * See https://docs.gtk.org/gtk3/method.Window.set_default_size.html + */ +#define BADWOLF_DEFAULT_WIDTH 800 +#define BADWOLF_DEFAULT_HEIGHT 600 + +/* BADWOLF_WEBKIT_SETTINGS: + * Used when creating a new view with webkit_settings_new_with_settings the usage is: + * setting-name, setting-value, setting-name, …, NULL + * + * See: https://webkitgtk.org/reference/webkit2gtk/stable/class.Settings.html#properties + */ +// clang-format off +#define BADWOLF_WEBKIT_SETTINGS \ + "default-charset", "utf-8", \ + "enable-caret-browsing", FALSE, \ + "enable-developer-extras", TRUE, \ + "enable-dns-prefetching", FALSE, \ + "enable-hyperlink-auditing", FALSE, \ + "enable-java", FALSE, \ + "enable-javascript-markup", FALSE, \ + "enable-javascript", TRUE, \ + "enable-plugins", FALSE, \ + "javascript-can-access-clipboard", FALSE, \ + "javascript-can-open-windows-automatically", FALSE, \ + "media-playback-requires-user-gesture", TRUE, \ + "minimum-font-size", 9, \ + "allow-top-navigation-to-data-urls", FALSE, \ + NULL +// clang-format on + +/* BADWOLF_STATUSLABEL_ELLIPSIZE: pango ellipsize mode of the status bar label text, can be one of: + * - PANGO_ELLIPSIZE_NONE + * - PANGO_ELLIPSIZE_START + * - PANGO_ELLIPSIZE_MIDDLE + * - PANGO_ELLIPSIZE_END + * + * See https://docs.gtk.org/Pango/enum.EllipsizeMode.html + */ +#define BADWOLF_STATUSLABEL_ELLIPSIZE PANGO_ELLIPSIZE_MIDDLE + +/* BADWOLF_DOWNLOAD_FILE_PATH_ELLIPSIZE: pango ellipsize mode of the download destination path, + * can be one of: + * - PANGO_ELLIPSIZE_NONE + * - PANGO_ELLIPSIZE_START + * - PANGO_ELLIPSIZE_MIDDLE + * - PANGO_ELLIPSIZE_END + * + * See https://docs.gtk.org/Pango/enum.EllipsizeMode.html + */ +#define BADWOLF_DOWNLOAD_FILE_PATH_ELLIPSIZE PANGO_ELLIPSIZE_MIDDLE + +// BADWOLF_LOCATION_INLINE_SELECTION: show selected completion as a selection in location entry +#define BADWOLF_LOCATION_INLINE_SELECTION TRUE + +// BADWOLF_MAN_HTML_CMD: Command to render manpages to HTML. +// Needs to support `[section] name` as additional arguments. +// Default one made for mandoc +#define BADWOLF_MAN_HTML_CMD "man", "-Thtml", "-Oman=man:%N.%S", "-Otoc" + +#endif /* CONFIG_H_INCLUDED */ diff --git a/portage/etc/portage/savedconfig/www-client/surf-2.1-r3 b/portage/etc/portage/savedconfig/www-client/surf-2.1-r3 new file mode 100644 index 0000000..ef44721 --- /dev/null +++ b/portage/etc/portage/savedconfig/www-client/surf-2.1-r3 @@ -0,0 +1,192 @@ +/* modifier 0 means no modifier */ +static int surfuseragent = 1; /* Append Surf version to default WebKit user agent */ +static char *fulluseragent = ""; /* Or override the whole user agent string */ +static char *scriptfile = "~/.surf/script.js"; +static char *styledir = "~/.surf/styles/"; +static char *certdir = "~/.surf/certificates/"; +static char *cachedir = "~/.surf/cache/"; +static char *cookiefile = "~/.surf/cookies.txt"; + +/* Webkit default features */ +/* Highest priority value will be used. + * Default parameters are priority 0 + * Per-uri parameters are priority 1 + * Command parameters are priority 2 + */ +static Parameter defconfig[ParameterLast] = { + /* parameter Arg value priority */ + [AccessMicrophone] = { { .i = 0 }, }, + [AccessWebcam] = { { .i = 0 }, }, + [Certificate] = { { .i = 0 }, }, + [CaretBrowsing] = { { .i = 0 }, }, + [CookiePolicies] = { { .v = "@Aa" }, }, + [DefaultCharset] = { { .v = "UTF-8" }, }, + [DiskCache] = { { .i = 1 }, }, + [DNSPrefetch] = { { .i = 0 }, }, + [Ephemeral] = { { .i = 0 }, }, + [FileURLsCrossAccess] = { { .i = 0 }, }, + [FontSize] = { { .i = 12 }, }, + [FrameFlattening] = { { .i = 0 }, }, + [Geolocation] = { { .i = 0 }, }, + [HideBackground] = { { .i = 0 }, }, + [Inspector] = { { .i = 0 }, }, + [Java] = { { .i = 1 }, }, + [JavaScript] = { { .i = 1 }, }, + [KioskMode] = { { .i = 0 }, }, + [LoadImages] = { { .i = 1 }, }, + [MediaManualPlay] = { { .i = 1 }, }, + [PreferredLanguages] = { { .v = (char *[]){ NULL } }, }, + [RunInFullscreen] = { { .i = 0 }, }, + [ScrollBars] = { { .i = 1 }, }, + [ShowIndicators] = { { .i = 1 }, }, + [SiteQuirks] = { { .i = 1 }, }, + [SmoothScrolling] = { { .i = 0 }, }, + [SpellChecking] = { { .i = 0 }, }, + [SpellLanguages] = { { .v = ((char *[]){ "en_US", NULL }) }, }, + [StrictTLS] = { { .i = 1 }, }, + [Style] = { { .i = 1 }, }, + [WebGL] = { { .i = 0 }, }, + [ZoomLevel] = { { .f = 1.0 }, }, +}; + +static UriParameters uriparams[] = { + { "(://|\\.)suckless\\.org(/|$)", { + [JavaScript] = { { .i = 0 }, 1 }, + }, }, +}; + +/* default window size: width, height */ +static int winsize[] = { 800, 600 }; + +static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE | + WEBKIT_FIND_OPTIONS_WRAP_AROUND; + +#define PROMPT_GO "Go:" +#define PROMPT_FIND "Find:" + +/* SETPROP(readprop, setprop, prompt)*/ +#define SETPROP(r, s, p) { \ + .v = (const char *[]){ "/bin/sh", "-c", \ + "prop=\"$(printf '%b' \"$(xprop -id $1 $2 " \ + "| sed \"s/^$2(STRING) = //;s/^\\\"\\(.*\\)\\\"$/\\1/\")\" " \ + "| dmenu -p \"$4\" -w $1)\" && xprop -id $1 -f $3 8s -set $3 \"$prop\"", \ + "surf-setprop", winid, r, s, p, NULL \ + } \ +} + +/* DOWNLOAD(URI, referer) */ +#define DOWNLOAD(u, r) { \ + .v = (const char *[]){ "st", "-e", "/bin/sh", "-c",\ + "curl -g -L -J -O -A \"$1\" -b \"$2\" -c \"$2\"" \ + " -e \"$3\" \"$4\"; read", \ + "surf-download", useragent, cookiefile, r, u, NULL \ + } \ +} + +/* PLUMB(URI) */ +/* This called when some URI which does not begin with "about:", + * "http://" or "https://" should be opened. + */ +#define PLUMB(u) {\ + .v = (const char *[]){ "/bin/sh", "-c", \ + "xdg-open \"$0\"", u, NULL \ + } \ +} + +/* VIDEOPLAY(URI) */ +#define VIDEOPLAY(u) {\ + .v = (const char *[]){ "/bin/sh", "-c", \ + "mpv --really-quiet \"$0\"", u, NULL \ + } \ +} + +/* styles */ +/* + * The iteration will stop at the first match, beginning at the beginning of + * the list. + */ +static SiteSpecific styles[] = { + /* regexp file in $styledir */ + { ".*", "default.css" }, +}; + +/* certificates */ +/* + * Provide custom certificate for urls + */ +static SiteSpecific certs[] = { + /* regexp file in $certdir */ + { "://suckless\\.org/", "suckless.org.crt" }, +}; + +#define MODKEY GDK_CONTROL_MASK + +/* hotkeys */ +/* + * If you use anything else but MODKEY and GDK_SHIFT_MASK, don't forget to + * edit the CLEANMASK() macro. + */ +static Key keys[] = { + /* modifier keyval function arg */ + { MODKEY, GDK_KEY_g, spawn, SETPROP("_SURF_URI", "_SURF_GO", PROMPT_GO) }, + { MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) }, + { MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) }, + + { 0, GDK_KEY_Escape, stop, { 0 } }, + { MODKEY, GDK_KEY_c, stop, { 0 } }, + + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_r, reload, { .i = 1 } }, + { MODKEY, GDK_KEY_r, reload, { .i = 0 } }, + + { MODKEY, GDK_KEY_l, navigate, { .i = +1 } }, + { MODKEY, GDK_KEY_h, navigate, { .i = -1 } }, + + /* vertical and horizontal scrolling, in viewport percentage */ + { MODKEY, GDK_KEY_j, scrollv, { .i = +10 } }, + { MODKEY, GDK_KEY_k, scrollv, { .i = -10 } }, + { MODKEY, GDK_KEY_space, scrollv, { .i = +50 } }, + { MODKEY, GDK_KEY_b, scrollv, { .i = -50 } }, + { MODKEY, GDK_KEY_i, scrollh, { .i = +10 } }, + { MODKEY, GDK_KEY_u, scrollh, { .i = -10 } }, + + + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_j, zoom, { .i = -1 } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_k, zoom, { .i = +1 } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_q, zoom, { .i = 0 } }, + { MODKEY, GDK_KEY_minus, zoom, { .i = -1 } }, + { MODKEY, GDK_KEY_plus, zoom, { .i = +1 } }, + + { MODKEY, GDK_KEY_p, clipboard, { .i = 1 } }, + { MODKEY, GDK_KEY_y, clipboard, { .i = 0 } }, + + { MODKEY, GDK_KEY_n, find, { .i = +1 } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_n, find, { .i = -1 } }, + + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_p, print, { 0 } }, + { MODKEY, GDK_KEY_t, showcert, { 0 } }, + + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_a, togglecookiepolicy, { 0 } }, + { 0, GDK_KEY_F11, togglefullscreen, { 0 } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_o, toggleinspector, { 0 } }, + + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_c, toggle, { .i = CaretBrowsing } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_f, toggle, { .i = FrameFlattening } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_g, toggle, { .i = Geolocation } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_s, toggle, { .i = JavaScript } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_i, toggle, { .i = LoadImages } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_b, toggle, { .i = ScrollBars } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_t, toggle, { .i = StrictTLS } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_m, toggle, { .i = Style } }, +}; + +/* button definitions */ +/* target can be OnDoc, OnLink, OnImg, OnMedia, OnEdit, OnBar, OnSel, OnAny */ +static Button buttons[] = { + /* target event mask button function argument stop event */ + { OnLink, 0, 2, clicknewwindow, { .i = 0 }, 1 }, + { OnLink, MODKEY, 2, clicknewwindow, { .i = 1 }, 1 }, + { OnLink, MODKEY, 1, clicknewwindow, { .i = 1 }, 1 }, + { OnAny, 0, 8, clicknavigate, { .i = -1 }, 1 }, + { OnAny, 0, 9, clicknavigate, { .i = +1 }, 1 }, + { OnMedia, MODKEY, 1, clickexternplayer, { 0 }, 1 }, +}; diff --git a/portage/etc/portage/savedconfig/x11-misc/dmenu-5.4 b/portage/etc/portage/savedconfig/x11-misc/dmenu-5.4 new file mode 100644 index 0000000..1edb647 --- /dev/null +++ b/portage/etc/portage/savedconfig/x11-misc/dmenu-5.4 @@ -0,0 +1,23 @@ +/* See LICENSE file for copyright and license details. */ +/* Default settings; can be overriden by command line. */ + +static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ +/* -fn option overrides fonts[0]; default X11 font or font set */ +static const char *fonts[] = { + "monospace:size=10" +}; +static const char *prompt = NULL; /* -p option; prompt to the left of input field */ +static const char *colors[SchemeLast][2] = { + /* fg bg */ + [SchemeNorm] = { "#bbbbbb", "#222222" }, + [SchemeSel] = { "#eeeeee", "#005577" }, + [SchemeOut] = { "#000000", "#00ffff" }, +}; +/* -l option; if nonzero, dmenu uses vertical list with given number of lines */ +static unsigned int lines = 0; + +/* + * Characters not considered part of a word while deleting words + * for example: " /?\"&[]" + */ +static const char worddelimiters[] = " "; diff --git a/portage/etc/portage/savedconfig/x11-terms/st-0.9.3 b/portage/etc/portage/savedconfig/x11-terms/st-0.9.3 new file mode 100644 index 0000000..2cd740a --- /dev/null +++ b/portage/etc/portage/savedconfig/x11-terms/st-0.9.3 @@ -0,0 +1,474 @@ +/* See LICENSE file for copyright and license details. */ + +/* + * appearance + * + * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html + */ +static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true"; +static int borderpx = 2; + +/* + * What program is execed by st depends of these precedence rules: + * 1: program passed with -e + * 2: scroll and/or utmp + * 3: SHELL environment variable + * 4: value of shell in /etc/passwd + * 5: value of shell in config.h + */ +static char *shell = "/bin/sh"; +char *utmp = NULL; +/* scroll program: to enable use a string like "scroll" */ +char *scroll = NULL; +char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; + +/* identification sequence returned in DA and DECID */ +char *vtiden = "\033[?6c"; + +/* Kerning / character bounding-box multipliers */ +static float cwscale = 1.0; +static float chscale = 1.0; + +/* + * word delimiter string + * + * More advanced example: L" `'\"()[]{}" + */ +wchar_t *worddelimiters = L" "; + +/* selection timeouts (in milliseconds) */ +static unsigned int doubleclicktimeout = 300; +static unsigned int tripleclicktimeout = 600; + +/* alt screens */ +int allowaltscreen = 1; + +/* allow certain non-interactive (insecure) window operations such as: + setting the clipboard text */ +int allowwindowops = 0; + +/* + * draw latency range in ms - from new content/keypress/etc until drawing. + * within this range, st draws when content stops arriving (idle). mostly it's + * near minlatency, but it waits longer for slow updates to avoid partial draw. + * low minlatency will tear/flicker more, as it can "detect" idle too early. + */ +static double minlatency = 2; +static double maxlatency = 33; + +/* + * blinking timeout (set to 0 to disable blinking) for the terminal blinking + * attribute. + */ +static unsigned int blinktimeout = 800; + +/* + * thickness of underline and bar cursors + */ +static unsigned int cursorthickness = 2; + +/* + * bell volume. It must be a value between -100 and 100. Use 0 for disabling + * it + */ +static int bellvolume = 0; + +/* default TERM value */ +char *termname = "st-256color"; + +/* + * spaces per tab + * + * When you are changing this value, don't forget to adapt the »it« value in + * the st.info and appropriately install the st.info in the environment where + * you use this st version. + * + * it#$tabspaces, + * + * Secondly make sure your kernel is not expanding tabs. When running `stty + * -a` »tab0« should appear. You can tell the terminal to not expand tabs by + * running following command: + * + * stty tabs + */ +unsigned int tabspaces = 8; + +/* Terminal colors (16 first used in escape sequence) */ +static const char *colorname[] = { + /* 8 normal colors */ + "black", + "red3", + "green3", + "yellow3", + "blue2", + "magenta3", + "cyan3", + "gray90", + + /* 8 bright colors */ + "gray50", + "red", + "green", + "yellow", + "#5c5cff", + "magenta", + "cyan", + "white", + + [255] = 0, + + /* more colors can be added after 255 to use with DefaultXX */ + "#cccccc", + "#555555", + "gray90", /* default foreground colour */ + "black", /* default background colour */ +}; + + +/* + * Default colors (colorname index) + * foreground, background, cursor, reverse cursor + */ +unsigned int defaultfg = 258; +unsigned int defaultbg = 259; +unsigned int defaultcs = 256; +static unsigned int defaultrcs = 257; + +/* + * Default shape of cursor + * 2: Block ("█") + * 4: Underline ("_") + * 6: Bar ("|") + * 7: Snowman ("☃") + */ +static unsigned int cursorshape = 2; + +/* + * Default columns and rows numbers + */ + +static unsigned int cols = 80; +static unsigned int rows = 24; + +/* + * Default colour and shape of the mouse cursor + */ +static unsigned int mouseshape = XC_xterm; +static unsigned int mousefg = 7; +static unsigned int mousebg = 0; + +/* + * Color used to display font attributes when fontconfig selected a font which + * doesn't match the ones requested. + */ +static unsigned int defaultattr = 11; + +/* + * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set). + * Note that if you want to use ShiftMask with selmasks, set this to an other + * modifier, set to 0 to not use it. + */ +static uint forcemousemod = ShiftMask; + +/* + * Internal mouse shortcuts. + * Beware that overloading Button1 will disable the selection. + */ +static MouseShortcut mshortcuts[] = { + /* mask button function argument release */ + { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, + { ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} }, + { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, + { ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, + { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, +}; + +/* Internal keyboard shortcuts. */ +#define MODKEY Mod1Mask +#define TERMMOD (ControlMask|ShiftMask) + +static Shortcut shortcuts[] = { + /* mask keysym function argument */ + { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, + { ControlMask, XK_Print, toggleprinter, {.i = 0} }, + { ShiftMask, XK_Print, printscreen, {.i = 0} }, + { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, + { TERMMOD, XK_Prior, zoom, {.f = +1} }, + { TERMMOD, XK_Next, zoom, {.f = -1} }, + { TERMMOD, XK_Home, zoomreset, {.f = 0} }, + { TERMMOD, XK_C, clipcopy, {.i = 0} }, + { TERMMOD, XK_V, clippaste, {.i = 0} }, + { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { ShiftMask, XK_Insert, selpaste, {.i = 0} }, + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, +}; + +/* + * Special keys (change & recompile st.info accordingly) + * + * Mask value: + * * Use XK_ANY_MOD to match the key no matter modifiers state + * * Use XK_NO_MOD to match the key alone (no modifiers) + * appkey value: + * * 0: no value + * * > 0: keypad application mode enabled + * * = 2: term.numlock = 1 + * * < 0: keypad application mode disabled + * appcursor value: + * * 0: no value + * * > 0: cursor application mode enabled + * * < 0: cursor application mode disabled + * + * Be careful with the order of the definitions because st searches in + * this table sequentially, so any XK_ANY_MOD must be in the last + * position for a key. + */ + +/* + * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) + * to be mapped below, add them to this array. + */ +static KeySym mappedkeys[] = { -1 }; + +/* + * State bits to ignore when matching key or button events. By default, + * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. + */ +static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; + +/* + * This is the huge key array which defines all compatibility to the Linux + * world. Please decide about changes wisely. + */ +static Key key[] = { + /* keysym mask string appkey appcursor */ + { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, + { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, + { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, + { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, + { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, + { XK_KP_End, ControlMask, "\033[J", -1, 0}, + { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_KP_End, ShiftMask, "\033[K", -1, 0}, + { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, + { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, + { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, + { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, + { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, + { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, + { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, + { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, + { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, + { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, + { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, + { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, + { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, + { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, + { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, + { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, + { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, + { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, + { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, + { XK_Up, ControlMask, "\033[1;5A", 0, 0}, + { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0}, + { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0}, + { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0}, + { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, + { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, + { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0}, + { XK_Down, ControlMask, "\033[1;5B", 0, 0}, + { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0}, + { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0}, + { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0}, + { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, + { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, + { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0}, + { XK_Left, ControlMask, "\033[1;5D", 0, 0}, + { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0}, + { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0}, + { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0}, + { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, + { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, + { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0}, + { XK_Right, ControlMask, "\033[1;5C", 0, 0}, + { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0}, + { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0}, + { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0}, + { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, + { XK_Return, Mod1Mask, "\033\r", 0, 0}, + { XK_Return, XK_ANY_MOD, "\r", 0, 0}, + { XK_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_Insert, ControlMask, "\033[L", -1, 0}, + { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_Delete, ControlMask, "\033[M", -1, 0}, + { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, + { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, + { XK_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_End, ControlMask, "\033[J", -1, 0}, + { XK_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_End, ShiftMask, "\033[K", -1, 0}, + { XK_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, + { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_Next, ControlMask, "\033[6;5~", 0, 0}, + { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, + { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, + { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, + { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, + { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, + { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, + { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, + { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, + { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, + { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, + { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, + { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, + { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, + { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, + { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, + { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, + { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, + { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, + { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, + { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, + { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, + { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, + { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, + { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, + { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, + { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, + { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, + { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, + { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, + { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, + { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, + { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, + { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, + { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, + { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, + { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, + { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, + { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, + { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, + { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, + { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, + { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, + { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, + { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, + { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, + { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, + { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, + { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, + { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, + { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, + { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, + { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, + { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, + { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, + { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, + { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, + { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, + { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, + { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, + { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, + { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, + { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, + { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, + { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, + { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, + { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, + { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, + { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, + { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, + { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, + { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, + { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, + { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, + { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, + { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, + { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, + { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, + { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, + { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, + { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, + { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, + { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, + { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, + { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, + { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, + { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, +}; + +/* + * Selection types' masks. + * Use the same masks as usual. + * Button1Mask is always unset, to make masks match between ButtonPress. + * ButtonRelease and MotionNotify. + * If no match is found, regular selection is used. + */ +static uint selmasks[] = { + [SEL_RECTANGULAR] = Mod1Mask, +}; + +/* + * Printable characters in ASCII, used to estimate the advance width + * of single wide characters. + */ +static char ascii_printable[] = + " !\"#$%&'()*+,-./0123456789:;<=>?" + "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" + "`abcdefghijklmnopqrstuvwxyz{|}~"; diff --git a/portage/var/lib/portage/world b/portage/var/lib/portage/world index 8c665fd..92e4c1c 100644 --- a/portage/var/lib/portage/world +++ b/portage/var/lib/portage/world @@ -7,14 +7,11 @@ app-admin/sudo app-admin/testdisk app-crypt/gcr app-editors/emacs -app-editors/fresh app-editors/micro app-editors/neovim app-editors/vis app-eselect/eselect-repository app-misc/dragon -app-misc/fastfetch -app-misc/hyfetch app-misc/jq app-misc/tmux app-misc/yazi @@ -29,7 +26,9 @@ app-shells/zoxide app-shells/zsh app-shells/zsh-autocomplete app-text/evince +app-xemacs/emerge dev-debug/strace +dev-libs/libxml2 dev-util/android-tools dev-util/opencode-bin dev-vcs/git @@ -59,11 +58,14 @@ kde-apps/dolphin kde-apps/kio-extras media-fonts/corefonts media-fonts/dejavu +media-fonts/iosevka media-fonts/jetbrains-mono media-fonts/liberation-fonts media-fonts/nerdfonts media-fonts/noto +media-fonts/noto-cjk media-fonts/noto-emoji +media-fonts/roboto media-fonts/unifont media-gfx/imagemagick media-gfx/imv @@ -73,6 +75,7 @@ media-sound/mpc media-sound/mpd media-sound/playerctl media-sound/rmpc +media-sound/teamspeak-client media-sound/wiremix media-video/ffmpeg media-video/mpv @@ -85,6 +88,7 @@ net-im/vesktop-bin net-misc/dhcpcd net-misc/yt-dlp net-p2p/nicotine+ +net-p2p/qbittorrent net-p2p/syncthing net-proxy/Throne net-wireless/blueman @@ -100,6 +104,7 @@ sys-kernel/installkernel sys-kernel/linux-firmware sys-process/btop www-client/helium-bin +www-client/librewolf www-client/waterfox-bin x11-apps/xrdb x11-drivers/nvidia-drivers diff --git a/templates/dbg.ini b/templates/dbg.ini new file mode 120000 index 0000000..b28db24 --- /dev/null +++ b/templates/dbg.ini @@ -0,0 +1 @@ +../.config/wallust/templates/dbg.ini
\ No newline at end of file diff --git a/templates/foot-colors-custom.ini b/templates/foot-colors-custom.ini new file mode 120000 index 0000000..7e89ea4 --- /dev/null +++ b/templates/foot-colors-custom.ini @@ -0,0 +1 @@ +../.config/wallust/templates/foot-colors-custom.ini
\ No newline at end of file diff --git a/templates/niri.kdl b/templates/niri.kdl new file mode 120000 index 0000000..cb6700b --- /dev/null +++ b/templates/niri.kdl @@ -0,0 +1 @@ +../.config/matugen/templates/niri.kdl
\ No newline at end of file diff --git a/templates/nvim.lua b/templates/nvim.lua new file mode 120000 index 0000000..a98355a --- /dev/null +++ b/templates/nvim.lua @@ -0,0 +1 @@ +../.config/wallust/templates/nvim.lua
\ No newline at end of file diff --git a/templates/shell-colors.sh b/templates/shell-colors.sh new file mode 120000 index 0000000..2cf94f6 --- /dev/null +++ b/templates/shell-colors.sh @@ -0,0 +1 @@ +../.config/wallust/templates/shell-colors.sh
\ No newline at end of file diff --git a/templates/vicinae-dark.toml b/templates/vicinae-dark.toml new file mode 120000 index 0000000..9910b55 --- /dev/null +++ b/templates/vicinae-dark.toml @@ -0,0 +1 @@ +../.config/wallust/templates/vicinae-dark.toml
\ No newline at end of file diff --git a/templates/vicinae-light.toml b/templates/vicinae-light.toml new file mode 120000 index 0000000..8e185bd --- /dev/null +++ b/templates/vicinae-light.toml @@ -0,0 +1 @@ +../.config/wallust/templates/vicinae-light.toml
\ No newline at end of file diff --git a/tmux/.config/tmux/tmux.conf b/tmux/.config/tmux/tmux.conf deleted file mode 100644 index e4de091..0000000 --- a/tmux/.config/tmux/tmux.conf +++ /dev/null @@ -1,74 +0,0 @@ -# Enable 256 color support -set -g default-terminal "tmux-256color" -set -ga terminal-overrides ",*:RGB" - -# Enable mouse support -set -g mouse on - -# Enable clipboard -set -g set-clipboard on -# Change prefix from Ctrl-b to Ctrl-a -unbind C-b -set -g prefix C-a -bind-key C-a send-prefix - -# Vim-style pane navigation -bind h select-pane -L -bind j select-pane -D -bind k select-pane -U -bind l select-pane -R - -# Split windows (opens in same directory) -unbind % -bind | split-window -h -c "#{pane_current_path}" - -unbind '"' -bind - split-window -v -c "#{pane_current_path}" - -# Reload config -unbind r -bind r source-file $HOME/.config/tmux/tmux.conf - -# Alt+hjkl to switch panes without prefix -bind -n M-h select-pane -L -bind -n M-j select-pane -D -bind -n M-k select-pane -U -bind -n M-l select-pane -R - -# Alt+number to select window -bind -n M-1 select-window -t 1 -bind -n M-2 select-window -t 2 -bind -n M-3 select-window -t 3 -bind -n M-4 select-window -t 4 -bind -n M-5 select-window -t 5 -bind -n M-6 select-window -t 6 -bind -n M-7 select-window -t 7 -bind -n M-8 select-window -t 8 -bind -n M-9 select-window -t 9 -# Statusline - current window -set -g window-status-current-format "#[fg=${thm_blue},bg=${thm_bg}] #I: #[fg=${thm_magenta},bg=${thm_bg}](✓) #[fg=${thm_cyan},bg=${thm_bg}]#(echo '#{pane_current_path}' | rev | cut -d'/' -f-2 | rev) #[fg=${thm_magenta},bg=${thm_bg}]" - -# Statusline - other windows -set -g window-status-format "#[fg=${thm_blue},bg=${thm_bg}] #I: #[fg=${thm_fg},bg=${thm_bg}]#W" - -# Statusline - right side -set -g status-right "#[fg=${thm_blue},bg=${thm_bg},nobold,nounderscore,noitalics]#[fg=${thm_bg},bg=${thm_blue},nobold,nounderscore,noitalics] #[fg=${thm_fg},bg=${thm_gray}] #W #{?client_prefix,#[fg=${thm_magenta}],#[fg=${thm_cyan}]}#[bg=${thm_gray}]#{?client_prefix,#[bg=${thm_magenta}],#[bg=${thm_cyan}]}#[fg=${thm_bg}] #[fg=${thm_fg},bg=${thm_gray}] #S " - -# Statusline - left side (empty) -set -g status-left "" - -# Change from 0 based to 1 based because keyboard layout -set -g base-index 1 -set -g pane-base-index 1 -set-window-option -g pane-base-index 1 -set-option -g renumber-windows on - -# Vim-like copy/paste -set-window-option -g mode-keys vi -bind-key -T copy-mode-vi v send-keys -X begin-selection -bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle -bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel -unbind -T copy-mode-vi MouseDragEnd1Pane - - - @@ -23,17 +23,24 @@ EOF while [[ $# -gt 0 ]]; do case "$1" in - -q|--quick) QUICK=yes ;; - -c|--commit) DO_COMMIT=yes ;; - -h|--hook-install) INSTALL_HOOK=yes ;; - -n|--dry-run) DRY_RUN=yes ;; - --help) usage; exit 0 ;; - *) echo "unknown option: $1" >&2; usage >&2; exit 2 ;; + -q | --quick) QUICK=yes ;; + -c | --commit) DO_COMMIT=yes ;; + -h | --hook-install) INSTALL_HOOK=yes ;; + -n | --dry-run) DRY_RUN=yes ;; + --help) + usage + exit 0 + ;; + *) + echo "unknown option: $1" >&2 + usage >&2 + exit 2 + ;; esac shift done -log() { printf '\033[1;32m[sync]\033[0m %s\n' "$*"; } +log() { printf '\033[1;32m[sync]\033[0m %s\n' "$*"; } warn() { printf '\033[1;33m[warn]\033[0m %s\n' "$*"; } root_cp() { @@ -44,7 +51,7 @@ root_cp() { if [[ $EUID -eq 0 ]]; then cp "$1" "$2" elif cp "$1" "$2" 2>/dev/null; then - : # readable as current user — done + : # readable as current user — done elif command -v sudo >/dev/null 2>&1; then sudo cp "$1" "$2" else @@ -59,8 +66,8 @@ rsync_portage() { # Broken symlinks are excluded (rsync -L aborts on dangling referents). local exfile exfile="$(mktemp)" - printf '.gitkeep\nmake.profile\n' > "$exfile" - find /etc/portage -type l ! -exec test -e {} \; -printf '%P\n' >> "$exfile" + printf '.gitkeep\nmake.profile\n' >"$exfile" + find /etc/portage -type l ! -exec test -e {} \; -printf '%P\n' >>"$exfile" local -a opts=(-aL --delete "--exclude-from=$exfile") [[ "$DRY_RUN" == "yes" ]] && opts+=(-n) @@ -75,15 +82,15 @@ sync_portage() { if [[ -e /etc/portage/make.profile ]]; then log "profile: $(readlink /etc/portage/make.profile)" if [[ "$DRY_RUN" != "yes" ]]; then - printf '%s\n' "$(readlink /etc/portage/make.profile)" > "$REPO_DIR/portage/PROFILE" + printf '%s\n' "$(readlink /etc/portage/make.profile)" >"$REPO_DIR/portage/PROFILE" else log " would write: portage/PROFILE" fi fi log "world /var/lib/portage/world -> repo" - if [[ -L /var/lib/portage/world ]] \ - && [[ "$(readlink -f /var/lib/portage/world)" == "$REPO_DIR/portage/var/lib/portage/world" ]]; then + if [[ -L /var/lib/portage/world ]] && + [[ "$(readlink -f /var/lib/portage/world)" == "$REPO_DIR/portage/var/lib/portage/world" ]]; then log " already a symlink into the repo — no copy needed" else root_cp /var/lib/portage/world "$REPO_DIR/portage/var/lib/portage/world" @@ -114,7 +121,7 @@ install_hook() { log "writing $hook" if [[ $EUID -eq 0 ]]; then mkdir -p /etc/portage/postsync.d - cat > "$hook" <<EOF + cat >"$hook" <<EOF #!/usr/bin/env bash # generated by update.sh --hook-install — keeps dotfiles fresh after each emerge exec "$REPO_DIR/update.sh" --quick @@ -164,4 +171,5 @@ main() { fi } -main "$@"
\ No newline at end of file +main "$@" + diff --git a/vicinae/.config/vicinae/settings.json b/vicinae/.config/vicinae/settings.json index 10ce861..b9a5a02 100644 --- a/vicinae/.config/vicinae/settings.json +++ b/vicinae/.config/vicinae/settings.json @@ -1,30 +1,82 @@ +// 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": { - "dark": { - "name": "vicinae-wallust-dark" - }, "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 } } }, @@ -32,6 +84,151 @@ "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/nvim.lua b/wallust/.config/wallust/templates/nvim.lua new file mode 100644 index 0000000..be60dd7 --- /dev/null +++ b/wallust/.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/wallust/.config/wallust/wallust.toml b/wallust/.config/wallust/wallust.toml index c8fdbdb..d1e8925 100644 --- a/wallust/.config/wallust/wallust.toml +++ b/wallust/.config/wallust/wallust.toml @@ -1,6 +1,7 @@ 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" } diff --git a/waybar/.config/waybar/theme.css b/waybar/.config/waybar/theme.css index aea3c67..1882049 120000 --- a/waybar/.config/waybar/theme.css +++ b/waybar/.config/waybar/theme.css @@ -1 +1 @@ -theme-dark.css
\ No newline at end of file +theme-light.css
\ No newline at end of file diff --git a/zshrc/.zshrc b/zshrc/.zshrc index 44cf283..1663488 100644 --- a/zshrc/.zshrc +++ b/zshrc/.zshrc @@ -12,6 +12,9 @@ source $ZSH/oh-my-zsh.sh # Autosuggest config ZSH_AUTOSUGGEST_STRATEGY=(history completion) # Aliases +alias wllpprsw='~/dotfiles-gentoo/niri/.config/niri/theme-switcher.sh' +alias drksw='darkman toggle' +alias bft='~/git-cloned/bfetch/bfetch --no-kernel' alias open='xdg-open' alias ls="eza -lha --icons" alias ll="eza -lh --icons" @@ -39,6 +42,7 @@ selected_fg="#$(grep -m1 '^color0' ~/.cache/wallust/colors.sh | grep -oE '#[0-9a selected_bg="#$(grep -m1 '^color4' ~/.cache/wallust/colors.sh | grep -oE '#[0-9a-fA-F]{6}')" EOF } +export MOZ_ENABLE_WAYLAND=1 # Walllust installation export PATH="$HOME/.cargo/bin:$PATH" # Swing Music installation |
