Compare commits

..

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

169 changed files with 8398 additions and 5101 deletions

View file

@ -0,0 +1,77 @@
window:
decorations: none
startup_mode: Maximized
font:
normal:
family: Iosevka Term SS09
style: Regular
bold:
family: Iosevka Term SS09
style: Semibold
italic:
family: Iosevka Term Curly Slab
style: Light Italic
bold_italic:
family: Iosevka SS15
style: Extralight Italic
size: 10
offset:
x: 0
y: 3
glyph_offset:
x: 0
y: 2
cursor:
# Values for `style`:
# - ▇ Block
# - _ Underline
# - | Beam
style: Block
vi_mode_style: Beam
unfocused_hollow: true
thickness: 0.15
mouse:
hide_when_typing: true
# url:
# launcher:
# program: /home/dln/bin/url-copy
colors:
primary:
background: '#fcfcfc'
foreground: '#000000'
normal:
black: '#212121'
red: '#b7141e'
green: '#457b23'
yellow: '#f5971d'
blue: '#134eb2'
magenta: '#550087'
cyan: '#0e707c'
white: '#eeeeee'
bright:
black: '#424242'
red: '#e83a3f'
green: '#7aba39'
yellow: '#fee92e'
blue: '#53a4f3'
magenta: '#a94dbb'
cyan: '#26bad1'
white: '#d8d8d8'
key_bindings:
- { key: V, mods: Alt, action: Paste }
- { key: C, mods: Alt, action: Copy }
- { key: V, mods: Shift|Alt, action: Paste }
- { key: C, mods: Shift|Alt, action: Copy }
- { key: Return, mods: Alt, action: ToggleFullscreen }

205
.config/atuin/config.toml Normal file
View file

@ -0,0 +1,205 @@
## where to store your database, default is your system data directory
## linux/mac: ~/.local/share/atuin/history.db
## windows: %USERPROFILE%/.local/share/atuin/history.db
# db_path = "~/.history.db"
## where to store your encryption key, default is your system data directory
## linux/mac: ~/.local/share/atuin/key
## windows: %USERPROFILE%/.local/share/atuin/key
# key_path = "~/.key"
## where to store your auth session token, default is your system data directory
## linux/mac: ~/.local/share/atuin/session
## windows: %USERPROFILE%/.local/share/atuin/session
# session_path = "~/.session"
## date format used, either "us" or "uk"
# dialect = "us"
## default timezone to use when displaying time
## either "l", "local" to use the system's current local timezone, or an offset
## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
# timezone = "local"
## enable or disable automatic sync
# auto_sync = true
## enable or disable automatic update checks
# update_check = true
## address of the sync server
# sync_address = "https://api.atuin.sh"
## how often to sync history. note that this is only triggered when a command
## is ran, so sync intervals may well be longer
## set it to 0 to sync after every command
# sync_frequency = "10m"
## which search mode to use
## possible values: prefix, fulltext, fuzzy, skim
# search_mode = "fuzzy"
## which filter mode to use
## possible values: global, host, session, directory
# filter_mode = "global"
#filter_mode = "session"
## With workspace filtering enabled, Atuin will filter for commands executed
## in any directory within a git repository tree (default: false)
# workspaces = false
# workspaces = true
## which filter mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "filter_mode"
## leave unspecified to use same mode set in "filter_mode"
# filter_mode_shell_up_key_binding = "global"
filter_mode_shell_up_key_binding = "session"
## which search mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "search_mode"
## leave unspecified to use same mode set in "search_mode"
# search_mode_shell_up_key_binding = "fuzzy"
search_mode_shell_up_key_binding = "prefix"
## which style to use
## possible values: auto, full, compact
# style = "auto"
style = "compact"
## the maximum number of lines the interface should take up
## set it to 0 to always go full screen
# inline_height = 0
inline_height = 6
## Invert the UI - put the search bar at the top , Default to `false`
# invert = false
# invert = true
## enable or disable showing a preview of the selected command
## useful when the command is longer than the terminal width and is cut off
# show_preview = false
## what to do when the escape key is pressed when searching
## possible values: return-original, return-query
# exit_mode = "return-original"
## possible values: emacs, subl
# word_jump_mode = "emacs"
## characters that count as a part of a word
# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
## number of context lines to show when scrolling by pages
# scroll_context_lines = 1
## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
## alt-0 .. alt-9
# ctrl_n_shortcuts = false
ctrl_n_shortcuts = true
## default history list format - can also be specified with the --format arg
# history_format = "{time}\t{command}\t{duration}"
## prevent commands matching any of these regexes from being written to history.
## Note that these regular expressions are unanchored, i.e. if they don't start
## with ^ or end with $, they'll match anywhere in the command.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# history_filter = [
# "^secret-cmd",
# "^innocuous-cmd .*--secret=.+"
# ]
history_filter = []
## prevent commands run with cwd matching any of these regexes from being written
## to history. Note that these regular expressions are unanchored, i.e. if they don't
## start with ^ or end with $, they'll match anywhere in CWD.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# cwd_filter = [
# "^/very/secret/area"
# ]
cwd_filter = ["^~/media", "^/home/dln/media"]
## Configure the maximum height of the preview to show.
## Useful when you have long scripts in your history that you want to distinguish
## by more than the first few lines.
# max_preview_height = 4
## Configure whether or not to show the help row, which includes the current Atuin
## version (and whether an update is available), a keymap hint, and the total
## amount of commands in your history.
# show_help = true
show_help = false
## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
## 1. AWS key id
## 2. Github pat (old and new)
## 3. Slack oauth tokens (bot, user)
## 4. Slack webhooks
## 5. Stripe live/test keys
# secrets_filter = true
## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
# enter_accept = false
enter_accept = true
## Defaults to "emacs". This specifies the keymap on the startup of `atuin
## search`. If this is set to "auto", the startup keymap mode in the Atuin
## search is automatically selected based on the shell's keymap where the
## keybinding is defined. If this is set to "emacs", "vim-insert", or
## "vim-normal", the startup keymap mode in the Atuin search is forced to be
## the specified one.
# keymap_mode = "auto"
## Cursor style in each keymap mode. If specified, the cursor style is changed
## in entering the cursor shape. Available values are "default" and
## "{blink,steady}-{block,underilne,bar}".
# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
# network_connect_timeout = 5
# network_timeout = 5
## Timeout (in seconds) for acquiring a local database connection (sqlite)
# local_timeout = 5
## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
## Alternatively, set env NO_MOTION=true
# prefers_reduced_motion = false
prefers_reduced_motion = true
#[stats]
# Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
#common_subcommands = [
# "cargo",
# "go",
# "git",
# "npm",
# "yarn",
# "pnpm",
# "kubectl",
#]
[stats]
common_subcommands = [
"cargo",
"go",
"git",
"nix",
"npm",
"yarn",
"pnpm",
"kubectl",
"task",
]
# Set commands that should be totally stripped and ignored from stats
#common_prefix = ["sudo"]
#
common_prefix = ["doas", "sudo"]

View file

@ -0,0 +1,157 @@
[Desktop Entry]
Type=Application
Name[af]=SSH-sleutelagent
Name[ar]=عميل مفاتيح SSH
Name[as]=SSH ি
Name[ast]=Axente de claves SSH
Name[be]=SSH-агент ключоў
Name[bg]=Агентът на SSH за ключове
Name[bn]=SSH
Name[bn_IN]=SSH ি
Name[bs]=Agent za SSH ključeve
Name[ca]=Agent de claus SSH
Name[ca@valencia]=Agent de claus SSH
Name[cs]=Agent klíčů SSH
Name[da]=SSH-nøgleagent
Name[de]=SSH-Schlüsselagent
Name[el]=Πράκτορας κλειδιού SSH
Name[en_GB]=SSH Key Agent
Name[eo]=SSH-ŝlosila agento
Name[es]=Agente de claves SSH
Name[et]=SSH-võtmete agent
Name[eu]=SSH gako-agentea
Name[fa]=عامل کلید SSH
Name[fi]=SSH-avainten agentti
Name[fr]=Agent de clés SSH
Name[fur]=Agjent clâfs SSH
Name[gd]=Àidseant iuchair SSH
Name[gl]=Axente de chave SSH
Name[gu]=SSH
Name[he]=סוכן מפתחות SSH
Name[hi]=AFS ििि
Name[hr]=Agent SSH ključa
Name[hu]=SSH-kulcs ügynök
Name[id]=Agen Kunci SSH
Name[it]=Agente chiavi SSH
Name[ja]=SSH
Name[kk]=SSH кілттер агенті
Name[km]= SSH
Name[kn]=SSH ಿ ಿ
Name[ko]=SSH
Name[lt]=SSH raktų tarnyba
Name[lv]=SSH atslēgu aģents
Name[mjw]=SSH Key Agent
Name[mk]=Агент за SSH клучеви
Name[ml]=
Name[mr]=SSH ि
Name[ms]=Ejen Kunci SSH
Name[nb]=SSH-nøkkelagent
Name[nl]=SSH-sleutelagent
Name[nn]=Nøkkelagent for SSH
Name[oc]=Agent de claus SSH
Name[or]=SSH ି
Name[pa]=SSH
Name[pl]=Agent kluczy SSH
Name[pt]=Agente de chaves SSH
Name[pt_BR]=Agente de chaves SSH
Name[ro]=Agent pentru chei SSH
Name[ru]=Агент ключей SSH
Name[sk]=Agent kľúčov SSH
Name[sl]=Agent ključev SSH
Name[sr]=Агент за ССХ кључеве
Name[sr@latin]=Agent za SSH ključeve
Name[sv]=SSH-nyckelagent
Name[ta]=SSH
Name[te]=SSH
Name[th]= SSH
Name[tr]=SSH Anahtar Aracı
Name[ug]=SSH ئاچقۇچ ياردەمچىسى
Name[uk]=Агент ключів SSH
Name[vi]=Đi din khóa SSH
Name[zh_CN]=SSH
Name[zh_HK]=SSH
Name[zh_TW]=SSH
Name=SSH Key Agent
Comment[af]=GNOME-sleutelring: SSH-agent
Comment[ar]=حلقة مفاتيح جنوم: عميل SSH
Comment[as]=GNOME Keyring: SSH
Comment[ast]=Depósitu de claves de GNOME: axente SSH
Comment[be]=Вязкі ключоў GNOME: SSH-агент
Comment[bg]=Ключодържател на GNOME: агент на SSH
Comment[bn]=GNOME ি: SSH
Comment[bn_IN]=GNOME Keyring: SSH
Comment[bs]=Gnomovi privjesci: SSH agent
Comment[ca]=Anell de claus del GNOME: agent SSH
Comment[ca@valencia]=Anell de claus del GNOME: agent SSH
Comment[cs]=Klíčenka GNOME: Agent SSH
Comment[da]=GNOME-nøgleringsdæmon: SSH-agent
Comment[de]=GNOME-Schlüsselbunddienst: SSH-Agent
Comment[el]=Κλειδοθήκη GNOME: Πράκτορας SSH
Comment[en_GB]=GNOME Keyring: SSH Agent
Comment[eo]=GNOME Ŝlosilaro: SSH-agento
Comment[es]=Depósito de claves de GNOME: agente SSH
Comment[et]=GNOME võtmerõngas: SSH-agent
Comment[eu]=GNOMEren gako-sorta: SSH agentea
Comment[fa]=دستهکلید گنوم: عامل SSH
Comment[fi]=Gnomen avainnippu: SSH-agentti
Comment[fr]=Trousseau de clés de GNOME : agent SSH
Comment[fur]=Puarteclâfs di GNOME: agjent SSH
Comment[gd]=Dul-iuchrach: Àidseant SSH
Comment[gl]=GNOME Keyring: Axente SSH
Comment[gu]=GNOME : SSH
Comment[he]=קבוצת מפתחות של GNOME: סוכן SSH
Comment[hi]= ि: SSH ििि
Comment[hr]=GNOME skup ključeva: SSH agent
Comment[hu]=GNOME kulcstartó SSH-ügynök
Comment[id]=Ring Kunci GNOME: Agen SSH
Comment[it]=Portachiavi di GNOME: agente SSH
Comment[ja]=GNOME : SSH
Comment[kk]=GNOME Keyring: SSH агенті
Comment[km]=GNOME Keyring SSH
Comment[kn]=GNOME ಿ: SSH ಿ
Comment[ko]= : SSH
Comment[lt]=GNOME raktinė: SSH tarnyba
Comment[lv]=GNOME atslēgu saišķis SSH aģents
Comment[mjw]=GNOME Keyring: SSH Agent
Comment[mk]=Приврзок на GNOME: SSH агент
Comment[ml]= ി:
Comment[mr]=GNOME िि: SSH
Comment[ms]=Gelang Kunci GNOME: Ejen SSH
Comment[nb]=GNOME nøkkelring: SSH-agent
Comment[ne]=ि िि : SSH
Comment[nl]=Sleutelbos-service: SSH-agent
Comment[nn]=GNOME Nøkkelring: SSH-agent
Comment[oc]=Trossèl de claus GNOME : agent SSH
Comment[or]=GNOME ି ି: SSH
Comment[pa]= ਿ: SSH
Comment[pl]=Baza kluczy dla środowiska GNOME: agent SSH
Comment[pt]=GNOME Keyring: agente SSH
Comment[pt_BR]=Chaveiro do GNOME: Agente SSH
Comment[ro]=Inelul de chei GNOME: Agent SSH
Comment[ru]=Связка ключей GNOME: SSH-агент
Comment[sk]=SSH agent zväzku kľúčov GNOME
Comment[sl]=Zbirka ključev GNOME: agent SSH
Comment[sr]=Гномови привесци: ССХ агент
Comment[sr@latin]=Gnomovi privesci: SSH agent
Comment[sv]=GNOME-nyckelring: SSH-agent
Comment[ta]=GNOME ி: SSH
Comment[te]=GNOME ి: SSH
Comment[th]= GNOME: SSH
Comment[tr]=GNOME Anahtarlığı: SSH Aracı
Comment[ug]=گىنوم ئاچقۇچ ھالقىسىSSH ياردەمچىسى
Comment[uk]=Служба в'язки ключів GNOME: агент SSH
Comment[vi]=Chùm chìa khóa GNOME: Đi din SSH
Comment[zh_CN]=GNOME SSH
Comment[zh_HK]=GNOME SSH
Comment[zh_TW]=GNOME SSH
Comment=GNOME Keyring: SSH Agent
Exec=/usr/bin/gnome-keyring-daemon --start --components=ssh
OnlyShowIn=GNOME;Unity;MATE;Cinnamon;
X-GNOME-Autostart-Phase=PreDisplayServer
X-GNOME-AutoRestart=false
X-GNOME-Autostart-Notify=true
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-keyring
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=42.1
Hidden=true

3
.config/bat/config Normal file
View file

@ -0,0 +1,3 @@
--italic-text=always
--plain
--theme=ansi

File diff suppressed because it is too large Load diff

260
.config/broot/conf.hjson Normal file
View file

@ -0,0 +1,260 @@
###############################################################
# This configuration file lets you
# - define new commands
# - change the shortcut or triggering keys of built-in verbs
# - change the colors
# - set default values for flags
# - set special behaviors on specific paths
# - and more...
#
# Configuration documentation is available at
# https://dystroy.org/broot
#
# This file's format is Hjson ( https://hjson.github.io/ ). Some
# properties are commented out. To enable them, remove the `#`.
#
###############################################################
###############################################################
# Default flags
# You can set up flags you want broot to start with by
# default, for example `default_flags="-ihp"` if you usually want
# to see hidden and gitignored files and the permissions (then
# if you don't want the hidden files at a specific launch,
# you can launch broot with `br -H`).
# A popular flag is the `g` one which displays git related info.
#
# default_flags:
###############################################################
# Terminal's title
# If you want the terminal's title to be updated when you change
# directory, set a terminal_title pattern by uncommenting one of
# the examples below and tuning it to your taste.
#
# terminal_title: "[broot] {git-name}"
# terminal_title: "{file} 🐄"
# terminal_title: "-= {file-name} =-"
###############################################################
# Date/Time format
# If you want to change the format for date/time, uncomment the
# following line and change it according to
# https://docs.rs/chrono/0.4.11/chrono/format/strftime/index.html
#
# date_time_format: %Y/%m/%d %R
###############################################################
# uncomment to activate modal mode
#
# (you really should read https://dystroy.org/broot/modal/
# before as it may not suit everybody even among vim users)
#
# You may start either in 'command' mode, or in 'input' mode
#
# modal: true
# initial_mode: command
###############################################################
# Whether to mark the selected line with a triangle
#
show_selection_mark: true
###############################################################
# Column order
# cols_order, if specified, must be a permutation of the following
# array. You should keep the name column at the end as it has a
# variable length.
#
# cols_order: [
# mark
# git
# size
# permission
# date
# count
# branch
# name
# ]
###############################################################
# True Colors
# If this parameter isn't set, broot tries to automatically
# determine whether true colors (24 bits) are available.
# As this process is unreliable, you may uncomment this setting
# and set it to false or true if you notice the colors in
# previewed images are too off.
#
# true_colors: false
###############################################################
# Icons
# If you want to display icons in broot, uncomment this line
# (see https://dystroy.org/broot/icons for installation and
# troubleshooting)
#
# icon_theme: vscode
icon_theme: nerdfont
###############################################################
# Special paths
# If some paths must be handled specially, uncomment (and change
# this section as per the examples)
# Setting "list":"never" on a dir prevents broot from looking at its
# children when searching, unless the dir is the selected root.
# Setting "sum":"never" on a dir prevents broot from looking at its
# children when computing the total size and count of files.
# Setting "show":"always" makes a file visible even if its name
# starts with a dot.
# Setting "list":"always" may be useful on a link to a directory
# (they're otherwise not entered by broot unless selected)
#
special_paths: {
"/media" : {
list: "never"
sum: "never"
}
"~/.config": { "show": "always" }
"trav": {
show: always
list: "always",
sum: "never"
}
# "~/useless": { "show": "never" }
# "~/my-link-I-want-to-explore": { "list": "always" }
}
###############################################################
# Quit on last cancel
# You can usually cancel the last state change on escape.
# If you want the escape key to quit broot when there's nothing
# to cancel (for example when you just opened broot), uncomment
# this parameter
#
# quit_on_last_cancel: true
quit_on_last_cancel: true
###############################################################
# Search modes
#
# broot allows many search modes.
# A search mode is defined by
# - the way to search: 'fuzzy', 'exact', 'regex', or 'tokens'.
# - where to search: file 'name', 'path', or file 'content'
# A search pattern may for example be "fuzzy path" (default),
# "regex content" or "exact path".
#
# The search mode is selected from its prefix. For example, if
# you type "abc", the default mode is "fuzzy path". If you type
# "/abc", the mode is "regex path". If you type "rn/abc", the mode
# is "regex name".
#
# This mapping may be modified. You may want to dedicate the
# empty prefix (the one which doesn't need a '/') to the
# search mode you use most often. The example below makes it
# easy to search on name rather than on the subpath.
#
# More information on
# https://dystroy.org/broot/input/#the-filtering-pattern
#
# search_modes: {
# <empty>: fuzzy name
# /: regex name
# }
###############################################################
# File Extension Colors
#
# uncomment and modify the next section if you want to color
# file name depending on their extension
#
# ext_colors: {
# png: rgb(255, 128, 75)
# rs: yellow
# }
###############################################################
# Max file size for content search
#
# Bigger files are ignored when searching their content. You
# can specify this size either in ISO units (eg 5GB) or in
# the old binary units (eg 44Kib)
content_search_max_file_size: 10MB
###############################################################
# Max Panels Count
#
# Change this if you sometimes want to have more than 2 panels
# open
# max_panels_count: 2
###############################################################
# Update work dir
#
# By default, broot process' work dir is kept in sync with the
# current's panel root. If you want to keep it unchanged,
# uncomment this setting
#
# update_work_dir: false
###############################################################
# Kitty Keyboard extension
#
# If you want to use advanced keyboard shortcuts in Kitty
# compatible terminals (Kitty, Wezterm), set this to true.
#
# This makes it possible to use shortcuts like 'space-n',
# 'ctrl-alt-a-b', 'shift-space', etc.
#
enable_kitty_keyboard: true
###############################################################
# lines around matching line in filtered preview
#
# When searching the content of a file, you can have either
# only the matching lines displayed, or some of the surrounding
# ones too.
#
lines_before_match_in_preview: 1
lines_after_match_in_preview: 1
###############################################################
# Imports
#
# While it's possible to have all configuration in one file,
# it's more convenient to split it in several ones.
# Importing also allows to set a condition on the terminal's
# color, which makes it possible to have a different skin
# chosen when your terminal has a light background and when
# it has a light one.
imports: [
# Verbs are better configured in verbs.hjson. But you
# can also add another files for your personal verbs
verbs.hjson
# This file contains the skin to use when the terminal
# is dark (or when this couldn't be determined)
{
luma: [
dark
unknown
]
# (un)comment to choose your preferred skin
file: skins/dark-blue.hjson
//file: skins/catppuccin-macchiato.hjson
//file: skins/catppuccin-mocha.hjson
//file: skins/dark-gruvbox.hjson
//file: skins/dark-orange.hjson
//file: skins/solarized-dark.hjson
}
# This skin is imported when your terminal is light
{
luma: light
# (un)comment to choose your preferred skin
//file: skins/solarized-light.hjson
file: skins/white.hjson
}
]

View file

@ -0,0 +1 @@
/home/dln/.local/share/broot/launcher/bash/1

View file

@ -0,0 +1,4 @@
This file tells broot the installation of the br function was done.
If there's a problem and you want to install it again run
broot -- install

View file

@ -0,0 +1,17 @@
verbs: [
{
invocation: "ok"
key: "enter"
leave_broot: true
execution: ":print_path"
apply_to: "directory"
}
{
invocation: "broot_home"
keys: ["ctrl-7", "ctrl-g"]
execution: "broot -f --conf ~/.config/broot/select.hjson $HOME"
leave_broot: true
}
]

View file

@ -0,0 +1,171 @@
###############################################################
# A skin for a terminal with a dark background
# This skin uses RGB values so won't work for some
# terminals.
#
# Created by Majixed
# Based on the catppuccin-mocha theme by A. Taha Baki <atahabaki@pm.me>
#
# Doc at https://dystroy.org/broot/skins/
###############################################################
skin: {
input: rgb(202, 211, 245) none
# fg:none bg:$surface2
selected_line: none rgb(91, 96, 120)
# fg:$text bg:none
default: rgb(202, 211, 245) none
# fg:$overlay0 bg:none
tree: rgb(110, 115, 141) none
# fg:$sapphire bg:none
parent: rgb(125, 196, 228) none
file: none none
#
### PERMISSIONS
#
perm__: rgb(184, 192, 224) none
# $peach
perm_r: rgb(245, 169, 127) none
# $maroon
perm_w: rgb(238, 153, 160) none
# $green
perm_x: rgb(166, 218, 149) none
# $teal
owner: rgb(139, 213, 202) none
# $sky
group: rgb(145, 215, 227) none
#
### DATE
#
# $subtext1
dates: rgb(184, 192, 224) none
#
### DIRECTORY
#
# $lavender
directory: rgb(183, 189, 248) none Bold
# $green
exe: rgb(166, 218, 149) none
# $yellow
link: rgb(238, 212, 159) none
# $subtext0
pruning: rgb(165, 173, 203) none Italic
#
### PREVIEW
#
# fg:$text bg:$mantle
preview_title: rgb(202, 211, 245) rgb(30, 32, 48)
# fg:$text bg:$mantle
preview: rgb(202, 211, 245) rgb(30, 32, 48)
# fg:$overlay0
preview_line_number: rgb(110, 115, 141) none
# fg:$overlay0
preview_separator: rgb(110, 115, 141) none
#
### MATCH
#
char_match: rgb(238, 212, 159) rgb(73, 77, 100) Bold Italic
content_match: rgb(238, 212, 159) rgb(73, 77, 100) Bold Italic
preview_match: rgb(238, 212, 159) rgb(73, 77, 100) Bold Italic
# children count
# fg:$yellow bg:none
count: rgb(238, 212, 159) none
sparse: rgb(237, 135, 150) none
content_extract: rgb(237, 135, 150) none Italic
#
### GIT
#
git_branch: rgb(245, 169, 127) none
git_insertions: rgb(245, 169, 127) none
git_deletions: rgb(245, 169, 127) none
git_status_current: rgb(245, 169, 127) none
git_status_modified: rgb(245, 169, 127) none
git_status_new: rgb(245, 169, 127) none Bold
git_status_ignored: rgb(245, 169, 127) none
git_status_conflicted: rgb(245, 169, 127) none
git_status_other: rgb(245, 169, 127) none
staging_area_title: rgb(245, 169, 127) none
#
### FLAG
#
flag_label: rgb(237, 135, 150) none
flag_value: rgb(237, 135, 150) none Bold
#
### STATUS
#
# fg:none #bg:$mantle
status_normal: none rgb(30, 32, 48)
# fg:$red bg:$mantle
status_italic: rgb(237, 135, 150) rgb(30, 32, 48) Italic
# fg:$maroon bg:$mantle
status_bold: rgb(238, 153, 160) rgb(30, 32, 48) Bold
# fg:$maroon bg:$mantle
status_ellipsis: rgb(238, 153, 160) rgb(30, 32, 48) Bold
# fg:$text bg:$red
status_error: rgb(202, 211, 245) rgb(237, 135, 150)
# fg:$maroon bg:$mantle
status_job: rgb(238, 153, 160) rgb(40, 38, 37)
# fg:$maroon bg:$mantle
status_code: rgb(238, 153, 160) rgb(30, 32, 48) Italic
# fg:$maroon bg:$mantle
mode_command_mark: rgb(238, 153, 160) rgb(30, 32, 48) Bold
#
### HELP
#
# fg:$text
help_paragraph: rgb(202, 211, 245) none
# fg:$red
help_headers: rgb(237, 135, 150) none Bold
# fg:$peach
help_bold: rgb(245, 169, 127) none Bold
# fg:$yellow
help_italic: rgb(238, 212, 159) none Italic
# fg:green bg:$surface0
help_code: rgb(166, 218, 149) rgb(54, 58, 79)
# fg:$overlay0
help_table_border: rgb(110, 115, 141) none
#
### HEX
#
# fg:$text
hex_null: rgb(202, 211, 245) none
# fg:$peach
hex_ascii_graphic: rgb(245, 169, 127) none
# fg:$green
hex_ascii_whitespace: rgb(166, 218, 149) none
# fg: teal
hex_ascii_other: rgb(139, 213, 202) none
# fg: red
hex_non_ascii: rgb(237, 135, 150) none
# fg:$text bg:$red
file_error: rgb(243, 60, 44) none
#
### PURPOSE
#
purpose_normal: none none
purpose_italic: rgb(169, 90, 127) none Italic
purpose_bold: rgb(169, 90, 127) none Bold
purpose_ellipsis: none none
#
### SCROLLBAR
#
# fg:$surface0
scrollbar_track: rgb(54, 58, 79) none
# fg:$surface1
scrollbar_thumb: rgb(91, 96, 120) none
#
### GOODTOBAD
#
good_to_bad_0: rgb(166, 218, 149) none
good_to_bad_1: rgb(139, 213, 202) none
good_to_bad_2: rgb(145, 215, 227) none
good_to_bad_3: rgb(125, 196, 228) none
good_to_bad_4: rgb(138, 173, 244) none
good_to_bad_5: rgb(183, 189, 248) none
good_to_bad_6: rgb(198, 160, 246) none
good_to_bad_7: rgb(245, 169, 127) none
good_to_bad_8: rgb(238, 153, 160) none
good_to_bad_9: rgb(237, 135, 150) none
}

View file

@ -0,0 +1,171 @@
###############################################################
# A skin for a terminal with a dark background
# This skin uses RGB values so won't work for some
# terminals.
#
# Created by A. Taha Baki <atahabaki@pm.me>
# Based on the built-in gruvbox theme.
#
# Doc at https://dystroy.org/broot/skins/
###############################################################
skin: {
input: rgb(205, 214, 244) none
# fg:none bg:$surface2
selected_line: none rgb(88, 91, 112)
# fg:$text bg:none
default: rgb(205, 214, 244) none
# fg:$overlay0 bg:none
tree: rgb(108, 112, 134) none
# fg:$sapphire bg:none
parent: rgb(116, 199, 236) none
file: none none
#
### PERMISSIONS
#
perm__: rgb(186, 194, 222) none
# $peach
perm_r: rgb(250, 179, 135) none
# $maroon
perm_w: rgb(235, 160, 172) none
# $green
perm_x: rgb(166, 227, 161) none
# $teal
owner: rgb(148, 226, 213) none
# $sky
group: rgb(137, 220, 235) none
#
### DATE
#
# $subtext1
dates: rgb(186, 194, 222) none
#
### DIRECTORY
#
# $lavender
directory: rgb(180, 190, 254) none Bold
# $green
exe: rgb(166, 227, 161) none
# $yellow
link: rgb(249, 226, 175) none
# $subtext0
pruning: rgb(166, 173, 200) none Italic
#
### PREVIEW
#
# fg:$text bg:$mantle
preview_title: rgb(205, 214, 244) rgb(24, 24, 37)
# fg:$text bg:$mantle
preview: rgb(205, 214, 244) rgb(24, 24, 37)
# fg:$overlay0
preview_line_number: rgb(108, 112, 134) none
# fg:$overlay0
preview_separator: rgb(108, 112, 134) none
#
### MATCH
#
char_match: rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic
content_match: rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic
preview_match: rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic
# children count
# fg:$yellow bg:none
count: rgb(249, 226, 175) none
sparse: rgb(243, 139, 168) none
content_extract: rgb(243, 139, 168) none Italic
#
### GIT
#
git_branch: rgb(250, 179, 135) none
git_insertions: rgb(250, 179, 135) none
git_deletions: rgb(250, 179, 135) none
git_status_current: rgb(250, 179, 135) none
git_status_modified: rgb(250, 179, 135) none
git_status_new: rgb(250, 179, 135) none Bold
git_status_ignored: rgb(250, 179, 135) none
git_status_conflicted: rgb(250, 179, 135) none
git_status_other: rgb(250, 179, 135) none
staging_area_title: rgb(250, 179, 135) none
#
### FLAG
#
flag_label: rgb(243, 139, 168) none
flag_value: rgb(243, 139, 168) none Bold
#
### STATUS
#
# fg:none #bg:$mantle
status_normal: none rgb(24, 24, 37)
# fg:$red bg:$mantle
status_italic: rgb(243, 139, 168) rgb(24, 24, 37) Italic
# fg:$maroon bg:$mantle
status_bold: rgb(235, 160, 172) rgb(24, 24, 37) Bold
# fg:$maroon bg:$mantle
status_ellipsis: rgb(235, 160, 172) rgb(24, 24, 37) Bold
# fg:$text bg:$red
status_error: rgb(205, 214, 244) rgb(243, 139, 168)
# fg:$maroon bg:$mantle
status_job: rgb(235, 160, 172) rgb(40, 38, 37)
# fg:$maroon bg:$mantle
status_code: rgb(235, 160, 172) rgb(24, 24, 37) Italic
# fg:$maroon bg:$mantle
mode_command_mark: rgb(235, 160, 172) rgb(24, 24, 37) Bold
#
### HELP
#
# fg:$text
help_paragraph: rgb(205, 214, 244) none
# fg:$red
help_headers: rgb(243, 139, 168) none Bold
# fg:$peach
help_bold: rgb(250, 179, 135) none Bold
# fg:$yellow
help_italic: rgb(249, 226, 175) none Italic
# fg:green bg:$surface0
help_code: rgb(166, 227, 161) rgb(49, 50, 68)
# fg:$overlay0
help_table_border: rgb(108, 112, 134) none
#
### HEX
#
# fg:$text
hex_null: rgb(205, 214, 244) none
# fg:$peach
hex_ascii_graphic: rgb(250, 179, 135) none
# fg:$green
hex_ascii_whitespace: rgb(166, 227, 161) none
# fg: teal
hex_ascii_other: rgb(148, 226, 213) none
# fg: red
hex_non_ascii: rgb(243, 139, 168) none
# fg:$text bg:$red
file_error: rgb(251, 73, 52) none
#
### PURPOSE
#
purpose_normal: none none
purpose_italic: rgb(177, 98, 134) none Italic
purpose_bold: rgb(177, 98, 134) none Bold
purpose_ellipsis: none none
#
### SCROLLBAR
#
# fg:$surface0
scrollbar_track: rgb(49, 50, 68) none
# fg:$surface1
scrollbar_thumb: rgb(88, 91, 112) none
#
### GOODTOBAD
#
good_to_bad_0: rgb(166, 227, 161) none
good_to_bad_1: rgb(148, 226, 213) none
good_to_bad_2: rgb(137, 220, 235) none
good_to_bad_3: rgb(116, 199, 236) none
good_to_bad_4: rgb(137, 180, 250) none
good_to_bad_5: rgb(180, 190, 254) none
good_to_bad_6: rgb(203, 166, 247) none
good_to_bad_7: rgb(250, 179, 135) none
good_to_bad_8: rgb(235, 160, 172) none
good_to_bad_9: rgb(243, 139, 168) none
}

View file

@ -0,0 +1,116 @@
###############################################################
# A skin for a terminal with a dark background
#
# To create your own skin, copy this file, change the entries
# and import your skin file from the main conf file (look
# for "imports")
#
# Doc at https://dystroy.org/broot/skins/
###############################################################
###############################################################
# Skin
# If you want to change the colors of broot,
# uncomment the following block and start messing
# with the various values.
# A skin entry value is made of two parts separated with a '/':
# The first one is the skin for the active panel.
# The second one, optional, is the skin for non active panels.
# You may find explanations and other skins on
# https://dystroy.org/broot/skins
###############################################################
skin: {
default: gray(22) none / gray(20) none
tree: gray(8) None / gray(4) None
parent: gray(18) None / gray(13) None
file: gray(22) None / gray(15) None
directory: ansi(110) None bold / ansi(110) None
exe: Cyan None
link: Magenta None
pruning: gray(12) None Italic
perm__: gray(5) None
perm_r: ansi(94) None
perm_w: ansi(132) None
perm_x: ansi(65) None
owner: ansi(138) None
group: ansi(131) None
count: ansi(138) gray(4)
dates: ansi(66) None
sparse: ansi(214) None
content_extract: ansi(29) None
content_match: ansi(34) None
device_id_major: ansi(138) None
device_id_sep: ansi(102) None
device_id_minor: ansi(138) None
git_branch: ansi(178) None
git_insertions: ansi(28) None
git_deletions: ansi(160) None
git_status_current: gray(5) None
git_status_modified: ansi(28) None
git_status_new: ansi(94) None bold
git_status_ignored: gray(17) None
git_status_conflicted: ansi(88) None
git_status_other: ansi(88) None
selected_line: None gray(6) / None gray(4)
char_match: Green None
file_error: Red None
flag_label: gray(15) gray(2)
flag_value: ansi(178) gray(2) bold
input: White gray(2) / gray(15) None
status_error: gray(22) ansi(124)
status_job: ansi(220) gray(5)
status_normal: gray(20) gray(4) / gray(2) gray(2)
status_italic: ansi(178) gray(4) / gray(2) gray(2)
status_bold: ansi(178) gray(4) bold / gray(2) gray(2)
status_code: ansi(229) gray(4) / gray(2) gray(2)
status_ellipsis: gray(19) gray(1) / gray(2) gray(2)
purpose_normal: gray(20) gray(2)
purpose_italic: ansi(178) gray(2)
purpose_bold: ansi(178) gray(2) bold
purpose_ellipsis: gray(20) gray(2)
scrollbar_track: gray(7) None / gray(4) None
scrollbar_thumb: gray(22) None / gray(14) None
help_paragraph: gray(20) None
help_bold: ansi(178) None bold
help_italic: ansi(229) None
help_code: gray(21) gray(3)
help_headers: ansi(178) None
help_table_border: ansi(239) None
preview: gray(20) gray(1) / gray(18) gray(2)
preview_title: gray(23) gray(2) / gray(21) gray(2)
preview_line_number: gray(12) gray(3)
preview_separator: gray(5) None
preview_match: None ansi(29)
hex_null: gray(8) None
hex_ascii_graphic: gray(18) None
hex_ascii_whitespace: ansi(143) None
hex_ascii_other: ansi(215) None
hex_non_ascii: ansi(167) None
staging_area_title: gray(22) gray(2) / gray(20) gray(3)
mode_command_mark: gray(5) ansi(204) bold
good_to_bad_0: ansi(28)
good_to_bad_1: ansi(29)
good_to_bad_2: ansi(29)
good_to_bad_3: ansi(29)
good_to_bad_4: ansi(29)
good_to_bad_5: ansi(100)
good_to_bad_6: ansi(136)
good_to_bad_7: ansi(172)
good_to_bad_8: ansi(166)
good_to_bad_9: ansi(196)
}
###############################################################
# Syntax Theme
#
# If you want to choose the theme used for preview, uncomment
# one of the following lines:
#
# syntax_theme: GitHub
# syntax_theme: SolarizedDark
# syntax_theme: SolarizedLight
syntax_theme: MochaDark
# syntax_theme: MochaDark
# syntax_theme: OceanDark
# syntax_theme: OceanLight

View file

@ -0,0 +1,88 @@
###############################################################
# A skin for a terminal with a dark background
# This skin uses RGB values so won't work for some
# terminals.
#
#
# (initially contributed by @basbebe)
#
# Doc at https://dystroy.org/broot/skins/
###############################################################
skin: {
default: rgb(235, 219, 178) none / rgb(189, 174, 147) none
tree: rgb(70, 70, 80) None / rgb(60, 60, 60) None
parent: rgb(235, 219, 178) none / rgb(189, 174, 147) none Italic
file: None None / None None Italic
directory: rgb(131, 165, 152) None Bold / rgb(131, 165, 152) None
exe: rgb(184, 187, 38) None
link: rgb(104, 157, 106) None
pruning: rgb(124, 111, 100) None Italic
perm__: None None
perm_r: rgb(215, 153, 33) None
perm_w: rgb(204, 36, 29) None
perm_x: rgb(152, 151, 26) None
owner: rgb(215, 153, 33) None Bold
group: rgb(215, 153, 33) None
count: rgb(69, 133, 136) rgb(50, 48, 47)
dates: rgb(168, 153, 132) None
sparse: rgb(250, 189,47) None
content_extract: ansi(29) None Italic
content_match: ansi(34) None Bold
git_branch: rgb(251, 241, 199) None
git_insertions: rgb(152, 151, 26) None
git_deletions: rgb(190, 15, 23) None
git_status_current: rgb(60, 56, 54) None
git_status_modified: rgb(152, 151, 26) None
git_status_new: rgb(104, 187, 38) None Bold
git_status_ignored: rgb(213, 196, 161) None
git_status_conflicted: rgb(204, 36, 29) None
git_status_other: rgb(204, 36, 29) None
selected_line: None rgb(60, 56, 54) / None rgb(50, 48, 47)
char_match: rgb(250, 189, 47) None
file_error: rgb(251, 73, 52) None
flag_label: rgb(189, 174, 147) None
flag_value: rgb(211, 134, 155) None Bold
input: rgb(251, 241, 199) None / rgb(189, 174, 147) None Italic
status_error: rgb(213, 196, 161) rgb(204, 36, 29)
status_job: rgb(250, 189, 47) rgb(60, 56, 54)
status_normal: None rgb(40, 38, 37) / None None
status_italic: rgb(211, 134, 155) rgb(40, 38, 37) Italic / None None
status_bold: rgb(211, 134, 155) rgb(40, 38, 37) Bold / None None
status_code: rgb(251, 241, 199) rgb(40, 38, 37) / None None
status_ellipsis: rgb(251, 241, 199) rgb(40, 38, 37) Bold / None None
purpose_normal: None None
purpose_italic: rgb(177, 98, 134) None Italic
purpose_bold: rgb(177, 98, 134) None Bold
purpose_ellipsis: None None
scrollbar_track: rgb(80, 73, 69) None / rgb(50, 48, 47) None
scrollbar_thumb: rgb(213, 196, 161) None / rgb(102, 92, 84) None
help_paragraph: None None
help_bold: rgb(214, 93, 14) None Bold
help_italic: rgb(211, 134, 155) None Italic
help_code: rgb(142, 192, 124) rgb(50, 48, 47)
help_headers: rgb(254, 128, 25) None Bold
help_table_border: rgb(80, 73, 69) None
preview_title: rgb(235, 219, 178) rgb(40, 40, 40) / rgb(189, 174, 147) rgb(40, 40, 40)
preview: rgb(235, 219, 178) rgb(40, 40, 40) / rgb(235, 219, 178) rgb(40, 40, 40)
preview_line_number: rgb(124, 111, 100) None / rgb(124, 111, 100) rgb(40, 40, 40)
preview_separator: rgb(70, 70, 80) None / rgb(60, 60, 60) None
preview_match: None ansi(29) Bold
hex_null: rgb(189, 174, 147) None
hex_ascii_graphic: rgb(213, 196, 161) None
hex_ascii_whitespace: rgb(152, 151, 26) None
hex_ascii_other: rgb(254, 128, 25) None
hex_non_ascii: rgb(214, 93, 14) None
staging_area_title: rgb(235, 219, 178) rgb(40, 40, 40) / rgb(189, 174, 147) rgb(40, 40, 40)
mode_command_mark: gray(5) ansi(204) Bold
good_to_bad_0: ansi(28)
good_to_bad_1: ansi(29)
good_to_bad_2: ansi(29)
good_to_bad_3: ansi(29)
good_to_bad_4: ansi(29)
good_to_bad_5: ansi(100)
good_to_bad_6: ansi(136)
good_to_bad_7: ansi(172)
good_to_bad_8: ansi(166)
good_to_bad_9: ansi(196)
}

View file

@ -0,0 +1,111 @@
###############################################################
# A skin for a terminal with a dark background
#
# To create your own skin, copy this file, change the entries
# and import your skin file from the main conf file (look
# for "imports")
#
# Doc at https://dystroy.org/broot/skins/
###############################################################
###############################################################
# Skin
# If you want to change the colors of broot,
# uncomment the following bloc and start messing
# with the various values.
# A skin entry value is made of two parts separated with a '/':
# The first one is the skin for the active panel.
# The second one, optional, is the skin for non active panels.
# You may find explanations and other skins on
# https://dystroy.org/broot/skins
###############################################################
skin: {
default: none none / gray(20) none
tree: ansi(94) None / gray(3) None
parent: gray(18) None / gray(13) None
file: gray(20) None / gray(15) None
directory: ansi(208) None Bold / ansi(172) None bold
exe: Cyan None
link: Magenta None
pruning: gray(12) None Italic
perm__: gray(5) None
perm_r: ansi(94) None
perm_w: ansi(132) None
perm_x: ansi(65) None
owner: ansi(138) None
group: ansi(131) None
count: ansi(136) gray(3)
dates: ansi(66) None
sparse: ansi(214) None
content_extract: ansi(29) None
content_match: ansi(34) None
git_branch: ansi(229) None
git_insertions: ansi(28) None
git_deletions: ansi(160) None
git_status_current: gray(5) None
git_status_modified: ansi(28) None
git_status_new: ansi(94) None Bold
git_status_ignored: gray(17) None
git_status_conflicted: ansi(88) None
git_status_other: ansi(88) None
selected_line: None gray(5) / None gray(4)
char_match: Yellow None
file_error: Red None
flag_label: gray(15) None
flag_value: ansi(208) None Bold
input: White None / gray(15) gray(2)
status_error: gray(22) ansi(124)
status_job: ansi(220) gray(5)
status_normal: gray(20) gray(3) / gray(2) gray(2)
status_italic: ansi(208) gray(3) / gray(2) gray(2)
status_bold: ansi(208) gray(3) Bold / gray(2) gray(2)
status_code: ansi(229) gray(3) / gray(2) gray(2)
status_ellipsis: gray(19) gray(1) / gray(2) gray(2)
purpose_normal: gray(20) gray(2)
purpose_italic: ansi(178) gray(2)
purpose_bold: ansi(178) gray(2) Bold
purpose_ellipsis: gray(20) gray(2)
scrollbar_track: gray(7) None / gray(4) None
scrollbar_thumb: gray(22) None / gray(14) None
help_paragraph: gray(20) None
help_bold: ansi(208) None Bold
help_italic: ansi(166) None
help_code: gray(21) gray(3)
help_headers: ansi(208) None
help_table_border: ansi(239) None
preview: gray(20) gray(1) / gray(18) gray(2)
preview_line_number: gray(12) gray(3)
preview_separator: ansi(94) None / gray(3) None
preview_match: None ansi(29)
hex_null: gray(11) None
hex_ascii_graphic: gray(18) None
hex_ascii_whitespace: ansi(143) None
hex_ascii_other: ansi(215) None
hex_non_ascii: ansi(167) None
good_to_bad_0: ansi(28)
good_to_bad_1: ansi(29)
good_to_bad_2: ansi(29)
good_to_bad_3: ansi(29)
good_to_bad_4: ansi(29)
good_to_bad_5: ansi(100)
good_to_bad_6: ansi(136)
good_to_bad_7: ansi(172)
good_to_bad_8: ansi(166)
good_to_bad_9: ansi(196)
}
###############################################################
# Syntax Theme
#
# If you want to choose the theme used for preview, uncomment
# one of the following lines:
#
# syntax_theme: GitHub
# syntax_theme: SolarizedDark
# syntax_theme: SolarizedLight
syntax_theme: SolarizedDark
# syntax_theme: MochaDark
# syntax_theme: OceanDark
# syntax_theme: OceanLight

View file

@ -0,0 +1,132 @@
###############################################################
# 16 ANSI color theme. Colors in this theme are restricted from
# ANSI color 0 - 15. This will allow the theme to adapt to your
# terminal emulator's theme. Note that, for now, the preview
# mode does not yet support this theme because of syntect not
# having a 16 ansi color theme.
#
# More info at https://jeffkreeftmeijer.com/vim-16-color/
# Doc at https://dystroy.org/broot/skins/
###############################################################
skin: {
directory: ansi(12)
file: ansi(7)
pruning: ansi(8) none italic
selected_line: none ansi(0)
tree: ansi(8)
# Search
char_match: ansi(3) none underlined
parent: ansi(4) none bold
# File properties
exe: ansi(2)
link: ansi(13)
sparse: ansi(12)
# Prompt
input: ansi(6)
# Status bar
status_bold: ansi(7) ansi(8) bold
status_code: ansi(10) ansi(8)
status_ellipsis: ansi(7) ansi(8)
status_error: ansi(7) ansi(8)
status_italic: ansi(7) ansi(8) italic
status_job: ansi(7) ansi(8)
status_normal: ansi(7) ansi(8)
# Flag status
flag_label: ansi(6)
flag_value: ansi(14) none bold
# Background
default: none none
# Scrollbar
scrollbar_track: ansi(0)
scrollbar_thumb: ansi(3)
# Git
git_branch: ansi(13)
git_deletions: ansi(1)
git_insertions: ansi(2)
git_status_conflicted: ansi(1)
git_status_current: ansi(6)
git_status_ignored: ansi(8)
git_status_modified: ansi(3)
git_status_new: ansi(2) none bold
git_status_other: ansi(5)
# Staging area
staging_area_title: ansi(3)
# Documentation
help_bold: ansi(7) none bold
help_code: ansi(4)
help_headers: ansi(3)
help_italic: ansi(7) none italic
help_paragraph: ansi(7)
help_table_border: ansi(8)
# Device column
device_id_major: ansi(5)
device_id_minor: ansi(5)
device_id_sep: ansi(5)
# Counts column
count: ansi(13)
# Dates column
dates: ansi(6)
# Permissions column
group: ansi(3)
owner: ansi(3)
perm__: ansi(8)
perm_r: ansi(3)
perm_w: ansi(1)
perm_x: ansi(2)
# Hex preview
hex_null: ansi(8)
hex_ascii_graphic: ansi(2)
hex_ascii_whitespace: ansi(3)
hex_ascii_other: ansi(4)
hex_non_ascii: ansi(5)
# Preview
# preview: none
# preview_line_number: none
# preview_match: none
# preview_title: none
# Used for displaying errors
file_error: ansi(1)
# Content searches
content_extract: ansi(7)
content_match: ansi(3) none underlined
# Used in status line
purpose_bold: ansi(0) ansi(7) bold
purpose_ellipsis: ansi(0)
purpose_italic: ansi(0) ansi(7) italic
purpose_normal: ansi(0)
# Modal indicator
mode_command_mark: ansi(7) ansi(4)
# File system occupation
good_to_bad_0: ansi(2)
good_to_bad_1: ansi(2)
good_to_bad_2: ansi(2)
good_to_bad_3: ansi(2)
good_to_bad_4: ansi(2)
good_to_bad_5: ansi(1)
good_to_bad_6: ansi(1)
good_to_bad_7: ansi(1)
good_to_bad_8: ansi(1)
good_to_bad_9: ansi(1)
}

View file

@ -0,0 +1,66 @@
// contributed by [@danieltrautmann](https://github.com/danieltrautmann)
//
//
// The Solarized Dark skin uses RGB values, so it might not work well with some
// terminals
//
// Doc at https://dystroy.org/broot/skins/
skin: {
default: "rgb(131, 148, 150) rgb(0, 43, 54) / rgb(131, 148, 150) rgb(7, 54, 66)" // base0 base03 / base01 base02
tree: "rgb(88, 110, 117) none" // base01 default
file: "none none" // default default
directory: "rgb(38, 139, 210) none bold" // blue default bold
exe: "rgb(211, 1, 2) none" // red default
link: "rgb(211, 54, 130) none" // magenta default
pruning: "rgb(88, 110, 117) none italic" // base01 default italic
perm__: "rgb(88, 110, 117) none" // base01 default
perm_r: "none none" // default default
perm_w: "none none" // default default
perm_x: "none none" // default default
owner: "rgb(88, 110, 117) none" // base01 default
group: "rgb(88, 110, 117) none" // base01 default
sparse: "none none" // default default
git_branch: "rgb(147, 161, 161) none" // base1 default
git_insertions: "rgb(133, 153, 0) none" // green default
git_deletions: "rgb(211, 1, 2) none" // red default
git_status_current: "none none" // default default
git_status_modified: "rgb(181, 137, 0) none" // yellow default
git_status_new: "rgb(133, 153, 0) none" // green default
git_status_ignored: "rgb(88, 110, 117) none" // base01 default
git_status_conflicted: "rgb(211, 1, 2) none" // red default
git_status_other: "rgb(211, 1, 2) none" // red default
selected_line: "none rgb(7, 54, 66)" // default base02
char_match: "rgb(133, 153, 0) none underlined" // green default underlined
file_error: "rgb(203, 75, 22) none italic" // orange default italic
flag_label: "none none" // default default
flag_value: "rgb(181, 137, 0) none bold" // yellow default bold
input: "none none" // default default
status_error: "rgb(203, 75, 22) rgb(7, 54, 66)" // orange base02
status_job: "rgb(108, 113, 196) rgb(7, 54, 66) bold" // violet base02 bold
status_normal: "none rgb(7, 54, 66)" // default base02
status_italic: "rgb(181, 137, 0) rgb(7, 54, 66)" // yellow base02
status_bold: "rgb(147, 161, 161) rgb(7, 54, 66) bold" // base1 base02 bold
status_code: "rgb(108, 113, 196) rgb(7, 54, 66)" // violet base02
status_ellipsis: "none rgb(7, 54, 66)" // default base02
scrollbar_track: "rgb(7, 54, 66) none" // base02 default
scrollbar_thumb: "none none" // default default
help_paragraph: "none none" // default default
help_bold: "rgb(147, 161, 161) none bold" // base1 default bold
help_italic: "rgb(147, 161, 161) none italic" // base1 default italic
help_code: "rgb(147, 161, 161) rgb(7, 54, 66)" // base1 base02
help_headers: "rgb(181, 137, 0) none" // yellow default
help_table_border: "none none" // default default
preview_title: "gray(20) rgb(0, 43, 54)"
staging_area_title: "gray(22) rgb(0, 43, 54)"
good_to_bad_0: "ansi(28)" // green
good_to_bad_1: "ansi(29)"
good_to_bad_2: "ansi(29)"
good_to_bad_3: "ansi(29)"
good_to_bad_4: "ansi(29)"
good_to_bad_5: "ansi(100)"
good_to_bad_6: "ansi(136)"
good_to_bad_7: "ansi(172)"
good_to_bad_8: "ansi(166)"
good_to_bad_9: "ansi(196)" // red
}

View file

@ -0,0 +1,118 @@
// contributed by [@danieltrautmann](https://github.com/danieltrautmann)
//
//
// The Solarized Light skin uses RGB values, so it might not work well with some
// terminals
//
// If you prefer to keep the background the same as your terminal background, change
// the "default" entry to
// default: "none none / rgb(147, 161, 161) none"
//
// Doc at https://dystroy.org/broot/skins/
skin: {
// base00 default / base1 base2
default: "rgb(101, 123, 131) none / rgb(147, 161, 161) none"
// base1 default
tree: "rgb(147, 161, 161) none"
// default default
file: "none none"
// blue default bold
directory: "rgb(38, 139, 210) none bold"
// red default
exe: "rgb(211, 1, 2) none"
// magenta default
link: "rgb(211, 54, 130) none"
// base1 default italic
pruning: "rgb(147, 161, 161) none italic"
// base1 default
perm__: "rgb(147, 161, 161) none"
// default default
perm_r: "none none"
// default default
perm_w: "none none"
// default default
perm_x: "none none"
// base1 default
owner: "rgb(147, 161, 161) none"
// base1 default
group: "rgb(147, 161, 161) none"
// default default
sparse: "none none"
// base01 default
git_branch: "rgb(88, 110, 117) none"
// green default
git_insertions: "rgb(133, 153, 0) none"
// red default
git_deletions: "rgb(211, 1, 2) none"
// default default
git_status_current: "none none"
// yellow default
git_status_modified: "rgb(181, 137, 0) none"
// green default
git_status_new: "rgb(133, 153, 0) none"
// base1 default
git_status_ignored: "rgb(147, 161, 161) none"
// red default
git_status_conflicted: "rgb(211, 1, 2) none"
// red default
git_status_other: "rgb(211, 1, 2) none"
// default base2
selected_line: "none rgb(238, 232, 213)"
// green default underlined
char_match: "rgb(133, 153, 0) none underlined"
// orange default italic
file_error: "rgb(203, 75, 22) none italic"
// default default
flag_label: "none none"
// yellow default bold
flag_value: "rgb(181, 137, 0) none bold"
// default default
input: "none none"
// orange base2
status_error: "rgb(203, 75, 22) rgb(238, 232, 213)"
// violet base2 bold
status_job: "rgb(108, 113, 196) rgb(238, 232, 213) bold"
// default base2
status_normal: "none rgb(238, 232, 213)"
// yellow base2
status_italic: "rgb(181, 137, 0) rgb(238, 232, 213)"
// base01 base2 bold
status_bold: "rgb(88, 110, 117) rgb(238, 232, 213) bold"
// violet base2
status_code: "rgb(108, 113, 196) rgb(238, 232, 213)"
// default base2
status_ellipsis: "none rgb(238, 232, 213)"
// base2 default
scrollbar_track: "rgb(238, 232, 213) none"
// default default
scrollbar_thumb: "none none"
// default default
help_paragraph: "none none"
// base01 default bold
help_bold: "rgb(88, 110, 117) none bold"
// base01 default italic
help_italic: "rgb(88, 110, 117) none italic"
// base01 base2
help_code: "rgb(88, 110, 117) rgb(238, 232, 213)"
// yellow default
help_headers: "rgb(181, 137, 0) none"
// default default
help_table_border: "none none"
preview_title: "rgb(147, 161, 161) rgb(238, 232, 213)"
preview: "rgb(101, 123, 131) rgb(253, 246, 227) / rgb(147, 161, 161) rgb(238, 232, 213)"
preview_line_number: "rgb(147, 161, 161) rgb(238, 232, 213)"
preview_separator: "rgb(147, 161, 161) rgb(238, 232, 213)"
preview_match: "None ansi(29)"
staging_area_title: "gray(22) rgb(253, 246, 227)"
good_to_bad_0: ansi(28)
good_to_bad_1: ansi(29)
good_to_bad_2: ansi(29)
good_to_bad_3: ansi(29)
good_to_bad_4: ansi(29)
good_to_bad_5: ansi(100)
good_to_bad_6: ansi(136)
good_to_bad_7: ansi(172)
good_to_bad_8: ansi(166)
good_to_bad_9: ansi(196)
}

View file

@ -0,0 +1,84 @@
###############################################################
# A skin for a terminal with a white background
#
# To create your own skin, copy this file, change the entries
# and import your skin file from the main conf file (look
# for "imports")
#
# Doc at https://dystroy.org/broot/skins/
###############################################################
syntax_theme: base16-ocean.light
skin: {
default: gray(1) None
tree: gray(7) None / gray(18) None
file: gray(3) None / gray(8) None
directory: ansi(25) None Bold / ansi(25) None
exe: ansi(130) None
link: Magenta None
pruning: gray(12) None Italic
perm__: gray(5) None
perm_r: ansi(94) None
perm_w: ansi(132) None
perm_x: ansi(65) None
owner: ansi(138) None
group: ansi(131) None
dates: ansi(66) None
sparse: ansi(214) None
git_branch: ansi(229) None
git_insertions: ansi(28) None
git_deletions: ansi(160) None
git_status_current: gray(5) None
git_status_modified: ansi(28) None
git_status_new: ansi(94) None Bold
git_status_ignored: gray(17) None
git_status_conflicted: ansi(88) None
git_status_other: ansi(88) None
selected_line: None gray(19) / None gray(21)
char_match: ansi(22) None
file_error: Red None
flag_label: gray(9) None
flag_value: ansi(166) None Bold
input: gray(1) None / gray(4) gray(20)
status_error: gray(22) ansi(124)
status_normal: gray(2) gray(20)
status_job: ansi(220) gray(5)
status_italic: ansi(166) gray(20)
status_bold: ansi(166) gray(20)
status_code: ansi(17) gray(20)
status_ellipsis: gray(19) gray(15)
purpose_normal: gray(20) gray(2)
purpose_italic: ansi(178) gray(2)
purpose_bold: ansi(178) gray(2) Bold
purpose_ellipsis: gray(20) gray(2)
scrollbar_track: gray(20) none
scrollbar_thumb: ansi(238) none
help_paragraph: gray(2) none
help_bold: ansi(202) none bold
help_italic: ansi(202) none italic
help_code: gray(5) gray(22)
help_headers: ansi(202) none
help_table_border: ansi(239) None
preview_title: gray(3) None / gray(5) None
preview: gray(5) gray(23) / gray(7) gray(23)
preview_line_number: gray(6) gray(20)
preview_separator: gray(7) None / gray(18) None
preview_match: None ansi(29) Underlined
hex_null: gray(15) None
hex_ascii_graphic: gray(2) None
hex_ascii_whitespace: ansi(143) None
hex_ascii_other: ansi(215) None
hex_non_ascii: ansi(167) None
staging_area_title: gray(8) None / gray(13) None
mode_command_mark: gray(15) ansi(204) Bold
good_to_bad_0: ansi(28)
good_to_bad_1: ansi(29)
good_to_bad_2: ansi(29)
good_to_bad_3: ansi(29)
good_to_bad_4: ansi(29)
good_to_bad_5: ansi(100)
good_to_bad_6: ansi(136)
good_to_bad_7: ansi(172)
good_to_bad_8: ansi(166)
good_to_bad_9: ansi(196)
}

175
.config/broot/verbs.hjson Normal file
View file

@ -0,0 +1,175 @@
###############################################################
# This file contains the verb definitions for broot
#
# Some verbs here are examples and not enabled by default: you
# need to uncomment them if you want to use them.
#
# Documentation at https://dystroy.org/broot/verbs/
###############################################################
verbs: [
{
invocation: nvim
key: enter
apply_to: text_file
execution: "wezterm-edit-helper {file}"
leave_broot: true
}
{
invocation: broot_home
key: ctrl-7
execution: broot $HOME
leave_broot: true
}
# You should customize this standard opening of text files.
# If you edit text files in your terminal (vi, emacs, helix, eg.), then
# you'll find it convenient to change the 'key' from 'ctrl-e' to 'enter'.
#
# If $EDITOR isn't set on your computer, you should either set it using
# something similar to
# export EDITOR=/usr/local/bin/nvim
# or just replace it with your editor of choice in the 'execution'
# pattern.
# If your editor is able to open a file on a specific line, use {line}
# so that you may jump directly at the right line from a preview or
# a content search.
# Examples depending on your favourite editor:
# execution: "nvim +{line} {file}"
# execution: "helix {file}:{line}"
{
invocation: edit
shortcut: e
key: ctrl-e
apply_to: text_file
execution: "$EDITOR {file}"
leave_broot: false
}
# Example 1: launching `tail -n` on the selected file (leaving broot)
# {
# name: tail_lines
# invocation: tl {lines_count}
# execution: "tail -f -n {lines_count} {file}"
# }
# Example 2: creating a new file without leaving broot
# {
# name: touch
# invocation: touch {new_file}
# execution: "touch {directory}/{new_file}"
# leave_broot: false
# }
# A convenient shortcut to create new text files in
# the current directory or below
{
invocation: create {subpath}
execution: "$EDITOR {directory}/{subpath}"
leave_broot: false
}
{
invocation: git_diff
shortcut: gd
leave_broot: false
execution: "git difftool -y {file}"
}
# On ctrl-b, propose the creation of a copy of the selection.
# While this might occasionally be useful, this verb is mostly here
# as an example to demonstrate rare standard groups like {file-stem}
# and {file-dot-extension} and the auto_exec verb property which
# allows verbs to stay unexecuted until you hit enter
{
invocation: "backup {version}"
key: ctrl-b
leave_broot: false
auto_exec: false
execution: "cp -r {file} {parent}/{file-stem}-{version}{file-dot-extension}"
}
# By default, `rm` does the system rm, and completely removes
# the file. If you prefer to have the file moved to the system
# trash, you may use the ':trash' internal with the verb below:
# {
# invocation: "rm"
# internal: "trash"
# leave_broot: false
# }
# This verb lets you launch a terminal on ctrl-T
# (on exit you'll be back in broot)
{
invocation: terminal
key: ctrl-t
execution: "$SHELL"
set_working_dir: true
leave_broot: false
}
# Here's an example of a verb needing the shell capabilities.
# It copies all children of the currently selected directory
# to a destination you type.
# It uses a star, which needs the shell for expansion. That's
# why such verb must have the `from_shell: true` parameter.
# {
# invocation: "cpa {dest}"
# external: "cp -r {directory}/* {dest}"
# from_shell: true
# }
# Here's an example of a shortcut bringing you to your home directory
# {
# invocation: home
# key: ctrl-home
# execution: ":focus ~"
# }
# Here's going to the work-dir root of the current git repository
# {
# invocation: gtr
# execution: ":focus {git-root}"
# }
# A popular set of shortcuts for going up and down:
#
# {
# key: ctrl-k
# execution: ":line_up"
# }
# {
# key: ctrl-j
# execution: ":line_down"
# }
# {
# key: ctrl-u
# execution: ":page_up"
# }
# {
# key: ctrl-d
# execution: ":page_down"
# }
# If you develop using git, you might like to often switch
# to the git status filter:
# {
# key: alt-g
# execution: ":toggle_git_status"
# }
# You can reproduce the bindings of Norton Commander
# on copying or moving to the other panel:
# {
# key: F5
# external: "cp -r {file} {other-panel-directory}"
# leave_broot: false
# }
# {
# key: F6
# external: "mv {file} {other-panel-directory}"
# leave_broot: false
# }
]

View file

@ -0,0 +1,7 @@
[worker.oci]
enabled = false
[worker.containerd]
enabled = true
rootless = true
address = "/run/user/1000/containerd/containerd.sock"

View file

@ -0,0 +1 @@
--enable-features=OzonePlatform --ozone-platform=wayland

769
.config/contour/contour.yml Normal file
View file

@ -0,0 +1,769 @@
# Default Contour Configuration File.
# Overrides the auto-detected platform plugin to be loaded.
#
# Possible (incomplete list of) values are:
# - auto The platform will be auto-detected.
# - xcb Uses XCB plugin (for X11 environment).
# - cocoa Used to be run on Mac OS/X.
# - direct2d Windows platform plugin using Direct2D.
# - winrt Windows platform plugin using WinRT.
#
# Default: auto
platform_plugin: auto
# VT Renderer configuration.
# ADVANCED! Do not touch unless you know what you are doing.
renderer:
# Backend to use for rendering the terminal onto the screen
#
# Possible values are:
# - default Uses the default rendering option as decided by the terminal.
# - software Uses software-based rendering.
# - OpenGL Use (possibly) hardware accelerated OpenGL
backend: OpenGL
# Number of hashtable slots to map to the texture tiles.
# Larger values may increase performance, but too large may also decrease.
# This value is rounded up to a value equal to the power of two.
#
# Default: 4096
tile_hashtable_slots: 4096
# Number of tiles that must fit at lest into the texture atlas.
#
# This does not include direct mapped tiles (US-ASCII glyphs,
# cursor shapes and decorations), if tile_direct_mapping is set to true).
#
# Value must be at least as large as grid cells available in the terminal view.
# This value is automatically adjusted if too small.
#
# Default: 4000
tile_cache_count: 4000
# Enables/disables the use of direct-mapped texture atlas tiles for
# the most often used ones (US-ASCII, cursor shapes, underline styles)
# You most likely do not want to touch this.
#
# Default: true
tile_direct_mapping: true
# Word delimiters when selecting word-wise.
word_delimiters: " /\\()\"'-.,:;<>~!@#$%^&*+=[]{}~?|│"
# Default PTY read buffer size.
#
# This is an advance option. Use with care!
# Default: 16384
read_buffer_size: 16384
# Size in bytes per PTY Buffer Object.
#
# This is an advanced option of an internal storage. Only change with care!
pty_buffer_size: 1048576
default_profile: main
# Flag to determine whether to spawn new process or not when creating new terminal
# Default: false
spawn_new_process: false
# Whether or not to reflow the lines on terminal resize events.
# Default: true
reflow_on_resize: true
# Section of experimental features.
# All experimental features are disabled by default and must be explicitly enabled here.
# NOTE: Contour currently has no experimental features behind this configuration wall.
# experimental:
# # Enables experimental support for feature X/Y/Z
# feature_xyz: true
# This keyboard modifier can be used to bypass the terminal's mouse protocol,
# which can be used to select screen content even if the an application
# mouse protocol has been activated (Default: Shift).
#
# The same modifier values apply as with input modifiers (see below).
bypass_mouse_protocol_modifier: Shift
# Modifier to be pressed in order to initiate block-selection
# using the left mouse button.
#
# This is usually the Control modifier, but on OS/X that is not possible,
# so Alt or Meta would be recommended instead.
#
# Supported modifiers:
# - Alt
# - Control
# - Shift
# - Meta
#
# Default: Control
mouse_block_selection_modifier: Control
# Selects an action to perform when a text selection has been made.
#
# Possible values are:
#
# - None Does nothing
# - CopyToClipboard Copies the selection to the primary clipboard.
# - CopyToSelectionClipboard Copies the selection to the selection clipboard.
# This is not supported on all platforms.
#
# Default: CopyToSelectionClipboard
on_mouse_select: CopyToSelectionClipboard
# Determines whether the instance is reloading the configuration files whenever it is changing or not.
#
# Default: false
live_config: false
# Inline image related default configuration and limits
# -----------------------------------------------------
images:
# Enable or disable sixel scrolling (SM/RM ?80 default)
sixel_scrolling: true
# Configures the maximum number of color registers available when rendering Sixel graphics.
sixel_register_count: 4096
# maximum width in pixels of an image to be accepted (0 defaults to system screen pixel width)
max_width: 0
# maximum height in pixels of an image to be accepted (0 defaults to system screen pixel height)
max_height: 0
# Terminal Profiles
# -----------------
#
# Dominates how your terminal visually looks like. You will need at least one terminal profile.
profiles:
main:
# You can override the process to be started inside the terminal.
# If nothing is specified, the users' default login shell will be used.
# But you may as well log in to a remote host.
# shell: "ssh ubuntu-vm"
# shell: "/bin/bash"
# arguments: ["some", "optional", "arguments", "for", "the", "shell"]
# If this terminal is being executed from within Flatpak, enforces sandboxing
# then this boolean indicates whether or not that sandbox should be escaped or not.
#
# Default value is true.
#
# It only makes sense to set this value to false if you really know what you are doing.
escape_sandbox: true
# Advanced value that is useful when CopyPreviousMarkRange is used
# with multiline-prompts. This offset value is being added to the
# current cursor's line number minus 1 (i.e. the line above the current cursor).
#
# Default value is 0.
copy_last_mark_range_offset: 0
# Sets initial working directory when spawning a new terminal.
# A leading ~ is expanded to the user's home directory.
# Default value is the user's home directory.
initial_working_directory: "~"
# When this profile is *activated*, this flag decides
# whether or not the title bar will be shown
show_title_bar: false
# When this profile is being *activated*, this flag decides
# whether or not to put the terminal's screen into fullscreen mode.
#
# It is activated during startup as well as when switching from another profile to this one.
fullscreen: false
# When this profile is *activated*, this flag decides
# whether or not to put the window into maximized mode.
maximized: false
# Defines the class part of the WM_CLASS property of the window.
wm_class: "contour"
# Environment variables to be passed to the shell.
# environment:
# TERM: contour
# COLORTERM: truecolor
# Determines the terminal type that is being advertised.
# Possible values are:
# - VT100
# - VT220
# - VT240
# - VT330
# - VT340
# - VT320
# - VT420
# - VT510
# - VT520
# - VT525
# Default: VT525
terminal_id: VT525
# Determines the initial terminal size in characters.
terminal_size:
columns: 80
lines: 25
history:
# Number of lines to preserve (-1 for infinite).
limit: 1000
# Boolean indicating whether or not to scroll down to the bottom on screen updates.
auto_scroll_on_update: true
# Number of lines to scroll on ScrollUp & ScrollDown events.
# Default: 3
scroll_multiplier: 3
# visual scrollbar support
scrollbar:
# scroll bar position: Left, Right, Hidden (ignore-case)
position: Hidden
# whether or not to hide the scrollbar when in alt-screen.
hide_in_alt_screen: true
# mouse setting
mouse:
# whether or not to hide mouse when typing
#
# Default value: true
hide_while_typing: true
# Some VT sequences should need access permissions.
#
# These can be to:
# - allow Allows the given functionality
# - deny Denies the given functionality
# - ask Asks the user interactively via popup dialog for permission of the given action.
#
# Default for all of these entries should be: "ask".
permissions:
# Allows changing the font via `OSC 50 ; Pt ST`.
change_font: ask
# Allows capturing the screen buffer via `CSI > Pm ; Ps ; Pc ST`.
# The response can be read from stdin as sequence `OSC 314 ; <screen capture> ST`
capture_buffer: ask
# Allows displaying the "Host Writable Statusline" programmatically using `DECSSDT 2`.
display_host_writable_statusline: ask
# If enabled, and you double-click on a word in the primary screen,
# all other words matching this word will be highlighted as well.
# So the double-clicked word will be selected as well as highlighted, along with
# all other words being simply highlighted.
#
# This is currently implemented by initiating a search on the double-clicked word.
# Therefore one can even use FocusNextSearchMatch and FocusPreviousSearchMatch to
# jump to the next/previous same word, also outside of the current viewport.
#
# Default: true
highlight_word_and_matches_on_double_click: true
# Font related configuration (font face, styles, size, rendering mode).
font:
# Initial font size in pixels.
size: 20
# DPI scaling factor applied on top of the system configured on (default: 1.0).
dpi_scale: 1.0
# Font Locator API
# Selects an engine to use for locating font files on the system.
# This is implicitly also responsible for font fallback
# Possible values are:
# - native : automatically choose the best available on the current platform
# - fontconfig : uses fontconfig to select fonts
# - CoreText : uses OS/X CoreText to select fonts.
# - DirectWrite : selects DirectWrite engine (Windows only)
locator: native
# Text shaping related settings
text_shaping:
# Selects which text shaping and font rendering engine to use.
# Supported values are:
# - native : automatically choose the best available on the current platform.
# - DirectWrite : selects DirectWrite engine (Windows only)
# - CoreText : selects CoreText engine (Mac OS/X only) (currently not implemented)
# - OpenShaper : selects OpenShaper (harfbuzz/freetype/fontconfig, available on all
# platforms)
engine: native
# Uses builtin textures for pixel-perfect box drawing.
# If disabled, the font's provided box drawing characters
# will be used (Default: true).
builtin_box_drawing: true
# Font render modes tell the font rasterizer engine what rendering technique to use.
#
# Modes available are:
# - lcd Uses a subpixel rendering technique optimized for LCD displays.
# - light Uses a subpixel rendering technique in gray-scale.
# - gray Uses standard gray-scaled anti-aliasing.
# - monochrome Uses pixel-perfect bitmap rendering.
render_mode: gray
# Indicates whether or not to include *only* monospace fonts in the font and
# font-fallback list (Default: true).
strict_spacing: false
# Font family to use for displaying text.
#
# A font can be either described in detail as below or as a
# simple string value (e.g. "monospace" with the appropriate
# weight/slant applied automatically).
regular:
# Font family defines the font family name, such as:
# Fira Code", "Courier New", or "monospace" (default).
family: "Iosevka Term SS09 Light"
# Font weight can be one of:
# thin, extra_light, light, demilight, book, normal,
# medium, demibold, bold, extra_bold, black, extra_black.
weight: light
# Font slant can be one of: normal, italic, oblique.
slant: normal
# Set of optional font features to be enabled. This
# is usually a 4-letter code, such as ss01 or ss02 etc.
#
# Please see your font's documentation to find out what it
# supports.
#
# Default: []
features: [ss09]
# If bold/italic/bold_italic are not explicitly specified, the regular font with
# the respective weight and slant will be used.
bold:
family: "Iosevka Term SS09"
features: [ss09]
weight: demibold
italic:
family: "Iosevka Term Curly Slab"
weight: light
slant: italic
bold_italic:
family: "Iosevka Term Curly Slab Ex"
weight: regular
slant: italic
#bold: "Hack"
#italic: "Hack"
#bold_italic: "Hack"
# This is a special font to be used for displaying unicode symbols
# that are to be rendered in emoji presentation.
# Defaults to "emoji".
emoji: "Noto Color Emoji"
# Indicates whether or not bold text should be rendered in bright colors,
# for indexed colors.
#
# If disabled, normal color will be used instead.
#
# Default: false
draw_bold_text_with_bright_colors: false
# Terminal cursor display configuration
cursor:
# Supported shapes are:
#
# - block a filled rectangle
# - rectangle just the outline of a block
# - underscore a line under the text
# - bar: the well known i-Beam
shape: "bar"
# Determines whether or not the cursor will be blinking over time.
blinking: false
# Blinking interval (in milliseconds) to use when cursor is blinking.
blinking_interval: 500
# vi-like normal-mode specific settings.
# Note, currently only the cursor can be customized.
normal_mode:
cursor:
shape: block
blinking: false
blinking_interval: 500
# vi-like visual/visual-line/visual-block mode specific settings.
# Note, currently only the cursor can be customized.
visual_mode:
cursor:
shape: block
blinking: false
blinking_interval: 500
# Time duration in milliseconds for which yank highlight is shown.
vi_mode_highlight_timeout: 300
# Configures a `scrolloff` for cursor movements in normal and visual (block) modes.
#
# Default: 8
vi_mode_scrolloff: 8
status_line:
# Either none or indicator.
# This only reflects the initial state of the status line, as it can
# be changed at any time during runtime by the user or by an application.
display: none
# Position to place the status line to, if it is to be shown.
# This can be either value `top` or value `bottom`.
# Default: bottom
position: bottom
# Synchronize the window title with the Host Writable status_line if
# and only if the host writable status line was denied to be shown.
# Default: false
sync_to_window_title: false
# Background configuration
background:
# Background opacity to use. A value of 1.0 means fully opaque whereas 0.0 means fully
# transparent. Only values between 0.0 and 1.0 are allowed.
opacity: 1.0
# Some platforms can blur the transparent background (currently only Windows 10 is supported).
blur: false
# Specifies a colorscheme to use (alternatively the colors can be inlined).
colors: "default"
# Hyperlinks (via OSC-8) can be stylized and colorized on hover.
hyperlink_decoration:
normal: dotted
hover: underline
# Color Profiles
# --------------
#
# Here you can configure your color profiles, whereas a color can be expressed in standard web format,
# with a leading # followed by red/green/blue values, 7 characters in total.
# You may alternatively use 0x as prefix instead of #.
# For example 0x102030 is equal to '#102030'.
color_schemes:
default:
# Default colors
default:
# Default background color (this can be made transparent, see above).
background: "#11171d"
# Default foreground text color.
foreground: "#e3e0cd"
# Background image support.
background_image:
# Full path to the image to use as background.
#
# Default: empty string (disabled)
# path: '/Users/trapni/Pictures/bg.png'
# Image opacity to be applied to make the image not look to intense
# and not get too distracted by the background image.
# Default: 0.5
opacity: 0.5
# Optionally blurs background image to make it less distracting
# and keep the focus on the actual terminal contents.
#
# Default: false
blur: false
# Mandates the color of the cursor and potentially overridden text.
#
# The color can be specified in RGB as usual, plus
# - CellForeground: Selects the cell's foreground color.
# - CellBackground: Selects the cell's background color.
cursor:
# Specifies the color to be used for the actual cursor shape.
#
# Default: CellForeground
default: "#00d992"
# Specifies the color to be used for the characters that would
# be covered otherwise.
#
# Default: CellBackground
text: CellBackground
# color to pick for hyperlinks decoration, when hovering
hyperlink_decoration:
normal: "#f0f000"
hover: "#ff0000"
# Color to pick for vi_mode highlights.
# The value format is equivalent to how selection colors and alpha contribution is defined.
vi_mode_highlight:
foreground: CellForeground
foreground_alpha: 1.0
background: "#ffa500"
background_alpha: 0.5
# Color override for the current cursor's line when in vi_mode:
# The value format is equivalent to how selection colors and alpha contribution is defined.
# To disable cursorline in vi_mode, set foreground to CellForeground and background to CellBackground.
vi_mode_cursorline:
foreground: "#ffffff"
foreground_alpha: 0.2
background: "#808080"
background_alpha: 0.4
# The text selection color can be customized here.
# Leaving a value empty will default to the inverse of the content's color values.
#
# The color can be specified in RGB as usual, plus
# - CellForeground: Selects the cell's foreground color.
# - CellBackground: Selects the cell's background color.
selection:
# Specifies the color to be used for the selected text.
#
# Default: CellBackground
foreground: CellForeground
# Specifies the alpha value (between 0.0 and 1.0) the configured foreground color
# will contribute to the original color.
#
# A value of 1.0 will paint over, whereas a value of 0.5 will give
# a look of a half-transparently painted grid cell.
foreground_alpha: 1.0
# Specifies the color to be used for the selected background.
#
# Default: CellForeground
background: "#4040f0"
# Specifies the alpha value (between 0.0 and 1.0) the configured background color
# will contribute to the original color.
#
# A value of 1.0 will paint over, whereas a value of 0.5 will give
# a look of a half-transparently painted grid cell.
background_alpha: 0.5
# Search match highlighting. Similar to selection highlighting.
search_highlight:
foreground: CellBackground
background: CellForeground
foreground_alpha: 1.0
background_alpha: 1.0
# Search match highlighting (focused term). Similar to selection highlighting.
search_highlight_focused:
foreground: CellBackground
background: CellForeground
foreground_alpha: 1.0
background_alpha: 1.0
# Coloring for the word that is highlighted due to double-clicking it.
#
# The format is similar to selection highlighting.
word_highlight_current:
foreground: CellForeground
background: "#909090"
foreground_alpha: 1.0
background_alpha: 0.5
# Coloring for the word that is highlighted due to double-clicking
# another word that matches this word.
#
# The format is similar to selection highlighting.
word_highlight_other:
foreground: CellForeground
background: "#909090"
foreground_alpha: 1.0
background_alpha: 0.5
# Defines the colors to be used for the Indicator status line.
# Values must be in RGB form.
indicator_statusline:
# Default: default background
foreground: "#808080"
# Default: default foreground
background: "#000000"
# Alternate colors to be used for the indicator status line when
# this terminal is currently not in focus.
indicator_statusline_inactive:
# Default: default background
foreground: "#808080"
# Default: default foreground
background: "#000000"
# Colors for the IME (Input Method Editor) area.
input_method_editor:
# Default: default #FFFFFF
foreground: "#FFFFFF"
# Default: default #FF0000
background: "#FF0000"
# Normal colors
normal:
black: "#000000"
red: "#ff0035"
green: "#85ff00"
yellow: "#ffc900"
blue: "#00a7ff"
magenta: "#cb01ff"
cyan: "#00e0ff"
white: "#f0f0f0"
# Bright colors
bright:
black: "#000000"
red: "#ffb4af"
green: "#d2ffba"
yellow: "#ffebb7"
blue: "#b1deff"
magenta: "#edb5ff"
cyan: "#bdf4ff"
white: "#ffffff"
# Dim (faint) colors, if not set, they're automatically computed based on normal colors.
# dim:
# black: '#1d1f21'
# red: '#cc342b'
# green: '#198844'
# yellow: '#fba922'
# blue: '#3971ed'
# magenta: '#a36ac7'
# cyan: '#3971ed'
# white: '#c5c8c6'
# Key Bindings
# ------------
#
# In this section you can customize key bindings.
# Each array element in `input_mapping` represents one key binding,
# whereas `mods` represents an array of keyboard modifiers that must be pressed - as well as
# the `key` or `mouse` - in order to activate the corresponding action,
#
# Additionally one can filter input mappings based on special terminal modes using the `modes` option:
# - Alt : The terminal is currently in alternate screen buffer, otherwise it is in primary screen buffer.
# - AppCursor : The application key cursor mode is enabled (otherwise it's normal cursor mode).
# - AppKeypad : The application keypad mode is enabled (otherwise it's the numeric keypad mode).
# - Select : The terminal has currently an active grid cell selection (such as selected text).
# - Insert : The Insert input mode is active, that is the default and one way to test
# that the input mode is not in normal mode or any of the visual select modes.
# - Search : There is a search term currently being edited or already present.
# - Trace : The terminal is currently in trace-mode, i.e., each VT sequence can be interactively
# single-step executed using custom actions. See TraceEnter/TraceStep/TraceLeave actions.
#
# You can combine these modes by concatenating them via | and negate a single one
# by prefixing with ~.
#
# The `modes` option defaults to not filter at all (the input mappings always
# match based on modifier and key press / mouse event).
#
# `key` represents keys on your keyboard, and `mouse` represents buttons
# as well as the scroll wheel.
#
# Modifiers:
# - Alt
# - Control
# - Shift
# - Meta (this is the Windows key on Windows OS, and the Command key on OS/X, and Meta on anything else)
#
# Keys can be expressed case-insensitively symbolic:
# APOSTROPHE, ADD, BACKSLASH, COMMA, DECIMAL, DIVIDE, EQUAL, LEFT_BRACKET,
# MINUS, MULTIPLY, PERIOD, RIGHT_BRACKET, SEMICOLON, SLASH, SUBTRACT, SPACE
# Enter, Backspace, Tab, Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
# DownArrow, LeftArrow, RightArrow, UpArrow, Insert, Delete, Home, End, PageUp, PageDown,
# Numpad_NumLock, Numpad_Divide, Numpad_Multiply, Numpad_Subtract, Numpad_CapsLock,
# Numpad_Add, Numpad_Decimal, Numpad_Enter, Numpad_Equal,
# Numpad_0, Numpad_1, Numpad_2, Numpad_3, Numpad_4,
# Numpad_5, Numpad_6, Numpad_7, Numpad_8, Numpad_9
# or in case of standard characters, just the character.
#
# Mouse buttons can be one of the following self-explanatory ones:
# Left, Middle, Right, WheelUp, WheelDown
#
# Actions:
# - CancelSelection Cancels currently active selection, if any.
# - ChangeProfile Changes the profile to the given profile `name`.
# - ClearHistoryAndReset Clears the history, performs a terminal hard reset and attempts to force a redraw of the currently running application.
# - CopyPreviousMarkRange Copies the most recent range that is delimited by vertical line marks into clipboard.
# - CopySelection Copies the current selection into the clipboard buffer.
# - DecreaseFontSize Decreases the font size by 1 pixel.
# - DecreaseOpacity Decreases the default-background opacity by 5%.
# - FocusNextSearchMatch Focuses the next search match (if any).
# - FocusPreviousSearchMatch Focuses the next previous match (if any).
# - FollowHyperlink Follows the hyperlink that is exposed via OSC 8 under the current cursor position.
# - IncreaseFontSize Increases the font size by 1 pixel.
# - IncreaseOpacity Increases the default-background opacity by 5%.
# - NewTerminal Spawns a new terminal at the current terminals current working directory.
# - NoSearchHighlight Disables current search highlighting, if anything is still highlighted due to a prior search.
# - OpenConfiguration Opens the configuration file.
# - OpenFileManager Opens the current working directory in a system file manager.
# - PasteClipboard Pastes clipboard to standard input. Pass boolean parameter 'strip' to indicate whether or not to strip repetitive whitespaces down to one and newlines to whitespaces.
# - PasteSelection Pastes current selection to standard input.
# - Quit Quits the application.
# - ReloadConfig Forces a configuration reload.
# - ResetConfig Overwrites current configuration with builtin default configuration and loads it. Attention, all your current configuration will be lost due to overwrite!
# - ResetFontSize Resets font size to what is configured in the config file.
# - ScreenshotVT Takes a screenshot in form of VT escape sequences.
# - ScrollDown Scrolls down by the multiplier factor.
# - ScrollMarkDown Scrolls one mark down (if none present, bottom of the screen)
# - ScrollMarkUp Scrolls one mark up
# - ScrollOneDown Scrolls down by exactly one line.
# - ScrollOneUp Scrolls up by exactly one line.
# - ScrollPageDown Scrolls a page down.
# - ScrollPageUp Scrolls a page up.
# - ScrollToBottom Scrolls to the bottom of the screen buffer.
# - ScrollToTop Scrolls to the top of the screen buffer.
# - ScrollUp Scrolls up by the multiplier factor.
# - SearchReverse Initiates search mode (starting to search at current cursor position, moving upwards).
# - SendChars Writes given characters in `chars` member to the applications input.
# - ToggleAllKeyMaps Disables/enables responding to all keybinds (this keybind will be preserved when disabling all others).
# - ToggleFullScreen Enables/disables full screen mode.
# - ToggleInputProtection Enables/disables terminal input protection.
# - ToggleStatusLine Shows/hides the VT320 compatible Indicator status line.
# - ToggleTitleBar Shows/Hides titlebar
# - TraceBreakAtEmptyQueue Executes any pending VT sequence from the VT sequence buffer in trace mode, then waits.
# - TraceEnter Enables trace mode, suspending execution until explicitly requested to continue (See TraceLeave and TraceStep).
# - TraceLeave Disables trace mode. Any pending VT sequence will be flushed out and normal execution will be resumed.
# - TraceStep Executes a single VT sequence that is to be executed next.
# - ViNormalMode Enters/Leaves Vi-like normal mode. The cursor can then be moved via h/j/k/l movements in normal mode and text can be selected via v, yanked via y, and clipboard pasted via p.
# - WriteScreen Writes VT sequence in `chars` member to the screen (bypassing the application).
input_mapping:
- { mods: [Control], mouse: Left, action: FollowHyperlink }
- { mods: [], mouse: Middle, action: PasteSelection }
- { mods: [], mouse: WheelDown, action: ScrollDown }
- { mods: [], mouse: WheelUp, action: ScrollUp }
- { mods: [Alt], key: Enter, action: ToggleFullscreen }
- { mods: [Alt], mouse: WheelDown, action: DecreaseOpacity }
- { mods: [Alt], mouse: WheelUp, action: IncreaseOpacity }
- { mods: [Control, Alt], key: S, action: ScreenshotVT }
- { mods: [Control, Shift], key: Plus, action: IncreaseFontSize }
- { mods: [Control], key: "0", action: ResetFontSize }
- { mods: [Control, Shift], key: Minus, action: DecreaseFontSize }
- { mods: [Control, Shift], key: "_", action: DecreaseFontSize }
- { mods: [Control, Shift], key: N, action: NewTerminal }
- { mods: [Control, Shift], key: V, action: PasteClipboard, strip: false }
- { mods: [Control, Alt], key: V, action: PasteClipboard, strip: true }
- { mods: [Control], key: C, action: CopySelection, mode: "Select|Insert" }
- { mods: [Control], key: C, action: CancelSelection, mode: "Select|Insert" }
- {
mods: [Control],
key: V,
action: PasteClipboard,
strip: false,
mode: "Select|Insert",
}
- { mods: [Control], key: V, action: CancelSelection, mode: "Select|Insert" }
- { mods: [], key: Escape, action: CancelSelection, mode: "Select|Insert" }
- { mods: [Control, Shift], key: Space, action: ViNormalMode, mode: "Insert" }
- { mods: [Control, Shift], key: Comma, action: OpenConfiguration }
- { mods: [Control, Shift], key: Q, action: Quit }
- { mods: [Control], mouse: WheelDown, action: DecreaseFontSize }
- { mods: [Control], mouse: WheelUp, action: IncreaseFontSize }
- { mods: [Shift], key: DownArrow, action: ScrollOneDown }
- { mods: [Shift], key: End, action: ScrollToBottom }
- { mods: [Shift], key: Home, action: ScrollToTop }
- { mods: [Shift], key: PageDown, action: ScrollPageDown }
- { mods: [Shift], key: PageUp, action: ScrollPageUp }
- { mods: [Shift], key: UpArrow, action: ScrollOneUp }
- { mods: [Control, Alt], key: K, action: ScrollMarkUp, mode: "~Alt" }
- { mods: [Control, Alt], key: J, action: ScrollMarkDown, mode: "~Alt" }
- { mods: [Shift], mouse: WheelDown, action: ScrollPageDown }
- { mods: [Shift], mouse: WheelUp, action: ScrollPageUp }
- { mods: [Control, Alt], key: O, action: OpenFileManager }
- { mods: [Control, Alt], key: ".", action: ToggleStatusLine }
- { mods: [Control, Shift], key: "F", action: SearchReverse }
- { mods: [Control, Shift], key: "H", action: NoSearchHighlight }
- { mods: [], key: "F3", action: FocusNextSearchMatch }
- { mods: [Shift], key: "F3", action: FocusPreviousSearchMatch }
# - { mods: [Control, Meta], key: 'E', action: TraceEnter, mode: "~Trace" }
# - { mods: [Control, Meta], key: 'E', action: TraceLeave, mode: "Trace" }
# - { mods: [Control, Meta], key: 'N', action: TraceStep, mode: "Trace" }
# - { mods: [Control, Meta], key: 'F', action: TraceBreakAtEmptyQueue, mode: "Trace" }

View file

@ -0,0 +1,14 @@
version: 2
root-markers:
- .git/
tools:
clang-format: &clang-format
format-command: 'clang-format -style="{BasedOnStyle: Google, IndentWidth: 2, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}"'
format-stdin: true
languages:
proto:
- <<: *clang-format

View file

@ -0,0 +1 @@
DFT_BACKGROUND=light

View file

@ -0,0 +1 @@
DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/podman/podman.sock

View file

@ -0,0 +1 @@
GOPROXY=https://athens.aarn.shelman.io

View file

@ -0,0 +1,2 @@
MOZ_ENABLE_WAYLAND=1
MOZ_DISABLE_RDD_SANDBOX=1

View file

@ -0,0 +1,3 @@
OTEL_EXPORTER_OTLP_ENDPOINT=https://otel.aarn.shelman.io
OTEL_RESOURCE_ATTRIBUTES=instance=dln-dev
OTEL_LOG_LEVEL=debug

View file

@ -0,0 +1 @@
SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/gcr/ssh

View file

@ -0,0 +1,6 @@
abbr --add b git branch -va
abbr --add d git diff --stat -p -C --color-words
abbr --add new git checkout --detach main
abbr --add s git status -sb
abbr --add sl git branchless smartlog
abbr --add sw git branchless switch --interactive

View file

@ -0,0 +1,10 @@
alias e='wezterm-edit-helper'
alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
alias git='git-branchless wrap --'
alias l='bat --wrap=never --pager="less -S"'
alias ls=eza
alias tail='tail -n $LINES'
alias timestamp='TZ=Z date "+%Y%m%dT%H%M%SZ"'
alias top='btm --basic --enable_cache_memory --enable_gpu_memory --battery'
alias w="history -1 | sed -e 's/[0-9]* //' | xargs viddy -n1"
alias xc=fish_clipboard_copy

View file

@ -0,0 +1,91 @@
function fish_prompt
switch "$fish_key_bindings"
case fish_hybrid_key_bindings fish_vi_key_bindings
set STARSHIP_KEYMAP "$fish_bind_mode"
case '*'
set STARSHIP_KEYMAP insert
end
set STARSHIP_CMD_PIPESTATUS $pipestatus
set STARSHIP_CMD_STATUS $status
# Account for changes in variable name between v2.7 and v3.0
set STARSHIP_DURATION "$CMD_DURATION$cmd_duration"
set STARSHIP_JOBS (count (jobs -p))
if test "$TRANSIENT" = 1
# Clear from cursor to end of screen as `commandline -f repaint` does not do this
# See https://github.com/fish-shell/fish-shell/issues/8418
printf \e\[0J
if type -q starship_transient_prompt_func
starship_transient_prompt_func
else
printf "\n\e[1;32m%%\e[0m "
end
else
/usr/bin/starship prompt --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
end
end
function fish_right_prompt
switch "$fish_key_bindings"
case fish_hybrid_key_bindings fish_vi_key_bindings
set STARSHIP_KEYMAP "$fish_bind_mode"
case '*'
set STARSHIP_KEYMAP insert
end
set STARSHIP_CMD_PIPESTATUS $pipestatus
set STARSHIP_CMD_STATUS $status
# Account for changes in variable name between v2.7 and v3.0
set STARSHIP_DURATION "$CMD_DURATION$cmd_duration"
set STARSHIP_JOBS (count (jobs -p))
if test "$TRANSIENT" = 1
if type -q starship_transient_rprompt_func
starship_transient_rprompt_func
else
printf ""
end
else
/usr/bin/starship prompt --right --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
end
end
# Disable virtualenv prompt, it breaks starship
set -g VIRTUAL_ENV_DISABLE_PROMPT 1
# Remove default mode prompt
builtin functions -e fish_mode_prompt
set -gx STARSHIP_SHELL fish
# Transience related functions
function reset-transient --on-event fish_postexec
set -g TRANSIENT 0
end
function transient_execute
if commandline --is-valid
set -g TRANSIENT 1
commandline -f repaint
else
set -g TRANSIENT 0
end
commandline -f execute
end
# --user is the default, but listed anyway to make it explicit.
function enable_transience --description 'enable transient prompt keybindings'
bind --user \r transient_execute
bind --user -M insert \r transient_execute
end
# Erase the transient prompt related key bindings.
# --user is the default, but listed anyway to make it explicit.
# Erasing a user binding will revert to the preset.
function disable_transience --description 'remove transient prompt keybindings'
bind --user -e \r
bind --user -M insert -e \r
end
# Set up the session key that will be used to store logs
# We don't use `random [min] [max]` because it is unavailable in older versions of fish shell
set -gx STARSHIP_SESSION_KEY (string sub -s1 -l16 (random)(random)(random)(random)(random)0000000000000000)
enable_transience

View file

@ -0,0 +1,57 @@
#!/usr/bin/fish
# SPDX-License-Identifier: CC0-1.0
if status --is-interactive
set _fishprompt_aid "fish"$fish_pid
set _fishprompt_started 0
# empty if running; or a numeric exit code; or CANCEL
set _fishprompt_postexec ""
functions -c fish_prompt _fishprompt_saved_prompt
set _fishprompt_prompt_count 0
set _fishprompt_disp_count 0
function _fishprompt_start --on-event fish_prompt
set _fishprompt_prompt_count (math $_fishprompt_prompt_count + 1)
# don't use post-exec, because it is called *before* omitted-newline output
if [ -n "$_fishprompt_postexec" ]
printf "\033]133;D;%s;aid=%s\007" "$_fishprompt_postexec" $_fishprompt_aid
end
printf "\033]133;A;aid=%s;cl=m\007" $_fishprompt_aid
end
function fish_prompt
set _fishprompt_disp_count (math $_fishprompt_disp_count + 1)
printf "\033]133;P;k=i\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_prompt))
set _fishprompt_started 1
set _fishprompt_postexec ""
end
function _fishprompt_preexec --on-event fish_preexec
if [ "$_fishprompt_started" = 1 ]
printf "\033]133;C;\007"
end
set _fishprompt_started 0
end
function _fishprompt_postexec --on-event fish_postexec
set _fishprompt_postexec $status
_fishprompt_start
end
function __fishprompt_cancel --on-event fish_cancel
set _fishprompt_postexec CANCEL
_fishprompt_start
end
function _fishprompt_exit --on-process %self
if [ "$_fishprompt_started" = 1 ]
printf "\033]133;Z;aid=%s\007" $_fishprompt_aid
end
end
if functions -q fish_right_prompt
functions -c fish_right_prompt _fishprompt_saved_right_prompt
function fish_right_prompt
printf "\033]133;P;k=r\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_right_prompt))
end
end
end

View file

@ -0,0 +1,37 @@
set GO_TASK_PROGNAME task
function __task_get_tasks --description "Prints all available tasks with their description"
# Read the list of tasks (and potential errors)
$GO_TASK_PROGNAME --list-all 2>&1 | read -lz rawOutput
# Return on non-zero exit code (for cases when there is no Taskfile found or etc.)
if test $status -ne 0
return
end
# Grab names and descriptions (if any) of the tasks
set -l output (echo $rawOutput | sed -e '1d; s/\* \(.*\):\s*\(.*\)\s*(aliases.*/\1\t\2/' -e 's/\* \(.*\):\s*\(.*\)/\1\t\2/'| string split0)
if test $output
echo $output
end
end
complete -c $GO_TASK_PROGNAME -d 'Runs the specified task(s). Falls back to the "default" task if no task name was specified, or lists all tasks if an unknown task name was
specified.' -xa "(__task_get_tasks)"
complete -c $GO_TASK_PROGNAME -s c -l color -d 'colored output (default true)'
complete -c $GO_TASK_PROGNAME -s d -l dir -d 'sets directory of execution'
complete -c $GO_TASK_PROGNAME -l dry -d 'compiles and prints tasks in the order that they would be run, without executing them'
complete -c $GO_TASK_PROGNAME -s f -l force -d 'forces execution even when the task is up-to-date'
complete -c $GO_TASK_PROGNAME -s h -l help -d 'shows Task usage'
complete -c $GO_TASK_PROGNAME -s i -l init -d 'creates a new Taskfile.yml in the current folder'
complete -c $GO_TASK_PROGNAME -s l -l list -d 'lists tasks with description of current Taskfile'
complete -c $GO_TASK_PROGNAME -s o -l output -d 'sets output style: [interleaved|group|prefixed]' -xa "interleaved group prefixed"
complete -c $GO_TASK_PROGNAME -s p -l parallel -d 'executes tasks provided on command line in parallel'
complete -c $GO_TASK_PROGNAME -s s -l silent -d 'disables echoing'
complete -c $GO_TASK_PROGNAME -l status -d 'exits with non-zero exit code if any of the given tasks is not up-to-date'
complete -c $GO_TASK_PROGNAME -l summary -d 'show summary about a task'
complete -c $GO_TASK_PROGNAME -s t -l taskfile -d 'choose which Taskfile to run. Defaults to "Taskfile.yml"'
complete -c $GO_TASK_PROGNAME -s v -l verbose -d 'enables verbose mode'
complete -c $GO_TASK_PROGNAME -l version -d 'show Task version'
complete -c $GO_TASK_PROGNAME -s w -l watch -d 'enables watch of the given task'

92
.config/fish/config.fish Normal file
View file

@ -0,0 +1,92 @@
set fish_greeting
set fish_emoji_width 2
fish_add_path $HOME/.cargo/bin
fish_add_path $HOME/bin
## Nix
set -gx LOCALE_ARCHIVE /usr/lib/locale/locale-archive
set -gx NIX_REMOTE daemon
fish_add_path $HOME/.nix-profile/bin
if status is-interactive
## Pager
set -gx LESS "--mouse --wheel-lines=1 -nRXF"
set -gx LESSCOLORIZER bat
set -gx LESSOPEN "|lesspipe.sh %s"
set -gx PAGER bat
set -gx BAT_PAGER "less -r"
## OpenTelemetry
set -gx OTEL_EXPORTER_OTLP_ENDPOINT https://otel.aarn.shelman.io
set -gx OTEL_RESOURCE_ATTRIBUTES instance=dln-dev
set -gx OTEL_LOG_LEVEL debug
## Utilities
set -gx EDITOR (which nvim)
set -gx VISUAL $EDITOR
set -gx SUDO_EDITOR $EDITOR
function tree
eza --tree --color=always $argv | bat --wrap=never
end
function rg --wraps rg --description 'ripgrep with bat'
/usr/bin/rg --color=always $argv | bat --wrap=never
end
## Directory jumping with frecency
function fre_after_cd --on-variable PWD
fre --add "$PWD"
end
function jump
set _dir $(fre --sorted | fzf --no-sort --color=fg:248,bg+:16,fg+:49,pointer:49,border:49 --border=rounded --layout=reverse '--bind=ctrl-g:become(br -f --conf ~/.config/broot/select.hjson $(git rev-parse --show-toplevel 2>/dev/null || pwd))')
[ -n "$_dir" ] && pushd $_dir >>/dev/null
commandline -f repaint
end
bind \cg jump
function git_jump
set _dir $(git rev-parse --show-toplevel 2>/dev/null || pwd)
if [ "$_dir" = "$PWD" ]
set _dir $(br -f --conf ~/.config/broot/select.hjson)
end
[ -n "$_dir" ] && pushd $_dir >>/dev/null
commandline -f repaint
end
bind \c_ git_jump
function git_broot
br $(git rev-parse --show-toplevel 2>/dev/null || pwd)
commandline -f repaint
end
bind \ee git_broot
bind \eg gitui
## Kubernetes
fish_add_path $HOME/.krew/bin
# function kubectl --wraps kubectl
# command kubecolor $argv
# end
## History
# FIXME: how to use autin history for these?
bind \cn history-prefix-search-forward
bind \cp history-prefix-search-backward
# bind \cP _atuin_bind_up
bind \cJ forward-char
atuin init fish | source
end
## Direnv
direnv hook fish | source

View file

@ -0,0 +1,47 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3400
SETUVAR fish_color_autosuggestion:6c7086
SETUVAR fish_color_cancel:f38ba8
SETUVAR fish_color_command:89b4fa
SETUVAR fish_color_comment:7f849c\x1e\x2d\x2ditalics\x1e\x2d\x2ddim
SETUVAR fish_color_cwd:f9e2af
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:fab387
SETUVAR fish_color_error:f38ba8
SETUVAR fish_color_escape:eba0ac
SETUVAR fish_color_gray:6c7086
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:89b4fa
SETUVAR fish_color_host_remote:a6e3a1
SETUVAR fish_color_keyword:f38ba8
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
SETUVAR fish_color_normal:cdd6f4
SETUVAR fish_color_operator:f5c2e7
SETUVAR fish_color_option:a6e3a1
SETUVAR fish_color_param:f2cdcd
SETUVAR fish_color_quote:a6e3a1
SETUVAR fish_color_redirection:f5c2e7
SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d313244
SETUVAR fish_color_selection:\x2d\x2dbackground\x3d313244
SETUVAR fish_color_status:f38ba8
SETUVAR fish_color_user:94e2d5
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_cursor_default:line
SETUVAR fish_cursor_normal:line
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_background:\x1d
SETUVAR fish_pager_color_completion:cdd6f4
SETUVAR fish_pager_color_description:6c7086
SETUVAR fish_pager_color_prefix:f5c2e7
SETUVAR fish_pager_color_progress:6c7086
SETUVAR fish_pager_color_secondary_background:\x1d
SETUVAR fish_pager_color_secondary_completion:\x1d
SETUVAR fish_pager_color_secondary_description:\x1d
SETUVAR fish_pager_color_secondary_prefix:\x1d
SETUVAR fish_pager_color_selected_background:\x1d
SETUVAR fish_pager_color_selected_completion:\x1d
SETUVAR fish_pager_color_selected_description:\x1d
SETUVAR fish_pager_color_selected_prefix:\x1d
SETUVAR fish_user_paths:/home/dln/\x2ekrew/bin\x1e/home/dln/bin\x1e/home/dln/\x2ecargo/bin
SETUVAR --export theme:Catppuccin\x20Latte

View file

@ -0,0 +1,30 @@
# name: 'Catppuccin mocha'
# url: 'https://github.com/catppuccin/fish'
# preferred_background: 1e1e2e
fish_color_normal cdd6f4
fish_color_command 89b4fa
fish_color_param f2cdcd
fish_color_keyword f38ba8
fish_color_quote a6e3a1
fish_color_redirection f5c2e7
fish_color_end fab387
fish_color_comment 7f849c --italics --dim
fish_color_error f38ba8
fish_color_gray 6c7086
fish_color_selection --background=313244
fish_color_search_match --background=313244
fish_color_option a6e3a1
fish_color_operator f5c2e7
fish_color_escape eba0ac
fish_color_autosuggestion 6c7086
fish_color_cancel f38ba8
fish_color_cwd f9e2af
fish_color_user 94e2d5
fish_color_host 89b4fa
fish_color_host_remote a6e3a1
fish_color_status f38ba8
fish_pager_color_progress 6c7086
fish_pager_color_prefix f5c2e7
fish_pager_color_completion cdd6f4
fish_pager_color_description 6c7086

View file

@ -0,0 +1,3 @@
dln@arity.se sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
daniel@arity.se sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
dln@shelman.io sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=

3
.config/git/signing-key.sh Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
ssh-add -L | awk '/^sk-ssh/ { print "key::" $1 " " $2 }'

23
.config/gitui/theme.ron Normal file
View file

@ -0,0 +1,23 @@
(
selected_tab: Some(Reset),
command_fg: Some(Rgb(205, 214, 244)),
selection_bg: Some(Rgb(88, 91, 112)),
selection_fg: Some(Rgb(205, 214, 244)),
cmdbar_bg: Some(Rgb(24, 24, 37)),
cmdbar_extra_lines_bg: Some(Rgb(24, 24, 37)),
disabled_fg: Some(Rgb(127, 132, 156)),
diff_line_add: Some(Rgb(166, 227, 161)),
diff_line_delete: Some(Rgb(243, 139, 168)),
diff_file_added: Some(Rgb(249, 226, 175)),
diff_file_removed: Some(Rgb(235, 160, 172)),
diff_file_moved: Some(Rgb(203, 166, 247)),
diff_file_modified: Some(Rgb(250, 179, 135)),
commit_hash: Some(Rgb(180, 190, 254)),
commit_time: Some(Rgb(186, 194, 222)),
commit_author: Some(Rgb(116, 199, 236)),
danger_fg: Some(Rgb(243, 139, 168)),
push_gauge_bg: Some(Rgb(137, 180, 250)),
push_gauge_fg: Some(Rgb(30, 30, 46)),
tag_fg: Some(Rgb(245, 224, 220)),
branch_fg: Some(Rgb(148, 226, 213))
)

52
.config/helix/config.toml Normal file
View file

@ -0,0 +1,52 @@
theme = "sumi-e"
# theme = "github_light"
[editor]
true-color = true
undercurl = true
cursorline = true
color-modes = true
auto-pairs = false
popup-border = "all"
rulers = [80]
gutters = ["diagnostics", "line-numbers", "spacer", "diff", "spacer"]
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.indent-guides]
character = "│" # "╎"
render = true
skip-levels = 1
[editor.statusline]
separator = "│"
mode.normal = " "
mode.insert = " "
mode.select = "󰒅 "
left = ["spinner", "mode", "diagnostics"]
center = ["file-name", "file-encoding"]
right = ["version-control", "separator", "selections", "register", "separator", "position"]
[editor.lsp]
display-inlay-hints = true
display-messages = true
[keys.normal]
backspace = "delete_char_backward"
C-h = "delete_char_backward"
C = ["select_mode", "goto_line_end", "normal_mode", "change_selection_noyank"]
H = ":toggle lsp.display-inlay-hints"
Z = { Z = ":write-quit-all" }
esc = ["keep_primary_selection", "collapse_selection"]
"`" = ["goto_last_accessed_file"]
tab = ["buffer_picker"]
C-r = ":config-reload"
C-f = [":new", ":insert-output lf -selection-path=/dev/stdout", "split_selection_on_newline", "goto_file", "goto_last_modification", "goto_last_modified_file", ":buffer-close!", ":redraw"]
V = ["goto_first_nonwhitespace", "extend_to_line_end"]
x = "extend_line"
[keys.select]
x = "extend_line"

View file

@ -0,0 +1,46 @@
[[language]]
name = "rust"
auto-format = true
roots = [
"Cargo.toml",
"Cargo.lock"
]
language-servers = [
"rust-analyzer",
"gpt",
]
[[language]]
name = "go"
language-servers = [
"gopls",
"gpt",
]
[language.auto-pairs]
'(' = ')'
'{' = '}'
'[' = ']'
'"' = '"'
'`' = '`'
[language-server.rust-analyzer]
command = "rust-analyzer"
[language-server.rust-analyzer.config.inlayHints]
bindingModeHints.enable = false
chainingHints.enable = false
# closingBraceHints.enable = false
closingBraceHints.minLines = 10
closureReturnTypeHints.enable = "with_block"
# discriminantHints.enable = "fieldless"
discriminantHints.enable = "always"
lifetimeElisionHints.enable = "skip_trivial"
parameterHints.enable = true
typeHints.enable = true
typeHints.hideClosureInitialization = false
[language-server.gpt]
command = "helix-gpt"
args = ["--handler", "copilot", "--logFile", "/home/dln/.cache/helix/helix-gpt.log"]

View file

@ -0,0 +1,193 @@
# GENERAL ==============================
warning = { fg = "#ff7700", bg = "#221100", modifierd = [ "italic" ] }
error = { fg = "#ff0038", bg = "#220000", modifiers = [ "italic" ] }
hint = { fg = "#00d992", bg = "#002211", modifierd = [ "italic" ] }
info = { fg = "#ffcc00", bg = "#222200", modifiers = ["italic"] }
diagnostic = { fg = "#c49848"}
"diagnostic.info" = { underline = { color = "#ffcc00", style = "curl" } }
"diagnostic.hint" = { fg = "#00d992", underline = { color = "#00d992", style = "curl" } }
"diagnostic.warning" = { fg = "#ff7700", underline = { color = "#ff7700", style = "curl" } }
"diagnostic.error" = { fg = "#ff0038", underline = { color = "#ff0038", style = "curl" } }
"diagnostic.unnecessary" = { fg = "#ffcc00", modifiers = ["dim", "italic"], underline = { style = "curl" } }
"diagnostic.deprecated" = { modifiers = ["crossed_out"] }
# UI ==============================
# For styling helix itself.
'ui.background' = { bg="background" }
'ui.background.separator' = { fg="#00a171" }
'ui.window' = { bg="#224466" }
'ui.gutter' = { bg="#11171d" }
'ui.text' = { fg = "#cccccc" }
'ui.text.focus' = { bg = "#294467" }
'ui.text.info' = { }
'ui.cursor' = { bg = "#00a171", fg = "#000000" }
'ui.cursor.primary' = { bg ="#23fdb6", fg = "#000000" }
'ui.cursor.insert' = { fg = "#ff0000" }
'ui.cursor.select' = { fg = "#3399ff" }
'ui.cursor.match' = { fg = "#000000", bg = "#ffd54f" }
'ui.cursorline.primary' = { bg = "#141b23" }
'ui.selection' = { bg = "#294467" }
'ui.selection.primary' = { bg = "#294467" }
'ui.linenr' = { fg = "#374351", modifiers = [ "bold", "italic" ] }
'ui.linenr.selected' = { fg = "#617d9d", bg = "#14202e" }
'ui.virtual' = { }
"ui.virtual.indent-guide" = { fg = "#273341" }
"ui.virtual.inlay-hint" = { fg = "#51a0cf", modifiers = ["italic", "bold"] }
'ui.virtual.ruler' = { bg = "#11171d" }
'ui.virtual.whitespace' = { }
'ui.virtual.wrap' = { fg = "#ffd54f" }
"ui.virtual.jump-label" = { fg = "#96ffe6", bg = "#051e33", modifiers = ["bold", "italic"] }
# 'ui.statusline' = { bg = "#151920", fg = "#4d5a6c" }
'ui.statusline' = { bg = "#11171d", fg = "#637184", modifiers = ["italic", "bold"] }
'ui.statusline.inactive' = { }
"ui.statusline.normal" = { }
"ui.statusline.insert" = { fg = "#d7b640" }
"ui.statusline.select" = { fg = "#3dc9ff" }
'ui.help' = { }
'ui.highlight' = { bg="#224466" }
"ui.highlight.frameline" = { }
'ui.menu' = { bg = "#242d38", fg="#bfd5e2" }
'ui.menu.selected' = { bg = "#135d7e" }
'ui.popup' = { bg = "#253d6b", fg="#b2c6e9" }
'ui.popup.info' = { }
# SYNTAX HIGHLIGHTING ==============================
# All the keys here are Treesitter scopes.
'property' = { }
'special' = { fg="#ffecd3" }
'attribute' = { }
'type' = { }
'type.builtin' = { }
'type.enum.variant' = { }
'constructor' = { }
'constant' = { }
'constant.builtin' = { }
'constant.builtin.boolean' = { }
'constant.character' = { }
'constant.character.escape' = { }
'constant.numeric' = { }
'constant.numeric.integer' = { }
'constant.numeric.float' = { }
'string' = { fg="#88ab8a", modifiers=["italic"] }
'string.regexp' = { }
'string.special' = { }
'string.special.path' = { }
'string.special.url' = { }
'string.special.symbol' = { }
'comment' = { fg = "#e57373", modifiers = ["bold", "italic"] }
'comment.line' = { }
'comment.block' = { }
'comment.block.documentation' = { }
'variable' = { fg="#999999", modifiers = [ "italic" ] }
# 'variable.builtin' = { }
'variable.parameter' = { fg = "#eeccaa", modifiers = [ "italic" ] }
# 'variable.other.member' = { }
'label' = { }
'punctuation' = { fg = "#b0bec5" }
'punctuation.delimiter' = { fg = "#b0bec5" }
'punctuation.bracket' = { fg = "#b0bec5" }
'keyword' = { fg = "#d5d5d5" }
# 'keyword.control' = { }
# 'keyword.control.conditional' = { }
# 'keyword.control.repeat' = { }
# 'keyword.control.import' = { }
# 'keyword.control.return' = { }
# 'keyword.control.exception' = { }
# 'keyword.operator' = { }
# 'keyword.directive' = { }
# 'keyword.function' = { }
'operator' = { }
'function' = { fg = "#f7f7f7" }
'function.builtin' = { }
'function.method' = { }
'function.macro' = { }
'function.special' = { }
'tag' = { }
'tag.error' = { }
'namespace' = { fg = "#b0bec5" }
# Markup ==============================
# Colors for markup languages, like Markdown or XML.
'markup.heading.1' = { }
'markup.heading.2' = { }
'markup.heading.3' = { }
'markup.heading.4' = { }
'markup.heading.5' = { }
'markup.heading.6' = { }
'markup.heading.marker' = { }
'markup.list' = { }
'markup.list.numbered' = { }
'markup.list.unnumbered' = { }
'markup.bold' = { }
'markup.italic' = { }
'markup.link' = { }
'markup.link.url' = { }
'markup.link.label' = { }
'markup.link.text' = { }
'markup.quote' = { }
# Markup - Interface ==============================
# "These scopes are used for theming the editor interface."
'markup.normal' = { }
'markup.normal.completion' = { }
'markup.normal.raw' = { }
'markup.heading.completion' = { }
'markup.heading.raw' = { }
'markup.raw' = { }
'markup.raw.block' = { }
'markup.raw.inline' = { }
'markup.raw.inline.completion' = { }
'markup.raw.inline.hover' = { }
# Diff ==============================
# Version control changes.
'diff.plus' = { fg = "#678350" }
'diff.minus' = { fg = "#ff0038" }
'diff.delta' = { fg = "#897a21" }
'diff.delta.gutter' = { fg = "#ffff00" }
# 'diff.delta.moved' = { }
[palette] # Define your custom colors here.
white = '#ffffff'

22
.config/k9s/plugins.yaml Normal file
View file

@ -0,0 +1,22 @@
plugins:
raw-logs-follow:
shortCut: Shift-L
description: kubectl logs
scopes:
- po
command: bash
background: false
args:
- -c
- |
kubectl logs $NAME -n $NAMESPACE --context $CONTEXT | bat --wrap=never --pager="less" --force-colorization
toolbox:
shortCut: Shift-K
description: ktoolbox in current namespace
scopes:
- all
command: ktoolbox
background: false
args:
- -n
- $NAMESPACE

100
.config/k9s/skin.yml Normal file
View file

@ -0,0 +1,100 @@
# K9s Gruvbox Light Skin Contributed by [@indiebrain](https://github.com/indiebrain)
foreground: &foreground default
background: &background default
current_line: &current_line "#ebdbb2"
selection: &selection "#3c3735"
comment: &comment "#bdad93"
cyan: &cyan "#78ad79"
green: &green "#989719"
orange: &orange "#d79920"
magenta: &magenta "#b16185"
blue: &blue "#448488"
red: &red "#cc231c"
k9s:
body:
fgColor: *foreground
bgColor: *background
logoColor: *blue
prompt:
fgColor: *foreground
bgColor: *background
suggestColor: *orange
info:
fgColor: *magenta
sectionColor: *foreground
help:
fgColor: *foreground
bgColor: *background
keyColor: *magenta
numKeyColor: *blue
sectionColor: *green
dialog:
fgColor: *foreground
bgColor: *background
buttonFgColor: *foreground
buttonBgColor: *magenta
buttonFocusFgColor: white
buttonFocusBgColor: *cyan
labelFgColor: *orange
fieldFgColor: *foreground
frame:
border:
fgColor: *selection
focusColor: *current_line
menu:
fgColor: *foreground
keyColor: *magenta
numKeyColor: *magenta
crumbs:
fgColor: *foreground
bgColor: *comment
activeColor: *blue
status:
newColor: *cyan
modifyColor: *blue
addColor: *green
errorColor: *red
highlightColor: *orange
killColor: *comment
completedColor: *comment
title:
fgColor: *foreground
bgColor: *background
highlightColor: *orange
counterColor: *blue
filterColor: *magenta
views:
charts:
bgColor: background
defaultDialColors:
- *blue
- *red
defaultChartColors:
- *blue
- *red
table:
fgColor: *foreground
bgColor: *background
cursorFgColor: *foreground
cursorBgColor: *current_line
header:
fgColor: *foreground
bgColor: *background
sorterColor: *selection
xray:
fgColor: *foreground
bgColor: *background
cursorColor: *current_line
graphicColor: *blue
showIcons: false
yaml:
keyColor: *magenta
colonColor: *blue
valueColor: *foreground
logs:
fgColor: *foreground
bgColor: *background
indicator:
fgColor: *foreground
bgColor: *background

View file

@ -0,0 +1,3 @@
debug_full = false
snapshotter = "native"
insecure_registry = false

2
.config/nvim/init.lua Normal file
View file

@ -0,0 +1,2 @@
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")

View file

@ -0,0 +1,72 @@
{
"LazyVim": { "branch": "main", "commit": "505ce3851c600a8c1fc0c57f1c4ea790891c6023" },
"SchemaStore.nvim": { "branch": "main", "commit": "931f9f3b7b60ec976159cb01b4a40da3829ac2fd" },
"alabaster.nvim": { "branch": "main", "commit": "5bb485d630d50796d4c8c7edc0f0fb9001fccde3" },
"catppuccin": { "branch": "main", "commit": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"codeium.nvim": { "branch": "main", "commit": "d3b88eb3aa1de6da33d325c196b8a41da2bcc825" },
"colorbuddy.nvim": { "branch": "master", "commit": "8b968581e5c19d22a861d5f3fe5dbd83394fa681" },
"conform.nvim": { "branch": "master", "commit": "f3b930db4964d60e255c8f9e37b7f2218dfc08cb" },
"crates.nvim": { "branch": "main", "commit": "d556c00d60c9421c913ee54ff690df2a34f6264e" },
"dashboard-nvim": { "branch": "master", "commit": "5182c09ac8085dc73b78ad0ea9f5479c9a866fc4" },
"direnv.vim": { "branch": "master", "commit": "ab2a7e08dd630060cd81d7946739ac7442a4f269" },
"dressing.nvim": { "branch": "master", "commit": "3c38ac861e1b8d4077ff46a779cde17330b29f3a" },
"edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
"friendly-snippets": { "branch": "main", "commit": "dd2fd1281d4b22e7b4a5bfafa3e142d958e251f2" },
"fzf": { "branch": "master", "commit": "99bd6de5415dccec4b1b21121224116bbfbc462f" },
"fzfx.nvim": { "branch": "main", "commit": "be147216edf164a1739430c7fda210f9876cc430" },
"gitsigns.nvim": { "branch": "main", "commit": "cdfcd9d39d23c46ae9a040de2c6a8b8bf868746e" },
"headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
"incline.nvim": { "branch": "main", "commit": "16fc9c073e3ea4175b66ad94375df6d73fc114c0" },
"indent-blankline.nvim": { "branch": "master", "commit": "d98f537c3492e87b6dc6c2e3f66ac517528f406f" },
"lazy.nvim": { "branch": "main", "commit": "24fa2a97085ca8a7220b5b078916f81e316036fd" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "a4caa0d083aab56f6cd5acf2d42331b74614a585" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
"mason.nvim": { "branch": "main", "commit": "49ff59aded1047a773670651cfa40e76e63c6377" },
"mini.ai": { "branch": "main", "commit": "7859b6344f5cee567a94f173859d25e20ba1a77e" },
"mini.colors": { "branch": "main", "commit": "11b3b7056343d324abb69910e3cdec53bbf2a7c9" },
"mini.indentscope": { "branch": "main", "commit": "f0d7faa064c892b96997810afcddfadc3f2a15b3" },
"modes.nvim": { "branch": "main", "commit": "4035a46aaabe43faf1b54740575af9dd5bb03809" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "29f7c215332ba95e470811c380ddbce2cebe2af4" },
"neocodeium": { "branch": "main", "commit": "4a46f6438bcdb21c562f83036bce75c719834072" },
"neoconf.nvim": { "branch": "main", "commit": "4e204e0d423e70293b81ba1655ed17e1f3c97986" },
"neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
"noice.nvim": { "branch": "main", "commit": "f119045f38792ad5311e5f9be7a879e4c1a95fe0" },
"none-ls.nvim": { "branch": "main", "commit": "60f5f80686f5a272ed3281a7d4962cb54dc5348e" },
"nui.nvim": { "branch": "main", "commit": "b1b3dcd6ed8f355c78bad3d395ff645be5f8b6ae" },
"nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
"nvim-dap": { "branch": "master", "commit": "922ebc75c2fa9305e36402fbd8c984c8638770a0" },
"nvim-dap-go": { "branch": "main", "commit": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1" },
"nvim-dap-ui": { "branch": "master", "commit": "334cf3038c4756e6ab999cbac67c847fb654c190" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
"nvim-lint": { "branch": "master", "commit": "e19842a05aae484957ad20710444757bc0a61d63" },
"nvim-lspconfig": { "branch": "master", "commit": "d70633830acf605ec03d9728698d9e7232442eb4" },
"nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
"nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
"nvim-noirbuddy": { "branch": "master", "commit": "f3e35f42cf3f08b7351a69bf3a92b7e80a564f30" },
"nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
"nvim-snippets": { "branch": "main", "commit": "67f44a552f03b5de23af1900d01af3256a3da2bc" },
"nvim-spectre": { "branch": "master", "commit": "366f46fdd4a1593cc237aea13d5ef113739a472c" },
"nvim-treesitter": { "branch": "master", "commit": "aa02427dfeaead86fae038024ae7b29299f08b8c" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "3557e41418b4a6c5b85d5d64abe94c9c50fa9b14" },
"nvim-ts-autotag": { "branch": "main", "commit": "8ae54b90e36ef1fc5267214b30c2cbff71525fe4" },
"nvim-web-devicons": { "branch": "master", "commit": "b77921fdc44833c994fdb389d658ccbce5490c16" },
"persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
"plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
"rustaceanvim": { "branch": "master", "commit": "e306c742bd7f7183e371cd91268b72d9db1bbae0" },
"smart-open.nvim": { "branch": "0.2.x", "commit": "87626ee8748b9bba22093adec7bb58c63e7214f0" },
"sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
"telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
"telescope.nvim": { "branch": "master", "commit": "4c96370cf93e2ba287548da12d673442d0ffecc3" },
"todo-comments.nvim": { "branch": "main", "commit": "e1549807066947818113a7d7ed48f637e49620d3" },
"tokyonight.nvim": { "branch": "main", "commit": "0fae425aaab04a5f97666bd431b96f2f19c36935" },
"trouble.nvim": { "branch": "dev", "commit": "e2185bf6e63ef9bd75f1819f43846e2b0f10953b" },
"ts-comments.nvim": { "branch": "main", "commit": "f7ded340b4c6b317593b867838bf7ace354a67d4" },
"which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
"yanky.nvim": { "branch": "main", "commit": "32882f6d3e7bbc8687a71540a695853036511b2c" }
}

View file

@ -0,0 +1,16 @@
-- 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
local function augroup(name)
return vim.api.nvim_create_augroup("lazyvim_" .. name, { clear = true })
end
-- Set comment string for CUE files
vim.api.nvim_create_autocmd("FileType", {
group = augroup("cue"),
pattern = { "cue" },
callback = function(ev)
vim.bo[ev.buf].commentstring = "// %s"
end,
})

View file

@ -0,0 +1,11 @@
-- 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
-- C-/ should be comment instead of lazyterm
vim.api.nvim_del_keymap("n", "<c-/>")
vim.api.nvim_set_keymap("n", "<c-/>", "gcc", {})
vim.api.nvim_set_keymap("v", "<c-/>", "gc", {})
vim.api.nvim_set_keymap("n", "<Leader><c-/>", "gcgc", {})
vim.api.nvim_set_keymap("n", "<Tab>", "<Space>,", {})
vim.api.nvim_set_keymap("n", "zz", "zt", {})

View file

@ -0,0 +1,55 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
-- bootstrap lazy.nvim
-- stylua: ignore
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
end
vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
require("lazy").setup({
spec = {
-- add LazyVim and import its plugins
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
-- import any extras modules here
-- { import = "lazyvim.plugins.extras.ui.mini-animate" },
-- { import = "lazyvim.plugins.extras.coding.copilot" },
{ import = "lazyvim.plugins.extras.coding.codeium" },
{ import = "lazyvim.plugins.extras.coding.yanky" },
{ import = "lazyvim.plugins.extras.formatting.prettier" },
{ import = "lazyvim.plugins.extras.lang.go" },
{ import = "lazyvim.plugins.extras.lang.json" },
{ import = "lazyvim.plugins.extras.lang.markdown" },
{ import = "lazyvim.plugins.extras.lang.rust" },
{ import = "lazyvim.plugins.extras.lang.typescript" },
{ import = "lazyvim.plugins.extras.lang.yaml" },
{ import = "lazyvim.plugins.extras.lsp.none-ls" },
-- 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 = { "default" } },
checker = { enabled = false }, -- automatically check for plugin updates
performance = {
rtp = {
-- disable some rtp plugins
disabled_plugins = {
"gzip",
-- "matchit",
-- "matchparen",
"netrwPlugin",
"tarPlugin",
"tohtml",
"tutor",
"zipPlugin",
},
},
},
})

View file

@ -0,0 +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.opt.number = true
vim.opt.relativenumber = false
vim.opt.clipboard = "unnamed" --"unnamedplus"
vim.g.do_filetype_lua = 1
vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
vim.o.autochdir = true
vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
vim.o.scrolloff = 7
vim.o.splitkeep = "screen"
vim.o.updatetime = 2500
vim.o.timeout = true
vim.o.timeoutlen = 0
-- additional filetypes
vim.filetype.add({
extension = {
templ = "templ",
},
})
-- AutoCommand OSC7 workaround for tmux
-- see https://github.com/neovim/neovim/issues/21771
vim.api.nvim_create_autocmd("dirchanged", {
pattern = "*",
command = 'call chansend(v:stderr, printf("\\033]7;%s\\033", v:event.cwd))',
})
-- (No) Statusline
vim.opt.laststatus = 0
vim.api.nvim_set_hl(0, "Statusline", { link = "Normal" })
vim.api.nvim_set_hl(0, "StatuslineNC", { link = "Normal" })
local line = string.rep("", vim.api.nvim_win_get_width(0))
vim.opt.statusline = "%#WinSeparator#" .. line .. "%*"

View file

@ -0,0 +1,56 @@
return {
{
"echasnovski/mini.pairs",
enabled = false,
},
{
"nvim-cmp",
dependencies = { "hrsh7th/cmp-emoji" },
opts = function(_, opts)
local cmp = require("cmp")
table.insert(opts.sources, { name = "emoji" })
opts.view = { docs = { auto_open = false }, entries = { follow_cursor = true } }
-- opts.completion = {
-- autocomplete = false,
-- }
local winhighlight =
"Normal:NoiceCmdlinePopupTitle,FloatBorder:NoiceCmdlinePopupBorder,CursorLine:PMenuSel,Search:Search"
opts.window = {
completion = cmp.config.window.bordered({ winhighlight = winhighlight, border = "rounded" }),
documentation = cmp.config.window.bordered({ winhighlight = winhighlight, border = "rounded" }),
preview = cmp.config.window.bordered({ winhighlight = winhighlight, border = "rounded" }),
}
-- lua sorting = { comparators = { cmp.config.compare.sort_text, -- this needs to be 1st cmp.config.compare.offset, cmp.config.compare.exact, cmp.config.compare.score, cmp.config.compare.kind, cmp.config.compare.length, cmp.config.compare.order, } }
opts.sorting = {
priority_weight = 2,
comparators = {
cmp.config.compare.exact,
cmp.config.compare.recently_used,
cmp.config.compare.locality,
cmp.config.compare.offset,
-- cmp.config.compare.scopes,
cmp.config.compare.score,
cmp.config.compare.kind,
-- cmp.config.compare.sort_text,
cmp.config.compare.length,
cmp.config.compare.order,
},
}
return opts
end,
},
{
"Exafunction/codeium.nvim",
opts = {
enable_chat = false,
},
},
}

View file

@ -0,0 +1,253 @@
return {
{ "echasnovski/mini.colors", version = false },
{
-- "p00f/alabaster.nvim",
-- url = "https://git.sr.ht/~p00f/alabaster.nvim",
"lsjostro/alabaster.nvim",
lazy = false,
priority = 1000,
},
--[=====[
{
"LazyVim/LazyVim",
opts = {
colorscheme = "alabaster",
},
},
--]=====]
{
"jesseleite/nvim-noirbuddy",
lazy = false,
dependencies = {
{ "tjdevries/colorbuddy.nvim" },
},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = function()
require("noirbuddy").setup({
preset = "slate",
styles = {
italic = true,
bold = true,
underline = true,
undercurl = true,
},
colors = {
background = "#11171d",
primary = "#FFECD3",
secondary = "#B0BEC5",
--
diagnostic_info = "#00d992",
diagnostic_hint = "#00d992",
},
})
--
local colorbuddy = require("colorbuddy")
local Color = colorbuddy.Color
local colors = colorbuddy.colors
local Group = colorbuddy.Group
local groups = colorbuddy.groups
local styles = colorbuddy.styles
Color.new("ColorColumn", "#171e26")
Group.new("ColorColumn", nil, colors.ColorColumn)
Color.new("normal", "#e3e0cd")
Group.new("Normal", colors.normal, nil)
Color.new("Visual", "#440066")
Group.new("ModesVisualVisual", nil, colors.Visual)
Group.new("Visual", nil, colors.Visual)
Group.new("VisualNOS", nil, colors.Visual)
Group.new("MatchParen", nil, colors.Visual)
Color.new("NeoCodeiumLabelBg", "#eda92d")
Color.new("NeoCodeiumLabelFg", "#000000")
Group.new("NeoCodeiumLabel", colors.NeoCodeiumLabelFg, colors.NeoCodeiumLabelBg)
Color.new("NeoCodeiumSuggestion", "#996611")
Group.new("NeoCodeiumSuggestion", colors.NeoCodeiumSuggestion, nil, styles.italic)
Color.new("NoiceCmdLineBg", "#112233")
Color.new("NoiceCmdLineFg", "#99ccff")
Group.new("NoiceCmdLine", colors.NoiceCmdLineFg, colors.NoiceCmdLineBg)
Color.new("NoiceFormatProgressTodo", "#223344")
Group.new("NoiceFormatProgressTodo", nil, colors.NoiceFormatProgressTodo)
Color.new("NoiceFormatProgressDone", "#446699")
Group.new("NoiceFormatProgressDone", nil, colors.NoiceFormatProgressDone)
Color.new("WinSeparator", "#223344")
Group.new("WinSeparator", colors.WinSeparator, nil)
Color.new("string", "#D7CCC8")
Color.new("symbol", "#ECEFF1")
Color.new("comment", "#E57373", nil, styles.italic)
Color.new("hlargs", "#FFF8E1")
Color.new("illuminate_bg", "#112210")
Color.new("illuminate_fg", "#00d992")
Color.new("search_bg", "#223311")
Color.new("search_fg", "#CCFF33")
Color.new("MiniIndentscopeSymbol", "#00d992")
Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
Color.new("CursorFg", "#000000", styles.nocombine)
Color.new("CursorBg", "#23fdb6", styles.nocombine)
Group.new("Cursor", colors.CursorFg, colors.CursorBg)
Color.new("CursorLine", "#141b23")
Group.new("CursorLine", nil, colors.CursorLine)
-- Color.new("TroubleBg", "#171e26")
Color.new("TroubleFg", "#e1d4c1")
Color.new("TroubleBg", "#10161d")
-- Color.new("TroubleBg", "#1d140f")
Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
Color.new("NavicTextFg", "#5fbf9f")
Color.new("NavicTextBg", "#333333")
Color.new("NavicIcon", "#5fbf9f")
Group.new("NavicText", colors.NavicTextFg, colors.NavicTextBg)
Group.new("NavicIcon", colors.NavicIcon, colors.NavicTextBg)
Group.link("NavicIconsFile", groups.NavicIcon)
Group.link("NavicIconsModule", groups.NavicIcon)
Group.link("NavicIconsNamespace", groups.NavicIcon)
Group.link("NavicIconsPackage", groups.NavicIcon)
Group.link("NavicIconsClass", groups.NavicIcon)
Group.link("NavicIconsMethod", groups.NavicIcon)
Group.link("NavicIconsProperty", groups.NavicIcon)
Group.link("NavicIconsField", groups.NavicIcon)
Group.link("NavicIconsConstructor", groups.NavicIcon)
Group.link("NavicIconsEnum", groups.NavicIcon)
Group.link("NavicIconsInterface", groups.NavicIcon)
Group.link("NavicIconsFunction", groups.NavicIcon)
Group.link("NavicIconsVariable", groups.NavicIcon)
Group.link("NavicIconsConstant", groups.NavicIcon)
Group.link("NavicIconsString", groups.NavicIcon)
Group.link("NavicIconsNumber", groups.NavicIcon)
Group.link("NavicIconsBoolean", groups.NavicIcon)
Group.link("NavicIconsArray", groups.NavicIcon)
Group.link("NavicIconsObject", groups.NavicIcon)
Group.link("NavicIconsKey", groups.NavicIcon)
Group.link("NavicIconsNull", groups.NavicIcon)
Group.link("NavicIconsEnumMember", groups.NavicIcon)
Group.link("NavicIconsStruct", groups.NavicIcon)
Group.link("NavicIconsEvent", groups.NavicIcon)
Group.link("NavicIconsOperator", groups.NavicIcon)
Group.link("NavicIconsTypeParameter", groups.NavicIcon)
Color.new("NormalFloatFg", "#b8d1ef", styles.nocombine)
-- Color.new("NormalFloatBg", "#335a88", styles.nocombine)
Color.new("NormalFloatBg", "#242d38", styles.nocombine)
Color.new("NormalFloatBorder", "#00d992", styles.nocombine)
Group.new("NormalFloat", colors.NormalFloatFg, colors.NormalFloatBg)
Group.new("FloatBorder", colors.NormalFloatBorder, colors.NormalFloatBg)
-- Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
Color.new("PmenuSelFg", "#52ffb5", styles.nocombine)
Color.new("PmenuSelBg", "#003322", styles.nocombine)
Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg, styles.bold)
-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
-- Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
Color.new("TreesitterContext", "#242e38", styles.nocombine)
Group.new("TreesitterContext", nil, colors.TreesitterContext)
-- Color.new("NonText", "#955252", styles.nocombine)
Color.new("NonText", "#955252", styles.nocombine)
Color.new("comment2", "#51a0cf")
Group.new("Comment", colors.NonText, nil, styles.italic + styles.bold)
Group.new("LspInlayHint", colors.comment2, nil, styles.italic)
Group.new("NonText", colors.NonText, nil, styles.italic)
Group.new("NonText", colors.NonText, nil, styles.italic)
Color.new("spelling", "#ffce60")
Group.new("SpellBad", colors.spelling, nil, styles.undercurl)
-- Color.new("LuaLineFg", "#aebed0")
Color.new("InclineFg", "#aebed0")
Color.new("InclineBg", "#242e38")
Group.new("InclineNormal", colors.InclineFg, colors.InclineBg)
Group.new("InclineNormalNC", colors.InclineFg, colors.InclineBg)
Color.new("LspInfoTitle", "#955252")
Group.new("LspInfoTitle", colors.LspInfoTitle, nil, styles.italic)
-- Group.new("DiagnosticHint", colors.LspInfoTitle, nil, styles.italic)
--
-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
-- Color.new("TroubleBg", "#260200", styles.nocombine)
-- Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
-- Group.link("TroubleText", groups.TroubleNormal)
-- Group.link("TroubleSource", groups.TroubleNormal)
--
Color.new("Error", "#ffce60", styles.nocombine)
Group.new("ErrorMsg", colors.Error)
Color.new("FlashLabelFg", "#220011")
Color.new("FlashLabelBg", "#EA1199")
Group.new("FlashLabel", colors.FlashLabelFg, colors.FlashLabelBg)
Color.new("TelescopeBorder", "#23fdb6")
Group.new("TelescopeTitle", colors.TelescopeBorder)
Group.new("telescopeborder", colors.TelescopeBorder)
Color.new("TelescopeBorder", "#23fdb6")
Color.new("TelescopeNormal", "#b6c5bd")
Group.new("telescoperesultsnormal", colors.TelescopeNormal)
Color.new("TelescopeSelectionBg", "#003f29")
Color.new("TelescopeSelectionFg", "#f6fb2d")
Group.new(
"TelescopeSelection",
colors.TelescopeSelectionFg,
colors.TelescopeSelectionBg,
styles.nocombine + styles.bold
)
Group.new("@comment", colors.comment, nil, styles.italic + styles.bold)
Group.new("@string", colors.string, nil, styles.italic)
Group.new("@keyword", colors.noir_2)
Group.new("@keyword.function", colors.noir_2)
Group.new("@keyword.return", colors.noir_1)
Group.new("@operator", colors.noir_1)
Group.new("@keyword.operator", colors.noir_1)
-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
Group.new("@type.builtin", colors.noir_2)
Group.new("@variable", colors.symbol, nil)
Group.new("Hlargs", colors.hlargs, nil)
Group.new("@function", colors.noir_1, nil, styles.bold)
Group.new("@method", colors.noir_1, nil, styles.bold)
Group.new("@punctuation", colors.noir_4)
Group.new("@punctuation.bracket", colors.noir_4)
Group.new("@punctuation.delimiter", colors.noir_4)
Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
Group.new("IncSearch", colors.search_fg, colors.search_bg)
end,
},
},
}

View file

@ -0,0 +1,71 @@
return {
{
"folke/flash.nvim",
enabled = false,
},
{
"danielfalk/smart-open.nvim",
branch = "0.2.x",
dependencies = {
"kkharji/sqlite.lua",
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
{ "nvim-telescope/telescope-fzy-native.nvim" },
},
config = function()
local util = require("lazyvim.util")
util.on_load("telescope.nvim", function()
local telescope = require("telescope")
telescope.load_extension("smart_open")
end)
end,
},
{
"telescope.nvim",
keys = {
{
"<leader><leader>",
function()
require("telescope").extensions.smart_open.smart_open({
filename_first = false,
})
end,
desc = "Telescope smart open",
},
},
opts = function(_, opts)
local actions = require("telescope.actions")
opts.defaults = {
layout_strategy = "horizontal",
layout_config = {
anchor = "top",
horizontal = {
prompt_position = "top",
mirror = false,
preview_width = 0.4,
-- preview_height = 0.5,
},
width = 0.9,
height = 0.9,
preview_cutoff = 10,
},
mappings = {
i = {
["<esc>"] = actions.close, -- <Esc> close popup
["<C-u>"] = false, -- <C-u> clear prompt
["<C-w>"] = false, -- <C-u> clear prompt
},
},
path_display = { "filename_first" },
previewer = false,
preview = {
hide_on_startup = true,
},
sorting_strategy = "ascending",
winblend = 0,
wrap_results = true,
}
end,
},
}

View file

@ -0,0 +1,110 @@
return {
{
"direnv/direnv.vim",
lazy = false,
priority = 900,
},
{
"nvimtools/none-ls.nvim",
opts = function(_, opts)
local nls = require("null-ls")
opts.root_dir = opts.root_dir
or require("null-ls.utils").root_pattern(".null-ls-root", ".neoconf.json", "Makefile", ".git")
opts.sources = vim.list_extend(opts.sources or {}, {
nls.builtins.formatting.mdformat,
nls.builtins.formatting.stylua,
nls.builtins.formatting.shfmt,
nls.builtins.formatting.buf,
nls.builtins.formatting.buildifier,
nls.builtins.diagnostics.buildifier,
nls.builtins.diagnostics.buf.with({
args = { "lint", "--disable-symlinks", "--path", "$FILENAME" },
cwd = function()
local file_dir = vim.fn.expand("%:p:h") .. ";"
local buf_yaml = vim.fn.findfile("buf.yaml", file_dir)
if buf_yaml then
return vim.fn.fnamemodify(buf_yaml, ":h")
end
end,
}),
})
end,
},
{
"nvim-neo-tree/neo-tree.nvim",
opts = {
window = {
width = 30,
position = "right",
},
},
},
{
"simrat39/rust-tools.nvim",
enabled = false,
},
{
"mrcjkb/rustaceanvim",
version = "^4", -- Recommended
ft = { "rust" },
opts = {
server = {
on_attach = function(_, bufnr)
vim.keymap.set("n", "<leader>cR", function()
vim.cmd.RustLsp("codeAction")
end, { desc = "Code Action", buffer = bufnr })
vim.keymap.set("n", "<leader>dr", function()
vim.cmd.RustLsp("debuggables")
end, { desc = "Rust debuggables", buffer = bufnr })
vim.keymap.set("n", "<leader>cD", function()
vim.cmd.RustLsp("externalDocs")
end, { desc = "Rust external documentation", buffer = bufnr })
end,
},
settings = {
-- rust-analyzer language server configuration
["rust-analyzer"] = {
cargo = {
allFeatures = true,
loadOutDirsFromCheck = true,
runBuildScripts = true,
targetDir = true,
-- extraEnv = {
-- RUSTC_LINKER = "clang",
-- RUSTFLAGS = "-Clink-arg=-fuse-ld=mold",
-- },
},
-- Add clippy lints for Rust.
checkOnSave = {
allFeatures = true,
command = "clippy",
extraArgs = { "--no-deps" },
},
procMacro = {
enable = true,
ignored = {
["async-trait"] = { "async_trait" },
["napi-derive"] = { "napi" },
["async-recursion"] = { "async_recursion" },
},
},
},
},
},
},
{
"monkoose/neocodeium",
event = "VeryLazy",
config = function()
local neocodeium = require("neocodeium")
neocodeium.setup()
vim.keymap.set("i", "<C-j>", neocodeium.accept)
vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete)
end,
},
}

View file

@ -0,0 +1,14 @@
return {
{
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
["cue"] = { { "cue_fmt" } },
["html"] = { { "prettierd", "prettier" } },
["sass"] = { { "prettierd", "prettier" } },
["proto"] = { { "buf" } },
["terraform"] = { { "terraform_fmt" } },
},
},
},
}

View file

@ -0,0 +1,75 @@
return {
"b0o/incline.nvim",
config = function()
local devicons = require("nvim-web-devicons")
require("incline").setup({
window = {
margin = {
horizontal = 0,
vertical = 0,
},
padding = 0,
placement = {
horizontal = "right",
vertical = "bottom",
},
},
render = function(props)
local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ":t")
if filename == "" then
filename = "[No Name]"
end
local ft_icon, ft_color = devicons.get_icon_color(filename)
local function get_git_diff()
local icons = { removed = "", changed = "", added = "" }
local signs = vim.b[props.buf].gitsigns_status_dict
local labels = {}
if signs == nil then
return labels
end
for name, icon in pairs(icons) do
if tonumber(signs[name]) and signs[name] > 0 then
table.insert(labels, { icon .. signs[name] .. " ", group = "Diff" .. name })
end
end
if #labels > 0 then
table.insert(labels, { " " })
end
return labels
end
local function get_diagnostic_label()
local icons = { error = "", warn = "󰀪 ", info = "", hint = "" }
local label = {}
for severity, icon in pairs(icons) do
local n = #vim.diagnostic.get(
props.buf,
{ severity = vim.diagnostic.severity[string.upper(severity)] }
)
if n > 0 then
table.insert(label, { icon .. n .. " ", group = "DiagnosticSign" .. severity })
end
end
if #label > 0 then
table.insert(label, { " " })
end
return label
end
local bg_color = "#242e38"
return {
{ "", guibg = "#0d1117", guifg = bg_color },
{ " ", guifg = "#0d1117", guibg = bg_color },
{ get_diagnostic_label(), guibg = bg_color },
{ get_git_diff() },
{ filename .. " ", gui = "italic" },
}
end,
})
end,
-- Optional: Lazy load Incline
event = "VeryLazy",
}

View file

@ -0,0 +1,39 @@
return {
{
"neovim/nvim-lspconfig",
opts = {
inlay_hints = { enabled = false },
-- codelens = {
-- enabled = true,
-- },
servers = {
rust_analyzer = {
mason = false,
-- targetDir = true,
-- keys = {
-- { "K", "<cmd>RustHoverActions<cr>", desc = "Hover Actions (Rust)" },
-- { "<leader>cR", "<cmd>RustCodeAction<cr>", desc = "Code Action (Rust)" },
-- { "<leader>dr", "<cmd>RustDebuggables<cr>", desc = "Run Debuggables (Rust)" },
-- },
},
starpls = {},
yamlls = {
settings = {
yaml = {
schemas = {
-- kubernetes = "*.yaml",
["http://json.schemastore.org/github-workflow"] = ".github/workflows/*",
["http://json.schemastore.org/github-action"] = ".github/action.{yml,yaml}",
["http://json.schemastore.org/ansible-stable-2.9"] = "roles/tasks/*.{yml,yaml}",
["http://json.schemastore.org/chart"] = "Chart.{yml,yaml}",
["https://json.schemastore.org/dependabot-v2"] = ".github/dependabot.{yml,yaml}",
["https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.1/schema.json"] = "*api*.{yml,yaml}",
["https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.29.1/all.json"] = "/*.yaml",
},
},
},
},
},
},
},
}

View file

@ -0,0 +1,173 @@
local hooks = require("ibl.hooks")
-- create the highlight groups in the highlight setup hook, so they are reset
-- every time the colorscheme changes
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
local colorbuddy = require("colorbuddy")
local Color = colorbuddy.Color
local colors = colorbuddy.colors
local Group = colorbuddy.Group
local groups = colorbuddy.groups
local styles = colorbuddy.styles
Color.new("IndentBlanklineIndent", "#1e2835", styles.nocombine)
Group.new("IndentBlanklineIndent1", colors.IndentBlanklineIndent:light(0.1))
Group.new("IndentBlanklineIndent2", colors.IndentBlanklineIndent:light(0.15))
Group.new("IndentBlanklineIndent3", colors.IndentBlanklineIndent:light(0.2))
Group.new("IndentBlanklineIndent4", colors.IndentBlanklineIndent:light(0.25))
Group.new("IndentBlanklineIndent5", colors.IndentBlanklineIndent:light(0.3))
Group.new("IndentBlanklineIndent6", colors.IndentBlanklineIndent:light(0.35))
Color.new("IndentBlanklineContextChar", "#f0a972", styles.nocombine)
Group.new("IndentBlanklineContextChar", colors.IndentBlanklineContextChar)
end)
local logo = [[
]]
return {
{
"nvimdev/dashboard-nvim",
opts = {
theme = "hyper",
config = {
header = vim.split(string.rep("\n", 8) .. logo, "\n"),
week_header = { enable = false },
packages = { enable = false },
project = { enable = false },
footer = {},
shortcut = {},
},
},
},
{
"echasnovski/mini.indentscope",
opts = {
draw = {
delay = 50, -- ms
},
},
},
{
"akinsho/bufferline.nvim",
enabled = false,
},
{
"lukas-reineke/indent-blankline.nvim",
dependencies = {
{ "tjdevries/colorbuddy.nvim" },
},
main = "ibl",
opts = {
indent = {
char = "",
tab_char = "",
highlight = {
"IndentBlanklineIndent1",
"IndentBlanklineIndent2",
"IndentBlanklineIndent3",
"IndentBlanklineIndent4",
"IndentBlanklineIndent5",
"IndentBlanklineIndent6",
},
},
scope = {
enabled = false,
show_start = false,
char = "",
highlight = {
"IndentBlanklineIndent1",
"IndentBlanklineIndent2",
"IndentBlanklineIndent3",
"IndentBlanklineIndent4",
"IndentBlanklineIndent5",
"IndentBlanklineIndent6",
},
},
},
},
{
"mvllow/modes.nvim",
opts = {
colors = {
copy = "#f5c359",
delete = "#c75c6a",
insert = "#ffcc00",
visual = "#c343fc",
},
set_cursor = true,
set_cursorline = true,
set_number = true,
},
},
{
"folke/noice.nvim",
event = "VeryLazy",
keys = {
{ "<leader>sna", "<cmd>NoiceTelescope<cr>", desc = "Show all messages in Telescope" },
},
opts = function()
local enable_conceal = true -- Hide command text if true
return {
presets = { bottom_search = true }, -- The kind of popup used for /
cmdline = {
view = "cmdline", -- The kind of popup used for :
format = {
cmdline = { conceal = enable_conceal },
search_down = { conceal = enable_conceal },
search_up = { conceal = enable_conceal },
filter = { conceal = enable_conceal },
lua = { conceal = enable_conceal },
help = { conceal = enable_conceal },
input = { conceal = enable_conceal },
},
},
messages = { enabled = true },
lsp = {
hover = { enabled = false },
signature = { enabled = false },
progress = { enabled = true, view = "cmdline" },
message = { enabled = false },
smart_move = { enabled = false },
},
}
end,
},
{
"rcarriga/nvim-notify",
opts = {
stages = "fade_in_slide_out",
timeout = 1000,
background_colour = "#1e2835",
render = "wrapped-compact",
top_down = false,
},
},
{
"nvim-lualine/lualine.nvim",
enabled = false,
},
{
"linrongbin16/fzfx.nvim",
dependencies = { "nvim-tree/nvim-web-devicons", "junegunn/fzf" },
-- specify version to avoid break changes
version = "v5.*",
config = function()
require("fzfx").setup()
end,
},
}

8
.config/paru/paru.conf Normal file
View file

@ -0,0 +1,8 @@
Include = /etc/paru.conf
[options]
RemoveMake = ask
SkipReview
[bin]
Sudo = doas

10
.config/rg/rg.conf Normal file
View file

@ -0,0 +1,10 @@
--glob=!/.git/
--glob=!/.terraform/
--pretty
--colors=column:fg:100,181,246
--colors=line:fg:100,181,246
--colors=path:fg:26,35,126
--colors=path:style:bold
--colors=match:style:nobold
--colors=match:bg:255,235,59
--colors=match:fg:0,0,0

View file

@ -0,0 +1,22 @@
[ui]
username =Daniel Lundin <daniel@arity.se>
[alias]
sw = switch
switch = !sl sl -M -T ':\033[31m{node|short} \033[1;33m{bookmarks}{if(bookmarks, " ")}{remotenames} {if(github_pull_request_number, "\033[1;37;41m PR #{github_pull_request_number} ")}\033[0;3;32m {date|age} \033[35;1;3mby {author|user} - \033[0;34;3m{desc|firstline}\033[0m' | sed -E -e '/31m[0-9abcdef]{12}/!d' -e 's/.+ ://' | fzf-tmux -p 90%,50% -y 0 --ansi --color=light | sed "s/ .*//" | xargs -r -n1 sl go && sl log -r . -T status
l = ll
ll = log -G -T '\033[31m{node|short} \033[3;32m{date|age} \033[35;1;3mby {author|person}\n \033[0;34;3m{desc|firstline}\033[0m\n\n'
[pager]
pager = delta --hunk-header-style "line-number file" --line-numbers --max-line-distance 0.9 --inspect-raw-lines=false
[color]
sl.public = color70 bold
sl.draft = color208 bold
sl.current = color99 bold
sl.diff = red bold
[committemplate]
emptymsg = ""

78
.config/starship.toml Normal file
View file

@ -0,0 +1,78 @@
"$schema" = 'https://starship.rs/config-schema.json'
add_newline = true
format = """\
${custom.pwd}\
$fill\
$line_break\
$directory\
($character)\
"""
right_format = """\
$cmd_duration\
$git_branch$git_commit$git_status$git_state\
$hostname\
"""
[hostname]
ssh_only = false
format = " [](fg:#222222)[ $hostname ](italic dimmed bg:#222222 fg:#999999)"
disabled = false
[time]
disabled = false
format = ' [$time]($style)'
style = "italic dimmed fg:#666666"
time_format = '%R'
[custom.pwd]
command = "pwd"
when = true
format = "[($output)]($style) "
style = "italic dimmed fg:#777777"
[directory]
fish_style_pwd_dir_length = 1
truncation_length = 1
truncate_to_repo = false
truncation_symbol = "…"
style = "italic fg:#88aabb"
[line_break]
disabled = false
[fill]
symbol = '⎯'
style = 'fg:#333333'
[character]
success_symbol = "[%](bold fg:#66cc99)"
error_symbol = "[%](bold red)"
[cmd_duration]
min_time = 500
format = '[󱦟 $duration ](yellow)'
[git_branch]
format = "[$symbol$branch]($style)"
style = "italic bold fg:#00ac73"
symbol = " "
truncation_length = 16
truncation_symbol = ""
[git_commit]
format = "[ $hash$tag]($style) "
style = "fg:#00d992"
[git_state]
style = ""
[git_status]
format = '([$all_status$ahead_behind]($style)) '
style = "fg:#00ac73"
modified = "[ 󰦒](fg:#d1c000)"
deleted = "[ ✘](fg:#b93400)"
untracked = "[ ?](fg:#9c49aa)"
staged = "[ 󰐖](fg:#71a4aa)"

View file

@ -0,0 +1,11 @@
[Unit]
Description=Open URL in your local web browser from the SSH-connected remote environment.
After=graphical-session.target
[Service]
Restart=always
Environment=OPENER_CONF=%t/opener.%i.conf
ExecStart=/bin/sh -c 'echo "address: %t/opener.%i.sock" > $OPENER_CONF && exec %h/bin/opener --config $OPENER_CONF'
[Install]
WantedBy=graphical-session.target

View file

@ -0,0 +1,10 @@
[Unit]
Description=Run tmux server
[Service]
Restart=always
StartLimitIntervalSec=0
ExecStart=/usr/bin/tmux -D -u
[Install]
WantedBy=default.target

View file

@ -0,0 +1,3 @@
include "linux-with-two-alt-keys"
keycode 58 = Control

View file

@ -0,0 +1,40 @@
[metadata]
name = "Shelman Dark"
origin_url = ""
[colors]
ansi = [
"#000000",
"#ff0035",
"#85ff00",
"#ffc900",
"#00a7ff",
"#cb01ff",
"#00e0ff",
"#f0f0f0",
]
brights = [
"#000000",
"#ff8c88",
"#baff94",
"#ffe090",
"#88ccff",
"#e38dff",
"#97eeff",
"#ffffff",
]
# background = "#000000"
background = "#0d1117"
# background = "#11171d"
#background = "#171e26"
# background = "#161923"
# foreground = "#e3e0cd"
# foreground = "#d3d0bd"
foreground = "#cccccc"
cursor_bg = "#00d992"
cursor_fg = "#000000"
cursor_border = "#000000"
selection_bg = "#d7d7d7"
selection_fg = "#000000"

View file

@ -0,0 +1,35 @@
[metadata]
name = "Shelman Light"
origin_url = ""
[colors]
ansi = [
"#000000",
"#9e001d",
"#306300",
"#deae00",
"#00669e",
"#7d009e",
"#008a9e",
"#f7f7f7",
]
brights = [
"#000000",
"#ff0035",
"#509e00",
"#ffc900",
"#00a7ff",
"#cb01ff",
"#00e0ff",
"#ffffff",
]
background = "#fefeff"
# foreground = "#2c363c"
foreground = "#000000"
cursor_bg = "#aa0000"
cursor_fg = "#ffffff"
cursor_border = "#ffffff"
selection_bg = "#ffe6a4"
selection_fg = "#483600"

245
.config/wezterm/wezterm.lua Normal file
View file

@ -0,0 +1,245 @@
local wezterm = require("wezterm")
local mux = wezterm.mux
local act = wezterm.action
local config = {}
-- ------------------------------------------------------------------------------------
-- Workspace behavior
-- local nvim_args = { "nvim", "--listen", "$XDG_RUNTIME_DIR" .. "/nvim-persistent.sock" }
local nvim_args = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
config.exec_domains = {
wezterm.exec_domain("dev", function(cmd)
local wrapped = { "/usr/bin/ssh", "-t", "dev" }
for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
table.insert(wrapped, arg)
end
cmd.args = wrapped
return cmd
end),
}
local function activate_nvim(window, pane)
wezterm.log_info("nvim")
for _, t in ipairs(window:mux_window():tabs_with_info()) do
for _, p in ipairs(t.tab:panes()) do
if p:get_title() == "nvim" or t.tab:get_title() == "nvim" then
window:perform_action(
act.Multiple({
act.ActivateTab(t.index),
act.MoveTab(0),
}),
pane
)
return
end
end
end
local nvim_tab, nvim_pane, _ = window:mux_window():spawn_tab({ args = nvim_args })
window:perform_action(act.MoveTab(0), nvim_pane)
nvim_tab:set_title("nvim")
end
local function activate_tab(title, index)
return function(window, pane)
wezterm.log_info(title)
for _, t in ipairs(window:mux_window():tabs_with_info()) do
if t.tab:get_title() == title then
window:perform_action(
act.Multiple({
act.ActivateTab(t.index),
act.MoveTab(index),
}),
pane
)
return
end
end
local tab, _, _ = window:mux_window():spawn_tab({
cwd = "~",
})
tab:set_title(title)
window:perform_action(act.MoveTab(index), pane)
end
end
wezterm.on("activate-nvim", activate_nvim)
wezterm.on("tab-2", activate_tab("t2", 1))
wezterm.on("tab-3", activate_tab("t3", 2))
wezterm.on("tab-4", activate_tab("t4", 3))
wezterm.on("tab-5", activate_tab("t5", 4))
wezterm.on("tab-6", activate_tab("t6", 5))
wezterm.on("tab-7", activate_tab("t7", 6))
wezterm.on("tab-8", activate_tab("t8", 7))
wezterm.on("tab-9", activate_tab("t9", 8))
wezterm.on("tab-10", activate_tab("t10", 9))
wezterm.on("user-var-changed", function(window, pane, name, _)
if name == "nvim_activate" then
activate_nvim(window, pane)
end
end)
-- ------------------------------------------------------------------------------------
-- Appearance
local function scheme_for_appearance(appearance)
if appearance:find("Dark") then
return "Shelman Dark"
else
return "Shelman Light"
end
end
local function font_for_appearance(appearance)
if appearance:find("Dark") then
return wezterm.font({
family = "IosevkaShelman Nerd Font",
weight = "Light",
})
else
return wezterm.font({
family = "IosevkaShelman Nerd Font",
--weight = "Regular",
})
end
end
config.color_scheme = scheme_for_appearance(wezterm.gui.get_appearance())
-- ------------------------------------------------------------------------------------
-- Fonts
config.font = font_for_appearance(wezterm.gui.get_appearance())
config.font_rules = {
{
italic = true,
intensity = "Bold",
reverse = false,
font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
-- font = wezterm.font("Iosevka Term Curly Slab", { weight = "Thin", italic = true }),
},
{
italic = true,
intensity = "Normal",
reverse = false,
font = wezterm.font("IosevkaShelman Nerd Font", { weight = "Light", italic = true }),
},
}
-- config.dpi = 192
config.font_size = 15
config.line_height = 1.0
config.warn_about_missing_glyphs = false
config.bold_brightens_ansi_colors = false
config.unicode_version = 14
-- Config
config.enable_wayland = true
config.term = "wezterm"
config.check_for_updates = false
-- UI
config.command_palette_font_size = 13.5
config.initial_cols = 132
config.initial_rows = 45
config.status_update_interval = 100
config.audible_bell = "Disabled"
config.use_resize_increments = true
config.adjust_window_size_when_changing_font_size = false
config.window_decorations = "RESIZE"
config.window_frame = {
border_left_width = "4px",
border_right_width = "4px",
border_bottom_height = "4px",
border_top_height = "4px",
border_left_color = "#000000",
border_right_color = "#000000",
border_bottom_color = "#000000",
border_top_color = "#000000",
}
config.window_padding = {
left = 0,
right = 0,
top = 0,
bottom = 0,
}
-- Hyperlinks
config.hyperlink_rules = wezterm.default_hyperlink_rules()
table.insert(config.hyperlink_rules, {
regex = [[`rustc --explain E(\d+)`]],
format = "https://doc.rust-lang.org/error_codes/E$1.html",
})
-- Tabs
config.enable_tab_bar = false
config.tab_bar_at_bottom = true
config.use_fancy_tab_bar = false
config.show_tab_index_in_tab_bar = true
-- Cursor
config.default_cursor_style = "SteadyBlock"
config.cursor_thickness = "6px"
config.cursor_blink_rate = 700
config.hide_mouse_cursor_when_typing = false
config.underline_position = -9
config.underline_thickness = 1
-- Scrolling
config.enable_scroll_bar = false
config.scrollback_lines = 5000
config.alternate_buffer_wheel_scroll_speed = 1
-- Keys
config.disable_default_key_bindings = true
config.keys = {
{ key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
{ key = "0", mods = "CTRL", action = "ResetFontSize" },
{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },
{ key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-0.5) },
{ key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(0.5) },
{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
{ key = "o", mods = "ALT", action = act.ActivateCommandPalette },
{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
{ key = "1", mods = "ALT", action = act.EmitEvent("activate-nvim") },
{ key = "2", mods = "ALT", action = act.EmitEvent("tab-2") },
{ key = "3", mods = "ALT", action = act.EmitEvent("tab-3") },
{ key = "4", mods = "ALT", action = act.EmitEvent("tab-4") },
{ key = "5", mods = "ALT", action = act.EmitEvent("tab-5") },
{ key = "6", mods = "ALT", action = act.EmitEvent("tab-6") },
{ key = "7", mods = "ALT", action = act.EmitEvent("tab-7") },
{ key = "8", mods = "ALT", action = act.EmitEvent("tab-8") },
{ key = "9", mods = "ALT", action = act.EmitEvent("tab-9") },
{ key = "0", mods = "ALT", action = act.EmitEvent("tab-10") },
}
-- Mouse
config.mouse_bindings = {
{
event = { Down = { streak = 1, button = { WheelUp = 1 } } },
mods = "SHIFT",
action = act.ScrollByLine(-1),
},
{
event = { Down = { streak = 1, button = { WheelDown = 1 } } },
mods = "SHIFT",
action = act.ScrollByLine(1),
},
{
event = { Down = { streak = 1, button = { WheelUp = 1 } } },
action = act.ScrollByPage(-0.25),
},
{
event = { Down = { streak = 1, button = { WheelDown = 1 } } },
action = act.ScrollByPage(0.25),
},
}
return config

View file

@ -0,0 +1,13 @@
abbr "b"="git branch -va"
abbr "c"="git commit"
abbr "d"="git diff --stat -p -C --color-words"
abbr "g"="git"
abbr "gsw"="git gerrit-switch"
abbr "k"="kubectl"
abbr "new"="git checkout --detach main"
abbr "p"="git push"
abbr "rec"="git record"
abbr "s"="git st"
abbr "sl"="git branchless smartlog"
abbr "sw"="git branchless switch --interactive"
abbr "sy"="git sync --pull"

2
.envrc
View file

@ -1,2 +0,0 @@
# shellcheck shell=bash
use flake

151
.gitconfig Normal file
View file

@ -0,0 +1,151 @@
[alias]
b = branch -va
cl = clone --filter=blob:none
co = checkout
d = diff --stat -p -C --color-words
ds = diff --staged --stat -p -C --color-words
dt = difftool
patch = !git --no-pager diff --no-color
pullr = pull --rebase --autostash
sh = show --stat -p -C --color-words --show-signature
st = status -sb
t = tag --sort=-v:refname --format='%(color:bold italic)%(objectname:short)%(color:noitalic) %(refname:short)'
new = !git fetch -u origin main:main && git branchless switch -d origin/main
sl = branchless smartlog
sync = branchless sync
sw = branchless switch
s = branchless switch -i
copr = "!f() { \
pr=$1 \
&& test -n \"$pr\" || pr=`tea pr list -o simple | fzf --bind 'enter:become(echo {+1})'` \
&& git fetch origin refs/pull/$pr/head \
&& git checkout --detach FETCH_HEAD \
;};f"
g = graph -S -m simple -s round
ll = "log --first-parent --topo-order --pretty='format:%Creset%x1B[1;3;38:2:127:114:88m%h %G? ┼%x1B[0;38:2:154:234:255m%d%Creset %x1B[3;38:2:194:203:226m%s %x1B[38:2:93:112:164m᠁᠁᠁ %x1B[38:2:74:119:163m%al %x1B[2;38:2:93:112:164m%ah'"
lla = "log --graph --all --topo-order --pretty='format:%x1B[38:2:233:218:190m%h%x1B[38:2:154:234:255m%d%Creset %x1B[1;3;38:2:194:203:226m%s %x1B[38:2:93:112:164m᠁ %x1B[38:2:74:119:163m%al %x1B[2;38:2:93:112:164m%ah'"
guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"
serve = daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/
[apply]
whitespace = nowarn
[blame]
date = relative
[branch "main"]
rebase = true
[branch "master"]
rebase = true
[color]
branch = auto
diff = auto
status = auto
ui = auto
[column]
ui = auto
[core]
compression = 3
excludesfile = "~/.gitignore"
looseCompression = 3
pager = delta
[delta]
; # syntax-theme = GitHub
file-added-label = " ══"
file-decoration-style=none
file-modified-label = " ▲ ══"
file-removed-label = " ➖══"
file-renamed-label = " ➞ ══"
file-style = bold "#ffff66" "#333300"
file-transformation = "s/$/ ══ /"
hunk-header-decoration-style=none
hunk-header-file-style = bold "#66ddff"
hunk-header-line-number-style = bold "#66ccff"
hunk-header-style = line-number bold "#99eeff" "#001133"
hunk-label = "⯁"
hunk-label-style = bold "#66ccff"
line-numbers = true
max-line-distance = 0.9
[http]
cookiefile = /home/dln/.gitcookies
[hub]
protocol = git
[interactive]
diffFilter = delta --color-only --features=interactive
[commit]
gpgsign = true
verbose = true
[credential]
helper = store
[diff]
algorithm = histogram
tool = difft
[difftool]
prompt = false
[difftool "difft"]
cmd = difft --color=always --display inline "$LOCAL" "$REMOTE" | bat
[fetch]
prune = true
prunetags = true
showForcedUpdates = true
[filter "lfs"]
clean = git-lfs clean -- %f
process = git-lfs filter-process
required = true
smudge = git-lfs smudge -- %f
[gpg]
format = ssh
[gpg "ssh"]
allowedSignersFile = ~/.config/git/allowed_signers
defaultKeyCommand = /home/dln/.config/git/signing-key.sh
[init]
defaultBranch = main
[lfs]
concurrenttransfers = 32
[merge]
conflictstyle = zdiff3
[pack]
compression = 3
threads = 0
[push]
default = tracking
[rebase]
autosquash = true
[rerere]
enabled = true
[tag]
sort = -v:refname
[user]
email = dln@arity.se
name = Daniel Lundin
useConfigOnly = true

15
.gitignore vendored
View file

@ -1 +1,14 @@
/result
*~
*.a
*.class
/.idea
*.iml
*.ipr
*.iwr
*.iws
*.la
*.o
*.pyc
*.so
*.swp

4
.gnupg/gpg-agent.conf Normal file
View file

@ -0,0 +1,4 @@
enable-ssh-support
default-cache-ttl 3600
max-cache-ttl 3600
extra-socket /run/user/1000/gnupg/S.gpg-agent.extra

2
.gnupg/gpg.conf Normal file
View file

@ -0,0 +1,2 @@
#use-agent
keyid-format LONG

11
.inputrc Normal file
View file

@ -0,0 +1,11 @@
set meta-flag on
set convert-meta off
set output-meta on
set completion-ignore-case on
set visible-stats on
set show-all-if-ambiguous on
set completion-query-items 150
#"\C-p": history-search-backward
#"\C-n": history-search-forward

21
.jjconfig.toml Normal file
View file

@ -0,0 +1,21 @@
[user]
name = "Daniel Lundin"
email = "dln@arity.se"
[ui]
default-command = "l"
diff-editor = ["scm-diff-editor", "--dir-diff", "$left", "$right"]
pager = ["delta", "--line-numbers", "--max-line-distance=0.9"]
[aliases]
l = ["log", "--ignore-working-copy", "-r", "(main..@): | (main..@)-"]
la = ["log", "--ignore-working-copy", "-r", "all()"]
b = ["branch", "list"]
n = ["new", "main"]
d = ["diff"]
[revset-aliases]
# The `main.. &` bit is an optimization to scan for non-`mine()` commits only
# among commits that are not in `main`.
"immutable_heads()" = "main@origin | (main@origin.. & ~mine())"

46
.lessfilter Executable file
View file

@ -0,0 +1,46 @@
#! /usr/bin/env bash
mime=$(file -Lbs --mime-type "$1")
category=${mime%%/*}
kind=${mime##*/}
ext=${1##*.}
if [ "$kind" = json ]; then
if [ "$(command -v jq)" ]; then
jq -Cr . "$1"
fi
elif [ "$kind" = vnd.sqlite3 ]; then
if [ "$(command -v yes)" ] && [ "$(command -v sqlite3)" ] && [ "$(command -v bat)" ]; then
yes .q | sqlite3 "$1" | bat --color=always -plsql
fi
# https://github.com/wofr06/lesspipe/pull/107
elif [ -d "$1" ]; then
if [ "$(command -v exa)" ]; then
exa --git -hl --color=always --icons "$1"
fi
# https://github.com/wofr06/lesspipe/pull/110
elif [ "$kind" = pdf ]; then
if [ "$(command -v pdftotext)" ] && [ "$(command -v sed)" ]; then
pdftotext -q "$1" - | sed "s/\f/$(hr ─)\n/g"
fi
# https://github.com/wofr06/lesspipe/pull/115
elif [ "$kind" = rfc822 ]; then
if [ "$(command -v bat)" ]; then
bat --color=always -lEmail "$1"
fi
# https://github.com/wofr06/lesspipe/pull/106
elif [ "$category" = image ]; then
if [ "$(command -v chafa)" ]; then
chafa -f symbols "$1"
fi
if [ "$(command -v exiftool)" ]; then
exiftool "$1" | bat --color=always -plyaml
fi
# https://github.com/wofr06/lesspipe/pull/117
elif [ "$category" = text ]; then
if [ "$(command -v bat)" ]; then
bat --color=always "$1"
elif [ "$(command -v pygmentize)" ]; then
pygmentize "$1" | less
fi
else
exit 1
fi

View file

@ -0,0 +1,13 @@
[Desktop Entry]
Version=1.0
Name=Firefox (Arity)
GenericName=Web Browser
Comment=Browse the Web
Exec=firefox %u -P Arity --name firefox-arity
Icon=firefox
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=firefox-arity
Categories=Network;WebBrowser;
Keywords=web;browser;internet;

View file

@ -0,0 +1,13 @@
[Desktop Entry]
Version=1.0
Name=Firefox (Work)
GenericName=Web Browser
Comment=Browse the Web
Exec=firefox %u -P Work --new-instance --name firefox-work
Icon=firefox
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=firefox-work
Categories=Network;WebBrowser;
Keywords=web;browser;internet;

View file

@ -0,0 +1,11 @@
[Desktop Entry]
Version=1.0
Name=Client Chrome
StartupWMClass=Google-chrome-beta-client
Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-client --class=Google-chrome-beta-client
StartupNotify=true
Terminal=false
Icon=google-chrome-beta
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;

View file

@ -0,0 +1,11 @@
[Desktop Entry]
Version=1.0
Name=Private Chrome
StartupWMClass=Google-chrome-beta-private
Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-private --class=Google-chrome-beta-private
StartupNotify=true
Terminal=false
Icon=google-chrome-beta
Type=Application
Categories=Netprivate;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;

View file

@ -0,0 +1,11 @@
[Desktop Entry]
Version=1.0
Name=Work Chrome
StartupWMClass=Google-chrome-beta-work
Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-work --class=Google-chrome-beta-work
StartupNotify=true
Terminal=false
Icon=google-chrome-beta
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;

View file

@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=Google Meet
StartupWMClass=meet.google.com
Exec=/usr/bin/google-chrome-stable --profile-directory='Profile 1' --app=https://meet.google.com
Terminal=false
Icon=camera-video
Type=Application
Categories=Network;Office

View file

@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=plex
StartupWMClass=plex.aarn.shelman.io
Exec=/usr/bin/google-chrome-stable --profile-directory='Profile 2' --app=https://plex.home:32400/web/index.html
Terminal=false
Icon=google-chrome
Type=Application
Categories=Audio;

View file

@ -0,0 +1,11 @@
[Desktop Entry]
Type=Application
Name=Spotify
GenericName=Music Player
Icon=spotify-client
TryExec=spotify
Exec=spotify --force-device-scale-factor=2 %U
Terminal=false
MimeType=x-scheme-handler/spotify;
Categories=Audio;Music;Player;AudioVideo;
StartupWMClass=spotify

View file

@ -0,0 +1,10 @@
[Desktop Entry]
Name=wezterm-dev-secondary
GenericName=wezterm-dev-secondary
StartupWMClass=org.wezfurlong.wezterm-dev-secondary
Type=Application
TryExec=/usr/bin/wezterm
Icon=org.wezfurlong.wezterm
Terminal=false
Categories=System;TerminalEmulator;
Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-dev-secondary --domain=dev

View file

@ -0,0 +1,10 @@
[Desktop Entry]
Name=wezterm-dev
GenericName=wezterm-dev
StartupWMClass=org.wezfurlong.wezterm-dev
Type=Application
TryExec=/usr/bin/wezterm
Icon=org.wezfurlong.wezterm
Terminal=false
Categories=System;TerminalEmulator;
Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-dev --domain=dev

View file

@ -0,0 +1,10 @@
[Desktop Entry]
Name=wezterm-local
GenericName=wezterm-local
StartupWMClass=wezterm-local
Type=Application
TryExec=/usr/bin/wezterm
Icon=org.wezfurlong.wezterm
Terminal=false
Categories=System;TerminalEmulator;
Exec=/usr/bin/wezterm --config 'default_prog={"tmux", "-u", "new", "-As0"}' start --class=wezterm-local

View file

@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=YouTube Music (provar)
StartupWMClass=music.youtube.com
Exec=/usr/bin/google-chrome-stable --user-data-dir=$HOME/.config/google-chrome --profile-directory='Profile 2' --app=https://music.youtube.com --class=music.youtube.com
Terminal=false
Icon=google-chrome
Type=Application
Categories=Audio;

31
.ssh/config Normal file
View file

@ -0,0 +1,31 @@
ServerAliveInterval 15
ServerAliveCountMax 3
ControlMaster auto
ControlPath ${XDG_RUNTIME_DIR}/ssh_control:%h:%p:%r
ControlPersist 1200
Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
AddressFamily inet
PreferredAuthentications=publickey
Include ~/.ssh/private_config
Host 10.1.100.16
Host dln-dev
Host dev
Hostname 10.1.100.16
#Hostname aarn.shelman.io
#Port 2022
ForwardAgent yes
ExitOnForwardFailure yes
Compression no
LocalForward localhost:3000 localhost:3000
LocalForward localhost:8000 localhost:8000
LocalForward localhost:8080 localhost:8080
LocalForward localhost:9090 localhost:9090
LocalForward localhost:10000 localhost:10000
RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.dln-dev.sock
RemoteForward localhost:9022 localhost:9022
Host *
ForwardAgent no

4
.ssh/rc Executable file
View file

@ -0,0 +1,4 @@
if [[ -S "$SSH_AUTH_SOCK" && ! -h "$SSH_AUTH_SOCK" ]]; then
mkdir -p "${XDG_RUNTIME_DIR}/gcr";
ln -sf "$SSH_AUTH_SOCK" "${XDG_RUNTIME_DIR}/gcr/ssh";
fi

96
.tmux.conf Normal file
View file

@ -0,0 +1,96 @@
set -g prefix ^o
set -g base-index 1
set -g display-panes-time 3000
set -s escape-time 10
set -g status on
set -g status-interval 30
set -g focus-events on
set -g allow-passthrough on
setw -g alternate-screen on
setw -g aggressive-resize on
setw -g automatic-rename off
setw -g mode-keys vi
set-option -g mouse on
# clipboard
set -g set-clipboard on
bind-key ] paste-buffer -p
set-environment -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/gcr/ssh"
set -g update-environment "BUILD_COMMAND GOPACKAGESDRIVER SSH_AUTH_SOCK SSH_CONNECTION"
#set -g default-command "$SHELL"
set -g history-limit 10000
#
set -g default-terminal "wezterm"
set -ga terminal-features '*:clipboard:ccolor:hyperlinks:osc7:overline:sixel:strikethrough:title:usstyle:RGB'
set -ga terminal-overrides ',wezterm:cnorm=\E[?12h\E[?25h'
# Key bindings
bind -n M-Tab if-shell 'test #{window_panes} -gt 1' 'last-pane' 'last-window'
bind -n M-h select-pane -L
bind -n M-l select-pane -R
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
# bind -n M-j select-pane -U
# bind -n M-k select-pane -D
bind -T copy-mode-vi M-k send-keys -X cursor-up \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
bind -T copy-mode-vi M-j send-keys -X cursor-down \; send-keys -X next-prompt -o \; send-keys -X cursor-up
bind -n M-k copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
bind -n M-j copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
bind -n M-1 select-window -t 42
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
bind -n M-0 select-window -t 10
bind -n M-m send-keys -t 9 q C-u "clear; tmux clear-history -t 9" C-m C-p C-p C-p C-m
bind C-o send-keys C-o
bind r source-file ~/.tmux.conf
bind -n C-Right next-window
bind -n C-Left previous-window
bind C-s set-option -g status
bind K confirm kill-server
bind C-k clear-history
bind -n C-l send-keys C-l \; clear-history
bind-key -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 1 scroll-up
bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-down
bind-key / copy-mode \; send-key ?
bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again
setw -g window-status-format ""
setw -g window-status-current-format ""
setw -g window-status-separator ""
set -g status-style "bg=#444444,fg=#dddddd,italics"
set -g popup-border-style "fg=#77fecc"
set -g pane-border-style "fg=#334455"
set -g pane-active-border-style "fg=#334455"
set -g status-position bottom
set -g status-left-length 0
set -g status-right-length 0
set -g status-left '[#I] #{pane_current_path}'
set -g status-right '%F | %R'
set -g status off
set -g set-titles on
set -g set-titles-string "#H - #T"
new -s0 -n 1
new-window -n 2
new-window -n 3
new-window -n 4
new-window -n 5
new-window -n 6
new-window -n 7
new-window -n 8
new-window -n 9
new-window -n 0
# vim:set ft=tmux:

2
.vault Normal file
View file

@ -0,0 +1,2 @@
#token_helper = "/home/dln/bin/vault-token-helper"

View file

@ -1,3 +0,0 @@
# Configuration and various sundries
IT in a box.

36
bin/git-st Executable file
View file

@ -0,0 +1,36 @@
#!/usr/bin/env bash
if git branchless query HEAD >/dev/null 2>&1; then
printf '\n ● \e[1m'
git branchless query HEAD
printf '\e[2;38;5;242m%*s\e[0m\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' '-'
fi
awk -vOFS='' '
NR==FNR {
all[i++] = $0;
difffiles[$1] = $0;
next;
}
! ($2 in difffiles) {
print; next;
}
{
gsub($2, difffiles[$2]);
print;
}
END {
if (NR != FNR) {
# Had diff output
exit;
}
# Had no diff output, just print lines from git status -sb
for (i in all) {
print all[i];
}
}
' \
<(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') \
<(git -c color.status=always status -sb)
printf '\n'

364
bin/git-wtf Executable file
View file

@ -0,0 +1,364 @@
#!/usr/bin/env ruby
HELP = <<EOS
git-wtf displays the state of your repository in a readable, easy-to-scan
format. It's useful for getting a summary of how a branch relates to a remote
server, and for wrangling many topic branches.
git-wtf can show you:
- How a branch relates to the remote repo, if it's a tracking branch.
- How a branch relates to integration branches, if it's a feature branch.
- How a branch relates to the feature branches, if it's an integration
branch.
git-wtf is best used before a git push, or between a git fetch and a git
merge. Be sure to set color.ui to auto or yes for maximum viewing pleasure.
EOS
KEY = <<EOS
KEY:
() branch only exists locally
{} branch only exists on a remote repo
[] branch exists locally and remotely
x merge occurs both locally and remotely
~ merge occurs only locally
(space) branch isn't merged in
(It's possible for merges to occur remotely and not locally, of course, but
that's a less common case and git-wtf currently doesn't display anything
special for it.)
EOS
USAGE = <<EOS
Usage: git wtf [branch+] [options]
If [branch] is not specified, git-wtf will use the current branch. The possible
[options] are:
-l, --long include author info and date for each commit
-a, --all show all branches across all remote repos, not just
those from origin
-A, --all-commits show all commits, not just the first 5
-s, --short don't show commits
-k, --key show key
-r, --relations show relation to features / integration branches
--dump-config print out current configuration and exit
git-wtf uses some heuristics to determine which branches are integration
branches, and which are feature branches. (Specifically, it assumes the
integration branches are named "master", "next" and "edge".) If it guesses
incorrectly, you will have to create a .git-wtfrc file.
To start building a configuration file, run "git-wtf --dump-config >
.git-wtfrc" and edit it. The config file is a YAML file that specifies the
integration branches, any branches to ignore, and the max number of commits to
display when --all-commits isn't used. git-wtf will look for a .git-wtfrc file
starting in the current directory, and recursively up to the root.
IMPORTANT NOTE: all local branches referenced in .git-wtfrc must be prefixed
with heads/, e.g. "heads/master". Remote branches must be of the form
remotes/<remote>/<branch>.
EOS
COPYRIGHT = <<EOS
git-wtf Copyright 2008--2009 William Morgan <wmorgan at the masanjin dot nets>.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You can find the GNU General Public License at: http://www.gnu.org/licenses/
EOS
require 'yaml'
CONFIG_FN = ".git-wtfrc"
class Numeric; def pluralize s; "#{to_s} #{s}" + (self != 1 ? "s" : "") end end
if ARGV.delete("--help") || ARGV.delete("-h")
puts USAGE
exit
end
## poor man's trollop
$long = ARGV.delete("--long") || ARGV.delete("-l")
$short = ARGV.delete("--short") || ARGV.delete("-s")
$all = ARGV.delete("--all") || ARGV.delete("-a")
$all_commits = ARGV.delete("--all-commits") || ARGV.delete("-A")
$dump_config = ARGV.delete("--dump-config")
$key = ARGV.delete("--key") || ARGV.delete("-k")
$show_relations = ARGV.delete("--relations") || ARGV.delete("-r")
ARGV.each { |a| abort "Error: unknown argument #{a}." if a =~ /^--/ }
## search up the path for a file
def find_file fn
while true
return fn if File.exist? fn
fn2 = File.join("..", fn)
return nil if File.expand_path(fn2) == File.expand_path(fn)
fn = fn2
end
end
want_color = `git config color.wtf`
want_color = `git config color.ui` if want_color.empty?
$color = case want_color.chomp
when "true"; true
when "auto"; $stdout.tty?
end
def red s; $color ? "\033[31m#{s}\033[0m" : s end
def green s; $color ? "\033[32m#{s}\033[0m" : s end
def yellow s; $color ? "\033[33m#{s}\033[0m" : s end
def cyan s; $color ? "\033[36m#{s}\033[0m" : s end
def grey s; $color ? "\033[1;30m#{s}\033[0m" : s end
def purple s; $color ? "\033[35m#{s}\033[0m" : s end
## the set of commits in 'to' that aren't in 'from'.
## if empty, 'to' has been merged into 'from'.
def commits_between from, to
if $long
`git log --pretty=format:"- %s [#{yellow "%h"}] (#{purple "%ae"}; %ar)" #{from}..#{to}`
else
`git log --pretty=format:"- %s [#{yellow "%h"}]" #{from}..#{to}`
end.split(/[\r\n]+/)
end
def show_commits commits, prefix=" "
if commits.empty?
puts "#{prefix} none"
else
max = $all_commits ? commits.size : $config["max_commits"]
max -= 1 if max == commits.size - 1 # never show "and 1 more"
commits[0 ... max].each { |c| puts "#{prefix}#{c}" }
puts grey("#{prefix}... and #{commits.size - max} more (use -A to see all).") if commits.size > max
end
end
def ahead_behind_string ahead, behind
[ahead.empty? ? nil : "#{ahead.size.pluralize 'commit'} ahead",
behind.empty? ? nil : "#{behind.size.pluralize 'commit'} behind"].
compact.join("; ")
end
def widget merged_in, remote_only=false, local_only=false, local_only_merge=false
left, right = case
when remote_only; %w({ })
when local_only; %w{( )}
else %w([ ])
end
middle = case
when merged_in && local_only_merge; green("~")
when merged_in; green("x")
else " "
end
print left, middle, right
end
def show b
have_both = b[:local_branch] && b[:remote_branch]
pushc, pullc, oosync = if have_both
[x = commits_between(b[:remote_branch], b[:local_branch]),
y = commits_between(b[:local_branch], b[:remote_branch]),
!x.empty? && !y.empty?]
end
if b[:local_branch]
puts "Local branch: " + green(b[:local_branch].sub(/^heads\//, ""))
if have_both
if pushc.empty?
puts "#{widget true} in sync with remote"
else
action = oosync ? "push after rebase / merge" : "push"
puts "#{widget false} NOT in sync with remote (you should #{action})"
show_commits pushc unless $short
end
end
end
if b[:remote_branch]
puts "Remote branch: #{cyan b[:remote_branch]} (#{b[:remote_url]})"
if have_both
if pullc.empty?
puts "#{widget true} in sync with local"
else
action = pushc.empty? ? "merge" : "rebase / merge"
puts "#{widget false} NOT in sync with local (you should #{action})"
show_commits pullc unless $short
end
end
end
puts "\n#{red "WARNING"}: local and remote branches have diverged. A merge will occur unless you rebase." if oosync
end
def show_relations b, all_branches
ibs, fbs = all_branches.partition { |name, br| $config["integration-branches"].include?(br[:local_branch]) || $config["integration-branches"].include?(br[:remote_branch]) }
if $config["integration-branches"].include? b[:local_branch]
puts "\nFeature branches:" unless fbs.empty?
fbs.each do |name, br|
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
next if br[:ignore]
local_only = br[:remote_branch].nil?
remote_only = br[:local_branch].nil?
name = if local_only
purple br[:name]
elsif remote_only
cyan br[:name]
else
green br[:name]
end
## for remote_only branches, we'll compute wrt the remote branch head. otherwise, we'll
## use the local branch head.
head = remote_only ? br[:remote_branch] : br[:local_branch]
remote_ahead = b[:remote_branch] ? commits_between(b[:remote_branch], head) : []
local_ahead = b[:local_branch] ? commits_between(b[:local_branch], head) : []
if local_ahead.empty? && remote_ahead.empty?
puts "#{widget true, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is merged in"
elsif local_ahead.empty?
puts "#{widget true, remote_only, local_only, true} #{name} merged in (only locally)"
else
behind = commits_between head, (br[:local_branch] || br[:remote_branch])
ahead = remote_only ? remote_ahead : local_ahead
puts "#{widget false, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is NOT merged in (#{ahead_behind_string ahead, behind})"
show_commits ahead unless $short
end
end
else
puts "\nIntegration branches:" unless ibs.empty? # unlikely
ibs.sort_by { |v, br| v }.each do |v, br|
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
next if br[:ignore]
local_only = br[:remote_branch].nil?
remote_only = br[:local_branch].nil?
name = remote_only ? cyan(br[:name]) : green(br[:name])
ahead = commits_between v, (b[:local_branch] || b[:remote_branch])
if ahead.empty?
puts "#{widget true, local_only} merged into #{name}"
else
#behind = commits_between b[:local_branch], v
puts "#{widget false, local_only} NOT merged into #{name} (#{ahead.size.pluralize 'commit'} ahead)"
show_commits ahead unless $short
end
end
end
end
#### EXECUTION STARTS HERE ####
## find config file and load it
$config = { "integration-branches" => %w(heads/master heads/next heads/edge), "ignore" => [], "max_commits" => 5 }.merge begin
fn = find_file CONFIG_FN
if fn && (h = YAML::load_file(fn)) # yaml turns empty files into false
h["integration-branches"] ||= h["versions"] # support old nomenclature
h
else
{}
end
end
if $dump_config
puts $config.to_yaml
exit
end
## first, index registered remotes
remotes = `git config --get-regexp ^remote\.\*\.url`.split(/[\r\n]+/).inject({}) do |hash, l|
l =~ /^remote\.(.+?)\.url (.+)$/ or next hash
hash[$1] ||= $2
hash
end
## next, index followed branches
branches = `git config --get-regexp ^branch\.`.split(/[\r\n]+/).inject({}) do |hash, l|
case l
when /branch\.(.*?)\.remote (.+)/
name, remote = $1, $2
hash[name] ||= {}
hash[name].merge! :remote => remote, :remote_url => remotes[remote]
when /branch\.(.*?)\.merge ((refs\/)?heads\/)?(.+)/
name, remote_branch = $1, $4
hash[name] ||= {}
hash[name].merge! :remote_mergepoint => remote_branch
end
hash
end
## finally, index all branches
remote_branches = {}
`git show-ref`.split(/[\r\n]+/).each do |l|
sha1, ref = l.chomp.split " refs/"
if ref =~ /^heads\/(.+)$/ # local branch
name = $1
next if name == "HEAD"
branches[name] ||= {}
branches[name].merge! :name => name, :local_branch => ref
elsif ref =~ /^remotes\/(.+?)\/(.+)$/ # remote branch
remote, name = $1, $2
remote_branches["#{remote}/#{name}"] = true
next if name == "HEAD"
ignore = !($all || remote == "origin")
branch = name
if branches[name] && branches[name][:remote] == remote
# nothing
else
name = "#{remote}/#{branch}"
end
branches[name] ||= {}
branches[name].merge! :name => name, :remote => remote, :remote_branch => "#{remote}/#{branch}", :remote_url => remotes[remote], :ignore => ignore
end
end
## assemble remotes
branches.each do |k, b|
next unless b[:remote] && b[:remote_mergepoint]
b[:remote_branch] = if b[:remote] == "."
b[:remote_mergepoint]
else
t = "#{b[:remote]}/#{b[:remote_mergepoint]}"
remote_branches[t] && t # only if it's still alive
end
end
show_dirty = ARGV.empty?
targets = if ARGV.empty?
[`git symbolic-ref HEAD`.chomp.sub(/^refs\/heads\//, "")]
else
ARGV.map { |x| x.sub(/^heads\//, "") }
end.map { |t| branches[t] or abort "Error: can't find branch #{t.inspect}." }
targets.each do |t|
show t
show_relations t, branches if $show_relations || t[:remote_branch].nil?
end
modified = show_dirty && `git ls-files -m` != ""
uncommitted = show_dirty && `git diff-index --cached HEAD` != ""
if $key
puts
puts KEY
end
puts if modified || uncommitted
puts "#{red "NOTE"}: working directory contains modified files." if modified
puts "#{red "NOTE"}: staging area contains staged but uncommitted files." if uncommitted
# the end!

1
bin/ktoolbox Symbolic link
View file

@ -0,0 +1 @@
/home/dln/src/github.com/dln/ktoolbox/ktoolbox

15
bin/pst Executable file
View file

@ -0,0 +1,15 @@
#!/bin/bash
set -eo pipefail
URL="https://paste.aarn.shelman.io"
FILEPATH="$1"
FILENAME=$(basename -- "$FILEPATH")
EXTENSION="${FILENAME##*.}"
RESPONSE=$(curl -s --data-binary "@${FILEPATH:-/dev/stdin}" --url $URL)
PASTELINK="$URL$RESPONSE"
[ -z "$EXTENSION" ] &&
echo "$PASTELINK" ||
echo "$PASTELINK.$EXTENSION"

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