Compare commits

...

30 Commits

Author SHA1 Message Date
e4258d8ec1 Install: Add qalc and qalculate 2025-12-04 09:13:37 -08:00
13bade3a4d Rofi: Add qalc command and hotkey 2025-12-04 09:13:25 -08:00
e251e675f4 Rofi: Move copyq script 2025-12-04 09:13:08 -08:00
f3522bf985 Sway: Add copyq hotkey and rofi integration 2025-12-03 21:27:43 -08:00
9d61d9f418 Sway: Add shortcut to open lazygit in floating window 2025-12-03 15:09:46 -08:00
738a15a00d Lazygit: Do not prompt to create new repo 2025-12-03 15:09:26 -08:00
46a2b9fd61 Install: Add LibreOffice and Okular 2025-12-03 14:45:09 -08:00
90922ccd77 Sway: Add rofi hotkey for window switching 2025-12-03 14:44:20 -08:00
eeb24c1233 Sway: Fix typo 2025-12-03 14:43:49 -08:00
34ad6a3aa1 Foot: Add theme and font 2025-12-03 14:43:30 -08:00
9c9d0188bb Dunst: Add theme 2025-12-03 14:43:25 -08:00
44a7ecce2e Direnv: Modify autoenv_fish to not override cd
Instead, automatically execute a function when the PWD variable changes.
2025-12-02 08:47:01 -08:00
26939a3be8 Direnv: Switch to autoenv_fish 2025-12-01 21:53:24 -08:00
855c2f7434 Git: Update editor to nvim 2025-12-01 20:59:44 -08:00
0a7d920b58 Direnv: Add 2025-12-01 20:59:35 -08:00
a93d11a2c8 Install: Add gh and copyq 2025-12-01 14:10:38 -08:00
52adaeccbd Sway: Add default applications at startup 2025-12-01 14:09:46 -08:00
e1ce1dbed8 Swaylock: Theme 2025-11-30 20:49:08 -08:00
e08d911cd2 Sway: Theme 2025-11-30 20:47:12 -08:00
d965b7253d Waybar: Config and theme 2025-11-30 20:33:49 -08:00
3387bd40a9 Bash: Move under stow 2025-11-30 20:33:49 -08:00
2fd2cd8439 Bat: Config and theme 2025-11-30 20:33:49 -08:00
6e71257558 Rofi: Add config 2025-11-30 19:12:35 -08:00
115a8cdc9d Install: Move more config files into stow 2025-11-30 16:23:33 -08:00
90bd05f36e Install: Start using Stow to link dotfiles 2025-11-30 15:48:47 -08:00
65c538cb25 Bash: Change editor to nvim 2025-11-30 09:55:53 -08:00
55ef5235f1 Bin: Add script for mounting server storage 2025-11-30 09:55:01 -08:00
3041aec614 Bin: Add scripts for running yt-dlp 2025-11-30 09:54:48 -08:00
7ce41d3f2c Install: Adjust list of applications installed 2025-11-30 09:53:10 -08:00
cbdf04ed4e Neovim: Slim down installed plugins since I'm doing more programming in vs-code 2025-11-29 19:28:19 -08:00
77 changed files with 4557 additions and 317 deletions

2
.stowrc Normal file
View File

@@ -0,0 +1,2 @@
--target=~/
--dir=home

View File

@@ -1,29 +1,8 @@
Tony's DotFiles # Tony's DotFiles
===============
This is a collection of all the files that I want very easily available on any new machine that I sit down at. The install script is designed to be run either from the cloned repository or as a stand-alone script through curl. See the usage details for examples. ## Scripts
WARNING `install-packages.sh` is not really meant to be run automatically, and is instead mostly just documentation of what packages I have installed and how they were added.
-------
The install script provided with these dotfiles is destructive and will overwrite files without asking. To ensure that you do not lose anything important please backup your .bashrc, .gitconfig, .gitignore, .inputrc, .tmux.conf, and .vimrc files in your home directory. `run-stow.sh` just links the dotfiles from this repo into their correct locations.
I can not be held responsible if you lose any important data.
Usage
-----
**Method 1**
The first method requires cloning the repository and running the install script manually.
git clone ssh://git@git.grosinger.net:22322/tgrosinger/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.sh
**Method 2**
The second method does not require cloning the repository however it does require that Git and Curl is installed on the target machine.
\curl -sSL https://git.grosinger.net/tgrosinger/dotfiles/raw/branch/main/install.sh | bash

View File

@@ -1,13 +0,0 @@
# https://docs.atuin.sh/configuration/config/
workspaces = true
keymap_mode = "auto"
enter_accept = true
history_filter = [
"^cd$",
"^lg$",
"^ls$",
"^clear$",
"^vim$",
]

9
bin/linux/mount-voyager.sh Executable file
View File

@@ -0,0 +1,9 @@
#! /bin/bash
SHARE="tony"
MOUNTPOINT="${HOME}/Voyager"
HOST="192.168.1.66"
CREDENTIALS="${HOME}/.voyager-credentials"
mkdir -p ${MOUNTPOINT}
sudo mount -t cifs -o credentials=${CREDENTIALS},uid=$(id -u),gid=$(id -g) //${HOST}/${SHARE} ${MOUNTPOINT}

8
bin/linux/soundcloud-dl Executable file
View File

@@ -0,0 +1,8 @@
#/bin/bash
podman run --rm -i \
-v ${HOME}/Music:/downloads:z \
--userns keep-id:uid=1000,gid=1000 \
--entrypoint scdl \
yt-dlp:latest $@

8
bin/linux/spotify-dl Executable file
View File

@@ -0,0 +1,8 @@
#/bin/bash
podman run --rm -i \
-v ${HOME}/Music:/downloads:z \
--userns keep-id:uid=1000,gid=1000 \
--entrypoint spotdl \
yt-dlp:latest $@

7
bin/linux/youtube-dl Executable file
View File

@@ -0,0 +1,7 @@
#/bin/bash
podman run --rm \
-v ${HOME}/Videos/youtube:/downloads:z \
--userns keep-id:uid=1000,gid=1000 \
yt-dlp:latest -S 'res:1080' $@

7
bin/linux/youtube-dl-playlist Executable file
View File

@@ -0,0 +1,7 @@
#/bin/bash
podman run --rm \
-v ${HOME}/Videos/youtube:/downloads:z \
--userns keep-id:uid=1000,gid=1000 \
yt-dlp:latest --embed-metadata -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" -S 'res:1080' $@

View File

@@ -75,7 +75,7 @@ export GPG_TTY=$(tty)
export PATH=$PATH:${HOME}/go/bin export PATH=$PATH:${HOME}/go/bin
export TERM="xterm-256color" export TERM="xterm-256color"
export EDITOR=$(which vim) export EDITOR=$(which nvim)
# Adding applications to path # Adding applications to path
if [[ -d ${HOME}/.dotfiles/bin/linux ]]; then if [[ -d ${HOME}/.dotfiles/bin/linux ]]; then

View File

View File

@@ -304,4 +304,4 @@
"command": "workbench.action.navigateForward", "command": "workbench.action.navigateForward",
"when": "canNavigateForward && editorTextFocus && vim.active" "when": "canNavigateForward && editorTextFocus && vim.active"
} }
] ]

View File

@@ -280,5 +280,7 @@
"typescript.inlayHints.propertyDeclarationTypes.enabled": true, "typescript.inlayHints.propertyDeclarationTypes.enabled": true,
"typescript.inlayHints.variableTypes.enabled": true, "typescript.inlayHints.variableTypes.enabled": true,
"editor.inlayHints.fontFamily": "Sriracha", "editor.inlayHints.fontFamily": "Sriracha",
"github.copilot.nextEditSuggestions.enabled": true "github.copilot.nextEditSuggestions.enabled": true,
"gitlens.ai.model": "vscode",
"gitlens.ai.vscode.model": "copilot:gpt-4.1"
} }

View File

@@ -0,0 +1,10 @@
[general]
import = [
"~/.config/alacritty/themes/catppuccin_latte.toml"
]
[font]
normal = { family = "JetBrainsMonoNerdFontMono", style = "Regular" }
bold = { family = "JetBrainsMonoNerdFontMono", style = "Bold" }
italic = { family = "JetBrainsMonoNerdFontMono", style = "Italic" }
bold_italic = { family = "JetBrainsMonoNerdFontMono", style = "BoldItalic" }

View File

@@ -0,0 +1,76 @@
# Default colors
[colors.primary]
background = '#EFF1F5' # base
foreground = '#4C4F69' # text
# Bright and dim foreground colors
dim_foreground = '#4C4F69' # text
bright_foreground = '#4C4F69' # text
# Cursor colors
[colors.cursor]
text = '#EFF1F5' # base
cursor = '#DC8A78' # rosewater
[colors.vi_mode_cursor]
text = '#EFF1F5' # base
cursor = '#7287FD' # lavender
# Search colors
[colors.search.matches]
foreground = '#EFF1F5' # base
background = '#6C6F85' # subtext0
[colors.search.focused_match]
foreground = '#EFF1F5' # base
background = '#40A02B' # green
[colors.footer_bar]
foreground = '#EFF1F5' # base
background = '#6C6F85' # subtext0
# Keyboard regex hints
[colors.hints.start]
foreground = '#EFF1F5' # base
background = '#DF8E1D' # yellow
[colors.hints.end]
foreground = '#EFF1F5' # base
background = '#6C6F85' # subtext0
# Selection colors
[colors.selection]
text = '#EFF1F5' # base
background = '#DC8A78' # rosewater
# Normal colors
[colors.normal]
black = '#5C5F77' # subtext1
red = '#D20F39' # red
green = '#40A02B' # green
yellow = '#DF8E1D' # yellow
blue = '#1E66F5' # blue
magenta = '#EA76CB' # pink
cyan = '#179299' # teal
white = '#ACB0BE' # surface2
# Bright colors
[colors.bright]
black = '#6C6F85' # subtext0
red = '#D20F39' # red
green = '#40A02B' # green
yellow = '#DF8E1D' # yellow
blue = '#1E66F5' # blue
magenta = '#EA76CB' # pink
cyan = '#179299' # teal
white = '#BCC0CC' # surface1
# Dim colors
[colors.dim]
black = '#5C5F77' # subtext1
red = '#D20F39' # red
green = '#40A02B' # green
yellow = '#DF8E1D' # yellow
blue = '#1E66F5' # blue
magenta = '#EA76CB' # pink
cyan = '#179299' # teal
white = '#ACB0BE' # surface2

View File

@@ -0,0 +1,20 @@
# https://docs.atuin.sh/configuration/config/
workspaces = true
keymap_mode = "auto"
enter_accept = true
history_filter = [
"^cd$",
"^lg$",
"^ls$",
"^clear$",
"^vim$",
]
[search]
## The list of enabled filter modes, in order of priority.
## The "workspace" mode is skipped when not in a workspace or workspaces = false.
## Default filter mode can be overridden with the filter_mode setting.
#filters = [ "global", "host", "session", "session-preload", "workspace", "directory" ]
filters = [ "global", "workspace", "directory" ]

1
home/.config/bat/config Normal file
View File

@@ -0,0 +1 @@
--theme="Catppuccin Latte"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
#
# Catppuccin Latte
# https://github.com/catppuccin/dunst/blob/main/themes/latte.conf
#
[global]
frame_color = "#1e66f5"
separator_color= frame
highlight = "#1e66f5"
[urgency_low]
background = "#eff1f5"
foreground = "#4c4f69"
[urgency_normal]
background = "#eff1f5"
foreground = "#4c4f69"
[urgency_critical]
background = "#eff1f5"
foreground = "#4c4f69"
frame_color = "#fe640b"

View File

@@ -0,0 +1,268 @@
# Fish Shell Completions
# Copy or symlink to $XDG_CONFIG_HOME/fish/completions/bat.fish
# ($XDG_CONFIG_HOME is usually set to ~/.config)
# `bat` is `batcat` on Debian and Ubuntu
set bat bat
# Helper functions:
function __bat_complete_files -a token
# Cheat to complete files by calling `complete -C` on a fake command name,
# like `__fish_complete_directories` does.
set -l fake_command aaabccccdeeeeefffffffffgghhhhhhiiiii
complete -C"$fake_command $token"
end
function __bat_complete_one_language -a comp
command $bat --list-languages | string split -f1 : | string match -e "$comp"
end
function __bat_complete_list_languages
for spec in (command $bat --list-languages)
set -l name (string split -f1 : $spec)
for ext in (string split -f2 : $spec | string split ,)
test -n "$ext"; or continue
string match -rq '[/*]' $ext; and continue
printf "%s\t%s\n" $ext $name
end
printf "%s\t\n" $name
end
end
function __bat_complete_map_syntax
set -l token (commandline -ct)
if string match -qr '(?<glob>.+):(?<syntax>.*)' -- $token
# If token ends with a colon, complete with the list of language names.
set -f comps $glob:(__bat_complete_one_language $syntax)
else if string match -qr '\*' -- $token
# If token contains a globbing character (`*`), complete only possible
# globs in the current directory
set -f comps (__bat_complete_files $token | string match -er '[*]'):
else
# Complete files (and globs).
set -f comps (__bat_complete_files $token | string match -erv '/$'):
end
if set -q comps[1]
printf "%s\t\n" $comps
end
end
function __bat_cache_subcommand
__fish_seen_subcommand_from cache
end
# Returns true if no exclusive arguments seen.
function __bat_no_excl_args
not __bat_cache_subcommand; and not __fish_seen_argument \
-s h -l help \
-s V -l version \
-l acknowledgements \
-l config-dir -l config-file \
-l diagnostic \
-l list-languages -l list-themes
end
# Returns true if the 'cache' subcommand is seen without any exclusive arguments.
function __bat_cache_no_excl
__bat_cache_subcommand; and not __fish_seen_argument \
-s h -l help \
-l acknowledgements -l build -l clear
end
function __bat_style_opts
set -l style_opts \
"default,recommended components" \
"auto,same as 'default' unless piped" \
"full,all components" \
"plain,no components" \
"changes,Git change markers" \
"header,alias for header-filename" \
"header-filename,filename above content" \
"header-filesize,filesize above content" \
"grid,lines b/w sidebar/header/content" \
"numbers,line numbers in sidebar" \
"rule,separate files" \
"snip,separate ranges"
string replace , \t $style_opts
end
# Use option argument descriptions to indicate which is the default, saving
# horizontal space and making sure the option description isn't truncated.
set -l color_opts '
auto\tdefault
never\t
always\t
'
set -l decorations_opts $color_opts
set -l paging_opts $color_opts
# Include some examples so we can indicate the default.
set -l pager_opts '
less\tdefault
less\ -FR\t
more\t
vimpager\t
builtin\t
'
set -l italic_text_opts '
always\t
never\tdefault
'
set -l wrap_opts '
auto\tdefault
never\t
character\t
'
# While --tabs theoretically takes any number, most people should be OK with these.
# Specifying a list lets us explain what 0 does.
set -l tabs_opts '
0\tpass\ tabs\ through\ directly
1\t
2\t
4\t
8\t
'
set -l special_themes '
auto\tdefault,\ Choose\ a\ theme\ based\ on\ dark\ or\ light\ mode
auto:always\tChoose\ a\ theme\ based\ on\ dark\ or\ light\ mode
auto:system\tChoose\ a\ theme\ based\ on\ dark\ or\ light\ mode
dark\tUse\ the\ theme\ specified\ by\ --theme-dark
light\tUse\ the\ theme\ specified\ by\ --theme-light
'
# Completions:
complete -c $bat -l acknowledgements -d "Print acknowledgements" -n __fish_is_first_arg
complete -c $bat -l binary -x -a "no-printing as-text" -d "How to treat binary content" -n __bat_no_excl_args
complete -c $bat -l cache-dir -f -d "Show bat's cache directory" -n __fish_is_first_arg
complete -c $bat -s c -l chop-long-lines -d "Truncate all lines longer than screen width" -n __bat_no_excl_args
complete -c $bat -l color -x -a "$color_opts" -d "When to use colored output" -n __bat_no_excl_args
complete -c $bat -l completion -x -a "bash fish zsh ps1" -d "Show shell completion for a certain shell" -n __fish_is_first_arg
complete -c $bat -l config-dir -f -d "Display location of configuration directory" -n __fish_is_first_arg
complete -c $bat -l config-file -f -d "Display location of configuration file" -n __fish_is_first_arg
complete -c $bat -l decorations -x -a "$decorations_opts" -d "When to use --style decorations" -n __bat_no_excl_args
complete -c $bat -l diagnostic -d "Print diagnostic info for bug reports" -n __fish_is_first_arg
complete -c $bat -s d -l diff -d "Only show lines with Git changes" -n __bat_no_excl_args
complete -c $bat -l diff-context -x -d "Show N context lines around Git changes" -n "__fish_seen_argument -s d -l diff"
complete -c $bat -l generate-config-file -f -d "Generates a default configuration file" -n __fish_is_first_arg
complete -c $bat -l file-name -x -d "Specify the display name" -n __bat_no_excl_args
complete -c $bat -s f -l force-colorization -d "Force color and decorations" -n __bat_no_excl_args
complete -c $bat -s h -d "Print a concise overview" -n __fish_is_first_arg
complete -c $bat -l help -f -d "Print all help information" -n __fish_is_first_arg
complete -c $bat -s H -l highlight-line -x -d "Highlight line(s) N[:M]" -n __bat_no_excl_args
complete -c $bat -l ignored-suffix -x -d "Ignore extension" -n __bat_no_excl_args
complete -c $bat -l italic-text -x -a "$italic_text_opts" -d "When to use italic text in the output" -n __bat_no_excl_args
complete -c $bat -s l -l language -x -k -a "(__bat_complete_list_languages)" -d "Set the syntax highlighting language" -n __bat_no_excl_args
complete -c $bat -l lessopen -d "Enable the $LESSOPEN preprocessor" -n __fish_is_first_arg
complete -c $bat -s r -l line-range -x -d "Only print lines [M]:[N] (either optional)" -n __bat_no_excl_args
complete -c $bat -l list-languages -f -d "List syntax highlighting languages" -n __fish_is_first_arg
complete -c $bat -l list-themes -f -d "List syntax highlighting themes" -n __fish_is_first_arg
complete -c $bat -s m -l map-syntax -x -a "(__bat_complete_map_syntax)" -d "Map <glob pattern>:<language syntax>" -n __bat_no_excl_args
complete -c $bat -l no-config -d "Do not use the configuration file"
complete -c $bat -l no-custom-assets -d "Do not load custom assets"
complete -c $bat -l no-lessopen -d "Disable the $LESSOPEN preprocessor if enabled (overrides --lessopen)"
complete -c $bat -l nonprintable-notation -x -a "unicode caret" -d "Set notation for non-printable characters" -n __bat_no_excl_args
complete -c $bat -s n -l number -d "Only show line numbers, no other decorations" -n __bat_no_excl_args
complete -c $bat -l no-paging -d "Alias for --paging=never" -n __bat_no_excl_args
complete -c $bat -l pager -x -a "$pager_opts" -d "Which pager to use" -n __bat_no_excl_args
complete -c $bat -l paging -x -a "$paging_opts" -d "When to use the pager" -n __bat_no_excl_args
complete -c $bat -s p -l plain -d "Show plain style" -n __bat_no_excl_args
complete -c $bat -l set-terminal-title -d "Sets terminal title to filenames when using a pager" -n __bat_no_excl_args
complete -c $bat -s A -l show-all -d "Show non-printable characters" -n __bat_no_excl_args
complete -c $bat -s s -l squeeze-blank -d "Squeeze consecutive empty lines into a single empty line" -n __bat_no_excl_args
complete -c $bat -l squeeze-limit -x -d "Set the maximum number of consecutive empty lines to be printed" -n __bat_no_excl_args
complete -c $bat -l strip-ansi -x -a "auto never always" -d "Specify when to strip ANSI escape sequences from the input" -n __bat_no_excl_args
complete -c $bat -s p -l plain -d "Disable decorations" -n __bat_no_excl_args
complete -c $bat -o pp -d "Disable decorations and paging" -n __bat_no_excl_args
complete -c $bat -s P -d "Disable paging" -n __bat_no_excl_args
complete -c $bat -l style -x -k -a "(__fish_complete_list , __bat_style_opts)" -d "Specify which non-content elements to display" -n __bat_no_excl_args
complete -c $bat -l tabs -x -a "$tabs_opts" -d "Set tab width" -n __bat_no_excl_args
complete -c $bat -l terminal-width -x -d "Set terminal <width>, +<offset>, or -<offset>" -n __bat_no_excl_args
complete -c $bat -l theme -x -a "$special_themes(command $bat --list-themes | command cat)" -d "Set the syntax highlighting theme" -n __bat_no_excl_args
complete -c $bat -l theme-dark -x -a "(command $bat --list-themes | command cat)" -d "Set the syntax highlighting theme for dark backgrounds" -n __bat_no_excl_args
complete -c $bat -l theme-light -x -a "(command $bat --list-themes | command cat)" -d "Set the syntax highlighting theme for light backgrounds" -n __bat_no_excl_args
complete -c $bat -s u -l unbuffered -d "This option exists for POSIX-compliance reasons" -n __bat_no_excl_args
complete -c $bat -s V -l version -f -d "Show version information" -n __fish_is_first_arg
complete -c $bat -l wrap -x -a "$wrap_opts" -d "Text-wrapping mode" -n __bat_no_excl_args
# Sub-command 'cache' completions
## Completion of the 'cache' command itself is removed for better UX
## See https://github.com/sharkdp/bat/issues/2085#issuecomment-1271646802
complete -c $bat -l build -f -d "Parse new definitions into cache" -n __bat_cache_no_excl
complete -c $bat -l clear -f -d "Reset definitions to defaults" -n __bat_cache_no_excl
complete -c $bat -l blank -f -d "Create new data instead of appending" -n "__bat_cache_subcommand; and not __fish_seen_argument -l clear"
complete -c $bat -l source -x -a "(__fish_complete_directories)" -d "Load syntaxes and themes from DIR" -n "__bat_cache_subcommand; and not __fish_seen_argument -l clear"
complete -c $bat -l target -x -a "(__fish_complete_directories)" -d "Store cache in DIR" -n __bat_cache_subcommand
complete -c $bat -l acknowledgements -d "Build acknowledgements.bin" -n __bat_cache_no_excl
complete -c $bat -s h -d "Print a concise overview of $bat-cache help" -n __bat_cache_no_excl
complete -c $bat -l help -f -d "Print all $bat-cache help" -n __bat_cache_no_excl
# vim:ft=fish

View File

@@ -0,0 +1,235 @@
# fish completion for devbox -*- shell-script -*-
function __devbox_debug
set -l file "$BASH_COMP_DEBUG_FILE"
if test -n "$file"
echo "$argv" >> $file
end
end
function __devbox_perform_completion
__devbox_debug "Starting __devbox_perform_completion"
# Extract all args except the last one
set -l args (commandline -opc)
# Extract the last arg and escape it in case it is a space
set -l lastArg (string escape -- (commandline -ct))
__devbox_debug "args: $args"
__devbox_debug "last arg: $lastArg"
# Disable ActiveHelp which is not supported for fish shell
set -l requestComp "DEVBOX_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
__devbox_debug "Calling $requestComp"
set -l results (eval $requestComp 2> /dev/null)
# Some programs may output extra empty lines after the directive.
# Let's ignore them or else it will break completion.
# Ref: https://github.com/spf13/cobra/issues/1279
for line in $results[-1..1]
if test (string trim -- $line) = ""
# Found an empty line, remove it
set results $results[1..-2]
else
# Found non-empty line, we have our proper output
break
end
end
set -l comps $results[1..-2]
set -l directiveLine $results[-1]
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
# completions must be prefixed with the flag
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
__devbox_debug "Comps: $comps"
__devbox_debug "DirectiveLine: $directiveLine"
__devbox_debug "flagPrefix: $flagPrefix"
for comp in $comps
printf "%s%s\n" "$flagPrefix" "$comp"
end
printf "%s\n" "$directiveLine"
end
# this function limits calls to __devbox_perform_completion, by caching the result behind $__devbox_perform_completion_once_result
function __devbox_perform_completion_once
__devbox_debug "Starting __devbox_perform_completion_once"
if test -n "$__devbox_perform_completion_once_result"
__devbox_debug "Seems like a valid result already exists, skipping __devbox_perform_completion"
return 0
end
set --global __devbox_perform_completion_once_result (__devbox_perform_completion)
if test -z "$__devbox_perform_completion_once_result"
__devbox_debug "No completions, probably due to a failure"
return 1
end
__devbox_debug "Performed completions and set __devbox_perform_completion_once_result"
return 0
end
# this function is used to clear the $__devbox_perform_completion_once_result variable after completions are run
function __devbox_clear_perform_completion_once_result
__devbox_debug ""
__devbox_debug "========= clearing previously set __devbox_perform_completion_once_result variable =========="
set --erase __devbox_perform_completion_once_result
__devbox_debug "Successfully erased the variable __devbox_perform_completion_once_result"
end
function __devbox_requires_order_preservation
__devbox_debug ""
__devbox_debug "========= checking if order preservation is required =========="
__devbox_perform_completion_once
if test -z "$__devbox_perform_completion_once_result"
__devbox_debug "Error determining if order preservation is required"
return 1
end
set -l directive (string sub --start 2 $__devbox_perform_completion_once_result[-1])
__devbox_debug "Directive is: $directive"
set -l shellCompDirectiveKeepOrder 32
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
__devbox_debug "Keeporder is: $keeporder"
if test $keeporder -ne 0
__devbox_debug "This does require order preservation"
return 0
end
__devbox_debug "This doesn't require order preservation"
return 1
end
# This function does two things:
# - Obtain the completions and store them in the global __devbox_comp_results
# - Return false if file completion should be performed
function __devbox_prepare_completions
__devbox_debug ""
__devbox_debug "========= starting completion logic =========="
# Start fresh
set --erase __devbox_comp_results
__devbox_perform_completion_once
__devbox_debug "Completion results: $__devbox_perform_completion_once_result"
if test -z "$__devbox_perform_completion_once_result"
__devbox_debug "No completion, probably due to a failure"
# Might as well do file completion, in case it helps
return 1
end
set -l directive (string sub --start 2 $__devbox_perform_completion_once_result[-1])
set --global __devbox_comp_results $__devbox_perform_completion_once_result[1..-2]
__devbox_debug "Completions are: $__devbox_comp_results"
__devbox_debug "Directive is: $directive"
set -l shellCompDirectiveError 1
set -l shellCompDirectiveNoSpace 2
set -l shellCompDirectiveNoFileComp 4
set -l shellCompDirectiveFilterFileExt 8
set -l shellCompDirectiveFilterDirs 16
if test -z "$directive"
set directive 0
end
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
if test $compErr -eq 1
__devbox_debug "Received error directive: aborting."
# Might as well do file completion, in case it helps
return 1
end
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
if test $filefilter -eq 1; or test $dirfilter -eq 1
__devbox_debug "File extension filtering or directory filtering not supported"
# Do full file completion instead
return 1
end
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
__devbox_debug "nospace: $nospace, nofiles: $nofiles"
# If we want to prevent a space, or if file completion is NOT disabled,
# we need to count the number of valid completions.
# To do so, we will filter on prefix as the completions we have received
# may not already be filtered so as to allow fish to match on different
# criteria than the prefix.
if test $nospace -ne 0; or test $nofiles -eq 0
set -l prefix (commandline -t | string escape --style=regex)
__devbox_debug "prefix: $prefix"
set -l completions (string match -r -- "^$prefix.*" $__devbox_comp_results)
set --global __devbox_comp_results $completions
__devbox_debug "Filtered completions are: $__devbox_comp_results"
# Important not to quote the variable for count to work
set -l numComps (count $__devbox_comp_results)
__devbox_debug "numComps: $numComps"
if test $numComps -eq 1; and test $nospace -ne 0
# We must first split on \t to get rid of the descriptions to be
# able to check what the actual completion will be.
# We don't need descriptions anyway since there is only a single
# real completion which the shell will expand immediately.
set -l split (string split --max 1 \t $__devbox_comp_results[1])
# Fish won't add a space if the completion ends with any
# of the following characters: @=/:.,
set -l lastChar (string sub -s -1 -- $split)
if not string match -r -q "[@=/:.,]" -- "$lastChar"
# In other cases, to support the "nospace" directive we trick the shell
# by outputting an extra, longer completion.
__devbox_debug "Adding second completion to perform nospace directive"
set --global __devbox_comp_results $split[1] $split[1].
__devbox_debug "Completions are now: $__devbox_comp_results"
end
end
if test $numComps -eq 0; and test $nofiles -eq 0
# To be consistent with bash and zsh, we only trigger file
# completion when there are no other completions
__devbox_debug "Requesting file completion"
return 1
end
end
return 0
end
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
# so we can properly delete any completions provided by another script.
# Only do this if the program can be found, or else fish may print some errors; besides,
# the existing completions will only be loaded if the program can be found.
if type -q "devbox"
# The space after the program name is essential to trigger completion for the program
# and not completion of the program name itself.
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
complete --do-complete "devbox " > /dev/null 2>&1
end
# Remove any pre-existing completions for the program since we will be handling all of them.
complete -c devbox -e
# this will get called after the two calls below and clear the $__devbox_perform_completion_once_result global
complete -c devbox -n '__devbox_clear_perform_completion_once_result'
# The call to __devbox_prepare_completions will setup __devbox_comp_results
# which provides the program's completion choices.
# If this doesn't require order preservation, we don't use the -k flag
complete -c devbox -n 'not __devbox_requires_order_preservation && __devbox_prepare_completions' -f -a '$__devbox_comp_results'
# otherwise we use the -k flag
complete -k -c devbox -n '__devbox_requires_order_preservation && __devbox_prepare_completions' -f -a '$__devbox_comp_results'

View File

@@ -0,0 +1,29 @@
if status is-interactive
# Commands to run in interactive sessions can go here
# Disable the welcome message
# https://fishshell.com/docs/current/cmds/fish_greeting.html
set -g fish_greeting
if test -f /home/linuxbrew/.linuxbrew/bin/brew
/home/linuxbrew/.linuxbrew/bin/brew shellenv | source
end
if test -f $(which atuin)
atuin init fish | source
end
# Override globals
set -gx EDITOR nvim
# Enable autoenv
source ~/.config/fish/functions/activate.fish
# Aliases
alias vim="nvim"
alias dc="podman compose"
alias lg="lazygit"
alias la="eza --long --header --git --group --time-style long-iso -a"
# Set Path
fish_add_path -p /home/tgrosinger/.dotfiles/bin/linux
end

View File

@@ -0,0 +1,43 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3800
SETUVAR fish_color_autosuggestion:9ca0b0
SETUVAR fish_color_cancel:d20f39
SETUVAR fish_color_command:1e66f5
SETUVAR fish_color_comment:8c8fa1
SETUVAR fish_color_cwd:df8e1d
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:fe640b
SETUVAR fish_color_error:d20f39
SETUVAR fish_color_escape:e64553
SETUVAR fish_color_gray:9ca0b0
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:1e66f5
SETUVAR fish_color_host_remote:40a02b
SETUVAR fish_color_keyword:8839ef
SETUVAR fish_color_normal:4c4f69
SETUVAR fish_color_operator:ea76cb
SETUVAR fish_color_option:40a02b
SETUVAR fish_color_param:dd7878
SETUVAR fish_color_quote:40a02b
SETUVAR fish_color_redirection:ea76cb
SETUVAR fish_color_search_match:\x2d\x2dbackground\x3dccd0da
SETUVAR fish_color_selection:\x2d\x2dbackground\x3dccd0da
SETUVAR fish_color_status:d20f39
SETUVAR fish_color_user:179299
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_key_bindings:fish_vi_key_bindings
SETUVAR fish_pager_color_background:\x1d
SETUVAR fish_pager_color_completion:4c4f69
SETUVAR fish_pager_color_description:9ca0b0
SETUVAR fish_pager_color_prefix:ea76cb
SETUVAR fish_pager_color_progress:9ca0b0
SETUVAR fish_pager_color_secondary_background:\x1d
SETUVAR fish_pager_color_secondary_completion:\x1d
SETUVAR fish_pager_color_secondary_description:\x1d
SETUVAR fish_pager_color_secondary_prefix:\x1d
SETUVAR fish_pager_color_selected_background:\x1d
SETUVAR fish_pager_color_selected_completion:\x1d
SETUVAR fish_pager_color_selected_description:\x1d
SETUVAR fish_pager_color_selected_prefix:\x1d
SETUVAR fish_user_paths:/home/tgrosinger/\x2edotfiles/bin/linux

View File

@@ -0,0 +1,133 @@
#!/usr/bin/env fish
#
# Autoenv for fish shell.
# Based on, but heavily modified from:
# https://github.com/loopbit/autoenv_fish
#
set AUTOENV_AUTH_FILE ~/.autoenv_authorized
if [ -z "$AUTOENV_ENV_FILENAME" ]
set AUTOENV_ENV_FILENAME ".env"
end
# probe to see if we have access to a shasum command, otherwise disable autoenv
if which gsha1sum 2>/dev/null >&2
# Okay
else if which sha1sum 2>/dev/null >&2
# Okay
else if which shasum 2>/dev/null >&2
# Okay
else
echo "Autoenv cannot locate a compatible shasum binary; not enabling"
exit 1
end
# This function will be automatically called on directory change
# without needing to override the `cd` command.
function autoenv_init --on-variable PWD
set defIFS $IFS
set IFS (echo -en "\n\b")
set target $argv[1]
set home (dirname $HOME)
set search_dir $PWD
while [ $search_dir != / -a $search_dir != "$home" ]
set file "$search_dir/$AUTOENV_ENV_FILENAME"
if [ -e $file ]
set files $files $file
end
set search_dir (dirname $search_dir)
end
set numerator (count $files)
if [ $numerator -gt 0 ]
for x in (seq $numerator)
set envfile $files[$x]
autoenv_check_authz_and_run "$envfile"
end
end
set IFS $defIFS
end
function autoenv_run
set file "(realpath "$argv[1]")"
autoenv_check_authz_and_run "$file"
end
function autoenv_env
builtin echo "autoenv:" "$argv[1]"
end
function autoenv_printf
builtin printf "autoenv: "
builtin printf "$argv[1]"
end
function autoenv_indent
cat -e $argv[1] | sed 's/.*/autoenv: &/'
end
function autoenv_hashline
# typeset envfile hash
set envfile $argv[1]
set hash (shasum "$envfile" | cut -d' ' -f 1)
echo "$envfile:$hash"
end
function autoenv_check_authz
# typeset envfile hash
set envfile $argv[1]
set hash (autoenv_hashline "$envfile")
touch $AUTOENV_AUTH_FILE
grep -Gq "$hash" $AUTOENV_AUTH_FILE
end
function autoenv_check_authz_and_run
set envfile $argv[1]
if autoenv_check_authz "$envfile"
autoenv_source "$envfile"
return 0
end
if [ -z $MC_SID ] #make sure mc is not running
autoenv_env
autoenv_env "WARNING:"
autoenv_env "This is the first time you are about to source $envfile":
autoenv_env
autoenv_env " --- (begin contents) ---------------------------------------"
autoenv_indent "$envfile"
autoenv_env " --- (end contents) -----------------------------------------"
autoenv_env
autoenv_printf "Are you sure you want to allow this? (y/N) \n"
read answer
if [ $answer = y -o $answer = Y ]
autoenv_authorize_env "$envfile"
autoenv_source "$envfile"
end
end
end
function autoenv_deauthorize_env
#typeset envfile
set envfile $argv[1]
cp "$AUTOENV_AUTH_FILE" "$AUTOENV_AUTH_FILE.tmp"
grep -Gv "$envfile:" "$AUTOENV_AUTH_FILE.tmp" >$AUTOENV_AUTH_FILE
end
function autoenv_authorize_env
#typeset envfile
set envfile $argv[1]
autoenv_deauthorize_env "$envfile"
autoenv_hashline "$envfile" >>$AUTOENV_AUTH_FILE
end
function autoenv_source
#TODO: Why are global vars not being passed to sourced script?
set -g AUTOENV_CUR_FILE $argv[1]
set -g AUTOENV_CUR_DIR (dirname $argv[1])
source "$argv[1]"
#set -e AUTOENV_CUR_FILE
#set -e AUTOENV_CUR_DIR
end

View File

@@ -0,0 +1,24 @@
function fish_prompt
set -l __last_command_exit_status $status
set -l cyan (set_color -o cyan)
set -l yellow (set_color -o yellow)
set -l red (set_color -o red)
set -l green (set_color -o green)
set -l blue (set_color -o blue)
set -l normal (set_color normal)
set -l arrow_color "$green"
if test $__last_command_exit_status != 0
set arrow_color "$red"
end
set -l arrow "$arrow_color"
if fish_is_root_user
set arrow "$arrow_color# "
end
set -l cwd $cyan(prompt_pwd | path basename)
echo -n -s $arrow ' '$cwd $repo_info $normal ' '
end

View File

@@ -0,0 +1,30 @@
# name: 'Catppuccin Latte'
# url: 'https://github.com/catppuccin/fish'
# preferred_background: eff1f5
fish_color_normal 4c4f69
fish_color_command 1e66f5
fish_color_param dd7878
fish_color_keyword 8839ef
fish_color_quote 40a02b
fish_color_redirection ea76cb
fish_color_end fe640b
fish_color_comment 8c8fa1
fish_color_error d20f39
fish_color_gray 9ca0b0
fish_color_selection --background=ccd0da
fish_color_search_match --background=ccd0da
fish_color_option 40a02b
fish_color_operator ea76cb
fish_color_escape e64553
fish_color_autosuggestion 9ca0b0
fish_color_cancel d20f39
fish_color_cwd df8e1d
fish_color_user 179299
fish_color_host 1e66f5
fish_color_host_remote 40a02b
fish_color_status d20f39
fish_pager_color_progress 9ca0b0
fish_pager_color_prefix ea76cb
fish_pager_color_completion 4c4f69
fish_pager_color_description 9ca0b0

View File

@@ -0,0 +1,46 @@
font=JetBrainsMonoNerdFontMono:size=12
# Should automatically use these.
#font-bold=JetBrainsMonoNerdFontMono:weight=bold
#font-italic=JetBrainsMonoNerdFontMono:slant=italic
#font-bold-italic=JetBrainsMonoNerdFontMono:weight=bold:slant=italic
#
# Catppuccine Latte
# https://github.com/catppuccin/foot
#
[colors]
cursor=eff1f5 dc8a78
foreground=4c4f69
background=eff1f5
regular0=5c5f77
regular1=d20f39
regular2=40a02b
regular3=df8e1d
regular4=1e66f5
regular5=ea76cb
regular6=179299
regular7=acb0be
bright0=6c6f85
bright1=d20f39
bright2=40a02b
bright3=df8e1d
bright4=1e66f5
bright5=ea76cb
bright6=179299
bright7=bcc0cc
16=fe640b
17=dc8a78
selection-foreground=4c4f69
selection-background=ccced7
search-box-no-match=dce0e8 d20f39
search-box-match=4c4f69 ccd0da
jump-labels=dce0e8 fe640b
urls=1e66f5

View File

@@ -4,6 +4,7 @@ customCommands:
description: "Force push with lease." description: "Force push with lease."
key: "x" key: "x"
promptToReturnFromSubprocess: false # removes "press enter to return to lazygit" popup promptToReturnFromSubprocess: false # removes "press enter to return to lazygit" popup
notARepository: 'skip'
git: git:
autoForwardBranches: "none" autoForwardBranches: "none"
os: os:

View File

@@ -0,0 +1,38 @@
{
"LazyVim": { "branch": "main", "commit": "28db03f958d58dfff3c647ce28fdc1cb88ac158d" },
"SchemaStore.nvim": { "branch": "main", "commit": "5f2299987a1937612c910f00db39156bab6a6b35" },
"blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" },
"catppuccin": { "branch": "main", "commit": "ce4a8e0d5267e67056f9f4dcf6cb1d0933c8ca00" },
"conform.nvim": { "branch": "master", "commit": "4993e07fac6679d0a5005aa7499e0bad2bd39f19" },
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
"focus.nvim": { "branch": "master", "commit": "26a755c363284547196ceb258a83f92608d7979b" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" },
"grug-far.nvim": { "branch": "main", "commit": "b58b2d65863f4ebad88b10a1ddd519e5380466e0" },
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "7d527c76c43f46294de9c19d39c5a86317809b4b" },
"mason.nvim": { "branch": "main", "commit": "57e5a8addb8c71fb063ee4acda466c7cf6ad2800" },
"mini.ai": { "branch": "main", "commit": "bfb26d9072670c3aaefab0f53024b2f3729c8083" },
"mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" },
"mini.pairs": { "branch": "main", "commit": "472ec50092a3314ec285d2db2baa48602d71fe93" },
"mini.surround": { "branch": "main", "commit": "88c52297ed3e69ecf9f8652837888ecc727a28ee" },
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-lint": { "branch": "master", "commit": "d1118791070d090777398792a73032a0ca5c79ff" },
"nvim-lspconfig": { "branch": "master", "commit": "b2441c9374699685991959f50e5e6293c509e501" },
"nvim-treesitter": { "branch": "main", "commit": "17885756e63df73ed90db62e4630f744ceda6514" },
"nvim-treesitter-textobjects": { "branch": "main", "commit": "63c4dce4a56312ef1bdeafd16bdefa008fcc950a" },
"nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" },
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"render-markdown.nvim": { "branch": "main", "commit": "6e0e8902dac70fecbdd8ce557d142062a621ec38" },
"snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" },
"vim-tmux-navigator": { "branch": "master", "commit": "c45243dc1f32ac6bcf6068e5300f3b2b237e576a" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
}

View File

@@ -0,0 +1,13 @@
{
"extras": [
"lazyvim.plugins.extras.coding.mini-surround",
"lazyvim.plugins.extras.lang.json",
"lazyvim.plugins.extras.lang.markdown",
"lazyvim.plugins.extras.lang.yaml"
],
"install_version": 8,
"news": {
"NEWS.md": "11866"
},
"version": 8
}

View File

@@ -0,0 +1,173 @@
@import "catppuccin-latte"
// @import "catppuccin-frappe"
// @import "catppuccin-macchiato"
// @import "catppuccin-mocha"
* {
selected-active-foreground: @background;
lightfg: @text;
separatorcolor: @foreground;
urgent-foreground: @red;
alternate-urgent-background: @lightbg;
lightbg: @mantle;
background-color: transparent;
border-color: @foreground;
normal-background: @background;
selected-urgent-background: @red;
alternate-active-background: @lightbg;
spacing: 2;
alternate-normal-foreground: @foreground;
urgent-background: @background;
selected-normal-foreground: @lightbg;
active-foreground: @blue;
background: @base;
selected-active-background: @blue;
active-background: @background;
selected-normal-background: @lightfg;
alternate-normal-background: @lightbg;
foreground: @text;
selected-urgent-foreground: @background;
normal-foreground: @foreground;
alternate-urgent-foreground: @red;
alternate-active-foreground: @blue;
}
element {
padding: 1px ;
cursor: pointer;
spacing: 5px ;
border: 0;
}
element normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
element-text {
background-color: transparent;
cursor: inherit;
highlight: inherit;
text-color: inherit;
}
element-icon {
background-color: transparent;
size: 1.0000em ;
cursor: inherit;
text-color: inherit;
}
window {
padding: 5;
background-color: @background;
border: 1;
}
mainbox {
padding: 0;
border: 0;
}
message {
padding: 1px ;
border-color: @separatorcolor;
border: 2px dash 0px 0px ;
}
textbox {
text-color: @foreground;
}
listview {
padding: 2px 0px 0px ;
scrollbar: true;
border-color: @separatorcolor;
spacing: 2px ;
fixed-height: 0;
border: 2px dash 0px 0px ;
}
scrollbar {
width: 4px ;
padding: 0;
handle-width: 8px ;
border: 0;
handle-color: @normal-foreground;
}
sidebar {
border-color: @separatorcolor;
border: 2px dash 0px 0px ;
}
button {
cursor: pointer;
spacing: 0;
text-color: @normal-foreground;
}
button selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
num-filtered-rows {
expand: false;
text-color: Gray;
}
num-rows {
expand: false;
text-color: Gray;
}
textbox-num-sep {
expand: false;
str: "/";
text-color: Gray;
}
inputbar {
padding: 1px ;
spacing: 0px ;
text-color: @normal-foreground;
children: [ "prompt","textbox-prompt-colon","entry","num-filtered-rows","textbox-num-sep","num-rows","case-indicator" ];
}
case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
entry {
text-color: @normal-foreground;
cursor: text;
spacing: 0;
placeholder-color: Gray;
placeholder: "Type to filter";
}
prompt {
spacing: 0;
text-color: @normal-foreground;
}
textbox-prompt-colon {
margin: 0px 0.3000em 0.0000em 0.0000em ;
expand: false;
str: ":";
text-color: inherit;
}

View File

@@ -0,0 +1,29 @@
* {
rosewater: #dc8a78;
flamingo: #dd7878;
pink: #ea76cb;
mauve: #8839ef;
red: #d20f39;
maroon: #e64553;
peach: #fe640b;
yellow: #df8e1d;
green: #40a02b;
teal: #179299;
sky: #04a5e5;
sapphire: #209fb5;
blue: #1e66f5;
lavender: #7287fd;
text: #4c4f69;
subtext1: #5c5f77;
subtext0: #6c6f85;
overlay2: #7c7f93;
overlay1: #8c8fa1;
overlay0: #9ca0b0;
surface2: #acb0be;
surface1: #bcc0cc;
surface0: #ccd0da;
base: #eff1f5;
mantle: #e6e9ef;
crust: #dce0e8;
}

View File

@@ -0,0 +1,170 @@
@import "catppuccin-default"
configuration {
/* modes: "window,drun,run,ssh";*/
/* font: "mono 12";*/
/* location: 0;*/
/* yoffset: 0;*/
/* xoffset: 0;*/
/* fixed-num-lines: true;*/
/* show-icons: false;*/
/* preview-cmd: ;*/
/* on-selection-changed: ;*/
/* on-mode-changed: ;*/
/* on-entry-accepted: ;*/
/* on-menu-canceled: ;*/
/* on-menu-error: ;*/
/* on-screenshot-taken: ;*/
/* terminal: "rofi-sensible-terminal";*/
/* ssh-client: "ssh";*/
/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
/* run-command: "{cmd}";*/
/* run-list-command: "";*/
/* run-shell-command: "{terminal} -e {cmd}";*/
/* window-command: "wmctrl -i -R {window}";*/
/* window-match-fields: "all";*/
/* icon-theme: ;*/
/* drun-match-fields: "name,generic,exec,categories,keywords";*/
/* drun-categories: ;*/
/* drun-exclude-categories: ;*/
/* drun-show-actions: false;*/
/* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
/* drun-url-launcher: "xdg-open";*/
/* disable-history: false;*/
/* ignored-prefixes: "";*/
/* sort: false;*/
/* sorting-method: "normal";*/
/* case-sensitive: false;*/
/* case-smart: false;*/
/* cycle: true;*/
/* sidebar-mode: false;*/
/* hover-select: false;*/
/* eh: 1;*/
/* auto-select: false;*/
/* parse-hosts: false;*/
/* parse-known-hosts: true;*/
/* combi-modes: "window,run";*/
/* matching: "normal";*/
/* tokenize: true;*/
/* m: "-5";*/
/* filter: ;*/
/* dpi: -1;*/
/* threads: 0;*/
/* scroll-method: 0;*/
/* window-format: "{w} {c} {t}";*/
/* click-to-exit: true;*/
/* global-kb: false;*/
/* max-history-size: 25;*/
/* combi-hide-mode-prefix: false;*/
/* combi-display-format: "{mode} {text}";*/
/* matching-negate-char: '-' /* unsupported */;*/
/* cache-dir: ;*/
/* window-thumbnail: false;*/
/* drun-use-desktop-cache: false;*/
/* drun-reload-desktop-cache: false;*/
/* normalize-match: false;*/
/* steal-focus: false;*/
/* application-fallback-icon: ;*/
/* refilter-timeout-limit: 300;*/
/* xserver-i300-workaround: false;*/
/* completer-mode: "filebrowser";*/
/* imdkit: true;*/
/* pid: "/run/user/1000/rofi.pid";*/
/* display-window: ;*/
/* display-run: ;*/
/* display-ssh: ;*/
/* display-drun: ;*/
/* display-combi: ;*/
/* display-keys: ;*/
/* display-filebrowser: ;*/
/* display-recursivebrowser: ;*/
/* kb-primary-paste: "Control+V,Shift+Insert";*/
/* kb-secondary-paste: "Control+v,Insert";*/
/* kb-secondary-copy: "Control+c";*/
/* kb-clear-line: "Control+w";*/
/* kb-move-front: "Control+a";*/
/* kb-move-end: "Control+e";*/
/* kb-move-word-back: "Alt+b,Control+Left";*/
/* kb-move-word-forward: "Alt+f,Control+Right";*/
/* kb-move-char-back: "Left,Control+b";*/
/* kb-move-char-forward: "Right,Control+f";*/
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
/* kb-remove-word-forward: "Control+Alt+d";*/
/* kb-remove-char-forward: "Delete,Control+d";*/
/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
/* kb-remove-to-eol: "Control+k";*/
/* kb-remove-to-sol: "Control+u";*/
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
/* kb-accept-custom: "Control+Return";*/
/* kb-accept-custom-alt: "Control+Shift+Return";*/
/* kb-accept-alt: "Shift+Return";*/
/* kb-delete-entry: "Shift+Delete";*/
/* kb-mode-next: "Shift+Right,Control+Tab";*/
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
/* kb-mode-complete: "Control+l";*/
/* kb-row-left: "Control+Page_Up";*/
/* kb-row-right: "Control+Page_Down";*/
/* kb-row-up: "Up,Control+p";*/
/* kb-row-down: "Down,Control+n";*/
/* kb-row-tab: "";*/
/* kb-element-next: "Tab";*/
/* kb-element-prev: "ISO_Left_Tab";*/
/* kb-page-prev: "Page_Up";*/
/* kb-page-next: "Page_Down";*/
/* kb-row-first: "Home,KP_Home";*/
/* kb-row-last: "End,KP_End";*/
/* kb-row-select: "Control+space";*/
/* kb-screenshot: "Alt+S";*/
/* kb-ellipsize: "Alt+period";*/
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
/* kb-toggle-sort: "Alt+grave";*/
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
/* kb-custom-1: "Alt+1";*/
/* kb-custom-2: "Alt+2";*/
/* kb-custom-3: "Alt+3";*/
/* kb-custom-4: "Alt+4";*/
/* kb-custom-5: "Alt+5";*/
/* kb-custom-6: "Alt+6";*/
/* kb-custom-7: "Alt+7";*/
/* kb-custom-8: "Alt+8";*/
/* kb-custom-9: "Alt+9";*/
/* kb-custom-10: "Alt+0";*/
/* kb-custom-11: "Alt+exclam";*/
/* kb-custom-12: "Alt+at";*/
/* kb-custom-13: "Alt+numbersign";*/
/* kb-custom-14: "Alt+dollar";*/
/* kb-custom-15: "Alt+percent";*/
/* kb-custom-16: "Alt+dead_circumflex";*/
/* kb-custom-17: "Alt+ampersand";*/
/* kb-custom-18: "Alt+asterisk";*/
/* kb-custom-19: "Alt+parenleft";*/
/* kb-select-1: "Super+1";*/
/* kb-select-2: "Super+2";*/
/* kb-select-3: "Super+3";*/
/* kb-select-4: "Super+4";*/
/* kb-select-5: "Super+5";*/
/* kb-select-6: "Super+6";*/
/* kb-select-7: "Super+7";*/
/* kb-select-8: "Super+8";*/
/* kb-select-9: "Super+9";*/
/* kb-select-10: "Super+0";*/
/* kb-entry-history-up: "Control+Up";*/
/* kb-entry-history-down: "Control+Down";*/
/* kb-matcher-up: "Super+equal";*/
/* kb-matcher-down: "Super+minus";*/
/* ml-row-left: "ScrollLeft";*/
/* ml-row-right: "ScrollRight";*/
/* ml-row-up: "ScrollUp";*/
/* ml-row-down: "ScrollDown";*/
/* me-select-entry: "MousePrimary";*/
/* me-accept-entry: "MouseDPrimary";*/
/* me-accept-custom: "Control+MouseDPrimary";*/
timeout {
action: "kb-cancel";
delay: 0;
}
filebrowser {
directories-first: true;
sorting-method: "name";
}
}

View File

@@ -0,0 +1,37 @@
#!/usr/bin/env bash
# Read the most recent items from CopyQ and present them in a rofi menu.
#
# Converted to bash from
# https://github.com/cjbassi/rofi-copyq/blob/master/rofi-copyq
# CopyQ script to get all clipboard items as JSON
copyq_script_getAll='
var result=[];
for ( var i = 0; i < size(); ++i ) {
var obj = {};
obj.row = i;
obj.mimetypes = str(read("?", i)).split("\n");
obj.mimetypes.pop();
obj.text = str(read(i));
result.push(obj);
}
JSON.stringify(result);
'
# Get clipboard items from CopyQ
json_arr=$(printf '%s' "$copyq_script_getAll" | copyq -)
# Parse JSON and format items for rofi
# Process each JSON object separately, replacing newlines within each item
items=$(printf '%s' "$json_arr" | jq -r '.[] | .text | gsub("\n"; " ") | gsub(" +"; " ")')
# Show rofi menu and get selected index
title='rofi-copyq'
selected_index=$(printf '%s' "$items" | rofi -dmenu -i -p "$title" -format i)
# If user selected an item, select it in CopyQ
if [ -n "$selected_index" ]; then
echo "Selected item: $selected_index"
copyq "select($selected_index);"
fi

View File

@@ -0,0 +1,71 @@
#!/usr/bin/env bash
# https://github.com/onespaceman/menu-calc
# https://github.com/BarbUk/menu-qalc
# https://github.com/ClemaX/menu-qalc-wayland
#
# Calculator for use with rofi
# Copying to the clipboard requires wl-copy
usage() {
echo "$(tput bold)menu-calc$(tput sgr0)"
echo "A calculator for Rofi"
echo
echo "$(tput bold)Usage:$(tput sgr0)"
echo " = 4+2"
echo " = (4+2)/(4+3)"
echo " = 4^2"
echo " = sqrt(4)"
echo " = c(2)"
echo
echo "$(tput bold)Passing arguments to Rofi:$(tput sgr0)"
echo "Any parameters after ' -- ' will be passed to Rofi."
echo
echo " = -- <Rofi args>"
echo
echo "The answer can be copied to the clipboard and used for further calculations inside (or outside) Rofi."
echo
echo "If launched outside of Rofi the expression may need quotation marks."
exit
}
process_query() { # query
local query="$1"
qalc +u8 -color=never -terse <<<"$query" |
awk '!/^>/ && !/^$/ {gsub(/^[ \t]+|[ \t]+$/, "", $0); print}'
}
# Process CLI parameters
for var in "$@"; do
case $var in
-h | --help) usage ;;
--) break ;;
esac
done
# Path to menu application
if [[ -n $(command -v rofi) ]]; then
menu="$(command -v rofi)"
menu="$menu -dmenu -lines 3"
else
>&2 echo "Rofi not found"
exit
fi
# Determine args to pass to rofi
while [[ $# -gt 0 && $1 != "--" ]]; do
shift
done
[[ $1 == "--" ]] && shift
while true; do
action=$(echo -e "Copy\nClear\nClose" | ${menu} "$@" -p "= $answer")
case "$action" in
"Clear") answer= ;;
"Copy") wl-copy -- "$answer" ;;
"Close" | "") exit ;;
*) answer=$(process_query "$answer $action") ;;
esac
done

View File

@@ -0,0 +1,26 @@
set $rosewater #dc8a78
set $flamingo #dd7878
set $pink #ea76cb
set $mauve #8839ef
set $red #d20f39
set $maroon #e64553
set $peach #fe640b
set $yellow #df8e1d
set $green #40a02b
set $teal #179299
set $sky #04a5e5
set $sapphire #209fb5
set $blue #1e66f5
set $lavender #7287fd
set $text #4c4f69
set $subtext1 #5c5f77
set $subtext0 #6c6f85
set $overlay2 #7c7f93
set $overlay1 #8c8fa1
set $overlay0 #9ca0b0
set $surface2 #acb0be
set $surface1 #bcc0cc
set $surface0 #ccd0da
set $base #eff1f5
set $mantle #e6e9ef
set $crust #dce0e8

257
home/.config/sway/config Normal file
View File

@@ -0,0 +1,257 @@
# Default config for sway
# Read `man 5 sway` for a complete reference.
### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
# Your preferred terminal emulator
set $term alacritty
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
# Recommends: rofi-wayland
set $rofi_cmd rofi \
-terminal '$term'
# Shows a combined list of the applications with desktop files and
# executables from PATH.
# TODO: add window with the next release of rofi-wayland
set $menu $rofi_cmd -show combi -combi-modes drun#run -modes combi
### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
# Requires: desktop-backgrounds-compat, swaybg, jxl-pixbuf-loader
output * bg /usr/share/backgrounds/default.jxl fill
#
# Example configuration:
#
# output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
### Idle configuration
#
# Example configuration:
#
# exec swayidle -w \
# timeout 300 'swaylock -f -c 000000' \
# timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
# before-sleep 'swaylock -f -c 000000'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
### Input configuration
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
input "2362:628:PIXA3854:00_093A:0274_Touchpad" {
# Allow clicking by tapping.
tap enabled
# Moving fingers up moves the display down, like a phone.
natural_scroll enabled
# Two fingers is right click.
click_method clickfinger
}
### Key bindings
#
# Basics:
#
# Start a terminal
bindsym $mod+Return exec $term
# Kill focused window
bindsym $mod+Shift+q kill
# Start your launcher
bindsym $mod+d exec $menu
# Window switching
bindsym $mod+Tab exec rofi -show window -modes window
# Clipboard history
bindsym $mod+Shift+v exec /home/tgrosinger/.config/rofi/scripts/copyq.sh
# Calculator
bindsym $mod+Equal exec /home/tgrosinger/.config/rofi/scripts/qalc.sh
# Lazygit
bindsym $mod+g exec alacritty --title Floating-Lazygit --command /home/linuxbrew/.linuxbrew/bin/lazygit; grab_focus; floating enable
for_window [title="Floating-Lazygit"] floating enable
for_window [title="Floating-Lazygit"] resize set 1800 1200
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
#
# Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#
# Theme
#
include catppuccin-latte
# target title bg text indicator border
client.focused $lavender $surface0 $text $rosewater $lavender
client.focused_inactive $overlay0 $base $text $rosewater $overlay0
client.unfocused $overlay0 $base $text $rosewater $overlay0
client.urgent $peach $base $peach $overlay0 $peach
client.placeholder $overlay0 $base $text $overlay0 $overlay0
client.background $base
#
# Launch default apps
#
exec copyq
exec workrave
# Include configs from 3 locations:
# - /usr/share/sway/config.d
# - /etc/sway/config.d
# - $XDG_CONFIG_HOME/sway/config.d ($HOME/.config/sway/config.d)
#
# If multiple directories contain the files with the same name, the later
# directory takes precedence; `$XDG_CONFIG_HOME/sway/config.d/20-swayidle.conf`
# will always be loaded instead of `/usr/share/sway/config.d/20-swayidle.conf`
# or `/etc/sway/config.d/20-swayidle.conf`
#
# This mechanism permits overriding our default configuration per-system
# (/etc) or per-user ($XDG_CONFIG_HOME) basis. Just create the file you
# want to modify/override in the higher-level directory.
#
# For example, to disable the default bar from Fedora configs, you'll need to
# $ echo -n > "$HOME/.config/sway/config.d/90-bar.conf"
#
# Note the quoting, the $() and the arguments quoting. All the parts are equally
# important to make the magic work. And if you want to learn the secret behind
# the trick, it's all in the `wordexp(3)`.
#
include '$(/usr/libexec/sway/layered-include "/usr/share/sway/config.d/*.conf" "/etc/sway/config.d/*.conf" "${XDG_CONFIG_HOME:-$HOME/.config}/sway/config.d/*.conf")'

View File

@@ -0,0 +1,35 @@
# Image path supports environment variables and shell expansions,
# e.g. image=$HOME/Pictures/default.png
image=/usr/share/backgrounds/default.jxl
scaling=fill
# Catppuccin Latte
color=eff1f5
bs-hl-color=dc8a78
caps-lock-bs-hl-color=dc8a78
caps-lock-key-hl-color=40a02b
inside-color=00000000
inside-clear-color=00000000
inside-caps-lock-color=00000000
inside-ver-color=00000000
inside-wrong-color=00000000
key-hl-color=40a02b
layout-bg-color=00000000
layout-border-color=00000000
layout-text-color=4c4f69
line-color=00000000
line-clear-color=00000000
line-caps-lock-color=00000000
line-ver-color=00000000
line-wrong-color=00000000
ring-color=7287fd
ring-clear-color=dc8a78
ring-caps-lock-color=fe640b
ring-ver-color=1e66f5
ring-wrong-color=e64553
separator-color=00000000
text-color=4c4f69
text-clear-color=dc8a78
text-caps-lock-color=fe640b
text-ver-color=1e66f5
text-wrong-color=e64553

View File

@@ -0,0 +1,211 @@
// -*- mode: jsonc -*-
{
// "layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"height": 30, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 0, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [
"sway/workspaces",
"sway/mode",
"sway/scratchpad"
],
"modules-center": [
"sway/window"
],
"modules-right": [
"idle_inhibitor",
"pulseaudio",
"network",
"power-profiles-daemon",
"cpu",
//"memory",
//"temperature",
"backlight",
//"sway/language",
"battery",
"clock",
"tray"
],
// Modules configuration
// "sway/workspaces": {
// "disable-scroll": true,
// "all-outputs": true,
// "warp-on-scroll": false,
// "format": "{name}: {icon}",
// "format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "urgent": "", "focused": "", "default": "" }
// },
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"sway/scratchpad": {
"format": "{icon} {count}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10,
// "icons": {
// "blueman": "bluetooth",
// "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
// }
},
"clock": {
// "timezone": "America/New_York",
"tooltip-format": "<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}"
},
"cpu": {
"format": "{usage}% ",
"tooltip": false
},
"memory": {
"format": "{}% "
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent}% {icon}",
"format-icons": ["🌑", "🌘", "🌗", "🌖", "🌕"]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-full": "{capacity}% {icon}",
"format-charging": "{capacity}% ",
"format-plugged": "{capacity}% ",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{essid} ({signalStrength}%) ",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{volume}% {icon} {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {text}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
}
}

View File

@@ -0,0 +1,26 @@
@define-color rosewater #dc8a78;
@define-color flamingo #dd7878;
@define-color pink #ea76cb;
@define-color mauve #8839ef;
@define-color red #d20f39;
@define-color maroon #e64553;
@define-color peach #fe640b;
@define-color yellow #df8e1d;
@define-color green #40a02b;
@define-color teal #179299;
@define-color sky #04a5e5;
@define-color sapphire #209fb5;
@define-color blue #1e66f5;
@define-color lavender #7287fd;
@define-color text #4c4f69;
@define-color subtext1 #5c5f77;
@define-color subtext0 #6c6f85;
@define-color overlay2 #7c7f93;
@define-color overlay1 #8c8fa1;
@define-color overlay0 #9ca0b0;
@define-color surface2 #acb0be;
@define-color surface1 #bcc0cc;
@define-color surface0 #ccd0da;
@define-color base #eff1f5;
@define-color mantle #e6e9ef;
@define-color crust #dce0e8;

View File

@@ -0,0 +1,281 @@
@import "latte.css";
* {
font-family: 'JetBrainsMono';
font-size: 13px;
}
window#waybar {
background-color: @base;
border-bottom: 2px solid alpha(@crust, 0.3);
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
.module {
color: @text;
}
.modules-right .module {
background-color: @surface0;
}
/*
window#waybar.empty {
background-color: transparent;
}
window#waybar.solo {
background-color: #FFFFFF;
}
*/
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
#idle_inhibitor:hover,
#battery:hover,
#clock:hover,
#pulseaudio:hover {
background-color: @surface2;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: @text;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.focused {
background-color: @surface0;
box-shadow: inset 0 -3px @overlay1;
}
#workspaces button.urgent {
background-color: shade(@red, 0.7);
}
#mode {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#battery.charging, #battery.plugged {
background-color: @green;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.warning:not(.charging) {
background-color: @yellow;
}
#battery.critical:not(.charging) {
background-color: @red;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#power-profiles-daemon {
padding-right: 15px;
}
#power-profiles-daemon.performance {
background-color: #f53c3c;
color: #ffffff;
}
#power-profiles-daemon.balanced {
background-color: #2980b9;
color: #ffffff;
}
#power-profiles-daemon.power-saver {
background-color: #2ecc71;
color: #000000;
}
label:focus {
background-color: #000000;
}
#network.disconnected {
background-color: @crust;
}
#pulseaudio.muted {
background-color: @crust;
color: @subtext1;
}
#wireplumber {
background-color: #fff0f5;
color: #000000;
}
#wireplumber.muted {
background-color: #f53c3c;
}
#custom-media {
background-color: #66cc99;
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature.critical {
background-color: #eb4d4b;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor.activated {
background-color: @teal;
color: @base;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
#language {
background: #00b093;
color: #740864;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
background: #97e1ad;
color: #000000;
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
}
#privacy {
padding: 0;
}
#privacy-item {
padding: 0 5px;
color: white;
}
#privacy-item.screenshare {
background-color: #cf5700;
}
#privacy-item.audio-in {
background-color: #1ca000;
}
#privacy-item.audio-out {
background-color: #0069d4;
}

View File

@@ -36,7 +36,7 @@
sync = "!git fetch -p && git rebase origin/$(git default-branch)" sync = "!git fetch -p && git rebase origin/$(git default-branch)"
[core] [core]
editor = vim editor = nvim
pager = delta pager = delta
attributesfile = /home/tgrosinger/.gitattributes attributesfile = /home/tgrosinger/.gitattributes
excludesfile = /home/tgrosinger/.gitignore_global excludesfile = /home/tgrosinger/.gitignore_global

View File

78
install-packages.sh Executable file
View File

@@ -0,0 +1,78 @@
# Install homebrew dependencies
sudo dnf group install development-tools
echo "Installing homebrew"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# NOTE: Do not brew install anything with a dependency on node.
# Instead, install with npm -g.
brew install \
atuin \
bat \
eza \
fd \
fish \
fzf \
gcc \
gh \
git \
git-delta \
jq \
lazygit \
neovim \
restic \
ripgrep \
stow \
tmux
#crane \
#deno \
#dive \
#go \
#gron \
#hadolint \
#pnpm
#sqlite \
#stripe-cli \
#visidata \
brew services start atuin
# Previously these were installed with npm because I didn't want to use brew to
# install packages with a node dependency. I'm not sure if that is still required.
#npm install -g @devcontainers/cli
#npm install -g mjml
#npm install -g jsonlint
# Install ble.sh
# https://github.com/akinomyoga/ble.sh
# Install system packages
sudo dnf install \
alacritty \
copyq \
direnv \
distrobox \
fuse-libs \ # For running appimages
gstreamer1-plugin-openh264 mozilla-openh264 \ # For twitch videos
podman \
qalculate qalculate-gtk # Homebrew version installs x11 and waylany in brew.
# Install tailscale
# https://tailscale.com/kb/1511/install-fedora-2
# Install flatpaks
flatpak install io.dbeaver.DBeaverCommunity
flatpak install flathub org.gimp.GIMP
flatpak install flathub org.gnucash.GnuCash
flatpak install flathub org.kde.digikam
flatpak install flathub org.libreoffice.LibreOffice
flatpak install flathub org.kde.okular
# Install devbox
# https://www.jetify.com/docs/devbox/installing-devbox
curl -fsSL https://get.jetify.com/devbox | bash
# Installing tmux plugins
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

View File

@@ -1,164 +0,0 @@
#!/bin/bash
################################################################################
#Copyright (C) 2022 Tony Grosinger. All rights reserved.
#
#Description:
# This script can be run in two modes depending on the file structure of the
# current working directory or the arguments passed to it.
#
# Mode 1: From within a cloned repository or downloaded snapshot with all files
# already present and ready to be symlinked
#
# Mode 2: Standalone or through Curl in which case all required files will be
# downloaded automatically to `~/.dotfiles` before creating symlinks.
#
################################################################################
DOTFILES_DIR="${HOME}/.dotfiles"
GIT_REPO_BASE="https://github.com/tgrosinger/dotfiles"
GIT_REPO="${GIT_REPO_BASE}.git"
REPO_TAR="${GIT_REPO_BASE}/archive/master.tar.gz"
################################################################################
# Define functions
################################################################################
# Remove a file if it exists then create a symlink to the one contained in ${DOTFILES_DIR}
function linkFile() {
ln -fns ${DOTFILES_DIR}/$1 $1;
}
# Create a directory named by first parameter. Delete directory first if it already exists.
function createDirectory() {
if [ -d $1 ]; then rm -rf $1; fi
mkdir $1
}
# Perform the actual work of copying files and creating symlinks.
# Requires a home directory argument.
function performSetup() {
if [ ${#} != 1 ]; then
echo "Must pass home directory to ${FUNCNAME}"
exit 1
fi
home=${1}
echo "Moving to Home directory..."
pushd ${home} > /dev/null
echo "Linking shell configs..."
linkFile ".bashrc"
echo "Linking vim..."
linkFile ".vim"
linkFile ".vimrc"
echo "Linking Git..."
linkFile ".gitconfig"
linkFile ".gitattributes"
echo "Linking LazyGit..."
mkdir -p ~/.config/lazygit
ln -fns ${DOTFILES_DIR}/.lazygit ~/.config/lazygit/config.yml
echo "Linking Atuin..."
mkdir -p ~/.config/atuin
ln -fns ${DOTFILES_DIR}/atuin.toml ~/.config/atuin/config.toml
echo "Linking Ble.sh..."
linkFile ".blerc"
echo "Linking tmux..."
linkFile ".tmux.conf"
echo "Linking inputrc..."
linkFile ".inputrc"
echo "Installing tmux plugins"
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
echo "Linking gitmux..."
linkFile ".gitmux.conf"
echo "Linking neovim config"
ln -fns ${DOTFILES_DIR}/nvim ~/.config/nvim
echo "Installing homebrew"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
if [[ "${OSTYPE}" == "darwin"* ]]; then
brew install tmux
else
sudo apt install build-essential visidata
fi
# NOTE: Do not brew install anything with a dependency on node.
# Instead, install with npm -g.
brew install \
gcc \
tmux neovim \
eza bat fzf ripgrep fd jq gron \
hadolint \
git lazygit git-delta \
crane dive \
go sqlite \
stripe-cli restic \
deno pnpm
npm install -g @devcontainers/cli
npm install -g mjml
npm install -g jsonlint
popd > /dev/null
}
################################################################################
# Initialize (Determine mode)
################################################################################
# Determine which mode we are running in. (Does the install script exist in the dotfiles directory?)
if [ -f ${DOTFILES_DIR}/install.sh ]; then
echo "Running in Mode 1: Already cloned repository"
performSetup ${HOME}
echo "Done! Restart your shell to see changes"
else
echo "Running in Mode 2: Direct from Curl"
# Make sure git is installed. Exit if it isn't.
if which git; then
# Git is installed, clone the repository using read-only url
if [ -d ${DOTFILES_DIR} ]; then
if [ -d ${DOTFILES_DIR}/.git ]; then
echo "Updating dotfiles repository in ${DOTFILES_DIR}"
pushd ${DOTFILES_DIR} > /dev/null
git pull > /dev/null
popd > /dev/null
else
echo "Cloning dotfiles repository to ${DOTFILES_DIR}"
rm -rf ${DOTFILES_DIR}
git clone ${GIT_REPO} ${DOTFILES_DIR}
fi
else
echo "Cloning dotfiles repository to ${DOTFILES_DIR}"
git clone ${GIT_REPO} ${DOTFILES_DIR}
fi
else
# Git is not installed, download the zip and extract
if ! which wget; then
echo "You must have either git or wget installed. Please install one before continuing."
exit 1
fi
if [ -d ${DOTFILES_DIR} ]; then
rm -rf ${DOTFILES_DIR}
fi
mkdir ${DOTFILES_DIR}
curl -L ${REPO_TAR} | tar zx --strip 1 --directory ${DOTFILES_DIR}
fi
performSetup ${HOME}
echo "Done! Restart your shell to see changes"
fi

View File

@@ -1,56 +0,0 @@
{
"LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" },
"SchemaStore.nvim": { "branch": "main", "commit": "e906ac3ed0bd273781759e7635b5b824393c925c" },
"blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "30fa4d122d9b22ad8b2e0ab1b533c8c26c4dde86" },
"conform.nvim": { "branch": "master", "commit": "04bfa5f35706410376bf7618a01fcf44e3f35b59" },
"crates.nvim": { "branch": "main", "commit": "a49df0f70171adc77704eac70dd2c0d179065933" },
"firenvim": { "branch": "master", "commit": "c927486daff6d1eb8a0d61fd9e264bc1bf5f2c36" },
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
"focus.nvim": { "branch": "master", "commit": "5500e1a9e926eec5a361d910679282fd723c0a96" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" },
"grug-far.nvim": { "branch": "main", "commit": "385d1949dc21d0c39e7a74b4f4a25da18817bc86" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "86389a3dd687cfaa647b6f44731e492970034baa" },
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
"mini.ai": { "branch": "main", "commit": "1cd4f021a05c29acd4ab511c0981da14217daf38" },
"mini.icons": { "branch": "main", "commit": "b8f6fa6f5a3fd0c56936252edcd691184e5aac0c" },
"mini.pairs": { "branch": "main", "commit": "1e1ca3f60f58d4050bf814902b472eec9963a5dd" },
"mini.surround": { "branch": "main", "commit": "7a8606333affe7ce637a0ba91bbafc46fc42bfa0" },
"neotest": { "branch": "master", "commit": "35a59c1f59dbb954d92b74ab64a966a668cea495" },
"neotest-golang": { "branch": "main", "commit": "e892eeb585f8bb041eb50e9fc58d6d48f62c3717" },
"neotest-jest": { "branch": "main", "commit": "46ccc50273838f0b48e3c4814c1c46c0ccfe9edf" },
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-ansible": { "branch": "main", "commit": "bba61168b7aef735e7f950fdfece5ef6c388eacf" },
"nvim-dap": { "branch": "master", "commit": "f777d1d20ed50c2f312e286892c062d9c2f1c6fe" },
"nvim-dap-go": { "branch": "main", "commit": "b4421153ead5d726603b02743ea40cf26a51ed5f" },
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
"nvim-lint": { "branch": "master", "commit": "7ef127aaede2a4d5ad8df8321e2eb4e567f29594" },
"nvim-lspconfig": { "branch": "master", "commit": "d64ea08d8033543a61af35f2f23cac0f0d05f7b4" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" },
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
"persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"render-markdown.nvim": { "branch": "main", "commit": "0087ee1d505d4fc4886d8d3121ae7848b7c0e49b" },
"rustaceanvim": { "branch": "master", "commit": "cd67c30b63dd0fc58c4662b54d2cef50cfe60d57" },
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
"ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" },
"vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" },
"vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" },
"vim-dadbod-ui": { "branch": "master", "commit": "2900a1617b3df1a48683d872eadbe1101146a49a" },
"vim-tmux-navigator": { "branch": "master", "commit": "c45243dc1f32ac6bcf6068e5300f3b2b237e576a" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
}

View File

@@ -1,23 +0,0 @@
{
"extras": [
"lazyvim.plugins.extras.coding.mini-surround",
"lazyvim.plugins.extras.dap.core",
"lazyvim.plugins.extras.formatting.prettier",
"lazyvim.plugins.extras.lang.ansible",
"lazyvim.plugins.extras.lang.go",
"lazyvim.plugins.extras.lang.json",
"lazyvim.plugins.extras.lang.markdown",
"lazyvim.plugins.extras.lang.sql",
"lazyvim.plugins.extras.lang.svelte",
"lazyvim.plugins.extras.lang.tailwind",
"lazyvim.plugins.extras.lang.typescript",
"lazyvim.plugins.extras.lang.yaml",
"lazyvim.plugins.extras.linting.eslint",
"lazyvim.plugins.extras.test.core"
],
"install_version": 8,
"news": {
"NEWS.md": "10960"
},
"version": 8
}

View File

@@ -1,11 +0,0 @@
-- This can be removed once the fix is merged upstream.
-- See https://github.com/LazyVim/LazyVim/pull/6354
return {
"akinsho/bufferline.nvim",
init = function()
local bufline = require("catppuccin.groups.integrations.bufferline")
function bufline.get()
return bufline.get_theme()
end
end,
}

View File

@@ -1,21 +0,0 @@
return {
{
"nvim-neotest/neotest",
dependencies = {
"haydenmeade/neotest-jest",
},
opts = function(_, opts)
table.insert(
opts.adapters,
require("neotest-jest")({
jestCommand = "npm test",
jestConfigFile = "jest.config.ts",
-- env = { CI = true },
cwd = function()
return vim.fn.getcwd()
end,
})
)
end,
},
}

10
run-stow.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
if [ ! -d "${HOME}/.dotfiles" ]; then
echo "Cannot find dotfiles directory in user home."
exit 1
fi
pushd ${HOME}/.dotfiles >/dev/null
stow -v .
popd >/dev/null