Compare commits

..

19 Commits

Author SHA1 Message Date
bfcbca14ce Adjust size 2025-10-13 00:18:43 -07:00
b5f733f750 Toggle WezTerm 2025-10-13 00:10:15 -07:00
42f931ba3c Use double line comments 2025-09-30 10:17:11 -07:00
6bd3a3697d Add alias 2025-09-25 09:21:59 -07:00
ccef0cc50b Add Sketchybar config 2025-08-11 21:32:40 -07:00
d0942e4b12 Merge remote-tracking branch 'refs/remotes/origin/main' 2025-08-08 12:20:23 -07:00
3c9ca2fe4f Add Sketchybar and Configure Aerospace 2025-08-08 12:19:01 -07:00
1264660d78 Add ftplugin settings for specific language 2025-08-08 12:18:01 -07:00
ccbcb7e397 Update alias 2025-08-03 01:45:17 -07:00
8226c311bb Remove alias 2025-08-02 23:55:39 -07:00
8cb46fdec3 Update 2025-08-01 10:12:43 -07:00
40a1257331 Use Chezmoi more 2025-08-01 10:09:10 -07:00
b776704cb7 Update tmux 2025-07-29 11:02:43 -07:00
5bc983b55c Remove DS Store file 2025-07-28 08:46:08 -07:00
0b1b6061f4 update 2025-07-28 08:29:58 -07:00
e25d845bbf Cleanup dotfiles 2025-07-23 00:26:25 -07:00
75c981e76d Add aerospace 2025-07-22 02:44:30 -07:00
b56f5b8753 Update 2025-07-22 02:38:31 -07:00
2aef84e604 Add dotfiles 2025-07-22 02:36:39 -07:00
48 changed files with 3890 additions and 44 deletions

View File

@ -4,10 +4,6 @@ if [ -f ~/.bashrc ]; then
. ~/.bashrc . ~/.bashrc
fi fi
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export PATH=$PATH:$(go env GOPATH)/bin
# Herd injected NVM configuration # Herd injected NVM configuration
export NVM_DIR="/Users/corey/Library/Application Support/Herd/config/nvm" export NVM_DIR="/Users/corey/Library/Application Support/Herd/config/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

View File

@ -21,18 +21,18 @@ shopt -s checkwinsize
export EDITOR=nvim export EDITOR=nvim
# ------------------------------------------------------------------------------ # ==============================================================================
# 1Password # 1Password
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# Use the 1Password agent to manage ssh keys # Use the 1Password agent to manage ssh keys
# #
export SSH_AUTH_SOCK=~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock export SSH_AUTH_SOCK=~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock
# ------------------------------------------------------------------------------ # ==============================================================================
# XDG Base Directory Specification # XDG Base Directory Specification
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# Define standard locations for configuration and data files # Define standard locations for configuration and data files
# #
@ -66,9 +66,9 @@ export NVM_DIR="/Users/corey/Library/Application Support/Herd/config/nvm"
# Less don't make a history file # Less don't make a history file
export LESSHISTFILE="/dev/null" export LESSHISTFILE="/dev/null"
# ------------------------------------------------------------------------------ # ==============================================================================
# PATH Configuration # PATH Configuration
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# Set up the PATH environment variable with all necessary directories # Set up the PATH environment variable with all necessary directories
# #
@ -89,32 +89,21 @@ if [ -d "/opt/homebrew/bin" ]; then
PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH" PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"
fi fi
# Add Go bin directory if it exists
if [ -d "/usr/local/go/bin" ]; then
PATH="/usr/local/go/bin:$PATH"
fi
# Add Topaz Photo AI bin directory if it exists
TOPAZ_BIN="/Applications/Topaz Photo AI.app/Contents/Resources/bin"
if [ -d "$TOPAZ_BIN" ]; then
PATH="$TOPAZ_BIN:$PATH"
fi
# Export the final PATH # Export the final PATH
export PATH export PATH
# ------------------------------------------------------------------------------ # ==============================================================================
# Export terminal type # Export terminal type
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# Set terminal to 256color mode for use with custom color schemes # Set terminal to 256color mode for use with custom color schemes
# #
export TERM="xterm-256color" export TERM="xterm-256color"
# ------------------------------------------------------------------------------ # ==============================================================================
# Prompt # Prompt
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# Simple prompt matching Ubuntu's default style with colors # Simple prompt matching Ubuntu's default style with colors
# #
@ -199,9 +188,9 @@ PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\${GIT_PROMPT
export PYTHON_HISTORY="$HOME/.local/state/python_history" export PYTHON_HISTORY="$HOME/.local/state/python_history"
# ------------------------------------------------------------------------------ # ==============================================================================
# Shell History # Shell History
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# #
@ -225,9 +214,9 @@ shopt -s histreedit
shopt -s histverify shopt -s histverify
shopt -s lithist shopt -s lithist
# ------------------------------------------------------------------------------ # ==============================================================================
# Tmux Configuration # Tmux Configuration
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# Settings for Tmux integration # Settings for Tmux integration
# #
@ -236,9 +225,9 @@ if [[ ! $(tmux list-sessions) ]]; then
tmux new -s Tmux; tmux new -s Tmux;
fi fi
# ------------------------------------------------------------------------------ # ==============================================================================
# fzf # fzf
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# https://github.com/junegunn/fzf # https://github.com/junegunn/fzf
# #
@ -302,34 +291,37 @@ export FZF_ALT_C_OPTS="
# ------------------------------------------------------------------------------ # ==============================================================================
# Mise # Mise
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# #
# #
eval "$(mise activate bash)" eval "$(mise activate bash)"
# ------------------------------------------------------------------------------ # ==============================================================================
# Alias # Alias
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# #
# #
alias l='ls -CFG' alias ls='ls -CG'
alias la='ls -AFG'
alias ll='ls -alFG'
alias vim='nvim'
alias python=python3
alias pip=pip3
alias db='db-browse'
alias .='pwd'
# ------------------------------------------------------------------------------ alias d='chezmoi'
for i in $(seq 2 8); do
dots=$(printf '.%.0s' $(seq 1 $i))
paths=$(printf '../%.0s' $(seq 1 $((i - 1))))
alias "$dots"="cd $paths"
done
# ==============================================================================
# Zoxide # Zoxide
# ------------------------------------------------------------------------------ # ==============================================================================
# #
# Setup zsh completions and zoxide cd jumping # Setup zsh completions and zoxide cd jumping
# #

View File

@ -0,0 +1,161 @@
# Place a copy of this config to ~/.aerospace.toml
# After that, you can edit ~/.aerospace.toml to your liking
# In your config, you can drop keys you don't care about
# The absent keys will fallback to their default values
# You can use it to add commands that run after login to macOS user session.
# 'start-at-login' needs to be 'true' for 'after-login-command' to work
# Available commands: https://nikitabobko.github.io/AeroSpace/commands
after-login-command = []
# You can use it to add commands that run after AeroSpace startup.
# 'after-startup-command' is run after 'after-login-command'
# Available commands : https://nikitabobko.github.io/AeroSpace/commands
# Run Sketchybar together with AeroSpace
# sketchbar has a built-in detection of already running process,
# so it won't be run twice on AeroSpace restart
after-startup-command = ['exec-and-forget sketchybar']
# Notify Sketchybar about workspace change
exec-on-workspace-change = ['/bin/bash', '-c',
'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE'
]
# Start AeroSpace at login
start-at-login = false
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
enable-normalization-flatten-containers = true
enable-normalization-opposite-orientation-for-nested-containers = true
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
# The 'accordion-padding' specifies the size of accordion padding
# You can set 0 to disable the padding feature
accordion-padding = 0
# Possible values: tiles|accordion
default-root-container-layout = 'tiles'
# Possible values: horizontal|vertical|auto
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
# tall monitor (anything higher than wide) gets vertical orientation
default-root-container-orientation = 'auto'
# Possible values: (qwerty|dvorak)
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
key-mapping.preset = 'qwerty'
# Mouse follows focus when focused monitor changes
# Drop it from your config, if you don't like this behavior
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
# Gaps between windows (inner-*) and between monitor edges (outer-*).
# Possible values:
# - Constant: gaps.outer.top = 8
# - Per monitor: g2ps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
# In this example, 24 is a default value when there is no match.
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
[gaps]
inner.horizontal = 20
inner.vertical = 20
outer.left = [{monitor."sidecar" = 0}, 20]
outer.bottom = [{monitor."sidecar" = 0}, 20]
outer.top = [{monitor."sidecar" = 0}, 40]
outer.right = [{monitor."sidecar" = 0}, 20]
# 'main' binding mode declaration
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
# 'main' binding mode must be always presented
[mode.main.binding]
# All possible keys:
# - Letters. a, b, c, ..., z
# - Numbers. 0, 1, 2, ..., 9
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
# - F-keys. f1, f2, ..., f20
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
# leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
# keypadMinus, keypadMultiply, keypadPlus
# - Arrows. left, down, up, right
# All possible modifiers: cmd, alt, ctrl, shift
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)
# alt-enter = '''exec-and-forget osascript -e '
# tell application "Terminal"
# do scrip64
# activate64
# end tell'
# '''
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
alt-slash = 'layout tiles horizontal vertical'
alt-comma = 'layout accordion horizontal vertical'
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
alt-h = 'focus left'
alt-j = 'focus down'
alt-k = 'focus up'
alt-l = 'focus right'
# See: https://nikitabobko.github.io/AeroSpace/commands#move
alt-shift-h = 'move left'
alt-shift-j = 'move down'
alt-shift-k = 'move up'
alt-shift-l = 'move right'
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
alt-shift-minus = 'resize smart -50'
alt-shift-equal = 'resize smart +50'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
alt-1 = 'workspace 1'
alt-2 = 'workspace 2'
alt-3 = 'workspace 3'
# alt-4 = 'workspace 4'
# alt-5 = 'workspace 5'
# alt-6 = 'workspace 6'
# alt-7 = 'workspace 7'
# alt-8 = 'workspace 8'
# alt-9 = 'workspace 9'
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
alt-shift-1 = 'move-node-to-workspace 1'
alt-shift-2 = 'move-node-to-workspace 2'
alt-shift-3 = 'move-node-to-workspace 3'
# alt-shift-4 = 'move-node-to-workspace 4'
# alt-shift-5 = 'move-node-to-workspace 5'
# alt-shift-6 = 'move-node-to-workspace 6'
# alt-shift-7 = 'move-node-to-workspace 7'
# alt-shift-8 = 'move-node-to-workspace 8'
# alt-shift-9 = 'move-node-to-workspace 9'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth
alt-tab = 'workspace-back-and-forth'
# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor
alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
alt-shift-semicolon = 'mode service'
# 'service' binding mode declaration.
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
[mode.service.binding]
esc = ['reload-config', 'mode main']
r = ['flatten-workspace-tree', 'mode main'] # reset layout
#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
backspace = ['close-all-windows-but-current', 'mode main']
alt-shift-h = ['join-with left', 'mode main']
alt-shift-j = ['join-with down', 'mode main']
alt-shift-k = ['join-with up', 'mode main']
alt-shift-l = ['join-with right', 'mode main']

5
dot_config/bat/config Normal file
View File

@ -0,0 +1,5 @@
# Keep line numbers but disable syntax highlighting
--style=numbers
# Use a plain theme (no syntax colors)
--color=never

300
dot_config/broot/conf.hjson Normal file
View File

@ -0,0 +1,300 @@
###############################################################
# 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} =-"
# reset_terminal_title_on_exit: false
###############################################################
# 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
###############################################################
# 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
###############################################################
# 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: false
###############################################################
# 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
###############################################################
# transformations before preview
#
# It's possible to define transformations to apply to some files
# before calling one of the default preview renderers in broot.
# Below are two examples that you may uncomment and adapt:
#
preview_transformers: [
// # Use mutool to render any PDF file as an image
// # In this example we use placeholders for the input and output files
// {
// input_extensions: [ "pdf" ] // case doesn't matter
// output_extension: png
// mode: image
// command: [ "mutool", "draw", "-w", "1000", "-o", "{output-path}", "{input-path}" ]
// }
// # Use LibreOffice to render Office files as images
// # In this example, {output-dir} is used to specify where LibreOffice must write the result
// {
// input_extensions: [ "xls", "xlsx", "doc", "docx", "ppt", "pptx", "ods", "odt", "odp" ]
// output_extension: png
// mode: image
// command: [
// "libreoffice", "--headless",
// "--convert-to", "png",
// "--outdir", "{output-dir}",
// "{input-path}"
// ]
// }
// # Use jq to beautify JSON
// # In this example, the command refers to neither the input nor the output,
// # so broot pipes them to the stdin and stdout of the jq process
// {
// input_extensions: [ "json" ]
// output_extension: json
// mode: text
// command: [ "jq" ]
// }
]
###############################################################
# 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 @@
/Users/corey/Library/Application Support/org.dystroy.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,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,115 @@
###############################################################
# 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: 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,110 @@
###############################################################
# 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: 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)
}

View File

@ -0,0 +1,161 @@
###############################################################
# 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: [
# 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: enter
apply_to: text_file
execution: "$EDITOR {file}"
leave_broot: true
}
# 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
# }
]

186
dot_config/fd/ignore Normal file
View File

@ -0,0 +1,186 @@
# Version control
.git/
.svn/
.hg/
.bzr/
# macOS
.DS_Store
.AppleDouble
.LSOverride
Icon\r
._*
.Spotlight-V100
.Trashes
# Dependencies
node_modules/
vendor/
bower_components/
jspm_packages/
.npm/
.yarn/
# Build outputs
dist/
build/
out/
target/
*.o
*.so
*.dylib
*.dll
*.exe
# IDE and editors
.idea/
.vscode/
*.swp
*.swo
*~
.project
.classpath
.settings/
# Python
__pycache__/
*.py[cod]
*$py.class
.Python
venv/
env/
.virtualenv/
.tox/
.pytest_cache/
# Ruby
.bundle/
.vendor/
Gemfile.lock
# Logs and databases
*.log
*.sqlite
*.sqlite3
*.db
# Temporary files
tmp/
temp/
cache/
.cache/
.tmp/
# Coverage reports
coverage/
.coverage
htmlcov/
.nyc_output/
# Environment files
.env
.env.local
.env.*.local
# Rust
Cargo.lock
target/
# Go
go.sum
vendor/
# Video
*.mp4
*.avi
*.mov
*.mkv
*.flv
*.wmv
*.webm
*.m4v
*.mpg
*.mpeg
*.3gp
# Audio
*.mp3
*.wav
*.flac
*.aac
*.ogg
*.wma
*.m4a
*.opus
*.aiff
*.ape
# Images
*.png
*.jpg
*.jpeg
*.gif
*.bmp
*.svg
*.ico
*.tiff
*.tif
*.webp
*.psd
*.raw
*.heif
*.heic
*.HEIC
# Documents
*.pdf
*.doc
*.docx
*.xls
*.xlsx
*.ppt
*.pptx
*.odt
*.ods
*.odp
# Archives
*.zip
*.tar
*.gz
*.bz2
*.7z
*.rar
*.xz
*.Z
*.deb
*.rpm
*.dmg
*.pkg
*.iso
# Fonts
*.ttf
*.otf
*.woff
*.woff2
*.eot
# Adobe/Design
*.afphoto
*.afdesign
*.ai
*.eps
*.sketch
*.fig
*.xd
# Game files
*.mcpack
*.pak
*.unity3d
# Binary/Compiled
*.bin
*.dat
*.data

8
dot_config/git/config Normal file
View File

@ -0,0 +1,8 @@
[user]
name = Corey Smith
email = corey@coreysmith.design
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true

1
dot_config/git/ignore Normal file
View File

@ -0,0 +1 @@
**/.claude/settings.local.json

View File

@ -0,0 +1,34 @@
tmux:
symbols:
branch: '  '
hashprefix: ':'
ahead: 'ahead '
behind: 'behind '
staged: 'staged '
conflict: 'conflict '
modified: 'modified '
untracked: 'untracked '
stashed: 'stashed '
clean: 'clean'
insertions: Σ
deletions: Δ
styles:
clear: '#[fg=#000000]'
state: '#[fg=#000000]'
branch: '#[fg=#000000]'
remote: '#[fg=#000000]'
divergence: '#[fg=#000000]'
staged: '#[fg=#000000]'
conflict: '#[fg=#000000]'
modified: '#[fg=#000000]'
untracked: '#[fg=#000000]'
stashed: '#[fg=#000000]'
clean: '#[fg=#000000]'
insertions: '#[fg=#000000]'
deletions: '#[fg=#000000]'
layout: [remote-branch, branch]
options:
branch_max_len: 0
branch_trim: right
ellipsis: …
hide_clean: true

View File

View File

@ -0,0 +1,38 @@
-- Auto-hide WezTerm when it loses focus
weztermAppWatcher = hs.application.watcher.new(function(appName, eventType, appObject)
if eventType == hs.application.watcher.deactivated and appName == "WezTerm" then
print("WezTerm lost focus, hiding...")
appObject:hide()
end
end)
weztermAppWatcher:start()
print("WezTerm auto-hide enabled")
-- Function to simulate key presses
local function pressFn(mods, key)
if key == nil then
key = mods
mods = {}
end
return function() hs.eventtap.keyStroke(mods, key, 1000) end
end
-- Function to remap keys
local function remap(mods, key, pressFn)
hs.hotkey.bind(mods, key, pressFn, nil, pressFn)
end
-- Define Caps Lock as the Hyperkey
local hyper = {'ctrl', 'alt', 'cmd'}
-- Remap HJKL to arrow keys using Caps Lock as a Hyperkey
remap(hyper, 'h', pressFn({}, 'left')) -- Move left
remap(hyper, 'j', pressFn({}, 'down')) -- Move down
remap(hyper, 'k', pressFn({}, 'up')) -- Move up
remap(hyper, 'l', pressFn({}, 'right')) -- Move right

View File

@ -0,0 +1,9 @@
(directive) @function
(directive_start) @function
(directive_end) @function
(comment) @comment
((parameter) @include (#set! "priority" 110))
((php_only) @include (#set! "priority" 110))
((bracket_start) @function (#set! "priority" 120))
((bracket_end) @function (#set! "priority" 120))
(keyword) @function

View File

@ -0,0 +1,4 @@
((text) @injection.content
(#not-has-ancestor? @injection.content "envoy")
(#set! injection.combined)
(#set! injection.language php))

View File

@ -0,0 +1,571 @@
-------------------------------------------------------------------------------
-- Neovim Colorscheme for Little Plummer Creek Studio
-------------------------------------------------------------------------------
--
-- Jump To:
-- 1. Setup
-- 2. Palette
-- 3. Groups
-- 4. Do the Thing!
--
-------------------------------------------------------------------------------
-- Setup
-------------------------------------------------------------------------------
--
-- Setup the Colorscheme boilerplate. This is a light theme.
--
vim.cmd('highlight clear')
if vim.fn.exists('syntax_on') then
vim.cmd('syntax reset')
end
vim.o.background = 'light'
vim.g.colors_name = 'lpcstudio'
-------------------------------------------------------------------------------
-- Palette
-------------------------------------------------------------------------------
--
-- Define the Palette as hue to be used in highlight groups. Based on the
-- TailwindCSS colors at https://tailwindcss.com/docs/customizing-colors
--
local hue = {
base = {
["50"] = "#FDFDFF",
["100"] = "#F7F8FA",
["200"] = "#EBECF0",
["250"] = "#DCDDE1",
["300"] = "#CCCDD1",
["350"] = "#BDBFC4",
["400"] = "#A3A6AE",
["500"] = "#80838B",
["600"] = "#696C74",
["700"] = "#54575F",
["800"] = "#3E4149",
["900"] = "#2B2E35",
["950"] = "#1A1C22",
},
slate = {
["50"] = "#f8fafc",
["100"] = "#f1f5f9",
["200"] = "#e2e8f0",
["300"] = "#cbd5e1",
["400"] = "#94a3b8",
["450"] = "#6C7C94",
["500"] = "#64748b",
["600"] = "#475569",
["700"] = "#334155",
["800"] = "#1e293b",
["900"] = "#0f172a",
["950"] = "#020617",
},
gray = {
["50"] = "#f9fafb",
["100"] = "#f3f4f6",
["200"] = "#e5e7eb",
["300"] = "#d1d5db",
["400"] = "#9ca3af",
["500"] = "#6b7280",
["600"] = "#4b5563",
["700"] = "#374151",
["800"] = "#1f2937",
["900"] = "#111827",
["950"] = "#030712",
},
zinc = {
["50"] = "#fafafa",
["100"] = "#f4f4f5",
["200"] = "#e4e4e7",
["300"] = "#d4d4d8",
["400"] = "#a1a1aa",
["500"] = "#71717a",
["600"] = "#52525b",
["700"] = "#3f3f46",
["800"] = "#27272a",
["900"] = "#18181b",
["950"] = "#09090b",
},
neutral = {
["50"] = "#fafafa",
["100"] = "#f5f5f5",
["200"] = "#e5e5e5",
["300"] = "#d4d4d4",
["400"] = "#a3a3a3",
["500"] = "#737373",
["600"] = "#525252",
["700"] = "#404040",
["800"] = "#262626",
["900"] = "#171717",
["950"] = "#0a0a0a",
},
stone = {
["50"] = "#fafaf9",
["100"] = "#f5f5f4",
["200"] = "#e7e5e4",
["300"] = "#d6d3d1",
["400"] = "#a8a29e",
["500"] = "#78716c",
["600"] = "#57534e",
["700"] = "#44403c",
["800"] = "#292524",
["900"] = "#1c1917",
["950"] = "#0c0a09",
},
red = {
["50"] = "#fef2f2",
["100"] = "#fee2e2",
["200"] = "#fecaca",
["300"] = "#fca5a5",
["400"] = "#f87171",
["500"] = "#ef4444",
["600"] = "#dc2626",
["700"] = "#b91c1c",
["800"] = "#991b1b",
["900"] = "#7f1d1d",
["950"] = "#450a0a",
},
orange = {
["50"] = "#fff7ed",
["100"] = "#ffedd5",
["200"] = "#fed7aa",
["300"] = "#fdba74",
["400"] = "#fb923c",
["500"] = "#f97316",
["600"] = "#ea580c",
["700"] = "#c2410c",
["800"] = "#9a3412",
["900"] = "#7c2d12",
["950"] = "#431407",
},
amber = {
["50"] = "#fffbeb",
["100"] = "#fef3c7",
["200"] = "#fde68a",
["300"] = "#fcd34d",
["400"] = "#fbbf24",
["500"] = "#f59e0b",
["600"] = "#d97706",
["700"] = "#b45309",
["800"] = "#92400e",
["900"] = "#78350f",
["950"] = "#451a03",
},
yellow = {
["50"] = "#fefce8",
["100"] = "#fef9c3",
["200"] = "#fef08a",
["300"] = "#fde047",
["400"] = "#facc15",
["500"] = "#eab308",
["600"] = "#ca8a04",
["700"] = "#a16207",
["800"] = "#854d0e",
["900"] = "#713f12",
["950"] = "#422006",
},
lime = {
["50"] = "#f7fee7",
["100"] = "#ecfccb",
["200"] = "#d9f99d",
["300"] = "#bef264",
["400"] = "#a3e635",
["500"] = "#84cc16",
["600"] = "#65a30d",
["700"] = "#4d7c0f",
["800"] = "#3f6212",
["900"] = "#365314",
["950"] = "#1a2e05",
},
green = {
["50"] = "#f0fdf4",
["100"] = "#dcfce7",
["200"] = "#bbf7d0",
["300"] = "#86efac",
["400"] = "#4ade80",
["500"] = "#22c55e",
["600"] = "#16a34a",
["700"] = "#15803d",
["800"] = "#166534",
["900"] = "#14532d",
["950"] = "#052e16",
},
emerald = {
["50"] = "#ecfdf5",
["100"] = "#d1fae5",
["200"] = "#a7f3d0",
["300"] = "#6ee7b7",
["400"] = "#34d399",
["500"] = "#10b981",
["600"] = "#059669",
["700"] = "#047857",
["800"] = "#065f46",
["900"] = "#064e3b",
["950"] = "#022c22",
},
teal = {
["50"] = "#f0fdfa",
["100"] = "#ccfbf1",
["200"] = "#99f6e4",
["300"] = "#5eead4",
["400"] = "#2dd4bf",
["500"] = "#14b8a6",
["600"] = "#0d9488",
["700"] = "#0f766e",
["800"] = "#115e59",
["900"] = "#134e4a",
["950"] = "#042f2e",
},
cyan = {
["50"] = "#ecfeff",
["100"] = "#cffafe",
["200"] = "#a5f3fc",
["300"] = "#67e8f9",
["400"] = "#22d3ee",
["500"] = "#06b6d4",
["600"] = "#0891b2",
["700"] = "#0e7490",
["800"] = "#155e75",
["900"] = "#164e63",
["950"] = "#083344",
},
sky = {
["50"] = "#f0f9ff",
["100"] = "#e0f2fe",
["200"] = "#bae6fd",
["300"] = "#7dd3fc",
["400"] = "#38bdf8",
["500"] = "#0ea5e9",
["600"] = "#0284c7",
["700"] = "#0369a1",
["800"] = "#075985",
["900"] = "#0c4a6e",
["950"] = "#082f49",
},
blue = {
["50"] = "#eff6ff",
["100"] = "#dbeafe",
["200"] = "#bfdbfe",
["300"] = "#93c5fd",
["400"] = "#60a5fa",
["500"] = "#3b82f6",
["600"] = "#2563eb",
["700"] = "#1d4ed8",
["800"] = "#1e40af",
["900"] = "#1e3a8a",
["950"] = "#172554",
},
indigo = {
["50"] = "#eef2ff",
["100"] = "#e0e7ff",
["200"] = "#c7d2fe",
["300"] = "#a5b4fc",
["400"] = "#818cf8",
["500"] = "#6366f1",
["600"] = "#4f46e5",
["700"] = "#4338ca",
["800"] = "#3730a3",
["900"] = "#312e81",
["950"] = "#1e1b4b",
},
violet = {
["50"] = "#f5f3ff",
["100"] = "#ede9fe",
["200"] = "#ddd6fe",
["300"] = "#c4b5fd",
["400"] = "#a78bfa",
["500"] = "#8b5cf6",
["600"] = "#7c3aed",
["700"] = "#6d28d9",
["800"] = "#5b21b6",
["900"] = "#4c1d95",
["950"] = "#2e1065",
},
purple = {
["50"] = "#faf5ff",
["100"] = "#f3e8ff",
["200"] = "#e9d5ff",
["300"] = "#d8b4fe",
["400"] = "#c084fc",
["500"] = "#a855f7",
["600"] = "#9333ea",
["700"] = "#7e22ce",
["800"] = "#6b21a8",
["900"] = "#581c87",
["950"] = "#3b0764",
},
fuchsia = {
["50"] = "#fdf4ff",
["100"] = "#fae8ff",
["200"] = "#f5d0fe",
["300"] = "#f0abfc",
["400"] = "#e879f9",
["500"] = "#d946ef",
["600"] = "#c026d3",
["700"] = "#a21caf",
["800"] = "#86198f",
["900"] = "#701a75",
["950"] = "#4a044e",
},
pink = {
["50"] = "#fdf2f8",
["100"] = "#fce7f3",
["200"] = "#fbcfe8",
["300"] = "#f9a8d4",
["400"] = "#f472b6",
["500"] = "#ec4899",
["600"] = "#db2777",
["700"] = "#be185d",
["800"] = "#9d174d",
["900"] = "#831843",
["950"] = "#500724",
},
rose = {
["50"] = "#fff1f2",
["100"] = "#ffe4e6",
["200"] = "#fecdd3",
["300"] = "#fda4af",
["400"] = "#fb7185",
["500"] = "#f43f5e",
["600"] = "#e11d48",
["700"] = "#be123c",
["800"] = "#9f1239",
["900"] = "#881337",
["950"] = "#4c0519",
},
}
-------------------------------------------------------------------------------
-- Groups
-------------------------------------------------------------------------------
--
-- Let's get down to business. Define highlight groups using the palette
-- we worked so hard on. Access colors with `hue.base["shade"]`. Example:
--
-- Normal = { fg = hue.base["500"], bg = "NONE", bold = true }
--
local groups = {
-------------------------------------------------------------------------------
-- Cursor Line
-------------------------------------------------------------------------------
CursorLine = {},
-------------------------------------------------------------------------------
-- Matching Parentheses
-------------------------------------------------------------------------------
MatchParen = { fg = 0 },
-------------------------------------------------------------------------------
-- Sign Column
-------------------------------------------------------------------------------
SignColumn = { fg = 0 },
-------------------------------------------------------------------------------
-- Normal Text
-------------------------------------------------------------------------------
Normal = { fg = hue.base["900"] },
-------------------------------------------------------------------------------
-- Vertical Splits
-------------------------------------------------------------------------------
VertSplit = { fg = hue.base["400"] },
WinSeparator = { fg = hue.base["400"] },
-------------------------------------------------------------------------------
-- Floating Window Borders
-------------------------------------------------------------------------------
FloatBorder = { fg = hue.base["600"], bg = hue.base["100"] },
-------------------------------------------------------------------------------
-- Search
-------------------------------------------------------------------------------
Search = { fg = hue.base["600"], bg = hue.amber["200"] },
-------------------------------------------------------------------------------
-- Visual Highlighting
-------------------------------------------------------------------------------
Visual = { bg = hue.base["300"] },
-------------------------------------------------------------------------------
-- End of Buffers
-------------------------------------------------------------------------------
EndOfBuffer = { fg = hue.base["900"] },
-------------------------------------------------------------------------------
-- Popup Menu
-------------------------------------------------------------------------------
Pmenu = { fg = hue.neutral["100"], bg = hue.neutral["500"], italic = true },
PmenuSel = { fg = hue.neutral["100"], bg = hue.blue["500"], italic = true },
PmenuSbar = { bg = hue.neutral["500"] },
PmenuThumb = { bg = hue.neutral["500"] },
-------------------------------------------------------------------------------
-- Tab Line
-------------------------------------------------------------------------------
TabLine = { fg = hue.base["400"], bg = hue.base["700"] },
TabLineFill = { fg = hue.base["100"], bg = hue.base["700"] },
TabLineSel = { fg = hue.base["100"], bg = hue.base["600"], bold = true },
-------------------------------------------------------------------------------
-- Line Numbers
-------------------------------------------------------------------------------
LineNr = { fg = hue.base["500"] },
LineNrAbove = { fg = hue.base["500"] },
LineNrBelow = { fg = hue.base["500"] },
CursorLineNr = { fg = hue.base["500"] },
-------------------------------------------------------------------------------
-- Status Line
-------------------------------------------------------------------------------
StatusLine = { fg = hue.base["200"], bg = hue.base["700"] },
StatusLineNC = { fg = hue.base["200"], bg = hue.base["700"] },
-------------------------------------------------------------------------------
-- Syntax
-------------------------------------------------------------------------------
Boolean = { fg = hue.yellow["800"] },
Comment = { fg = hue.base["500"] },
Conditional = { fg = hue.fuchsia["800"] },
Constant = { fg = hue.amber["800"] },
Debug = {},
Define = {},
Delimiter = {},
Error = {},
Exception = {},
Float = {},
Function = { fg = hue.rose["800"] },
Identifier = { fg = hue.rose["800"] },
Ignore = {},
Include = { fg = hue.fuchsia["800"], bold = true },
Keyword = { fg = hue.sky["800"], bold = true },
Label = { fg = hue.rose["800"] },
Macro = {},
Number = { fg = hue.yellow["800"] },
Operator = {},
PreCondit = {},
PreProc = {},
Repeat = {},
Special = { fg = hue.cyan["800"] },
SpecialChar = {},
SpecialComment = {},
Statement = {},
StorageClass = { fg = hue.sky["800"], bold = true },
String = { fg = hue.lime["700"] },
Structure = { fg = hue.sky["800"], bold = true },
Tag = { fg = hue.rose["800"] },
Title = { bold = true },
Todo = {},
Type = { fg = hue.sky["800"] },
Typedef = {},
Underlined = { fg = hue.blue["800"], underline = true },
-------------------------------------------------------------------------------
-- Diffs
-------------------------------------------------------------------------------
Added = { fg = hue.green["700"] },
Changed = { fg = hue.sky["700"] },
Removed = { fg = hue.red["800"] },
-------------------------------------------------------------------------------
-- Diagnosticles
-------------------------------------------------------------------------------
DiagnosticError = { fg = hue.red["300"], italic = true },
DiagnosticWarn = { fg = hue.orange["300"], italic = true },
DiagnosticHint = { fg = hue.amber["300"], italic = true },
DiagnosticInfo = { fg = hue.base["300"], italic = true },
DiagnosticUnderlineWarn = { bg = hue.amber["100"] },
DiagnosticUnderlineHint = { bg = hue.amber["100"] },
DiagnosticUnnecessary = { bg = hue.amber["100"] },
-- Trouble Plugin
-------------------------------------------------------------------------------
TroubleFile = { fg = hue.base["900"], bold = true },
TroubleCount = { fg = hue.base["400"], bold = true },
TroubleSignError = { fg = hue.red["600"] },
TroubleSignWarning = { fg = hue.orange["600"] },
TroubleSignHint = { fg = hue.amber["600"] },
TroubleSignInfo = { fg = hue.base["600"] },
-------------------------------------------------------------------------------
-- Diff
-------------------------------------------------------------------------------
GitSignsAdd = { fg = hue.lime["400"] },
GitSignsDelete = { fg = hue.red["400"] },
GitSignsChange = { fg = hue.blue["400"] },
GitSignsText = { fg = hue.base["400"] },
-------------------------------------------------------------------------------
-- NvimTree Plugin
-------------------------------------------------------------------------------
NvimTreeCursorLine = { fg = hue.base["100"], bg = hue.base["400"] },
NvimTreeNormal = { fg = hue.base["950"] },
NvimTreeFolderIcon = { fg = hue.base["950"] },
NvimTreeFileIcon = { fg = hue.base["950"] },
NvimTreeFolderName = { fg = hue.base["950"] },
NvimTreeEmptyFolder = { fg = hue.base["950"] },
NvimTreeEmptyFolderName = { fg = hue.base["950"] },
NvimTreeOpenedFile = { fg = hue.base["950"] },
NvimTreeOpenedFolderName = { fg = hue.base["950"] },
NvimTreeSpecialFile = { fg = hue.base["950"] },
NvimTreeSymlink = { fg = hue.base["950"] },
NvimTreeFile = { fg = hue.base["950"] },
NvimTreeFileDeleted = { fg = hue.base["950"] },
NvimTreeFileDirty = { fg = hue.base["950"] },
NvimTreeFileMerge = { fg = hue.base["950"] },
NvimTreeFileRenamed = { fg = hue.base["950"] },
NvimTreeFileStaged = { fg = hue.base["950"] },
NvimTreeExecFile = { fg = hue.base["950"] },
NvimTreeWindowPicker = { fg = hue.base["100"], bg = hue.base["900"] },
}
-------------------------------------------------------------------------------
-- Set all the colors
-------------------------------------------------------------------------------
--
-- Zhu li! Do the thing!
--
for group, settings in pairs(groups) do
vim.api.nvim_set_hl(0, group, settings)
end
-------------------------------------------------------------------------------
-- Manage NvimTree colors on enter and exit
-------------------------------------------------------------------------------
--
--
--
local nvimTreeCursorLine = vim.api.nvim_create_augroup("NvimTreeCursorLine", {
clear = true
})
vim.api.nvim_create_autocmd("BufEnter", {
pattern = "NvimTree_1",
callback = function()
vim.cmd("setlocal cursorline")
vim.api.nvim_set_hl(0, "NvimTreeCursorLine", {
fg = hue.base["100"], bg = hue.blue["500"]
})
end,
group = nvimTreeCursorLine,
})
vim.api.nvim_create_autocmd("BufLeave", {
pattern = "NvimTree_1",
callback = function()
vim.api.nvim_set_hl(0, "NvimTreeCursorLine", {
fg = hue.base["900"], bg = hue.base["250"]
})
end,
group = nvimTreeCursorLine,
})

View File

@ -0,0 +1,6 @@
local space = 2
vim.opt.shiftwidth = space
vim.opt.tabstop = space
vim.opt.softtabstop = space
vim.opt.expandtab = true
vim.opt.shiftround = true

View File

@ -0,0 +1,4 @@
vim.opt_local.expandtab = false
vim.opt_local.shiftwidth = 4
vim.opt_local.tabstop = 4
vim.opt_local.softtabstop = 0

View File

@ -0,0 +1,6 @@
local space = 2
vim.opt.shiftwidth = space
vim.opt.tabstop = space
vim.opt.softtabstop = space
vim.opt.expandtab = true
vim.opt.shiftround = true

View File

587
dot_config/nvim/init.lua Normal file
View File

@ -0,0 +1,587 @@
-- -----------------------------------------------------------------------------
-- mini.nvim
-- -----------------------------------------------------------------------------
--
-- This Neovim configuration leans heavily on the mini.nvim ecosystem.
--
-- Installing mini.nvim and all its modules allows us to load each module with
-- a simple 'require('mini.module').setup()'. Using the mini.deps module allows
-- for adding plugins using the `MiniDeps.add()` function followed by the same
-- 'require('plugin').setup()'. Pass a config to setup to configure modules and
-- plugins, for example `require('plugin').setup.({config})`.
--
-- See `https://github.com/echasnovski/mini.nvim`
--
local path_package = vim.fn.stdpath('data') .. '/site'
local mini_path = path_package .. '/pack/deps/start/mini.nvim'
if not vim.loop.fs_stat(mini_path) then
vim.cmd('echo "Installing `mini.nvim`" | redraw')
local clone_cmd = {
'git', 'clone', '--filter=blob:none',
'https://github.com/echasnovski/mini.nvim', mini_path
}
vim.fn.system(clone_cmd)
vim.cmd('packadd mini.nvim | helptags ALL')
end
-- -----------------------------------------------------------------------------
-- mini.deps
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.deps`
--
local deps = require('mini.deps')
deps.setup()
-- -----------------------------------------------------------------------------
-- mini.ai
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.ai`
--
local ai = require('mini.ai')
ai.setup()
-- -----------------------------------------------------------------------------
-- mini.basics
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.basics`
--
local basics = require('mini.basics')
basics.setup()
-- -----------------------------------------------------------------------------
-- mini.completion
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.completion`
--
local completion = require('mini.completion')
completion.setup()
-- -----------------------------------------------------------------------------
-- mini.diff
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.diff`
--
local diff = require('mini.diff')
diff.setup()
-- -----------------------------------------------------------------------------
-- mini.git
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.git`
--
local git = require('mini.git')
git.setup()
-- -----------------------------------------------------------------------------
-- mini.hipatterns
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.hipatterns`
--
local hipatterns = require('mini.hipatterns')
hipatterns.setup({
highlighters = {
hex_color = hipatterns.gen_highlighter.hex_color(),
}
})
-- -----------------------------------------------------------------------------
-- mini.indentscope
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.indentscope`
--
local indentscope = require('mini.indentscope')
indentscope.setup()
-- -----------------------------------------------------------------------------
-- mini.pairs
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.pairs`
--
local pairs = require('mini.pairs')
pairs.setup()
-- -----------------------------------------------------------------------------
-- mini.surround
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.surround`
--
local surround = require('mini.surround')
surround.setup()
-- -----------------------------------------------------------------------------
-- mini.statusline
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/echasnovski/mini.statusline`
--
local special_filetypes = {
'NvimTree',
'NeoTree',
'Trouble'
}
local function is_special_filetype(filetype)
for _, special_filetype in ipairs(special_filetypes) do
if filetype == special_filetype then
return true
end
end
return false
end
local function get_position_indicator()
local filetype = vim.bo.filetype
if is_special_filetype(filetype) then
return ""
end
local space_or_tab = vim.bo.expandtab and "S" or "T"
local shiftwidth = vim.bo.shiftwidth
local row, col = vim.fn.line('.'), vim.fn.col('.')
return space_or_tab .. shiftwidth .. ' ' .. string.format("%d:%d", row, col) .. ' '
end
local function get_filename()
local filetype = vim.bo.filetype
local symbol = vim.bo.readonly and " [-] " or (vim.bo.modified and " [+] " or "")
if filetype == '' then
return "[scratch]" .. symbol
elseif is_special_filetype(filetype) then
return filetype
else
return vim.fn.expand('%:.') .. symbol
end
end
-- Set up mini.statusline
require('mini.statusline').setup({
content = {
active = function()
local filetype = vim.bo.filetype
-- For special filetypes, return a simplified statusline
if is_special_filetype(filetype) then
return get_filename()
end
-- For regular files, construct the full statusline
return string.format(
' %s%s%s',
get_filename(), -- filename with modification symbol
'%=', -- middle spacing
get_position_indicator() -- position indicator
)
end,
inactive = function()
-- For inactive windows, show a simpler statusline
return string.format(
' %s%s%s',
get_filename(), -- filename with modification symbol
'%=', -- middle spacing
get_position_indicator() -- position indicator
)
end,
},
use_icons = true,
set_vim_settings = true,
})
-- -----------------------------------------------------------------------------
-- nvim-lspconfig
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/neovim/nvim-lspconfig`
--
MiniDeps.add({
source = 'neovim/nvim-lspconfig',
})
vim.lsp.config('luals', {
cmd = {'lua-language-server'},
filetypes = {'lua'},
root_markers = {'.luarc.json', '.luarc.jsonc'},
settings = {
Lua = {
diagnostics = {
globals = {'vim', 'MiniDeps'}
}
}
}
})
vim.lsp.enable('luals')
vim.lsp.config('gopls', {
cmd = {'gopls'},
filetypes = {'go', 'gomod', 'gowork', 'gotmpl'},
root_markers = {'go.mod', '.git'},
settings = {
gopls = {
analyses = {
unusedparams = true,
},
staticcheck = true,
},
},
})
vim.lsp.enable('gopls')
-- -----------------------------------------------------------------------------
-- nvim-treesitter
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/nvim-treesitter/nvim-treesitter`
--
MiniDeps.add({
source = 'nvim-treesitter/nvim-treesitter',
checkout = 'master',
monitor = 'main',
hooks = {
post_checkout = function()
vim.cmd('TSUpdate')
end
},
})
-- Add the custom Blade parser
local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
parser_config.blade = {
install_info = {
url = "https://github.com/EmranMR/tree-sitter-blade", -- Community parser repo
files = { "src/parser.c" },
branch = "main",
},
filetype = "blade",
}
-- Treesitter setup
require('nvim-treesitter.configs').setup({
auto_install = true, -- Automatically install missing parsers
ensure_installed = {
'bash',
'c',
'c_sharp',
'css',
'csv',
'dockerfile',
'editorconfig',
'git_config',
'gitcommit',
'gitignore',
'go',
'graphql',
'html',
'javascript',
'jq',
'jsdoc',
'json',
'lua',
'luadoc',
'markdown',
'markdown_inline',
'nginx',
'php',
'phpdoc',
'python',
'query',
'ruby',
'rust',
'scss',
'sql',
'tmux',
'toml',
'typescript',
'vim',
'vimdoc',
'xml',
'yaml',
'blade', -- Add blade here
},
highlight = {
enable = true, -- Enable syntax highlighting
},
indent = {
enable = false, -- Disable indentation for now
},
})
-- Set filetype for Blade files
vim.cmd [[autocmd BufRead,BufNewFile *.blade.php set filetype=blade]]
-- -----------------------------------------------------------------------------
-- tmux.nvim
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/aserowy/tmux.nvim`
--
MiniDeps.add({ source = 'aserowy/tmux.nvim' })
require('tmux').setup({})
-- Terminal Keymaps
vim.keymap.set("t", "<c-j>", "<c-\\><c-n><c-w>j", {noremap = true})
vim.keymap.set("t", "<c-h>", "<c-\\><c-n><c-w>h", {noremap = true})
vim.keymap.set("t", "<c-k>", "<c-\\><c-n><c-w>k", {noremap = true})
vim.keymap.set("t", "<c-l>", "<c-\\><c-n><c-w>l", {noremap = true})
-- -----------------------------------------------------------------------------
-- Oil
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/stevearc/oil.nvim`
--
MiniDeps.add({ source = 'stevearc/oil.nvim' })
require('oil').setup({
skip_confirm_for_simple_edits = true,
prompt_save_on_select_new_entry = false,
delete_to_trash = true,
confirmation = {
border = "double",
},
view_options = {
show_hidden = true,
sort = {
{
"name", "asc"
},
},
}
})
vim.keymap.set("n", "-", "<CMD>Oil<CR>", { desc = "Open parent directory" })
-- -----------------------------------------------------------------------------
-- Neogit
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/NeogitOrg/neogit`
--
MiniDeps.add({ source = 'nvim-lua/plenary.nvim' })
MiniDeps.add({ source = 'NeogitOrg/neogit' })
require('neogit').setup({
integrations = {
fzf_lua = true, -- Use your existing fzf-lua
},
})
-- -----------------------------------------------------------------------------
-- FZF Lua
-- -----------------------------------------------------------------------------
--
-- See `https://github.com/ibhagwan/fzf-lua`
--
MiniDeps.add({
source = 'ibhagwan/fzf-lua'
})
require('fzf-lua').setup({
fzf_bin = 'fzf', -- Use system fzf (not embedded)
-- Make it fill the screen like terminal fzf
winopts = {
height = 1.0, -- Full height
width = 1.0, -- Full width
row = 0, -- Top of screen
col = 0, -- Left of screen
border = 'none', -- No border (like terminal)
preview = {
border = 'double',
title = false, -- Remove the preview title
title_pos = false,
}
},
-- Let fzf handle the layout/preview like in terminal
fzf_opts = {
-- Remove fzf-lua's default overrides to use your terminal config
['--height'] = false, -- Don't override height
['--layout'] = false, -- Don't override layout
['--border'] = false, -- Don't override border
['--info'] = false, -- Don't override info position
},
-- Ensure previews work like your terminal setup
files = {
-- preview_opts = 'hidden', -- Let fzf handle preview
},
})
vim.keymap.set("n", "<leader>f", "<cmd>FzfLua files<cr>", { desc = "Search Files" })
vim.keymap.set("n", "<leader>o", "<cmd>FzfLua oldfiles<cr>", { desc = "List Recent Files" })
vim.keymap.set("n", "<leader>b", "<cmd>FzfLua buffers<cr>", { desc = "List Buffers" })
vim.keymap.set("n", "<leader>g", "<cmd>FzfLua live_grep<cr>", { desc = "List Matched Strings" })
vim.keymap.set("n", "<leader>d", "<cmd>FzfLua lsp_diagnostics<cr>", { desc = "List Diagnostics" })
-- -----------------------------------------------------------------------------
-- VimWiki
-- -----------------------------------------------------------------------------
--
--
--
-- MiniDeps.add({
-- source = 'vimwiki/vimwiki'
-- })
--
-- require('vimwiki').setup()
-- -----------------------------------------------------------------------------
-- Set Colorscheme
-- -----------------------------------------------------------------------------
--
-- Use the custom colorscheme at `nvim/colors/lpcstudio`
--
vim.cmd 'colorscheme lpcstudio'
-- -----------------------------------------------------------------------------
-- Disable swapfile
-- -----------------------------------------------------------------------------
--
-- The swapfiles seem unneeded with my local development environment. Crashes
-- are rare, and the files are combersome.
--
vim.opt.swapfile = false
-- -----------------------------------------------------------------------------
-- Show the mode in the command line
-- -----------------------------------------------------------------------------
--
-- I like seeing the mode in the bottom left and not following me around.
-- I generally know what mode I'm in and don't need a vibrant hint.
--
vim.opt.showmode = true
-- -----------------------------------------------------------------------------
-- Make cursor blink
-- -----------------------------------------------------------------------------
--
-- Sometimes on a big monitor I have trouble finding cursors. This helps.
--
vim.cmd [[ set guicursor+=a:blinkon1 ]]
-- -----------------------------------------------------------------------------
-- Automatically resize windows
-- -----------------------------------------------------------------------------
--
--
vim.api.nvim_create_autocmd("VimResized", {
command = "wincmd =",
})
-- -----------------------------------------------------------------------------
-- Default Spacing
-- -----------------------------------------------------------------------------
--
--
--
local space = 4
vim.opt.shiftwidth = space
vim.opt.tabstop = space
vim.opt.softtabstop = space
vim.opt.expandtab = true
vim.opt.shiftround = true
-- -----------------------------------------------------------------------------
-- Keymaps
-- -----------------------------------------------------------------------------
--
--
--
vim.keymap.set('i', '<F15>', '<C-o>o', { noremap = true, silent = true, desc = "Open new line below (Shift+Enter)" })
-- -----------------------------------------------------------------------------
-- Open Help buffers to the right
-- -----------------------------------------------------------------------------
--
--
vim.api.nvim_create_autocmd("FileType", {
desc = "Automatically Split help Buffers to the right",
pattern = "help",
command = "wincmd L",
})
-- -----------------------------------------------------------------------------
-- Search highlight remove on cursor move
-- -----------------------------------------------------------------------------
--
--
local function augroup(name, fnc)
fnc(vim.api.nvim_create_augroup(name, { clear = true }))
end
augroup("ibhagwan/ToggleSearchHL", function(g)
vim.api.nvim_create_autocmd("InsertEnter", {
group = g,
callback = function()
vim.schedule(function() vim.cmd("nohlsearch") end)
end
})
vim.api.nvim_create_autocmd("CursorMoved", {
group = g,
callback = function()
local view, rpos = vim.fn.winsaveview(), vim.fn.getpos(".")
vim.cmd(string.format("silent! keepjumps go%s",
(vim.fn.line2byte(view.lnum) + view.col + 1 - (vim.v.searchforward == 1 and 2 or 0))))
local ok, _ = pcall(vim.cmd, "silent! keepjumps norm! n")
local insearch = ok and (function()
local npos = vim.fn.getpos(".")
return npos[2] == rpos[2] and npos[3] == rpos[3]
end)()
vim.fn.winrestview(view)
if not insearch then
vim.schedule(function() vim.cmd("nohlsearch") end)
end
end
})
end)

View File

@ -0,0 +1,8 @@
return {
'stevearc/conform.nvim',
opts = {
formatters_by_ft = {
blade = { "blade-formatter" }
},
},
}

View File

@ -0,0 +1,2 @@
Coeur dAlene
diminishment

Binary file not shown.

View File

@ -0,0 +1,16 @@
-- Enable modern command-line completion
vim.opt.wildmode = { "longest", "full" }
vim.opt.wildmenu = true
vim.opt.wildoptions = "pum"
vim.opt.pumblend = 10
vim.opt.pumheight = 10
-- Enhanced command-line completion
vim.keymap.set('c', '<C-p>', '<Up>', { noremap = true })
vim.keymap.set('c', '<C-n>', '<Down>', { noremap = true })
-- Set up better command-line experience
vim.opt.cmdheight = 1
vim.opt.laststatus = 2
vim.opt.showmode = true
vim.opt.showcmd = true

View File

@ -0,0 +1,107 @@
# This is a demo config to showcase some of the most important commands.
# It is meant to be changed and configured, as it is intentionally kept sparse.
# For a (much) more advanced configuration example see my dotfiles:
# https://github.com/FelixKratz/dotfiles
PLUGIN_DIR="$CONFIG_DIR/plugins"
##### Bar Appearance #####
# Configuring the general appearance of the bar.
# These are only some of the options available. For all options see:
# https://felixkratz.github.io/SketchyBar/config/bar
# If you are looking for other colors, see the color picker:
# https://felixkratz.github.io/SketchyBar/config/tricks#color-picker
sketchybar --bar position=top height=48 blur_radius=30 color=0x40000000
##### Changing Defaults #####
# We now change some default values, which are applied to all further items.
# For a full list of all available item properties see:
# https://felixkratz.github.io/SketchyBar/config/items
default=(
padding_left=5
padding_right=5
icon.font="Symbols Nerd Font:Regular:14.0"
label.font=".AppleSystemUIFont:Medium:14.0"
icon.color=0xffffffff
label.color=0xffffffff
icon.padding_left=4
icon.padding_right=4
label.padding_left=4
label.padding_right=4
y_offset=6
)
sketchybar --default "${default[@]}"
##### Adding Mission Control Space Indicators #####
# Let's add some mission control spaces:
# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item
# to indicate active and available mission control spaces.
# SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10")
# for i in "${!SPACE_ICONS[@]}"
# do
# sid="$(($i+1))"
# space=(
# space="$sid"
# icon="${SPACE_ICONS[i]}"
# icon.padding_left=7
# icon.padding_right=7
# background.color=0x40ffffff
# background.corner_radius=5
# background.height=25
# label.drawing=off
# script="$PLUGIN_DIR/space.sh"
# click_script="yabai -m space --focus $sid"
# )
# sketchybar --add space space."$sid" left --set space."$sid" "${space[@]}"
# done
sketchybar --add event aerospace_workspace_change
for sid in $(aerospace list-workspaces --all); do
sketchybar --add item space.$sid left \
--subscribe space.$sid aerospace_workspace_change \
--set space.$sid \
background.color=0x44ffffff \
background.corner_radius=5 \
background.height=20 \
background.drawing=off \
label="$sid" \
click_script="aerospace workspace $sid" \
script="$CONFIG_DIR/plugins/aerospace.sh $sid"
done
##### Adding Left Items #####
# We add some regular items to the left side of the bar, where
# only the properties deviating from the current defaults need to be set
sketchybar --add item chevron left \
--set chevron icon="" label.drawing=off \
--add item front_app left \
--set front_app icon.drawing=off script="$PLUGIN_DIR/front_app.sh" \
--subscribe front_app front_app_switched
##### Adding Right Items #####
# In the same way as the left items we can add items to the right side.
# Additional position (e.g. center) are available, see:
# https://felixkratz.github.io/SketchyBar/config/items#adding-items-to-sketchybar
# Some items refresh on a fixed cycle, e.g. the clock runs its script once
# every 10s. Other items respond to events they subscribe to, e.g. the
# volume.sh script is only executed once an actual change in system audio
# volume is registered. More info about the event system can be found here:
# https://felixkratz.github.io/SketchyBar/config/events
sketchybar --add item clock right \
--set clock update_freq=10 icon=" " script="$PLUGIN_DIR/clock.sh" \
# --add item volume right \
# --set volume script="$PLUGIN_DIR/volume.sh" \
--subscribe volume volume_change \
--add item battery right \
--set battery update_freq=120 script="$PLUGIN_DIR/battery.sh" \
--subscribe battery system_woke power_source_change
##### Force all scripts to run the first time (never do this in a script) #####
sketchybar --update

View File

@ -0,0 +1,10 @@
#!/usr/bin/env bash
# make sure it's executable with:
# chmod +x ~/.config/sketchybar/plugins/aerospace.sh
if [ "$1" = "$FOCUSED_WORKSPACE" ]; then
sketchybar --set $NAME background.drawing=on
else
sketchybar --set $NAME background.drawing=off
fi

View File

@ -0,0 +1,28 @@
#!/bin/sh
PERCENTAGE="$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1)"
CHARGING="$(pmset -g batt | grep 'AC Power')"
if [ "$PERCENTAGE" = "" ]; then
exit 0
fi
case "${PERCENTAGE}" in
9[0-9]|100) ICON=""
;;
[6-8][0-9]) ICON=""
;;
[3-5][0-9]) ICON=""
;;
[1-2][0-9]) ICON=""
;;
*) ICON=""
esac
if [[ "$CHARGING" != "" ]]; then
ICON=""
fi
# The item invoking this script (name $NAME) will get its icon and label
# updated with the current battery status
sketchybar --set "$NAME" icon="$ICON" label="${PERCENTAGE}%"

View File

@ -0,0 +1,8 @@
#!/bin/sh
# The $NAME variable is passed from sketchybar and holds the name of
# the item invoking this script:
# https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting
sketchybar --set "$NAME" label="$(date '+%d/%m %H:%M')"

View File

@ -0,0 +1,10 @@
#!/bin/sh
# Some events send additional information specific to the event in the $INFO
# variable. E.g. the front_app_switched event sends the name of the newly
# focused application in the $INFO variable:
# https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting
if [ "$SENDER" = "front_app_switched" ]; then
sketchybar --set "$NAME" label="$INFO"
fi

View File

@ -0,0 +1,7 @@
#!/bin/sh
# The $SELECTED variable is available for space components and indicates if
# the space invoking this script (with name: $NAME) is currently selected:
# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item
sketchybar --set "$NAME" background.drawing="$SELECTED"

View File

@ -0,0 +1,20 @@
#!/bin/sh
# The volume_change event supplies a $INFO variable in which the current volume
# percentage is passed to the script.
if [ "$SENDER" = "volume_change" ]; then
VOLUME="$INFO"
case "$VOLUME" in
[6-9][0-9]|100) ICON="󰕾"
;;
[3-5][0-9]) ICON="󰖀"
;;
[1-9]|[1-2][0-9]) ICON="󰕿"
;;
*) ICON="󰖁"
esac
sketchybar --set "$NAME" icon="$ICON" label="$VOLUME%"
fi

View File

@ -0,0 +1,48 @@
#!/bin/bash
# Use the provided path or default to the current directory.
current_path="${1:-.}"
cd "$current_path" 2>/dev/null || exit 1
# Check if we are inside a Git repository.
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
# Get the URL of the 'origin' remote.
remote_url="$(git config --get remote.origin.url)"
if [ -n "$remote_url" ]; then
# We have a remote, so let's get the icon and domain.
# 1. Determine the icon based on the URL's content.
icon=""
if [[ $remote_url == *"github"* ]]; then
icon=" "
elif [[ $remote_url == *"gitlab"* ]]; then
icon="󰮠 "
elif [[ $remote_url == *"gitea"* ]]; then
icon=" "
else
# Fallback icon for any other git remote (e.g., Bitbucket, Codeberg).
icon=" "
fi
# 2. Extract the domain from the remote URL.
domain=""
if [[ $remote_url =~ ^https?:// ]]; then
# For HTTPS URLs (e.g., "https://github.com/user/repo.git")
domain=$(echo "$remote_url" | sed -E 's#https?://([^/]+).*#\1#')
elif [[ $remote_url =~ @ ]]; then
# For SSH URLs (e.g., "git@github.com:user/repo.git")
domain=$(echo "$remote_url" | sed -E 's/.*@([^:]+):.*/\1/')
fi
# 3. Print the icon and the extracted domain.
echo "$icon $domain"
else
# No remote is configured, so it's a local repository.
echo " local"
fi
else
# Not a git repository, so output nothing.
echo ""
fi

View File

@ -0,0 +1,26 @@
#!/bin/bash
# Icons
icon_local="󰹑 " # Your specified local icon
icon_remote="󰖟 " # Your specified remote icon
current_cmd=$(tmux display-message -p '#{pane_current_command}')
if [[ "$current_cmd" == "ssh" ]]; then
# Remote - get info from pane title
pane_title_raw=$(tmux display-message -p '#{pane_title}')
# Clean up: remove any spaces after the colon
pane_title_cleaned=$(echo "$pane_title_raw" | sed 's/: /:/g')
# Output plain text: ICON user@host:directory (or ICON title if not parsable)
echo "${icon_remote}${pane_title_cleaned:-remote}"
else
# Local - build the same format
user_part="$(whoami)"
host_part="$(hostname -s)"
local_dir_raw=$(echo "$1" | sed "s|^$HOME|~|") # $1 is #{pane_current_path}
# Output plain text: ICON user@host:directory
echo "${icon_local}${user_part}@${host_part}:${local_dir_raw}"
fi

267
dot_config/tmux/tmux.conf Normal file
View File

@ -0,0 +1,267 @@
# ______
# /_ __/___ ___ __ ___ __
# / / / __ `__ \/ / / / |/_/
# / / / / / / / / /_/ /> <
# /_/ /_/ /_/ /_/\__,_/_/|_|
#
# Corey Smith
# Tmux Configurations
# corey@litteplummercreek.studio
#------------------------------------------------------------------------------
# Configuration Notes
#------------------------------------------------------------------------------
#
# Tmux has shortened versions of some commands, the following are used:
# set = set-option
# setw = set-window-option
# bind = bind-key
# run = run-shell
#
set-environment -g TMUX_PLUGIN_MANAGER_PATH "$XDG_DATA_HOME/tmux/plugins"
#------------------------------------------------------------------------------
# Set helper script path
#------------------------------------------------------------------------------
#
# This is where custom helper scripts need to be located for tmux
# to utilize them.
#
script_path="$HOME/.config/tmux/scripts"
#------------------------------------------------------------------------------
# Open windows and panes in current directory
#------------------------------------------------------------------------------
#
# By default Tmux opens new windows and panes in the user home directory, I
# would prefer they open in the directory I am currently in since I am usually
# working on a project and just need a new terminal window.
#
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -v -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
#------------------------------------------------------------------------------
# Turn on mouse reporting for native scrolling
#------------------------------------------------------------------------------
#
# This allows tmux to scroll contents using the mouse scroll wheel.
#
set -g mouse on
#------------------------------------------------------------------------------
# Speed up refresh rate
#------------------------------------------------------------------------------
#
# Using Gitmux is nicer with a faster response time, this speeds up how
# quickly the Tmux status bar will refresh itself with new information.
#
set -g status-interval 1
#------------------------------------------------------------------------------
# Set Tmux 256 Colors
#------------------------------------------------------------------------------
#
# More colors!
#
set -g default-terminal 'tmux-256color'
set -as terminal-overrides ',xterm*:Tc:sitm=\E[3m'
#------------------------------------------------------------------------------
# Set Focus Events On
#------------------------------------------------------------------------------
#
# Neovim :checkhealth recommends setting focus-events to on. What does it do?
#
set -g focus-events on
#------------------------------------------------------------------------------
# Order sessions by name
#------------------------------------------------------------------------------
#
# <prefix>s provides a list of open sessions, I find it easier to scan them
# if they are ordered alphabetically ascending by name.
#
bind s choose-tree -ZsNO name
#------------------------------------------------------------------------------
# Message Style
#-----------------------------------------------------------------------------
#
# <prefix>:
#
set -g message-style "bg=default, fg=#000000,bold"
set -g message-command-style "bg=default, fg=#000000,bold"
#------------------------------------------------------------------------------
# Set indexes to 1 instead of 0
#------------------------------------------------------------------------------
#
# A lot of programming languages are zero indexed. But I'm not programming
# when using Tmux. I am using an interface. I want lists to start from 1,
# which coincidentally also matches the leftmost number key on my keyboard.
#
# Below, "panes" and "windows" are configured to start at 1.
#
# It is unfortunately not possible to start the session list from 1 yet.
#
set -g mode-style "bg=#3B82F6,fg=#FDFDFF"
set -g renumber-windows on
set -g base-index 1
setw -g pane-base-index 1
#------------------------------------------------------------------------------
# Status Bar
#------------------------------------------------------------------------------
#
# I prefer the Tmux Status Bar at the top because it clashes with Neovim's
# Status Bar and Command Lines. I also prefer to think of Tmux's Status Bar
# as a macOS style "Menu Bar for the command line".
#
set -g status-position top
#------------------------------------------------------------------------------
# Status Bar Border
#------------------------------------------------------------------------------
#
# Move the status bar to the top and format it as an underline below the
# status bar. Set the pane borders to a color that blends with Neovim's
# Vertical and Horizontal Splits.
#
setw -g pane-border-status top
setw -g pane-border-format '─'
set -g pane-border-style "bg=default, fg=#A3A6AE"
set -g pane-active-border-style "bg=default, fg=#A3A6AE"
#------------------------------------------------------------------------------
# Popup
#------------------------------------------------------------------------------
#
# Settings for the Tmux Popup function
#
set -g popup-border-lines "double"
set -g popup-border-style fg=black
bind-key p display-popup -T ' Shell ' -d "#{pane_current_path}"
bind-key s display-popup -E "tmux list-sessions -F '#{session_name}' | fzf --prompt='Select Tmux Session: ' | xargs -I {} tmux switch-client -t '{}'"
#------------------------------------------------------------------------------
# Status Bar Information
#------------------------------------------------------------------------------
#
# The information displayed in the status bar.
#
gitmux_path="$HOME/.gitmux.conf"
separator=" #[fg=#A3A6AE]│#[fg=#000000] "
tmux_logo=" 󰙀 "
session="#[bold]#S#[nobold]"
# directory=" #(echo '#{pane_current_path}/' | sed 's|^$HOME|~|')"
directory="#(${script_path}/ssh_aware_directory.sh '#{pane_current_path}')"
# git_icon="${separator}#(${script_path}/get_git_hosting.sh '#{pane_current_path}') "
# git_status="#[fg=#555555]#(gitmux -cfg ${gitmux_path} '#{pane_current_path}')#[fg=#000000]"
date_time="%l:%M%p"
status_color="fg=#000000, bg=default"
window_status_format='  #[fg=#555555]#W#[fg=#000000]'
window_status_current_format=' #[fg=#047857] #[fg=#000000]#[bold]#W#[nobold]'
# Function to get the number of panes when zoomed
pane_count="#(tmux list-panes -t '#{session_name}:#{window_index}' | wc -l | tr -d ' ')"
# Function to indicate if the current window is zoomed
zoomed_flag="#(if [ #{window_zoomed_flag} -eq 1 ]; then echo ' '; else echo ' '; fi)"
set -g status-style "${status_color}"
set -g status-justify right
set -g status-left-length 300
set -g window-status-format "${window_status_format}"
set -g window-status-current-format "${window_status_current_format}"
set -g status-left "${tmux_logo}${session}${separator}${directory}${separator}"
set -g status-right "${separator}${zoomed_flag}${pane_count} "
#------------------------------------------------------------------------------
# Speed up Vim escape key
#------------------------------------------------------------------------------
#
# Speed up the escape key delay in Vim to prevent Tmux and Neovim from
# feeling sluggish or as if the terminal froze for a second.
#
set -sg escape-time 10
#------------------------------------------------------------------------------
# Navigate Tmux Sessions
#------------------------------------------------------------------------------
#
# Use ctrl+option up/down to switch to next or previous session
#
bind -n C-M-j switch-client -p
bind -n C-M-k switch-client -n
#------------------------------------------------------------------------------
# Navigate Tmux Windows
#------------------------------------------------------------------------------
#
# Use ctrl+option left/right to switch to next or previous window
# Use ctrl+option n/p to swap current window with next or previous window
#
bind -n C-M-l next-window
bind -n C-M-h previous-window
bind -n C-M-p run-shell 'tmux swap-window -t -1 && tmux select-window -t :-'
bind -n C-M-n run-shell 'tmux swap-window -t +1 && tmux select-window -t :+'
#------------------------------------------------------------------------------
# Navigate Tmux Panes and Neovim Buffers
#------------------------------------------------------------------------------
#
# Use ctrl hjkl to navigate through both Tmux Panes and Neovim/Vim/HX Buffers.
#
is_program="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?(hx|vifm|g?(view|n?vim?x?)(diff)?)$'"
bind -n 'C-h' if-shell "$is_program" 'send-keys C-h' { if -F '#{pane_at_left}' '' 'select-pane -L' }
bind -n 'C-j' if-shell "$is_program" 'send-keys C-j' { if -F '#{pane_at_bottom}' '' 'select-pane -D' }
bind -n 'C-k' if-shell "$is_program" 'send-keys C-k' { if -F '#{pane_at_top}' '' 'select-pane -U' }
bind -n 'C-l' if-shell "$is_program" 'send-keys C-l' { if -F '#{pane_at_right}' '' 'select-pane -R' }
#------------------------------------------------------------------------------
# Reload Configuration
#------------------------------------------------------------------------------
#
# Use <prefix>u to reload the config.
#
bind u source-file ~/.config/tmux/tmux.conf \; display "Reloading..."
#------------------------------------------------------------------------------
# Plugins
#------------------------------------------------------------------------------
#
# Use <prefix>U to update the plugins.
# set -g @plugin 'tmux-plugins/tpm'
# add plugins here
# run '~/.tmux/plugins/tpm/tpm'
#

71
dot_config/vim/dot_vimrc Normal file
View File

@ -0,0 +1,71 @@
" Minimal .vimrc for production servers
" Basic settings
set nocompatible " Use Vim defaults
syntax on " Enable syntax highlighting
set background=light " Use light background
" Disable all fancy colors, keep it simple
highlight clear
" Basic black and white scheme with minimal highlighting
highlight Normal cterm=NONE ctermfg=black ctermbg=NONE
highlight Comment cterm=NONE ctermfg=darkgray ctermbg=NONE
highlight Constant cterm=NONE ctermfg=darkblue ctermbg=NONE
highlight Special cterm=NONE ctermfg=darkblue ctermbg=NONE
highlight Identifier cterm=NONE ctermfg=black ctermbg=NONE
highlight Statement cterm=bold ctermfg=black ctermbg=NONE
highlight PreProc cterm=NONE ctermfg=darkblue ctermbg=NONE
highlight Type cterm=bold ctermfg=black ctermbg=NONE
highlight Underlined cterm=underline ctermfg=black ctermbg=NONE
highlight Todo cterm=bold ctermfg=black ctermbg=yellow
highlight Error cterm=bold ctermfg=white ctermbg=red
highlight Search cterm=NONE ctermfg=black ctermbg=yellow
" UI elements
highlight LineNr cterm=NONE ctermfg=darkgray ctermbg=NONE
highlight StatusLine cterm=bold ctermfg=white ctermbg=darkgray
highlight StatusLineNC cterm=NONE ctermfg=black ctermbg=lightgray
highlight VertSplit cterm=NONE ctermfg=darkgray ctermbg=NONE
highlight Visual cterm=NONE ctermfg=black ctermbg=lightgray
" Practical settings for server work
set number " Show line numbers
set ruler " Show cursor position
set laststatus=2 " Always show status line
set showcmd " Show partial commands
set showmatch " Show matching brackets
set incsearch " Incremental search
set hlsearch " Highlight search results
set ignorecase " Case-insensitive search
set smartcase " Unless search contains uppercase
set autoindent " Auto-indent new lines
set smartindent " Smart auto-indenting
set tabstop=4 " Tab width is 4 spaces
set shiftwidth=4 " Indent also with 4 spaces
set expandtab " Expand tabs to spaces
set nowrap " Don't wrap lines
set backspace=indent,eol,start " Backspace through everything
set wildmenu " Command-line completion
set wildmode=list:longest " Complete until longest common string
set history=50 " Keep 50 lines of command history
set viminfo='20,\"50 " Remember 50 lines of registers
set nobackup " No backup files
set noswapfile " No swap files
" Highlight trailing whitespace
highlight ExtraWhitespace ctermbg=red
match ExtraWhitespace /\s\+$/
" Indicate insert/normal mode in the status line
set showmode
" For production servers - highlight the hostname in red if it contains 'live'
let hostname = substitute(system('hostname'), '\n', '', '')
if hostname =~ 'live'
highlight User1 cterm=bold ctermfg=white ctermbg=red
set statusline=%1*[PRODUCTION]%*\ %f\ %h%w%m%r\ %=%(%l,%c%V\ %=\ %P%)
else
set statusline=%f\ %h%w%m%r\ %=%(%l,%c%V\ %=\ %P%)
endif

View File

@ -0,0 +1,71 @@
-- Pull in the wezterm API
local wezterm = require 'wezterm'
-- This will hold the configuration.
local config = wezterm.config_builder()
-- This is where you actually apply your config choices
config.enable_tab_bar = false
config.animation_fps = 10
-- Window
config.initial_cols = 274
config.initial_rows = 52
config.window_decorations = "RESIZE"
-- Typography
config.font = wezterm.font({
family = 'SF Mono',
weight = 'Regular'
})
config.line_height = 1.2
config.font_size = 14
config.cell_width = 1
-- Cursor
config.cursor_thickness = 2
config.cursor_blink_rate = 600
config.cursor_blink_ease_in = 'Constant'
config.cursor_blink_ease_out = 'Constant'
config.bold_brightens_ansi_colors = false
config.colors = {
foreground = '#1A1C22',
background = '#FAF9F5',
cursor_bg = '#3B82F6',
cursor_fg = '#F7F6F3',
ansi = {
'#1A1C22',
'#C63533',
'#3F7A59',
'#D4680F',
'#2D739F',
'#B9437F',
'#3599A2',
'#BDBFC4',
},
brights = {
'#3E4149',
'#E07270',
'#62BF8B',
'#DC9154',
'#61A5D0',
'#DC83B0',
'#6DBAC1',
'#DCDDE1',
},
}
-- START: Add Shift+Enter key binding here
config.keys = config.keys or {} -- Ensure the keys table exists if not already defined
table.insert(config.keys, {
key = 'Enter', -- The key pressed
mods = 'SHIFT', -- The modifier key (Shift)
action = wezterm.action.SendString('\u{1b}[25~') -- Send the escape sequence for F15
-- '\u{1b}' is ESC. '[25~' is a common sequence for F15.
})
-- END: Shift+Enter key binding
-- and finally, return the configuration to wezterm
return config

View File

@ -0,0 +1,18 @@
#!/bin/bash
set -e
echo "Configuring Hammerspoon to use ~/.config/hammerspoon..."
if ! command -v hammerspoon &> /dev/null; then
echo "Warning: Hammerspoon not found. Setting preference anyway for when it's installed."
fi
defaults write org.hammerspoon.Hammerspoon MJConfigFile "~/.config/hammerspoon/init.lua"
if defaults read org.hammerspoon.Hammerspoon MJConfigFile &> /dev/null; then
echo "✅ Hammerspoon configured to use ~/.config/hammerspoon/init.lua"
else
echo "❌ Failed to set Hammerspoon config path"
exit 1
fi