Compare commits
73 Commits
b5b32cf017
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 4fad7b86f4 | |||
| db2b30210a | |||
| 9b6974dce5 | |||
| 87e8ff848b | |||
| 69806a9411 | |||
| 79f53976da | |||
| d796c73bad | |||
| f25745c709 | |||
| 8d845e0fc8 | |||
| ae1166a463 | |||
| 56557f4cf0 | |||
| 2bbd3c9d78 | |||
| 464b7808f7 | |||
| 5cbdb77ea0 | |||
| 99a3f1aba0 | |||
| e5195542ef | |||
| 5481306e0d | |||
| a35cd568ce | |||
| 7ef1d2f391 | |||
| f1700e1d3d | |||
| 52610e056a | |||
| 97519acea1 | |||
| 5c9820d069 | |||
| bb97234f1b | |||
| 91cc2cf14a | |||
| ac91c7974c | |||
| 1377026a56 | |||
| 066ef0e6fa | |||
| b5e0d1b2e6 | |||
| bb453be9e8 | |||
| f98658f02b | |||
| f4baf50cf1 | |||
| 392b24e18b | |||
| 529eef185c | |||
| 5c8dfa34ca | |||
| bd5cb81499 | |||
| f8bb7bbf03 | |||
| 49be8f8393 | |||
| f36cb204c4 | |||
| 158b6a285d | |||
| 05ab1fb1b1 | |||
| 0ad0691120 | |||
| 05ca9cfb85 | |||
| f82a7c4c71 | |||
| 1be24fa795 | |||
| eb623754e6 | |||
| a3707b5ca9 | |||
| 26028eb228 | |||
| a788324026 | |||
| 3ba8b1699c | |||
| a1d9a1de29 | |||
| ea8e3e54db | |||
| b17b011958 | |||
| 8e59c35cff | |||
| 5f07adee2d | |||
| 9a5595245c | |||
| 992f81fc04 | |||
| c9bad270d2 | |||
| 7f287b591e | |||
| 891b605dbe | |||
| 759958b126 | |||
| d4f05595d2 | |||
| 624a06cc36 | |||
| 1c8e6c2165 | |||
| 34a62957e8 | |||
| fd4a95bc36 | |||
| 424e2be8ee | |||
| 9440c6ef57 | |||
| 3caa97137b | |||
| 371a034035 | |||
| 7dbe5a57ba | |||
| fb04063cdc | |||
| 74988a2080 |
84
README.md
84
README.md
@@ -1,53 +1,45 @@
|
|||||||
# repo containing configs and scripts to set up a box
|
# dotfiles, plus installation and related scripts
|
||||||
|
|
||||||
### script run
|
This repo contains a collection of scripts and files related to:
|
||||||
- [prerequisites below are fulfilled]
|
|
||||||
|
- configuration (i.e. this serves as my dotfiles repo)
|
||||||
|
- installation of programs
|
||||||
|
- scripts/executables for my local systems
|
||||||
|
- anything else related to getting my boxes (computers) set up as desired
|
||||||
|
|
||||||
|
This repo grew into more than I originally intended, but it turned into a fun little
|
||||||
|
excursion into the realm of shell scripting (and an intro to Lua for the neovim
|
||||||
|
portions).
|
||||||
|
|
||||||
|
## prereqs
|
||||||
|
|
||||||
|
- programs installed: git, sed, zsh
|
||||||
- git clone this repo
|
- git clone this repo
|
||||||
- from the repo's root directory, run `./box_setup`
|
|
||||||
|
|
||||||
### prerequisites
|
### specific prereqs, linux distros
|
||||||
- package manager is configured (i.e. source repos, mirrors, etc. configured)
|
|
||||||
- zsh is installed (scripts are written for zsh)
|
|
||||||
- sudo access is configured for current user (2025-01-27, not needed on macos)
|
|
||||||
- export the env var `BOX_SETUP_OS` to indicate the operating system
|
|
||||||
- options defined in `set_script_env_vars` file
|
|
||||||
- system-specific items below are fulfilled
|
|
||||||
|
|
||||||
##### prereqs, os specific, linux-placeholder
|
- sudo access is configured for current user
|
||||||
- (currently none)
|
|
||||||
|
### specific prereqs, macos
|
||||||
|
|
||||||
##### prereqs, os specific, macos
|
|
||||||
- install the package manager, [homebrew](https://brew.sh/)
|
- install the package manager, [homebrew](https://brew.sh/)
|
||||||
- for yabai window manager (so as to not mess with SIP settings)
|
- for aerospace window manager, have only 1 workspace/desktop
|
||||||
- create 9 spaces/desktops
|
- manual settings, refer to [docs/macos-system-settings](docs/macos-system-settings.md)
|
||||||
- system settings > keyboard shortcuts: set keys to switch between spaces/desktops
|
|
||||||
- system settings > desktop/dock/mission-control:
|
## script run
|
||||||
- `click wallpaper to reveal desktop`: set to "only in stage manager"
|
|
||||||
- all `drag windows to corner/edge/place` types of options: disabled
|
- to do the full setup, from the repo's root dir, run: `./box_setup.sh`
|
||||||
- `rearrange spaces based on recent use`: disabled
|
- to copy dotfiles only, from the repo's root dir, run: `./copy_dotfiles.sh`
|
||||||
- `when switch to app... switch to space with open windows of app`: disabled
|
|
||||||
- `displays have separate spaces`: enabled
|
## after script run
|
||||||
- `show files on desktop`: enabled
|
|
||||||
|
- complete manual actions specified in [docs/post-run](docs/post-run.md)
|
||||||
|
|
||||||
|
## todo items
|
||||||
|
|
||||||
|
see [docs/todo.md](docs/todo.md)
|
||||||
|
|
||||||
|
## attribution
|
||||||
|
|
||||||
|
see [docs/attribution.md](docs/attribution.md)
|
||||||
|
|
||||||
### todo items
|
|
||||||
- add logic to the main run script to handle cloning of this repo
|
|
||||||
- add logic to the main run script to set `BOX_SETUP_OS` var, either input param or detect
|
|
||||||
- config for nvim
|
|
||||||
- config for mpd, mpc, ncmpcpp
|
|
||||||
- config for ghostty
|
|
||||||
- config for mpv
|
|
||||||
- also, on macos, get it to open within terminal or just don't install it
|
|
||||||
- config for gimp, `src_files/.config/GIMP` (dir)
|
|
||||||
- set things in gtkrc only? still need to nest that within a sub dir?
|
|
||||||
- or maybe just configure in gimp's gui, copy the whole resulting dir into
|
|
||||||
`src_files/.config/GIMP` (edit out and delete what i don't need) and call it a day
|
|
||||||
- for whatever is causing it, editor/terminal/other, git rid of ligatures/name?
|
|
||||||
- for example, `>=` is two chars (`>` then `=`), not one char/symbol
|
|
||||||
- decide on window manager for linux, then do config
|
|
||||||
- look into xquartz for macos (x/xorg emulation or something?)
|
|
||||||
- build in flags/logic for skipping certain installs/builds (and maybe configs?) on a
|
|
||||||
given system (i.e. don't install on a company box, on a server, etc.)
|
|
||||||
- decide on and implement approach for languages and versioning
|
|
||||||
- docker? or alternatives like podman? any license concerns?
|
|
||||||
- asdf, or language-specific version managers?
|
|
||||||
- hybrid of the above?
|
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
source set_script_env_vars
|
|
||||||
source ./src_files/.config/zsh/.zshenv
|
|
||||||
./make_config_dirs
|
|
||||||
./copy_configs
|
|
||||||
source $ZDOTDIR/.zshenv ; source $ZDOTDIR/.zshrc
|
|
||||||
./make_org_structure_dirs
|
|
||||||
./install_programs # TODO: moved this to after config copy, but does this work?
|
|
||||||
61
box_setup.sh
Executable file
61
box_setup.sh
Executable file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
[[ $1 = "--help" ]] && {
|
||||||
|
echo "\nusage: ./box_setup.sh [system-type]"
|
||||||
|
echo "\nsystem-type options: work"
|
||||||
|
echo "\nexamples:\n ./box_setup.sh\n ./box_setup.sh work\n"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "---- settings vars for system type -----"
|
||||||
|
|
||||||
|
# determine OS and, if linux, distro
|
||||||
|
[[ "$OSTYPE" = *"darwin"* ]] && setup_os="macos" || {
|
||||||
|
[[ "$OSTYPE" = *"linux"* ]] && setup_os="linux" && {
|
||||||
|
[[ -f /etc/os-release ]] && . /etc/os-release
|
||||||
|
setup_distro=$(echo "${NAME%% *}" | tr '[:upper:]' '[:lower:]')
|
||||||
|
[[ -z "$setup_distro" ]] && echo "OS: linux; distro not detected" && exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[[ -z "$setup_os" ]] && echo "OS not detected" && exit 1
|
||||||
|
|
||||||
|
# set package manager commands for installs
|
||||||
|
[[ "$setup_os" = "macos" ]] && {
|
||||||
|
install_cmd="brew install"
|
||||||
|
update_pkg_manager_and_defs_cmd='brew update'
|
||||||
|
update_pkgs_cmd='brew upgrade'
|
||||||
|
} || {
|
||||||
|
[[ "$setup_os" = "linux" ]] && {
|
||||||
|
case $setup_distro in
|
||||||
|
(arch | artix)
|
||||||
|
install_cmd="sudo pacman -S --noconfirm"
|
||||||
|
update_pkg_manager_and_defs_cmd='' # don't; update system instead?
|
||||||
|
update_pkgs_cmd='sudo pacman -Syu'
|
||||||
|
;;
|
||||||
|
(debian)
|
||||||
|
install_cmd="sudo apt install"
|
||||||
|
update_pkg_manager_and_defs_cmd='sudo apt update'
|
||||||
|
update_pkgs_cmd='sudo apt upgrade'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# export vars for scripts
|
||||||
|
export BOX_SETUP_OS="$setup_os"
|
||||||
|
export BOX_SETUP_DISTRO="$setup_distro"
|
||||||
|
export BOX_SETUP_INSTALL_COMMAND="$install_cmd"
|
||||||
|
export BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD="$update_pkg_manager_and_defs_cmd"
|
||||||
|
export BOX_SETUP_UPDATE_PKGS_CMD="$update_pkgs_cmd"
|
||||||
|
|
||||||
|
# make dirs and copy configs/dotfiles
|
||||||
|
. ./src_files/shell/profile
|
||||||
|
./make_dirs.sh
|
||||||
|
./copy_dotfiles.sh "--skip-theme-config"
|
||||||
|
|
||||||
|
# install programs
|
||||||
|
. $ZDOTDIR/.zshrc
|
||||||
|
./install_programs.sh $1
|
||||||
|
|
||||||
|
# configure themes
|
||||||
|
./theme_config.sh
|
||||||
52
copy_configs
52
copy_configs
@@ -1,52 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
execute() { log "execute $@" && "$@" }
|
|
||||||
log() { echo "$@" }
|
|
||||||
|
|
||||||
copy_file() {
|
|
||||||
local from=$1
|
|
||||||
local to=$2
|
|
||||||
local filename=$(basename $from)
|
|
||||||
[[ -e $to/$filename ]] && execute rm $to/$filename
|
|
||||||
execute cp -p $from $to/$filename
|
|
||||||
}
|
|
||||||
|
|
||||||
copy_dir() {
|
|
||||||
local from=$1
|
|
||||||
local to=$2
|
|
||||||
pushd $from > /dev/null
|
|
||||||
local directories=(`find . -mindepth 1 -maxdepth 1 -type d`)
|
|
||||||
for dir in $directories; do
|
|
||||||
[[ -d $to/$dir ]] && execute rm -rf $to/$dir
|
|
||||||
execute cp -rp $dir $to/$dir
|
|
||||||
done
|
|
||||||
local files=(`find . -mindepth 1 -maxdepth 1 -type f`)
|
|
||||||
for file in $files; do
|
|
||||||
copy_file $file $to
|
|
||||||
done
|
|
||||||
popd > /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
link_dir() {
|
|
||||||
local src_dir=$1
|
|
||||||
local link_dir=$2
|
|
||||||
log "deleting existing link/dir: $link_dir"
|
|
||||||
[[ -h "$link_dir" ]] && rm $link_dir
|
|
||||||
[[ -d "$link_dir" ]] && rm -rf $link_dir
|
|
||||||
log "sym-linking $link_dir -> $src_dir"
|
|
||||||
ln -s $src_dir $link_dir
|
|
||||||
}
|
|
||||||
|
|
||||||
log "---------------- dotfiles ----------------"
|
|
||||||
|
|
||||||
copy_file src_files/.config/zsh/.zshenv $HOME # duplicate, copy anyway, ensures $ZDOTDIR
|
|
||||||
|
|
||||||
copy_dir src_files/.config $XDG_CONFIG_HOME
|
|
||||||
copy_dir src_files/.local/bin $DIR_BIN
|
|
||||||
copy_dir src_files/.local/scripts $DIR_SCRIPTS
|
|
||||||
|
|
||||||
# on macos, gimp defaults to app-support, so sym-link to actual config
|
|
||||||
[[ "$BOX_SETUP_OS" = "macos" ]] &&
|
|
||||||
link_dir "$XDG_CONFIG_HOME/GIMP" "$HOME/Library/Application Support/GIMP"
|
|
||||||
link_dir "$XDG_CONFIG_HOME/vim" "$HOME/.vim" # TODO: use vim wrapper or similar instead
|
|
||||||
|
|
||||||
66
copy_dotfiles.sh
Executable file
66
copy_dotfiles.sh
Executable file
@@ -0,0 +1,66 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo_and_execute() {
|
||||||
|
echo "executing: $@" && "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_file() {
|
||||||
|
from=$1
|
||||||
|
to=$2
|
||||||
|
filename=$(basename "$from")
|
||||||
|
[ -e "$to/$filename" ] && rm "$to/$filename"
|
||||||
|
echo_and_execute cp -RPp "$from" "$to/$filename"
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_dir() {
|
||||||
|
from=$1
|
||||||
|
to=$2
|
||||||
|
prev_dir=$(pwd)
|
||||||
|
cd "$from" || return 1
|
||||||
|
find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
|
||||||
|
[ -d "$to/$dir" ] && rm -rf "$to/$dir"
|
||||||
|
echo_and_execute cp -RPp "$dir" "$to/$dir"
|
||||||
|
done
|
||||||
|
find . -mindepth 1 -maxdepth 1 -type f | while read -r file; do
|
||||||
|
copy_file "$file" "$to"
|
||||||
|
done
|
||||||
|
cd "$prev_dir" || return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
sym_link() {
|
||||||
|
! [ -e "$1" ] && echo "skipping link, target does not exist: $1" && return
|
||||||
|
[ -h "$2" ] && rm "$2"
|
||||||
|
test -f "$2" -o -d "$2" && rm -rf "$2"
|
||||||
|
echo_and_execute ln -s "$1" "$2"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "---- copying dotfiles ------------------"
|
||||||
|
. ./src_files/shell/profile
|
||||||
|
|
||||||
|
# copy over env/profile files used by shell(s)
|
||||||
|
copy_file src_files/shell/.profile $HOME
|
||||||
|
copy_file src_files/shell/profile $XDG_CONFIG_HOME
|
||||||
|
copy_file src_files/shell/rc $XDG_CONFIG_HOME
|
||||||
|
copy_file src_files/.config/zsh/.zshenv $HOME
|
||||||
|
|
||||||
|
# copy over configs, executables, and scripts
|
||||||
|
copy_dir src_files/.config $XDG_CONFIG_HOME
|
||||||
|
copy_dir src_files/.local/bin $DIR_BIN
|
||||||
|
copy_dir src_files/.local/scripts $DIR_SCRIPTS
|
||||||
|
|
||||||
|
# macOS overrides as needed
|
||||||
|
case "$OSTYPE" in *darwin*) copy_dir src_files/bin_overrides_macos $DIR_BIN;; esac
|
||||||
|
|
||||||
|
# obsidian uses a per-vault config model, so copy to all target vaults/dirs
|
||||||
|
IFS=","; for obs_dir in $OBSIDIAN_WORKSPACES_TO_CONFIGURE; do
|
||||||
|
! [ -d "$obs_dir/.obsidian" ] && mkdir "$obs_dir/.obsidian"
|
||||||
|
copy_dir "$XDG_CONFIG_HOME/obsidian" "$obs_dir/.obsidian"
|
||||||
|
done
|
||||||
|
|
||||||
|
# TODO: get reaper config set up
|
||||||
|
# [[ "$OSTYPE" = *"darwin"* ]] &&
|
||||||
|
# sym_link "$XDG_CONFIG_HOME/REAPER" "$HOME/Library/Application Support/REAPER"
|
||||||
|
|
||||||
|
# set up themes and theme-switcher
|
||||||
|
! [ "$1" = "--skip-theme-config" ] && ./theme_config.sh
|
||||||
|
|
||||||
44
docs/attribution.md
Normal file
44
docs/attribution.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Attribution
|
||||||
|
|
||||||
|
## Original pattern/approach and some core config logic
|
||||||
|
|
||||||
|
The original idea and approach for this project, including the original versions of my
|
||||||
|
program-installation script, the copy-configs-and-files script, the "tmux sessionizer"
|
||||||
|
(tmux session init logic), my initial neovim and tmux configs, and (though not code)
|
||||||
|
my general workflow/workspace strategy, were derived from several of ThePrimeagen's
|
||||||
|
(aka Michael Paulson's) projects and videos, including a FrontEnd Masters course which
|
||||||
|
he taught (each are listed below). I could not locate any required licenses or copyrights
|
||||||
|
for the code contained within these sources, but I wanted to give attribution nonetheless.
|
||||||
|
|
||||||
|
- [dev/setup/config repo](https://github.com/ThePrimeagen/dev)
|
||||||
|
- [neovim config](https://github.com/ThePrimeagen/init.lua)
|
||||||
|
- [tmux sessionizer](https://github.com/ThePrimeagen/tmux-sessionizer)
|
||||||
|
- [YouTube video - neovim config video](https://www.youtube.com/watch?v=w7i4amO_zaE)
|
||||||
|
- [FrontEnd Masters course - dev productivity v2](https://frontendmasters.com/courses/developer-productivity-v2/)
|
||||||
|
|
||||||
|
## Idea of using a list of programs in a file for build/install
|
||||||
|
|
||||||
|
The idea of using a file with a list of programs in it for building and/or
|
||||||
|
installing programs was inspired by Luke Smith's
|
||||||
|
[LARBS project](https://github.com/LukeSmithxyz/LARBS/tree/master).
|
||||||
|
|
||||||
|
## Theme-swtiching/setting logic and some themes
|
||||||
|
|
||||||
|
Much of the "theme-switching" or "theme-setting" logic and scripts are derived from
|
||||||
|
[Omarchy](https://github.com/basecamp/omarchy), and some theme configuration files
|
||||||
|
in this repository under
|
||||||
|
[src_files/imports/themes-omarchy-core](../src_files/imports/themes-omarchy-core)
|
||||||
|
are copied from [Omarchy](https://github.com/basecamp/omarchy), which is licensed
|
||||||
|
under the [MIT License](https://github.com/basecamp/omarchy/blob/master/LICENSE).
|
||||||
|
|
||||||
|
Copyright (c) David Heinemeier Hansson
|
||||||
|
|
||||||
|
## Additional/extra themes (Omarchy extra themes)
|
||||||
|
|
||||||
|
Additional theme configuration files in this repository under
|
||||||
|
[src_files/imports/themes-omarchy-extra](../src_files/imports/themes-omarchy-extra)
|
||||||
|
are copied or derived from projects of additional conrtibutors to the Omarchy community.
|
||||||
|
For information about authors/licenses/copyrights for each, refer to any LICENSE and/or
|
||||||
|
ATTRIBUTION.md files in each theme's respective directory under
|
||||||
|
[src_files/imports/themes-omarchy-extra](../src_files/imports/themes-omarchy-extra).
|
||||||
|
|
||||||
36
docs/macos-system-settings.md
Normal file
36
docs/macos-system-settings.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# macOS system settings
|
||||||
|
|
||||||
|
settings for manual configuration in macOS system settings app
|
||||||
|
|
||||||
|
**NOTE:** some of these could be scripted, but for now i'm okay with this manual list
|
||||||
|
|
||||||
|
- desktop & dock
|
||||||
|
- `click wallpaper to reveal desktop`: set to "only in stage manager"
|
||||||
|
- all `drag windows to corner/edge/place` types of options: disabled
|
||||||
|
- `rearrange spaces based on recent use`: disabled
|
||||||
|
- `when switch to app... switch to space with open windows of app`: disabled
|
||||||
|
- `displays have separate spaces`: disabled
|
||||||
|
- `show files on desktop`: enabled
|
||||||
|
- `group windows by application`: enabled
|
||||||
|
- smallest possible dock size
|
||||||
|
- dock on right side of screen
|
||||||
|
- automatically hide and show the dock: enabled
|
||||||
|
- accessibility
|
||||||
|
- display
|
||||||
|
- reduce motion: enabled
|
||||||
|
- reduce transparency: enabled
|
||||||
|
- keyboard
|
||||||
|
- keyboard shortcuts
|
||||||
|
- screenshots
|
||||||
|
- save picture of selected area -> `cmd+shft+s`
|
||||||
|
- copy (clipboard) picture of selected area -> `ctrl+cmd+shft+s`
|
||||||
|
- modifier keys
|
||||||
|
- caps lock key -> `escape`
|
||||||
|
- command -> `control`
|
||||||
|
- alt/option -> `command`
|
||||||
|
- control -> `alt/option`
|
||||||
|
- spotlight
|
||||||
|
- show spotlight search -> `alt+r`
|
||||||
|
|
||||||
|
and in general, just go through most pages/options and set them as desired
|
||||||
|
|
||||||
17
docs/post-run.md
Normal file
17
docs/post-run.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Manual steps needed after dotfile copy and/or installs
|
||||||
|
|
||||||
|
## all systems
|
||||||
|
|
||||||
|
- shell
|
||||||
|
- check user's shell using `echo $SHELL` or otherwise
|
||||||
|
- if not the desired shell:
|
||||||
|
- `cat /etc/shells` (or `chsh -l` if supported) to see options
|
||||||
|
- if target shell isn't listed, add it to `/etc/shells`
|
||||||
|
- then change the shell with `chsh -s <path to target shell>`
|
||||||
|
|
||||||
|
## macOS
|
||||||
|
|
||||||
|
- aerospace
|
||||||
|
- grant aerospace permission in accessibility settings
|
||||||
|
- likely need system reboot before aerospace works
|
||||||
|
|
||||||
10
docs/todo.md
Normal file
10
docs/todo.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# TODO items
|
||||||
|
|
||||||
|
- config for calcurse (including syncing via caldav, etesync, or similar)
|
||||||
|
- config for mpd, and client(s), (mpd clients to consider: mpc, ncmpcpp, ncmpc, inori)
|
||||||
|
- finish hyprland config and installation on linux
|
||||||
|
- web browsers config and install (primary: qutebrowser, alt1: brave, alt2: tor)
|
||||||
|
- get find, xargs, and awk (use nawk) as unified as i can across system types
|
||||||
|
- pick rss reader; newsboat? others? option with inbox and separate queues?
|
||||||
|
- make all these scripts POSIX-compliant (or at least usable in ksh/oksh)
|
||||||
|
|
||||||
73
docs/workflow-and-workspaces-scheme.md
Normal file
73
docs/workflow-and-workspaces-scheme.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# Notes regarding my workflow and system use
|
||||||
|
|
||||||
|
## workspaces layout
|
||||||
|
|
||||||
|
idea from the ThePrimeagen: designated workspace/label/desktop per app/purpose
|
||||||
|
|
||||||
|
### current layout
|
||||||
|
|
||||||
|
| key | app/focus
|
||||||
|
|-----|-----------
|
||||||
|
| 1. | system monitor (htop)
|
||||||
|
| 2. | music makeing - misc
|
||||||
|
| 3. | music making - daw
|
||||||
|
| 4. | stack: drawing (gimp), obsidian
|
||||||
|
| 5. | listening/wathcing (any music, audio, or video)
|
||||||
|
| 6. | comms (emails, chats, av/calls)
|
||||||
|
| 7. | web browser
|
||||||
|
| 8. | terminal (primary; one-off terminals & tui apps can be anywhere)
|
||||||
|
| 9. | programming - misc (whatever is not in primary terminal)
|
||||||
|
| 0. | general - misc (catch-all)
|
||||||
|
|
||||||
|
### guiding ideas
|
||||||
|
- use this consistently accross all machines
|
||||||
|
- if something not applicable for a given machine, just don't have apps or screens
|
||||||
|
present, but maintain absolute position/numbering of each screen
|
||||||
|
- structure the above so that programs which i'm likely to use with one hand off of the
|
||||||
|
keyboard (i.e. to use a trackpad, mouse, stylus, etc) are on the screens that allow
|
||||||
|
for one hand (i.e. the one still on the keyboard) to navigate those screens
|
||||||
|
- for me, using peripherals with right hand, so put programs likely to be used with
|
||||||
|
peripherals where my left hand can switch to them single-handedly (screens 1 to 5)
|
||||||
|
|
||||||
|
### usage notes
|
||||||
|
|
||||||
|
- related to the layout above, my approach is to run almost every window in fullscreen
|
||||||
|
- note: on macOS, this is not mac's notion of fullscreen, which basically moves
|
||||||
|
windows to new workspaces/desktops when going to fullscreen mode; instead, when i
|
||||||
|
say 'fullscreen', the idea is taking up all of the normal screen (excluding any
|
||||||
|
menu bar at the top of the screen)
|
||||||
|
- key bindings are set for moving window focus up/down (vim style: mod + k/j)
|
||||||
|
- the mental model here is that every fullscreen window is in a stack, so i can move
|
||||||
|
focus up and down the stack (and i try to maintain consistent order in stacks,
|
||||||
|
e.g. in the comms workspace, email is always on the bottom and chat apps are above)
|
||||||
|
- for apps with tabs, pair the above mental model of a stack with a mental model of a
|
||||||
|
circular list being in any position in that stack
|
||||||
|
- so, keybindings are also set for previous/next tab (vim style: mod + h/l)
|
||||||
|
- specifically, mod+h is mapped to ctrl+shift+tab and mod+l is mapped to ctrl+tab,
|
||||||
|
so it should work anywhere ctrl+tab and ctrl+shift+tab work
|
||||||
|
- all this said, it is better to keep things simple when possible and avoid having too
|
||||||
|
many windows and/or tabs open at one time; however, with the designated purpose for
|
||||||
|
each workspace and the mental models above, it rarely takes me long to find what i need
|
||||||
|
|
||||||
|
### example cases
|
||||||
|
|
||||||
|
- if i want a particular browser window, i jump to workspace 9, then move focus
|
||||||
|
up or down until i get to the window i want; if the window is right but i need
|
||||||
|
a different tab, i then just move "right or left" through my tabs
|
||||||
|
- if i want a particular music-playing app/tui, i jumpt to workspace 4 and move
|
||||||
|
focus up or down as needed to find it
|
||||||
|
- variation case: if i want a particular terminal workspace, i jump to workspace
|
||||||
|
8, but then i'm in tmux land and navigate via the methods i've set up for tmux
|
||||||
|
|
||||||
|
## theme usage
|
||||||
|
|
||||||
|
| theme name | focus / use context
|
||||||
|
|-------------|--------------------
|
||||||
|
| gruvbox | admin/productivity work (default theme)
|
||||||
|
| tokyodark | music
|
||||||
|
| pina | programming/coding
|
||||||
|
| mars | night (within 2+ hours of sleep)
|
||||||
|
| lanterns | (tbd?)
|
||||||
|
| lighthouse | (tbd?)
|
||||||
|
| jade | (tbd?)
|
||||||
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
local single_script_filter=""
|
|
||||||
local dry="0"
|
|
||||||
|
|
||||||
execute() {
|
|
||||||
log "execute $@"
|
|
||||||
[[ $dry != "1" ]] && "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
log() {
|
|
||||||
[[ $dry != "1" ]] && echo "$@" || echo "[DRY RUN]: $@"
|
|
||||||
}
|
|
||||||
|
|
||||||
while [[ $# > 0 ]]; do
|
|
||||||
[[ $1 == "--dry" ]] && dry="1" || single_script_filter="$1"
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
log "install_programs // single_script_filter: $single_script_filter"
|
|
||||||
local scripts=$(find ./installs_and_builds -maxdepth 1 -mindepth 1 -type f | sort)
|
|
||||||
for script in ${=scripts}; do
|
|
||||||
if [[ -x $script ]]; then
|
|
||||||
if echo "$script" | grep -qv "$single_script_filter"; then
|
|
||||||
log "filter is $single_script_filter // ignoring: $script"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
execute ./$script
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
58
install_programs.sh
Executable file
58
install_programs.sh
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
apply_overrides() {
|
||||||
|
name="$1"
|
||||||
|
kind="$2"
|
||||||
|
echo $3 |
|
||||||
|
sed -E 's/; */\n/g' |
|
||||||
|
while IFS=$'\n ' read -r override_key override_values; do
|
||||||
|
[[ -z $override_values ]] && continue
|
||||||
|
override_key=$(echo $override_key | sed 's/[: ]//g')
|
||||||
|
[[ $override_key = $BOX_SETUP_OS ]] && eval $override_values
|
||||||
|
[[ $override_key = $BOX_SETUP_DISTRO ]] && eval $override_values
|
||||||
|
[[ $4 =~ $override_key ]] && eval $override_values
|
||||||
|
done
|
||||||
|
[[ -z $name || -z $kind ]] && echo "zz_skip,zz_skip" || echo "$name,$kind"
|
||||||
|
}
|
||||||
|
|
||||||
|
build_custom() {
|
||||||
|
target=$(echo "custom_$BOX_SETUP_OS-$BOX_SETUP_DISTRO-$1" | tr '-' '_')
|
||||||
|
[[ ! -e ./installs_and_builds/$target ]] &&
|
||||||
|
target=$(echo "custom_default_$1" | tr '-' '_')
|
||||||
|
[[ ! -e ./installs_and_builds/$target ]] &&
|
||||||
|
echo "custom build/install script not found for: $1" &&
|
||||||
|
return
|
||||||
|
|
||||||
|
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/$1.XXXXXXXX") || {
|
||||||
|
echo "could not create temp dir for $1 build" && return
|
||||||
|
}
|
||||||
|
|
||||||
|
custom_script_path=$(pwd)/installs_and_builds/$target
|
||||||
|
pushd $tmpdir > /dev/null
|
||||||
|
$custom_script_path
|
||||||
|
popd > /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "---- updating package manager / packages"
|
||||||
|
[[ -n "$BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD" ]] &&
|
||||||
|
${=BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD}
|
||||||
|
[[ -n "$BOX_SETUP_UPDATE_PKGS_CMD" ]] && ${=BOX_SETUP_UPDATE_PKGS_CMD}
|
||||||
|
|
||||||
|
echo "---- installing programs ---------------"
|
||||||
|
[[ -z $1 ]] && system_types_list="base" || system_types_list="base,$1"
|
||||||
|
echo "-------- for system types: $system_types_list"
|
||||||
|
|
||||||
|
sed 1d "installs_and_builds/programs.csv" |
|
||||||
|
while IFS=, read -r name kind os_overrides distro_overrides system_overrides notes; do
|
||||||
|
apply_overrides $name $kind $os_overrides '' | IFS=, read -r name kind
|
||||||
|
apply_overrides $name $kind $distro_overrides '' | IFS=, read -r name kind
|
||||||
|
apply_overrides $name $kind $system_overrides $system_types_list |
|
||||||
|
IFS=, read -r name kind
|
||||||
|
|
||||||
|
[[ $name = 'zz_skip' || $kind = 'zz_skip' ]] && continue
|
||||||
|
|
||||||
|
echo "-- installing $name"
|
||||||
|
[[ $kind = 'package_manager' ]] && ${=BOX_SETUP_INSTALL_COMMAND} ${=name}
|
||||||
|
[[ $kind = 'build_custom' ]] && build_custom $name
|
||||||
|
done
|
||||||
|
|
||||||
7
installs_and_builds/custom_default_ksh
Executable file
7
installs_and_builds/custom_default_ksh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
git clone https://github.com/ibara/oksh.git
|
||||||
|
pushd oksh > /dev/null
|
||||||
|
./configure
|
||||||
|
make && sudo make install
|
||||||
|
popd > /dev/null
|
||||||
3
installs_and_builds/custom_default_mise
Executable file
3
installs_and_builds/custom_default_mise
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo 'TODO: custom script for mise is not yet implemented'
|
||||||
2
installs_and_builds/custom_linux_debian_bitwig_studio
Executable file
2
installs_and_builds/custom_linux_debian_bitwig_studio
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
echo 'hello from bitwig custom build!'
|
||||||
|
echo 'custom script for bitwig is not yet implemented, these echos just here for testing'
|
||||||
18
installs_and_builds/custom_reference_neovim
Executable file
18
installs_and_builds/custom_reference_neovim
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# from primeagen's examples and dev repo
|
||||||
|
# currnetly not used, but keeping for reference in case i need this soon for debian
|
||||||
|
|
||||||
|
install_neovim_dir=$HOME/.local/build/neovim
|
||||||
|
install_neovim_version="v0.10.3"
|
||||||
|
[ ! -z $NVIM_VERSION ] && install_neovim_version="$NVIM_VERSION"
|
||||||
|
echo "install_neovim_version: \"$install_neovim_version\""
|
||||||
|
|
||||||
|
[ ! -d $install_neovim_dir ] && git clone https://github.com/neovim/neovim.git $install_neovim_dir
|
||||||
|
git -C $install_neovim_dir fetch --all
|
||||||
|
git -C $install_neovim_dir checkout $install_neovim_version
|
||||||
|
|
||||||
|
make -C $install_neovim_dir clean
|
||||||
|
make -C $install_neovim_dir CMAKE_BUILD_TYPE=RelWithDebInfo
|
||||||
|
sudo make -C $install_neovim_dir install
|
||||||
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
local neovim_dir=$HOME/.local/build/neovim
|
|
||||||
local neovim_version="v0.10.3"
|
|
||||||
[ ! -z $NVIM_VERSION ] && neovim_version="$NVIM_VERSION"
|
|
||||||
echo "neovim_version: \"$neovim_version\""
|
|
||||||
|
|
||||||
[ ! -d $neovim_dir ] && git clone https://github.com/neovim/neovim.git $neovim_dir
|
|
||||||
git -C $neovim_dir fetch --all
|
|
||||||
git -C $neovim_dir checkout $neovim_version
|
|
||||||
|
|
||||||
make -C $neovim_dir clean
|
|
||||||
make -C $neovim_dir CMAKE_BUILD_TYPE=RelWithDebInfo
|
|
||||||
sudo make -C $neovim_dir install
|
|
||||||
|
|
||||||
# from primeagen's dev repo, uncomment/edit as needed
|
|
||||||
# git clone https://github.com/ThePrimeagen/harpoon.git $HOME/personal/harpoon
|
|
||||||
# cd $HOME/personal/harpoon
|
|
||||||
# git fetch
|
|
||||||
# git checkout harpoon2
|
|
||||||
|
|
||||||
# git clone https://github.com/ThePrimeagen/vim-apm.git $HOME/personal/vim-apm
|
|
||||||
# git clone https://github.com/ThePrimeagen/caleb.git $HOME/personal/caleb
|
|
||||||
# git clone https://github.com/nvim-lua/plenary.nvim.git $HOME/personal/plenary
|
|
||||||
|
|
||||||
37
installs_and_builds/programs.csv
Normal file
37
installs_and_builds/programs.csv
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
name,kind,os_overrides,distro_overrides,system_type_overrides,notes
|
||||||
|
gcc,package_manager,macos: name='',,,
|
||||||
|
clang,package_manager,macos: name='',,,
|
||||||
|
musl,package_manager,macos: name='',,,
|
||||||
|
coreutils,package_manager,linux: name='',,,
|
||||||
|
findutils,package_manager,linux: name='',,,
|
||||||
|
make,package_manager,,,,
|
||||||
|
cmake,package_manager,,,,
|
||||||
|
mise,build_custom,,,,TODO implement the build_custom script for this
|
||||||
|
mpv,package_manager,,,,
|
||||||
|
kitty,package_manager,macos: name='--cask kitty',,,
|
||||||
|
zsh,package_manager,,,,
|
||||||
|
ksh,build_custom,,,,
|
||||||
|
tmux,package_manager,,,,
|
||||||
|
neovim,package_manager,,,,
|
||||||
|
mutt,package_manager,,,,
|
||||||
|
podman,package_manager,,,,
|
||||||
|
curl,package_manager,,,,
|
||||||
|
grep,package_manager,,,,
|
||||||
|
ripgrep,package_manager,,,,
|
||||||
|
sed,package_manager,macos: name='',,,
|
||||||
|
fzf,package_manager,,,,
|
||||||
|
jq,package_manager,,,,
|
||||||
|
parallel,package_manager,,,,
|
||||||
|
gettext,package_manager,,,,
|
||||||
|
htop,package_manager,,,,
|
||||||
|
ffmpeg,package_manager,,,work: name='',
|
||||||
|
mpd,package_manager,,,,
|
||||||
|
ncmpcpp,package_manager,,,,
|
||||||
|
git,package_manager,,,,
|
||||||
|
calcurse,package_manager,,,,
|
||||||
|
zathura,package_manager,macos: name='',,,
|
||||||
|
tenacity,package_manager,macos: name='--cask audacity',,work: name='',tenacity not available via homebrew; use audacity in macos
|
||||||
|
bitwig-studio,package_manager,macos: name='--cask bitwig-studio',artix: kind='aur'; arch: kind='aur'; debian: kind='build_custom';,work: name='',
|
||||||
|
gimp,package_manager,macos: name='--cask gimp',,,
|
||||||
|
--cask nikitabobko/tap/aerospace,package_manager,linux: name='',,,
|
||||||
|
pandoc,package_manager,,arch: name='pandoc-cli'; artix: name='pandoc-bin';,work: name='',
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
[[ -n "$BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD" ]] &&
|
|
||||||
${=BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD}
|
|
||||||
|
|
||||||
[[ -n "$BOX_SETUP_UPDATE_PKGS_CMD" ]] &&
|
|
||||||
${=BOX_SETUP_UPDATE_PKGS_CMD}
|
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv_placeholder
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
# likely on unix systems already: find xargs grep sed awk
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} \
|
|
||||||
curl \
|
|
||||||
jq \
|
|
||||||
parallel \
|
|
||||||
fzf \
|
|
||||||
make \
|
|
||||||
cmake \
|
|
||||||
gettext
|
|
||||||
|
|
||||||
[[ "$BOX_SETUP_OS" = "macos" ]] &&
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} coreutils
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} zsh
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
local option_prefix=''
|
|
||||||
[[ "$BOX_SETUP_OS" = "macos" ]] && option_prefix='--cask'
|
|
||||||
# NOTE: ghostty not currently in debian repos, maybe build from source
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} "$option_prefix" ghostty
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} tmux
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
local linux_wm_and_utils() {
|
|
||||||
# TODO: pick wm for linux; options: dwm, i3, others?
|
|
||||||
echo "linux_wm_and_utils not yet implemented"
|
|
||||||
}
|
|
||||||
|
|
||||||
local macos_wm_and_utils() {
|
|
||||||
brew install koekeishiya/formulae/yabai
|
|
||||||
brew install koekeishiya/formulae/skhd
|
|
||||||
skhd --start-service
|
|
||||||
yabai --start-service
|
|
||||||
sleep 14 # time to give permission in accessibility settings
|
|
||||||
skhd --restart-service
|
|
||||||
yabai --restart-service
|
|
||||||
}
|
|
||||||
|
|
||||||
[[ "$BOX_SETUP_OS" = "macos" ]] && macos_wm_and_utils || linux_wm_and_utils
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} neovim
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} mutt
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} khal
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
local option_prefix=''
|
|
||||||
[[ "$BOX_SETUP_OS" = "macos" ]] && option_prefix='--cask'
|
|
||||||
local firefox_package_name='firefox'
|
|
||||||
[[ "$BOX_SETUP_OS" = "debian" ]] && firefox_package_name='firefox-esr'
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} "$option_prefix" "$firefox_package_name"
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
# TODO: pick rss reader; newsboat? others? option with inbox and separate queues?
|
|
||||||
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
# possible mpd clients to consider: ncmpc, inori
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} mpd mpc ncmpcpp
|
|
||||||
# TODO: ${=BOX_SETUP_INSTALL_COMMAND} <spotify stuff here>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} mpv
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
[[ "$BOX_SETUP_OS" = "macos" ]] && exit 0 # TODO: maybe find an option for macos
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} nsxiv
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
[[ "$BOX_SETUP_OS" = "macos" ]] && exit 0 # TODO: maybe find an option for macos
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} zathura
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
# TODO: pick filemanager; consider: lf, ranger, others?
|
|
||||||
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
# only audio editor(s) in this file; daws are handled separately
|
|
||||||
local option_prefix=''
|
|
||||||
[[ "$BOX_SETUP_OS" = "macos" ]] && option_prefix='--cask'
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} "$option_prefix" audacity
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
# TODO: set this up; likely using ffmpeg (work on macos?), maybe others
|
|
||||||
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
local option_prefix=''
|
|
||||||
[[ "$BOX_SETUP_OS" = "macos" ]] && option_prefix='--cask'
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} "$option_prefix" gimp
|
|
||||||
|
|
||||||
# ${=BOX_SETUP_INSTALL_COMMAND} imagemagick # TODO: consider this program too
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
${=BOX_SETUP_INSTALL_COMMAND} git
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
setup_docker_on_debian() {
|
|
||||||
# refer to https://docs.docker.com/engine/install/debian/
|
|
||||||
# build this function based on that
|
|
||||||
# in that, could use BOX_SETUP_INSTALL_COMMAND or just apt install
|
|
||||||
echo "setup_docker_on_debian function not implemented"
|
|
||||||
}
|
|
||||||
|
|
||||||
# TODO: decide on docker vs others; below is included just for reference
|
|
||||||
# case $BOX_SETUP_OS in
|
|
||||||
# (arch | artix)
|
|
||||||
# ${=BOX_SETUP_INSTALL_COMMAND} docker
|
|
||||||
# ;;
|
|
||||||
# (debian)
|
|
||||||
# setup_docker_on_debian
|
|
||||||
# ;;
|
|
||||||
# (macos)
|
|
||||||
# ${=BOX_SETUP_INSTALL_COMMAND} docker
|
|
||||||
# ;;
|
|
||||||
# esac
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
# TODO: review and decide if the things below are needed
|
|
||||||
|
|
||||||
#local lua_package="lua5.1"
|
|
||||||
#[[ "$BOX_SETUP_OS" = "macos" ]] && lua_package="lua@5.1"
|
|
||||||
|
|
||||||
#${=BOX_SETUP_INSTALL_COMMAND} "$lua_package" liblua5.1-0-dev
|
|
||||||
|
|
||||||
#luarocks install luacheck
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
source ./src_files/.config/zsh/.zshenv # source these vars for use below
|
|
||||||
|
|
||||||
[[ ! -d "$DIR_LOCAL" ]] && mkdir "$DIR_LOCAL"
|
|
||||||
[[ ! -d "$DIR_BIN" ]] && mkdir "$DIR_BIN"
|
|
||||||
[[ ! -d "$DIR_BUILD" ]] && mkdir "$DIR_BUILD"
|
|
||||||
[[ ! -d "$DIR_SCRIPTS" ]] && mkdir "$DIR_SCRIPTS"
|
|
||||||
[[ ! -d "$DIR_TMP" ]] && mkdir "$DIR_TMP"
|
|
||||||
|
|
||||||
[[ ! -d "$XDG_CONFIG_HOME" ]] && mkdir "$XDG_CONFIG_HOME"
|
|
||||||
[[ ! -d "$XDG_CACHE_HOME" ]] && mkdir "$XDG_CACHE_HOME"
|
|
||||||
[[ ! -d "$XDG_DATA_HOME" ]] && mkdir "$XDG_DATA_HOME"
|
|
||||||
[[ ! -d "$XDG_STATE_HOME" ]] && mkdir "$XDG_STATE_HOME"
|
|
||||||
40
make_dirs.sh
Executable file
40
make_dirs.sh
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./src_files/shell/profile # ensure env vars set for use below
|
||||||
|
echo "---- making system dirs ----------------"
|
||||||
|
|
||||||
|
# some standard/common directories, some overlap/use in XDG directories
|
||||||
|
! [ -d "$DIR_LOCAL" ] && mkdir -p "$DIR_LOCAL"
|
||||||
|
! [ -d "$DIR_BIN" ] && mkdir -p "$DIR_BIN"
|
||||||
|
! [ -d "$DIR_SCRIPTS" ] && mkdir -p "$DIR_SCRIPTS"
|
||||||
|
! [ -d "$DIR_USER_OPT" ] && mkdir -p "$DIR_USER_OPT"
|
||||||
|
! [ -d "$DIR_USER_LIB" ] && mkdir -p "$DIR_USER_LIB"
|
||||||
|
|
||||||
|
# directories related to XDG Base Directory specification
|
||||||
|
! [ -d "$XDG_CONFIG_HOME" ] && mkdir -p "$XDG_CONFIG_HOME"
|
||||||
|
! [ -d "$XDG_CACHE_HOME" ] && mkdir -p "$XDG_CACHE_HOME"
|
||||||
|
! [ -d "$XDG_DATA_HOME" ] && mkdir -p "$XDG_DATA_HOME"
|
||||||
|
! [ -d "$XDG_STATE_HOME" ] && mkdir -p "$XDG_STATE_HOME"
|
||||||
|
|
||||||
|
# additional directories for how i'm organizing my system
|
||||||
|
! [ -d "$DIR_HOME_BOX" ] && mkdir -p "$DIR_HOME_BOX"
|
||||||
|
! [ -d "$DIR_MUSIC" ] && mkdir -p "$DIR_MUSIC"
|
||||||
|
! [ -d "$DIR_NOTES" ] && mkdir -p "$DIR_NOTES"
|
||||||
|
! [ -d "$DIR_DEV" ] && mkdir -p "$DIR_DEV"
|
||||||
|
! [ -d "$DIR_GIT_PROJECTS" ] && mkdir -p "$DIR_GIT_PROJECTS"
|
||||||
|
! [ -d "$DIR_GIT_PROJECTS/me" ] && mkdir -p "$DIR_GIT_PROJECTS/me"
|
||||||
|
! [ -d "$DIR_GIT_PROJECTS/forks" ] && mkdir -p "$DIR_GIT_PROJECTS/forks"
|
||||||
|
! [ -d "$DIR_GIT_PROJECTS/learning" ] && mkdir -p "$DIR_GIT_PROJECTS/learning"
|
||||||
|
! [ -d "$DIR_GIT_PROJECTS/other" ] && mkdir -p "$DIR_GIT_PROJECTS/other"
|
||||||
|
|
||||||
|
# directories for music/audio production
|
||||||
|
! [ -d "$DIR_REAPER_PORTABLE_SHARED" ] && mkdir -p "$DIR_REAPER_PORTABLE_SHARED"
|
||||||
|
! [ -d "$DIR_REAPER_PORTABLE_LINUX" ] && mkdir -p "$DIR_REAPER_PORTABLE_LINUX"
|
||||||
|
! [ -d "$DIR_REAPER_PORTABLE_MACOS" ] && mkdir -p "$DIR_REAPER_PORTABLE_MACOS"
|
||||||
|
|
||||||
|
# xdg spec and/or clean-up of home dir
|
||||||
|
echo "---- making xdg-spec/home-clean-up files"
|
||||||
|
! [ -d "$XDG_CONFIG_HOME/cups" ] && mkdir -p "$XDG_CONFIG_HOME/cups"
|
||||||
|
! [ -d "$XDG_DATA_HOME/irb" ] && mkdir -p "$XDG_DATA_HOME/irb"
|
||||||
|
! [ -d "$XDG_DATA_HOME/ncmpcpp" ] && mkdir -p "$XDG_DATA_HOME/ncmpcpp"
|
||||||
|
! [ -d "$XDG_CACHE_HOME/maven/repository" ] && mkdir -p "$XDG_CACHE_HOME/maven/repository"
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
[[ ! -d "$DIR_HOME_BOX" ]] && mkdir $DIR_HOME_BOX
|
|
||||||
|
|
||||||
[[ ! -d "$DIR_DEV" ]] && mkdir $DIR_DEV
|
|
||||||
[[ ! -d "$DIR_DEV/git" ]] && mkdir $DIR_DEV/git
|
|
||||||
[[ ! -d "$DIR_DEV/git/me" ]] && mkdir $DIR_DEV/git/me
|
|
||||||
[[ ! -d "$DIR_DEV/git/other" ]] && mkdir $DIR_DEV/git/other
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
[[ -z $BOX_SETUP_OS ]] &&
|
|
||||||
echo "BOX_SETUP_OS must be set; options: arch, artix, debian, macos" &&
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
local install_cmd=''
|
|
||||||
local update_pkg_manager_and_defs_cmd=''
|
|
||||||
local update_pkgs_cmd=''
|
|
||||||
case $BOX_SETUP_OS in
|
|
||||||
(arch | artix)
|
|
||||||
install_cmd="sudo pacman -S"
|
|
||||||
update_pkg_manager_and_defs_cmd='' # don't; update system instead?
|
|
||||||
update_pkgs_cmd='sudo pacman -Syu'
|
|
||||||
;;
|
|
||||||
(debian)
|
|
||||||
install_cmd="sudo apt install"
|
|
||||||
update_pkg_manager_and_defs_cmd='sudo apt update'
|
|
||||||
update_pkgs_cmd='sudo apt upgrade'
|
|
||||||
;;
|
|
||||||
(macos)
|
|
||||||
install_cmd="brew install"
|
|
||||||
update_pkg_manager_and_defs_cmd='brew update'
|
|
||||||
update_pkgs_cmd='brew upgrade'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
export BOX_SETUP_INSTALL_COMMAND="$install_cmd"
|
|
||||||
export BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD="$update_pkg_manager_and_defs_cmd"
|
|
||||||
export BOX_SETUP_UPDATE_PKGS_CMD="$update_pkgs_cmd"
|
|
||||||
75
src_files/.config/aerospace/aerospace.toml
Normal file
75
src_files/.config/aerospace/aerospace.toml
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# ref: https://nikitabobko.github.io/AeroSpace/commands
|
||||||
|
# ref: https://nikitabobko.github.io/AeroSpace/guide
|
||||||
|
|
||||||
|
after-startup-command = []
|
||||||
|
start-at-login = true
|
||||||
|
|
||||||
|
enable-normalization-flatten-containers = true
|
||||||
|
enable-normalization-opposite-orientation-for-nested-containers = true
|
||||||
|
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
|
||||||
|
automatically-unhide-macos-hidden-apps = true
|
||||||
|
|
||||||
|
accordion-padding = 0
|
||||||
|
default-root-container-layout = 'accordion' # opts: tiles accordion
|
||||||
|
default-root-container-orientation = 'vertical' # opts: horizontal vertical auto
|
||||||
|
|
||||||
|
[key-mapping]
|
||||||
|
preset = 'qwerty' # opts: qwerty dvorak colemak
|
||||||
|
|
||||||
|
[gaps]
|
||||||
|
inner.horizontal = 0 # inner* - between windows and other windows
|
||||||
|
inner.vertical = 0
|
||||||
|
outer.left = 0 # outer* - between windows and monitor edges
|
||||||
|
outer.bottom = 0
|
||||||
|
outer.top = 0
|
||||||
|
outer.right = 0
|
||||||
|
|
||||||
|
[mode.main.binding]
|
||||||
|
cmd-comma = 'layout v_accordion'
|
||||||
|
cmd-period = 'layout h_tiles'
|
||||||
|
cmd-slash = 'layout horizontal vertical'
|
||||||
|
|
||||||
|
alt-minus = 'resize smart -50'
|
||||||
|
alt-equal = 'resize smart +50'
|
||||||
|
|
||||||
|
# in stack mode, new windows are added "below" the current, so swap up and down
|
||||||
|
cmd-j = 'focus up'
|
||||||
|
cmd-k = 'focus down'
|
||||||
|
cmd-l = 'focus right'
|
||||||
|
cmd-h = 'focus left'
|
||||||
|
cmd-shift-j = 'move up'
|
||||||
|
cmd-shift-k = 'move down'
|
||||||
|
cmd-shift-h = 'move left'
|
||||||
|
cmd-shift-l = 'move right'
|
||||||
|
|
||||||
|
cmd-1 = 'workspace 1'
|
||||||
|
cmd-2 = 'workspace 2'
|
||||||
|
cmd-3 = 'workspace 3'
|
||||||
|
cmd-4 = 'workspace 4'
|
||||||
|
cmd-5 = 'workspace 5'
|
||||||
|
cmd-6 = 'workspace 6'
|
||||||
|
cmd-7 = 'workspace 7'
|
||||||
|
cmd-8 = 'workspace 8'
|
||||||
|
cmd-9 = 'workspace 9'
|
||||||
|
cmd-0 = 'workspace 10'
|
||||||
|
cmd-shift-1 = 'move-node-to-workspace 1'
|
||||||
|
cmd-shift-2 = 'move-node-to-workspace 2'
|
||||||
|
cmd-shift-3 = 'move-node-to-workspace 3'
|
||||||
|
cmd-shift-4 = 'move-node-to-workspace 4'
|
||||||
|
cmd-shift-5 = 'move-node-to-workspace 5'
|
||||||
|
cmd-shift-6 = 'move-node-to-workspace 6'
|
||||||
|
cmd-shift-7 = 'move-node-to-workspace 7'
|
||||||
|
cmd-shift-8 = 'move-node-to-workspace 8'
|
||||||
|
cmd-shift-9 = 'move-node-to-workspace 9'
|
||||||
|
cmd-shift-0 = 'move-node-to-workspace 10'
|
||||||
|
|
||||||
|
cmd-shift-semicolon = 'mode service'
|
||||||
|
|
||||||
|
[mode.service.binding]
|
||||||
|
r = ['reload-config', 'flatten-workspace-tree', 'mode main'] # reset layout
|
||||||
|
f = ['flatten-workspace-tree', 'layout floating', 'mode main']
|
||||||
|
cmd-h = ['join-with left', 'mode main']
|
||||||
|
cmd-j = ['join-with down', 'mode main']
|
||||||
|
cmd-k = ['join-with up', 'mode main']
|
||||||
|
cmd-l = ['join-with right', 'mode main']
|
||||||
|
|
||||||
@@ -1 +1,17 @@
|
|||||||
|
# font stuff
|
||||||
|
font-style = Regular
|
||||||
font-feature = -calt, -liga, -dlig
|
font-feature = -calt, -liga, -dlig
|
||||||
|
|
||||||
|
# window stuff
|
||||||
|
macos-titlebar-proxy-icon = hidden
|
||||||
|
title = " "
|
||||||
|
window-decoration = none
|
||||||
|
|
||||||
|
# cursor stuff
|
||||||
|
cursor-style = "block"
|
||||||
|
cursor-style-blink = false
|
||||||
|
shell-integration-features = no-cursor
|
||||||
|
|
||||||
|
# theme stuff
|
||||||
|
config-file = ?"~/.config/zz-this-box/themes/.current-theme/ghostty"
|
||||||
|
|
||||||
|
|||||||
29
src_files/.config/ghostty/themes/tokyonight_night_manual
Normal file
29
src_files/.config/ghostty/themes/tokyonight_night_manual
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# primary
|
||||||
|
background = #1a1b26
|
||||||
|
foreground = #c0caf5
|
||||||
|
cursor-color = #c0caf5
|
||||||
|
cursor-text = #1a1b26
|
||||||
|
|
||||||
|
# normal colors
|
||||||
|
palette = 0=#15161e
|
||||||
|
palette = 1=#f7768e
|
||||||
|
palette = 2=#9ece6a
|
||||||
|
palette = 3=#e0af68
|
||||||
|
palette = 4=#7aa2f7
|
||||||
|
palette = 5=#bb9af7
|
||||||
|
palette = 6=#7dcfff
|
||||||
|
palette = 7=#a9b1d6
|
||||||
|
|
||||||
|
# bright colors
|
||||||
|
palette = 8=#414868
|
||||||
|
palette = 9=#f7768e
|
||||||
|
palette = 10=#9ece6a
|
||||||
|
palette = 11=#e0af68
|
||||||
|
palette = 12=#7aa2f7
|
||||||
|
palette = 13=#bb9af7
|
||||||
|
palette = 14=#7dcfff
|
||||||
|
palette = 15=#c0caf5
|
||||||
|
|
||||||
|
# selection-background
|
||||||
|
selection-background = #283457
|
||||||
|
selection-foreground = #c0caf5
|
||||||
9
src_files/.config/gimp/colorrc
Normal file
9
src_files/.config/gimp/colorrc
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# GIMP colorrc
|
||||||
|
#
|
||||||
|
# This file holds a list of recently used colors.
|
||||||
|
|
||||||
|
(color-history
|
||||||
|
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0)
|
||||||
|
(color "R'G'B'A float" 16 "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\200\77" 0))
|
||||||
|
|
||||||
|
# end of colorrc
|
||||||
18
src_files/.config/gimp/contextrc
Normal file
18
src_files/.config/gimp/contextrc
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# GIMP user context
|
||||||
|
|
||||||
|
(tool "gimp-pencil-tool")
|
||||||
|
(paint-info "gimp-pencil")
|
||||||
|
(foreground
|
||||||
|
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
|
||||||
|
(background
|
||||||
|
(color "R'G'B'A float" 16 "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\200\77" 0))
|
||||||
|
(brush "2. Hardness 050")
|
||||||
|
(dynamics "Pressure Opacity")
|
||||||
|
(mybrush "100% Opaque")
|
||||||
|
(pattern "Pine")
|
||||||
|
(gradient "FG to BG (RGB)")
|
||||||
|
(palette "Color History")
|
||||||
|
(font "Sans-serif")
|
||||||
|
(tool-preset "Core Pointer")
|
||||||
|
|
||||||
|
# end of user context
|
||||||
94
src_files/.config/gimp/gimprc
Normal file
94
src_files/.config/gimp/gimprc
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
# GIMP gimprc
|
||||||
|
#
|
||||||
|
# personal gimprc file, takes precedence over values in system-wide gimprc
|
||||||
|
# if changing within gimp, make sure i copy those settings into my dotfiles src_files
|
||||||
|
|
||||||
|
(prev-language "en-US")
|
||||||
|
(config-version "3.0.6")
|
||||||
|
(default-image
|
||||||
|
(width 2480)
|
||||||
|
(height 1748)
|
||||||
|
(unit pixels)
|
||||||
|
(xresolution 300)
|
||||||
|
(yresolution 300)
|
||||||
|
(resolution-unit inches)
|
||||||
|
(image-type rgb)
|
||||||
|
(precision u8-non-linear)
|
||||||
|
(color-profile NULL)
|
||||||
|
(simulation-profile NULL)
|
||||||
|
(simulation-bpc no)
|
||||||
|
(simulation-intent relative-colorimetric)
|
||||||
|
(fill-type background)
|
||||||
|
(comment ""))
|
||||||
|
(import-raw-plug-in "${gimp_plug_in_dir}/plug-ins/file-raw-placeholder/file-raw-placeholder")
|
||||||
|
(check-updates no)
|
||||||
|
(check-update-timestamp 1759871981)
|
||||||
|
(monitor-xresolution 129)
|
||||||
|
(monitor-yresolution 129)
|
||||||
|
(show-welcome-dialog no)
|
||||||
|
(fill-options
|
||||||
|
(style fg-color)
|
||||||
|
(custom-style solid-color)
|
||||||
|
(antialias yes)
|
||||||
|
(feather no)
|
||||||
|
(feather-radius 10))
|
||||||
|
(stroke-options
|
||||||
|
(style fg-color)
|
||||||
|
(custom-style solid-color)
|
||||||
|
(antialias yes)
|
||||||
|
(feather no)
|
||||||
|
(feather-radius 10)
|
||||||
|
(method line)
|
||||||
|
(width 6)
|
||||||
|
(unit pixels)
|
||||||
|
(cap-style butt)
|
||||||
|
(join-style miter)
|
||||||
|
(miter-limit 10)
|
||||||
|
(dash-offset 0)
|
||||||
|
(dash-info 0)
|
||||||
|
(emulate-brush-dynamics no))
|
||||||
|
(default-view
|
||||||
|
(show-menubar yes)
|
||||||
|
(show-statusbar no)
|
||||||
|
(show-rulers yes)
|
||||||
|
(show-scrollbars yes)
|
||||||
|
(show-selection no)
|
||||||
|
(show-layer-boundary no)
|
||||||
|
(show-canvas-boundary yes)
|
||||||
|
(show-guides yes)
|
||||||
|
(show-grid no)
|
||||||
|
(show-sample-points yes)
|
||||||
|
(snap-to-guides yes)
|
||||||
|
(snap-to-grid no)
|
||||||
|
(snap-to-canvas no)
|
||||||
|
(snap-to-path no)
|
||||||
|
(snap-to-bbox no)
|
||||||
|
(snap-to-equidistance no)
|
||||||
|
(padding-mode default)
|
||||||
|
(padding-color
|
||||||
|
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
|
||||||
|
(padding-in-show-all no))
|
||||||
|
(default-fullscreen-view
|
||||||
|
(show-menubar yes)
|
||||||
|
(show-statusbar no)
|
||||||
|
(show-rulers yes)
|
||||||
|
(show-scrollbars yes)
|
||||||
|
(show-selection no)
|
||||||
|
(show-layer-boundary no)
|
||||||
|
(show-canvas-boundary yes)
|
||||||
|
(show-guides yes)
|
||||||
|
(show-grid no)
|
||||||
|
(show-sample-points yes)
|
||||||
|
(snap-to-guides yes)
|
||||||
|
(snap-to-grid no)
|
||||||
|
(snap-to-canvas no)
|
||||||
|
(snap-to-path no)
|
||||||
|
(snap-to-bbox no)
|
||||||
|
(snap-to-equidistance no)
|
||||||
|
(padding-mode default)
|
||||||
|
(padding-color
|
||||||
|
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
|
||||||
|
(padding-in-show-all no))
|
||||||
|
|
||||||
|
|
||||||
|
# end of gimprc
|
||||||
4
src_files/.config/gimp/shortcutsrc
Normal file
4
src_files/.config/gimp/shortcutsrc
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
(file-version 1)
|
||||||
|
(action "view-show-rulers" "<Shift><Control>r")
|
||||||
|
(action "view-zoom-fit-in" "<Shift><Control>f")
|
||||||
|
(action "windows-hide-docks" "<Shift><Control>d")
|
||||||
13
src_files/.config/gimp/tool-options/gimp-paintbrush-tool
Normal file
13
src_files/.config/gimp/tool-options/gimp-paintbrush-tool
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# GIMP gimp-paintbrush-tool options
|
||||||
|
|
||||||
|
(background
|
||||||
|
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
|
||||||
|
(brush "2. Hardness 050")
|
||||||
|
(dynamics "Pressure Opacity")
|
||||||
|
(pattern "Pine")
|
||||||
|
(gradient "FG to BG (RGB)")
|
||||||
|
(palette "Color History")
|
||||||
|
(brush-size 2.0)
|
||||||
|
(brush-hardness 0.5)
|
||||||
|
|
||||||
|
# end of gimp-paintbrush-tool options
|
||||||
13
src_files/.config/gimp/tool-options/gimp-pencil-tool
Normal file
13
src_files/.config/gimp/tool-options/gimp-pencil-tool
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# GIMP gimp-pencil-tool options
|
||||||
|
|
||||||
|
(background
|
||||||
|
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
|
||||||
|
(brush "2. Hardness 050")
|
||||||
|
(dynamics "Pressure Opacity")
|
||||||
|
(pattern "Pine")
|
||||||
|
(gradient "FG to BG (RGB)")
|
||||||
|
(palette "Color History")
|
||||||
|
(brush-size 2.0)
|
||||||
|
(brush-hardness 0.5)
|
||||||
|
|
||||||
|
# end of gimp-pencil-tool options
|
||||||
@@ -1,3 +1,9 @@
|
|||||||
|
[init]
|
||||||
|
defaultBranch = master
|
||||||
[user]
|
[user]
|
||||||
name = david
|
name = david
|
||||||
email = david@silverwolf.studio
|
email = david@pinewoods.xyz
|
||||||
|
[push]
|
||||||
|
autoSetupRemote = true
|
||||||
|
[pull]
|
||||||
|
rebase = true
|
||||||
|
|||||||
@@ -1,7 +1,28 @@
|
|||||||
.tool-versions
|
# my own stuff/conventions
|
||||||
*.swp
|
|
||||||
*.swo
|
|
||||||
.npmrc
|
|
||||||
.tmux-session-hydrate
|
.tmux-session-hydrate
|
||||||
zxcv*
|
zxcv*
|
||||||
|
|
||||||
|
# compilation/debug/cache/build/etc
|
||||||
|
**/build/
|
||||||
|
**/__pycache__/
|
||||||
|
*.o
|
||||||
|
*.pch
|
||||||
|
*.dSYM
|
||||||
|
|
||||||
|
# lang/package
|
||||||
|
mise*.toml
|
||||||
|
.npmrc
|
||||||
|
|
||||||
|
# opencode/agents/etc
|
||||||
|
.opencode/
|
||||||
|
opencode.json
|
||||||
|
AGENTS.md
|
||||||
|
|
||||||
|
# vim files
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
# miscellaneous
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
.liccor*
|
||||||
|
|
||||||
|
|||||||
54
src_files/.config/htop/htoprc
Normal file
54
src_files/.config/htop/htoprc
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||||
|
# The parser is also very primitive, and not human-friendly.
|
||||||
|
htop_version=3.4.1
|
||||||
|
config_reader_min_version=3
|
||||||
|
fields=0 48 17 18 38 39 2 46 47 49 1
|
||||||
|
hide_kernel_threads=1
|
||||||
|
hide_userland_threads=0
|
||||||
|
hide_running_in_container=0
|
||||||
|
shadow_other_users=0
|
||||||
|
show_thread_names=0
|
||||||
|
show_program_path=1
|
||||||
|
highlight_base_name=0
|
||||||
|
highlight_deleted_exe=1
|
||||||
|
shadow_distribution_path_prefix=0
|
||||||
|
highlight_megabytes=1
|
||||||
|
highlight_threads=1
|
||||||
|
highlight_changes=0
|
||||||
|
highlight_changes_delay_secs=5
|
||||||
|
find_comm_in_cmdline=1
|
||||||
|
strip_exe_from_cmdline=1
|
||||||
|
show_merged_command=0
|
||||||
|
header_margin=1
|
||||||
|
screen_tabs=1
|
||||||
|
detailed_cpu_time=0
|
||||||
|
cpu_count_from_one=0
|
||||||
|
show_cpu_usage=1
|
||||||
|
show_cpu_frequency=0
|
||||||
|
show_cached_memory=1
|
||||||
|
update_process_names=0
|
||||||
|
account_guest_in_cpu_meter=0
|
||||||
|
color_scheme=6
|
||||||
|
enable_mouse=1
|
||||||
|
delay=40
|
||||||
|
hide_function_bar=0
|
||||||
|
header_layout=two_50_50
|
||||||
|
column_meters_0=LeftCPUs2 LeftCPUs8 Blank MemorySwap MemorySwap Blank NetworkIO NetworkIO
|
||||||
|
column_meter_modes_0=1 3 2 1 3 2 2 3
|
||||||
|
column_meters_1=RightCPUs2 RightCPUs8 Blank LoadAverage Tasks Blank DiskIO FileDescriptors Blank Hostname System Uptime DateTime Battery
|
||||||
|
column_meter_modes_1=1 3 2 2 2 2 2 2 2 2 2 2 2 1
|
||||||
|
tree_view=0
|
||||||
|
sort_key=47
|
||||||
|
tree_sort_key=0
|
||||||
|
sort_direction=-1
|
||||||
|
tree_sort_direction=1
|
||||||
|
tree_view_always_by_pid=0
|
||||||
|
all_branches_collapsed=0
|
||||||
|
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT STATE PERCENT_CPU PERCENT_MEM TIME Command
|
||||||
|
.sort_key=PERCENT_MEM
|
||||||
|
.tree_sort_key=PID
|
||||||
|
.tree_view_always_by_pid=0
|
||||||
|
.tree_view=0
|
||||||
|
.sort_direction=-1
|
||||||
|
.tree_sort_direction=1
|
||||||
|
.all_branches_collapsed=0
|
||||||
20
src_files/.config/hypr/hyprland.conf
Normal file
20
src_files/.config/hypr/hyprland.conf
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
input {
|
||||||
|
kb_options = caps:escape, \
|
||||||
|
ctrl:swap_lalt_lctl, \
|
||||||
|
ctrl:swap_ralt_rctl, \
|
||||||
|
altwin:swap_ralt_rwin # this one seems to not work, but leaving here for now
|
||||||
|
|
||||||
|
repeat_rate = 70
|
||||||
|
repeat_delay = 250
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
clickfinger_behavior = true # 2-finger click is right-click
|
||||||
|
scroll_factor = 0.3
|
||||||
|
natural_scroll = false # natural is a bad name for this
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# custom window rules per app
|
||||||
|
windowrulev2 = float, class:REAPER, title:^(REAPER).*$
|
||||||
|
windowrulev2 = size 1120 744, class:REAPER, title:^(REAPER).*$
|
||||||
|
windowrulev2 = center, class:REAPER, title:^(REAPER).*$
|
||||||
1
src_files/.config/irb/irbrc
Normal file
1
src_files/.config/irb/irbrc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
IRB.conf[:HISTORY_FILE] ||= File.join(ENV["XDG_DATA_HOME"], "irb", "history")
|
||||||
27
src_files/.config/kitty/kitty.conf
Normal file
27
src_files/.config/kitty/kitty.conf
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# font stuff
|
||||||
|
# font_family Regular # Average Mono, maybe?
|
||||||
|
font_size 16
|
||||||
|
disable_ligatures always # no ligatures
|
||||||
|
symbol_map U+E000-U+F8FF none # no ligatures
|
||||||
|
|
||||||
|
# window stuff
|
||||||
|
hide_window_decorations yes
|
||||||
|
macos_hide_window_titlebar yes
|
||||||
|
window_title_format " "
|
||||||
|
window_margin_width 0
|
||||||
|
confirm_os_window_close 0
|
||||||
|
show_window_resize_notification no
|
||||||
|
|
||||||
|
# cursor stuff
|
||||||
|
cursor_shape block
|
||||||
|
cursor_blink_interval 0
|
||||||
|
macos_custom_beam_cursor yes
|
||||||
|
|
||||||
|
# theme stuff
|
||||||
|
# NOTE: on linux, may want background_opacity at 1.0 and let hyprland handle transparency
|
||||||
|
include ~/.config/kitty/theme.conf
|
||||||
|
background_opacity 0.94
|
||||||
|
|
||||||
|
# etc
|
||||||
|
enable_audio_bell no
|
||||||
|
|
||||||
2
src_files/.config/ksh/kshrc
Normal file
2
src_files/.config/ksh/kshrc
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[ -r "$XDG_CONFIG_HOME/profile" ] && . "$XDG_CONFIG_HOME/profile"
|
||||||
|
[ -r "$XDG_CONFIG_HOME/rc" ] && . "$XDG_CONFIG_HOME/rc"
|
||||||
1
src_files/.config/maven/settings.xml
Normal file
1
src_files/.config/maven/settings.xml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<localRepository>${env.XDG_CACHE_HOME}/maven/repository</localRepository>
|
||||||
8
src_files/.config/mise/config.toml
Normal file
8
src_files/.config/mise/config.toml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[tools]
|
||||||
|
go = "1"
|
||||||
|
python = "3"
|
||||||
|
ruby = "3"
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
idiomatic_version_file_enable_tools = ["ruby"]
|
||||||
|
|
||||||
4
src_files/.config/mpv/input.conf
Normal file
4
src_files/.config/mpv/input.conf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
h seek -5
|
||||||
|
l seek 5
|
||||||
|
H seek -30
|
||||||
|
L seek 30
|
||||||
3
src_files/.config/mpv/mpv.conf
Normal file
3
src_files/.config/mpv/mpv.conf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
screenshot-format=png
|
||||||
|
screenshot-dir="~/dbox/inbox"
|
||||||
|
screenshot-template="%F-%p-%n"
|
||||||
3
src_files/.config/ncmpcpp/config
Normal file
3
src_files/.config/ncmpcpp/config
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
ncmcpp_directory = "$XDG_DATA_HOME/ncmpcpp"
|
||||||
|
lyrics_directory = "$DIR_MUSIC/.lyrics"
|
||||||
|
mpd_music_dir = "$DIR_MUSIC"
|
||||||
@@ -1 +1,6 @@
|
|||||||
print("print from init.lua file")
|
require("settings")
|
||||||
|
require("plugin_manager")
|
||||||
|
require("key_mappings")
|
||||||
|
require("util_functions")
|
||||||
|
require("auto_commands")
|
||||||
|
ThemeUpdate()
|
||||||
|
|||||||
5
src_files/.config/nvim/lsp/clangd.lua
Normal file
5
src_files/.config/nvim/lsp/clangd.lua
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'clangd' },
|
||||||
|
root_markers = { '.clangd', 'compile_commands.json' },
|
||||||
|
filetypes = { 'c', 'cpp' },
|
||||||
|
}
|
||||||
6
src_files/.config/nvim/lsp/ruby.lua
Normal file
6
src_files/.config/nvim/lsp/ruby.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
cmd = { "ruby-lsp" },
|
||||||
|
filetypes = { "ruby", "eruby" },
|
||||||
|
root_markers = { "Gemfile", ".git" },
|
||||||
|
init_options = { formatter = "auto" },
|
||||||
|
}
|
||||||
20
src_files/.config/nvim/lua/auto_commands.lua
Normal file
20
src_files/.config/nvim/lua/auto_commands.lua
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
local autoCmdGroup = vim.api.nvim_create_augroup("autoCmdGroup", { clear = true })
|
||||||
|
local autoCmd = vim.api.nvim_create_autocmd
|
||||||
|
|
||||||
|
-- trim trailing whitespace on save
|
||||||
|
autoCmd({"BufWritePre"}, {
|
||||||
|
group = autoCmdGroup,
|
||||||
|
pattern = "*",
|
||||||
|
command = [[%s/\s\+$//e]],
|
||||||
|
})
|
||||||
|
|
||||||
|
-- adjust indent spacing for html files
|
||||||
|
autoCmd({"FileType"}, {
|
||||||
|
group = autoCmdGroup,
|
||||||
|
pattern = "html",
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.shiftwidth = 2
|
||||||
|
vim.opt_local.tabstop = 2
|
||||||
|
vim.opt_local.softtabstop = 2
|
||||||
|
end
|
||||||
|
})
|
||||||
190
src_files/.config/nvim/lua/key_mappings.lua
Normal file
190
src_files/.config/nvim/lua/key_mappings.lua
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
local kmGroup = vim.api.nvim_create_augroup("KeymappingsGroup", { clear = true })
|
||||||
|
local kmgAutocmd = vim.api.nvim_create_autocmd
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
-- core
|
||||||
|
|
||||||
|
-- explore the directory of the current file (using netrw)
|
||||||
|
vim.keymap.set("n", "<leader>n", vim.cmd.Ex)
|
||||||
|
|
||||||
|
-- move visually-selected lines up or down
|
||||||
|
vim.keymap.set("v", "J", ":m '>+1<CR>gv")
|
||||||
|
vim.keymap.set("v", "K", ":m '<-2<CR>gv")
|
||||||
|
|
||||||
|
-- add extra vertical padding for the cursor after half-page jumps
|
||||||
|
vim.keymap.set("n", "<C-d>", "<C-d>4<C-e>")
|
||||||
|
vim.keymap.set("n", "<C-u>", "<C-u>4<C-y>")
|
||||||
|
|
||||||
|
-- open folds when iterating search results
|
||||||
|
vim.keymap.set("n", "n", "nzv")
|
||||||
|
vim.keymap.set("n", "N", "Nzv")
|
||||||
|
|
||||||
|
-- maintain cursor position after paragraph formatting
|
||||||
|
vim.keymap.set("n", "=ap", "mF=ap'F")
|
||||||
|
|
||||||
|
-- replace selected text, keep main register
|
||||||
|
vim.keymap.set("x", "<leader>P", [["_dP]])
|
||||||
|
|
||||||
|
-- shortcuts for using + register (system clipboard)
|
||||||
|
vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]])
|
||||||
|
vim.keymap.set("n", "<leader>Y", [["+Y]])
|
||||||
|
vim.keymap.set({ "n", "v" }, "<leader>d", [["+d]])
|
||||||
|
vim.keymap.set("n", "<leader>D", [["+D]])
|
||||||
|
vim.keymap.set("n", "<leader>p", [["+p]])
|
||||||
|
|
||||||
|
-- search-and-replace shortcuts
|
||||||
|
vim.keymap.set("n", "<leader>rw", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
|
||||||
|
vim.keymap.set("n", "<leader>ra", [[:%s//gc<Left><Left><Left>]])
|
||||||
|
|
||||||
|
-- toggle expandtab and show message
|
||||||
|
vim.keymap.set("n", "<leader>tab", function() ToggleTabsSpaces() end)
|
||||||
|
|
||||||
|
-- open scratch/tmp buffers which won't prompt for file-save
|
||||||
|
vim.keymap.set("n", "<leader>ss", function() TmpBuff("enew") end)
|
||||||
|
vim.keymap.set("n", "<leader>sl", function() TmpBuff("vnew") end)
|
||||||
|
vim.keymap.set("n", "<leader>sj", function() TmpBuff("new") end)
|
||||||
|
|
||||||
|
-- quicker switching between panes/splits
|
||||||
|
vim.keymap.set("n", "<C-h>", [[<C-w>h]])
|
||||||
|
vim.keymap.set("n", "<C-j>", [[<C-w>j]])
|
||||||
|
vim.keymap.set("n", "<C-k>", [[<C-w>k]])
|
||||||
|
vim.keymap.set("n", "<C-l>", [[<C-w>l]])
|
||||||
|
kmgAutocmd('FileType', {
|
||||||
|
group = kmGroup,
|
||||||
|
pattern = "netrw",
|
||||||
|
callback = function()
|
||||||
|
vim.keymap.set("n", "<C-h>", [[<C-w>h]], { remap = true, buffer = true })
|
||||||
|
vim.keymap.set("n", "<C-j>", [[<C-w>j]], { remap = true, buffer = true })
|
||||||
|
vim.keymap.set("n", "<C-k>", [[<C-w>k]], { remap = true, buffer = true })
|
||||||
|
vim.keymap.set("n", "<C-l>", [[<C-w>l]], { remap = true, buffer = true })
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
-- visual/ui-related toggles and shortcuts
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>vl", function() ToggleCursorLine() end)
|
||||||
|
vim.keymap.set("n", "<leader>vc", function() ToggleColorColumn('90') end)
|
||||||
|
vim.keymap.set("n", "<leader>vn", function() ToggleLineNumbers() end)
|
||||||
|
vim.keymap.set("n", "<leader>vw", function() ToggleWritingMode() end)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
-- quickfix and location lists
|
||||||
|
-- ref: :h quickfix or :h location-list
|
||||||
|
-- NOTE: look at :h setqflist and :h vim.diagnostic.setqflist()
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>qo", "<cmd>copen<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>qc", "<cmd>cclose<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>qn", "<cmd>cnext<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>qp", "<cmd>cprev<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>ln", "<cmd>lnext<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>lp", "<cmd>lprev<CR>")
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
-- debugger and debugging ui
|
||||||
|
|
||||||
|
local dap = require("dap")
|
||||||
|
vim.keymap.set("n", "<leader>bc", dap.continue, { desc = "debug: continue" })
|
||||||
|
vim.keymap.set("n", "<leader>bi", dap.step_into, { desc = "debug: step into" })
|
||||||
|
vim.keymap.set("n", "<leader>bo", dap.step_over, { desc = "debug: step over" })
|
||||||
|
vim.keymap.set("n", "<leader>bu", dap.step_out, { desc = "debug: step out" })
|
||||||
|
vim.keymap.set("n", "<leader>blb", dap.list_breakpoints, { desc = "debug: list breakpoints" })
|
||||||
|
vim.keymap.set("n", "<leader>bt", dap.toggle_breakpoint, { desc = "debug: toggle breakpoint" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>bB", function()
|
||||||
|
dap.set_breakpoint(vim.fn.input("breakpoint condition: "))
|
||||||
|
end, { desc = "debug: set conditional breakpoint" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>bv", function()
|
||||||
|
require("nvim-dap-virtual-text").toggle()
|
||||||
|
end, { desc = "debug: toggle virtual text" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>bq", function()
|
||||||
|
dap.terminate() require("dapui").close() require("nvim-dap-virtual-text").disable()
|
||||||
|
end, { desc = "debug: quit debugger" })
|
||||||
|
|
||||||
|
-- TODO: decide if i want these or others, add if so
|
||||||
|
-- vim.keymap.set("n", "<leader>zxcv", dap.repl.open, { desc = "open REPL" })
|
||||||
|
-- vim.keymap.set("n", "<leader>zxcv", dap.run_last, { desc = "run last" })
|
||||||
|
-- vim.keymap.set("n", "<leader>zxcv", dap.set_exception_breakpoints({ "all" }), { desc = "set exception breakpoints" })
|
||||||
|
-- local dapWidgets = require('dap.ui.widgets')
|
||||||
|
-- vim.keymap.set({'n', 'v'}, '<leader>zxcv', dapWidgets.hover)
|
||||||
|
-- vim.keymap.set({'n', 'v'}, '<leader>zxcv', dapWidgets.preview)
|
||||||
|
-- vim.keymap.set('n', '<leader>zxcv', function() dapWidgets.centered_float(dapWidgets.frames) end)
|
||||||
|
-- vim.keymap.set('n', '<leader>zxcv', function() dapWidgets.centered_float(dapWidgets.scopes) end)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
-- lsp
|
||||||
|
|
||||||
|
kmgAutocmd('LspAttach', {
|
||||||
|
group = kmGroup,
|
||||||
|
callback = function(e)
|
||||||
|
local opts = { buffer = e.buf }
|
||||||
|
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
|
||||||
|
vim.keymap.set("n", "<leader>lh", function() vim.lsp.buf.hover() end, opts)
|
||||||
|
vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
|
||||||
|
vim.keymap.set("n", "<leader>lv", function() vim.diagnostic.open_float() end, opts)
|
||||||
|
vim.keymap.set("n", "<leader>lq", function() vim.diagnostic.setqflist() end, opts)
|
||||||
|
-- TODO: learn what the below commands are and if i want to set keymaps for them
|
||||||
|
-- vim.keymap.set("n", "<leader>lws", function() vim.lsp.buf.workspace_symbol() end, opts)
|
||||||
|
-- vim.keymap.set("n", "<leader>lca", function() vim.lsp.buf.code_action() end, opts)
|
||||||
|
-- vim.keymap.set("n", "<leader>lrl", function() vim.lsp.buf.references() end, opts)
|
||||||
|
-- vim.keymap.set("n", "<leader>lrn", function() vim.lsp.buf.rename() end, opts)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
-- git stuff
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>ga", function() vim.cmd("silent !git add %") end)
|
||||||
|
vim.keymap.set("n", "<leader>gs", function() TmpBuff("new"); ReadShellCmd('git status') end)
|
||||||
|
vim.keymap.set("n", "<leader>gl", function() TmpBuff("vnew"); ReadShellCmd('git log') end)
|
||||||
|
vim.keymap.set("n", "<leader>gg", function()
|
||||||
|
TmpBuff()
|
||||||
|
ReadShellCmd('git ' .. vim.fn.input('git '))
|
||||||
|
end)
|
||||||
|
vim.keymap.set("n", "<leader>gG", ":Git ") -- use fugitive plugin's generic git command
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
-- plugins
|
||||||
|
|
||||||
|
-- telescope
|
||||||
|
local tscBuiltin = require('telescope.builtin')
|
||||||
|
local custom_grep_str_w_regex = function()
|
||||||
|
tscBuiltin.grep_string({ search = vim.fn.input("grep > "), use_regex = true, additional_args = "-i", })
|
||||||
|
end
|
||||||
|
vim.keymap.set('n', '<leader>ft', tscBuiltin.live_grep, { desc = 'tscope find text, live_grep' })
|
||||||
|
vim.keymap.set('n', '<leader>fT', custom_grep_str_w_regex, { desc = 'tscope find text, static grep w/regex' })
|
||||||
|
vim.keymap.set('n', '<leader>ff', tscBuiltin.find_files, { desc = 'tscope find files' })
|
||||||
|
vim.keymap.set('n', '<leader>fg', tscBuiltin.git_files, { desc = 'tscope find git-tracked files' })
|
||||||
|
vim.keymap.set('n', '<leader>fb', tscBuiltin.buffers, { desc = 'tscope buffers' })
|
||||||
|
vim.keymap.set('n', '<leader>fh', tscBuiltin.help_tags, { desc = 'tscope help tags' })
|
||||||
|
-- TODO: maybe add commands:
|
||||||
|
-- - find files including git-ignored (that is, have both a yes and no option)
|
||||||
|
-- - grep files including git-ignored (that is, have both a yes and no option)
|
||||||
|
-- - grep which supports fuzzy-find, unless performance is horrendous
|
||||||
|
|
||||||
|
-- harpoon
|
||||||
|
local harpoon = require("harpoon")
|
||||||
|
vim.keymap.set("n", "<leader>hl", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end)
|
||||||
|
vim.keymap.set("n", "<leader>ha", function() harpoon:list():add() end)
|
||||||
|
vim.keymap.set("n", "<leader>hA", function() harpoon:list():prepend() end)
|
||||||
|
vim.keymap.set("n", "<leader>hn", function() harpoon:list():next() end)
|
||||||
|
vim.keymap.set("n", "<leader>hp", function() harpoon:list():prev() end)
|
||||||
|
for i = 1, 10, 1 do
|
||||||
|
vim.keymap.set("n", "<leader>" .. (i % 10), function() harpoon:list():select(i) end)
|
||||||
|
vim.keymap.set("n", "<leader>h" .. (i % 10), function() harpoon:list():replace_at(i) end)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- undotree
|
||||||
|
vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
|
||||||
|
|
||||||
|
-- conform (formatter)
|
||||||
|
vim.keymap.set("n", "<leader>fmt", function()
|
||||||
|
require("conform").format({ bufnr = 0 })
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- obisdian / notes
|
||||||
|
vim.keymap.set("n", "<leader>oo", function() vim.cmd("Obsidian open") end)
|
||||||
|
vim.keymap.set("n", "<leader>ot", "o- [ ] ")
|
||||||
|
|
||||||
28
src_files/.config/nvim/lua/plugin_manager.lua
Normal file
28
src_files/.config/nvim/lua/plugin_manager.lua
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
local path_lazy_nvim = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not vim.loop.fs_stat(path_lazy_nvim) then
|
||||||
|
local git_output = vim.fn.system({
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"--filter=blob:none",
|
||||||
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
|
"--branch=stable",
|
||||||
|
path_lazy_nvim,
|
||||||
|
})
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
vim.api.nvim_echo(
|
||||||
|
{ { "Failed to clone lazy.nvim:\n" }, { git_output }, },
|
||||||
|
true,
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
vim.fn.getchar()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(path_lazy_nvim)
|
||||||
|
|
||||||
|
require("lazy").setup({
|
||||||
|
spec = {
|
||||||
|
{ import = "plugins_lazy" },
|
||||||
|
},
|
||||||
|
checker = { enabled = false },
|
||||||
|
change_detection = { notify = false },
|
||||||
|
})
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
return {
|
||||||
|
'stevearc/conform.nvim',
|
||||||
|
opts = {},
|
||||||
|
config = function()
|
||||||
|
require("conform").setup({
|
||||||
|
formatters_by_ft = {
|
||||||
|
-- c = { "fill-in" },
|
||||||
|
-- cpp = { "fill-in" },
|
||||||
|
go = { "gofmt" },
|
||||||
|
lua = { "stylua" },
|
||||||
|
ruby = { "standardrb" },
|
||||||
|
python = { "black" },
|
||||||
|
javascript = { "prettier" },
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
123
src_files/.config/nvim/lua/plugins_lazy/dap.lua
Normal file
123
src_files/.config/nvim/lua/plugins_lazy/dap.lua
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"mfussenegger/nvim-dap",
|
||||||
|
config = function()
|
||||||
|
local dap = require("dap")
|
||||||
|
dap.set_log_level("DEBUG")
|
||||||
|
|
||||||
|
dap.adapters.codelldb = {
|
||||||
|
type = "executable",
|
||||||
|
command = "codelldb",
|
||||||
|
}
|
||||||
|
|
||||||
|
local dapConfigArgsInput = function()
|
||||||
|
return vim.split(vim.fn.input("args: "), " ")
|
||||||
|
end
|
||||||
|
|
||||||
|
local dapConfigProgramSelect = function()
|
||||||
|
local co = coroutine.running()
|
||||||
|
|
||||||
|
require('telescope.pickers').new({}, {
|
||||||
|
prompt_title = "debug executable",
|
||||||
|
finder = require('telescope.finders').new_oneshot_job({
|
||||||
|
"find", ".", "-type", "f", "-perm", "+100", "-exec", "realpath", "{}", "+"
|
||||||
|
}),
|
||||||
|
sorter = require('telescope.sorters').get_fuzzy_file(),
|
||||||
|
attach_mappings = function(prompt_bufnr, _map)
|
||||||
|
local tscopeActions = require('telescope.actions')
|
||||||
|
tscopeActions.select_default:replace(function()
|
||||||
|
tscopeActions.close(prompt_bufnr)
|
||||||
|
local chosenFile = require('telescope.actions.state').get_selected_entry().value
|
||||||
|
coroutine.resume(co, chosenFile)
|
||||||
|
end)
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
}):find()
|
||||||
|
|
||||||
|
return coroutine.yield()
|
||||||
|
end
|
||||||
|
|
||||||
|
dap.configurations.cpp = {
|
||||||
|
{
|
||||||
|
name = "default c/cpp: launch",
|
||||||
|
type = "codelldb",
|
||||||
|
request = "launch",
|
||||||
|
cwd = "${workspaceFolder}",
|
||||||
|
program = dapConfigProgramSelect,
|
||||||
|
stopOnEntry = false,
|
||||||
|
},
|
||||||
|
-- {
|
||||||
|
-- name = "default c/cpp: attach to lldbserver :1234",
|
||||||
|
-- type = "codelldb",
|
||||||
|
-- request = "attach",
|
||||||
|
-- cwd = "${workspaceFolder}",
|
||||||
|
-- program = dapConfigProgramSelect,
|
||||||
|
-- MIMode = "lldb",
|
||||||
|
-- miDebuggerServerAddress = "localhost:1234",
|
||||||
|
-- miDebuggerPath = "/usr/bin/lldb",
|
||||||
|
-- },
|
||||||
|
}
|
||||||
|
dap.configurations.c = dap.configurations.cpp
|
||||||
|
dap.configurations.go = {
|
||||||
|
{
|
||||||
|
name = "go: launch",
|
||||||
|
type = "delve",
|
||||||
|
request = "launch",
|
||||||
|
program = dapConfigProgramSelect,
|
||||||
|
args = dapConfigArgsInput,
|
||||||
|
outputMode = "remote",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "go: launch current file",
|
||||||
|
type = "delve",
|
||||||
|
request = "launch",
|
||||||
|
program = "${file}",
|
||||||
|
args = dapConfigArgsInput,
|
||||||
|
outputMode = "remote",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rcarriga/nvim-dap-ui",
|
||||||
|
dependencies = {
|
||||||
|
"mfussenegger/nvim-dap",
|
||||||
|
"nvim-neotest/nvim-nio",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local dap = require("dap")
|
||||||
|
local dap_ui = require("dapui")
|
||||||
|
dap_ui.setup()
|
||||||
|
dap.listeners.before.attach.dapui_config = function() dap_ui.open() end
|
||||||
|
dap.listeners.before.launch.dapui_config = function() dap_ui.open() end
|
||||||
|
dap.listeners.before.event_terminated.dapui_config = function() dap_ui.close() end
|
||||||
|
dap.listeners.before.event_exited.dapui_config = function() dap_ui.close() end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jay-babu/mason-nvim-dap.nvim", -- TODO: install here? manually outside of neovim?
|
||||||
|
dependencies = {
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
"mfussenegger/nvim-dap",
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("mason-nvim-dap").setup({
|
||||||
|
ensure_installed = {
|
||||||
|
"codelldb",
|
||||||
|
-- "delve",
|
||||||
|
},
|
||||||
|
automatic_installation = true,
|
||||||
|
handlers = {
|
||||||
|
function(config) require("mason-nvim-dap").default_setup(config) end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"theHamsta/nvim-dap-virtual-text",
|
||||||
|
dependencies = {
|
||||||
|
"mfussenegger/nvim-dap",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
3
src_files/.config/nvim/lua/plugins_lazy/fugitive_git.lua
Normal file
3
src_files/.config/nvim/lua/plugins_lazy/fugitive_git.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
{ "tpope/vim-fugitive" },
|
||||||
|
}
|
||||||
15
src_files/.config/nvim/lua/plugins_lazy/harpoon.lua
Normal file
15
src_files/.config/nvim/lua/plugins_lazy/harpoon.lua
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"ThePrimeagen/harpoon",
|
||||||
|
branch = "harpoon2", -- https://github.com/ThePrimeagen/harpoon/tree/harpoon2
|
||||||
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
|
config = function()
|
||||||
|
require("harpoon"):setup({
|
||||||
|
settings = {
|
||||||
|
save_on_toggle = true,
|
||||||
|
sync_on_ui_close = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
130
src_files/.config/nvim/lua/plugins_lazy/lsp.lua
Normal file
130
src_files/.config/nvim/lua/plugins_lazy/lsp.lua
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"L3MON4D3/LuaSnip",
|
||||||
|
version = "v2.*",
|
||||||
|
-- build = "make install_jsregexp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
dependencies = {
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
"williamboman/mason-lspconfig.nvim",
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
"hrsh7th/cmp-buffer",
|
||||||
|
"hrsh7th/cmp-path",
|
||||||
|
"hrsh7th/cmp-cmdline",
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
"L3MON4D3/LuaSnip", -- snippets, using luasnip for now
|
||||||
|
"saadparwaiz1/cmp_luasnip", -- snippets, using luasnip for now
|
||||||
|
},
|
||||||
|
|
||||||
|
config = function()
|
||||||
|
require("conform").setup({ formatters_by_ft = {} })
|
||||||
|
local cmp = require('cmp')
|
||||||
|
local cmp_lsp = require("cmp_nvim_lsp")
|
||||||
|
local capabilities = vim.tbl_deep_extend(
|
||||||
|
"force",
|
||||||
|
{},
|
||||||
|
vim.lsp.protocol.make_client_capabilities(),
|
||||||
|
cmp_lsp.default_capabilities()
|
||||||
|
)
|
||||||
|
|
||||||
|
require("mason").setup()
|
||||||
|
require("mason-lspconfig").setup({
|
||||||
|
ensure_installed = {
|
||||||
|
"clangd",
|
||||||
|
"lua_ls",
|
||||||
|
-- "ruby_lsp",
|
||||||
|
-- "gopls",
|
||||||
|
-- "tailwindcss",
|
||||||
|
},
|
||||||
|
handlers = {
|
||||||
|
function(server_name) -- default
|
||||||
|
require("lspconfig")[server_name].setup {
|
||||||
|
capabilities = capabilities
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
|
||||||
|
["lua_ls"] = function()
|
||||||
|
local lspconfig = require("lspconfig")
|
||||||
|
lspconfig.lua_ls.setup {
|
||||||
|
capabilities = capabilities,
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
format = {
|
||||||
|
enable = true,
|
||||||
|
defaultConfig = { -- NOTE: string values only
|
||||||
|
indent_style = "space",
|
||||||
|
indent_size = "2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
local cmp_select = { behavior = cmp.SelectBehavior.Select }
|
||||||
|
cmp.setup({
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
["<C-Space>"] = cmp.mapping.complete(),
|
||||||
|
['<C-y>'] = cmp.mapping.confirm({ select = true }),
|
||||||
|
['<C-n>'] = cmp.mapping.select_next_item(cmp_select),
|
||||||
|
['<C-p>'] = cmp.mapping.select_prev_item(cmp_select),
|
||||||
|
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-u>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
}),
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
-- vim.snippet.expand(args.body) -- TODO: native option, maybe try
|
||||||
|
require('luasnip').lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
}, {
|
||||||
|
{ name = 'buffer' },
|
||||||
|
}),
|
||||||
|
window = {
|
||||||
|
completion = cmp.config.window.bordered(),
|
||||||
|
documentation = cmp.config.window.bordered(),
|
||||||
|
},
|
||||||
|
performance = {
|
||||||
|
max_view_entries = 14,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- `/` cmdline setup.
|
||||||
|
cmp.setup.cmdline(':', {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'path' }
|
||||||
|
}, {
|
||||||
|
{ name = 'cmdline' }
|
||||||
|
}),
|
||||||
|
matching = { disallow_symbol_nonprefix_matching = false }
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.diagnostic.config({
|
||||||
|
-- update_in_insert = true,
|
||||||
|
float = {
|
||||||
|
focusable = false,
|
||||||
|
style = "minimal",
|
||||||
|
border = "rounded",
|
||||||
|
source = "always",
|
||||||
|
header = "",
|
||||||
|
prefix = "",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- TODO: needed? seems like neovim/nvim-lspconfig covers by default
|
||||||
|
-- vim.lsp.enable('clangd')
|
||||||
|
-- vim.lsp.enable('ruby_lsp')
|
||||||
|
-- vim.lsp.enable('standardrb')
|
||||||
|
-- vim.lsp.enable('herb_ls') -- targets html + ruby (erb files)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
23
src_files/.config/nvim/lua/plugins_lazy/obsidian.lua
Normal file
23
src_files/.config/nvim/lua/plugins_lazy/obsidian.lua
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"obsidian-nvim/obsidian.nvim",
|
||||||
|
version = "*", -- '*' for latest release, not latest commit
|
||||||
|
ft = "markdown",
|
||||||
|
opts = {
|
||||||
|
frontmatter = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
legacy_commands = false,
|
||||||
|
new_notes_location = os.getenv("DIR_NOTES") .. "/inbox",
|
||||||
|
ui = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
workspaces = {
|
||||||
|
{
|
||||||
|
name = "notes",
|
||||||
|
path = os.getenv("DIR_NOTES"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
43
src_files/.config/nvim/lua/plugins_lazy/telescope.lua
Normal file
43
src_files/.config/nvim/lua/plugins_lazy/telescope.lua
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
return {
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
tag = "0.1.8",
|
||||||
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
|
opts = {
|
||||||
|
defaults = {
|
||||||
|
layout_strategy = "vertical",
|
||||||
|
layout_config = {
|
||||||
|
horizontal = {
|
||||||
|
width = 0.98,
|
||||||
|
height = 0.98,
|
||||||
|
preview_width = 0.45,
|
||||||
|
},
|
||||||
|
vertical = {
|
||||||
|
width = 0.98,
|
||||||
|
height = 0.98,
|
||||||
|
preview_height = 0.55,
|
||||||
|
preview_cutoff = 14,
|
||||||
|
prompt_position = 'bottom',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
path_display = { "truncate", },
|
||||||
|
},
|
||||||
|
pickers = {
|
||||||
|
find_files = {
|
||||||
|
find_command = {
|
||||||
|
"rg", "--hidden", "--files", -- "--no-ignore",
|
||||||
|
"-g", "!**/.git/**",
|
||||||
|
"-g", "!**/build/**",
|
||||||
|
"-g", "!**/node_modules/**",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
live_grep = {
|
||||||
|
additional_args = {
|
||||||
|
"--hidden", "--no-binary", -- "--no-ignore",
|
||||||
|
"-g", "!**/.git/**",
|
||||||
|
"-g", "!**/build/**",
|
||||||
|
"-g", "!**/node_modules/**",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
84
src_files/.config/nvim/lua/plugins_lazy/themes.lua
Normal file
84
src_files/.config/nvim/lua/plugins_lazy/themes.lua
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"tiagovla/tokyodark.nvim",
|
||||||
|
lazy = false,
|
||||||
|
priority = 1000,
|
||||||
|
opts = {
|
||||||
|
custom_highlights = function(highlights, palette)
|
||||||
|
highlights.Comment['fg'] = "#8a9097"
|
||||||
|
highlights.LineNr['fg'] = "#8088A8"
|
||||||
|
highlights.Visual['bg'] = palette.bg3
|
||||||
|
return highlights
|
||||||
|
end,
|
||||||
|
gamma = 0.92, -- brightness
|
||||||
|
styles = {
|
||||||
|
comments = { italic = true },
|
||||||
|
keywords = { italic = false },
|
||||||
|
identifiers = { italic = false },
|
||||||
|
functions = {},
|
||||||
|
variables = {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'ribru17/bamboo.nvim',
|
||||||
|
config = function()
|
||||||
|
require('bamboo').setup { }
|
||||||
|
require('bamboo').load()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dir = vim.fn.stdpath("config") .. "/themes/pina",
|
||||||
|
name = "pina",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'steve-lohmeyer/mars.nvim',
|
||||||
|
name = 'mars',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ellisonleao/gruvbox.nvim",
|
||||||
|
name = "gruvbox",
|
||||||
|
opts = {
|
||||||
|
terminal_colors = true, -- add neovim terminal colors
|
||||||
|
undercurl = true,
|
||||||
|
underline = true,
|
||||||
|
bold = true,
|
||||||
|
italic = {
|
||||||
|
strings = true,
|
||||||
|
emphasis = true,
|
||||||
|
comments = true,
|
||||||
|
operators = false,
|
||||||
|
folds = true,
|
||||||
|
},
|
||||||
|
strikethrough = true,
|
||||||
|
invert_selection = false,
|
||||||
|
invert_signs = false,
|
||||||
|
invert_tabline = false,
|
||||||
|
inverse = true, -- invert background for search, diffs, statuslines and errors
|
||||||
|
contrast = "", -- "hard", "soft", or ""
|
||||||
|
palette_overrides = {},
|
||||||
|
overrides = {},
|
||||||
|
dim_inactive = false,
|
||||||
|
transparent_mode = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
-- even if not connected to a zz-this-box theme, keep this for nvim diffthis
|
||||||
|
"rose-pine/neovim",
|
||||||
|
name = "rose-pine",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"folke/tokyonight.nvim",
|
||||||
|
opts = {
|
||||||
|
style = "night", -- "night", "storm", "moon", "day"
|
||||||
|
styles = {
|
||||||
|
functions = {} -- disable italic for functions
|
||||||
|
},
|
||||||
|
on_colors = function(colors)
|
||||||
|
colors.hint = colors.orange
|
||||||
|
colors.error = "#ff0000"
|
||||||
|
colors.fg_gutter = "#9098B8"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
56
src_files/.config/nvim/lua/plugins_lazy/treesitter.lua
Normal file
56
src_files/.config/nvim/lua/plugins_lazy/treesitter.lua
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
lazy = false,
|
||||||
|
build = ":TSUpdate",
|
||||||
|
config = function()
|
||||||
|
require("nvim-treesitter.configs").setup({
|
||||||
|
ensure_installed = {
|
||||||
|
"vimdoc", "bash", "lua", "c", "cpp", "go", "python", "ruby",
|
||||||
|
"html", "css", "javascript", "jsdoc", "sql", "json", "yaml",
|
||||||
|
"markdown", "markdown_inline",
|
||||||
|
-- "odin", "zig", "ocaml", "java", "typescript",
|
||||||
|
},
|
||||||
|
sync_install = false, -- install `ensure_installed` parsers synchronously
|
||||||
|
auto_install = true, -- install missing on BufEnter, requires tree-sitter CLI
|
||||||
|
ignore_install = {
|
||||||
|
"csv",
|
||||||
|
},
|
||||||
|
indent = { enable = true },
|
||||||
|
highlight = {
|
||||||
|
enable = true, -- `false` will disable the whole extension
|
||||||
|
disable = function(lang, buf)
|
||||||
|
for i, v in ipairs({ "html", "csv", }) do
|
||||||
|
if lang == v then
|
||||||
|
print("treesitter disabled for this language")
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
||||||
|
if ok and stats and stats.size > (100 * 1024) then -- 100 KB
|
||||||
|
vim.notify(
|
||||||
|
"larger file, treesitter disabled for performance",
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{title = "Treesitter"}
|
||||||
|
)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
-- true, false, or list of langs; may cause slowness or duplicate highlights
|
||||||
|
additional_vim_regex_highlighting = { "markdown" },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- TODO: decide if needed/wanted
|
||||||
|
-- local treesitter_parser_config = require("nvim-treesitter.parsers").get_parser_configs()
|
||||||
|
-- treesitter_parser_config.templ = {
|
||||||
|
-- install_info = {
|
||||||
|
-- url = "https://github.com/vrischmann/tree-sitter-templ.git",
|
||||||
|
-- files = {"src/parser.c", "src/scanner.c"},
|
||||||
|
-- branch = "master",
|
||||||
|
-- },
|
||||||
|
-- }
|
||||||
|
-- vim.treesitter.language.register("templ", "templ")
|
||||||
|
end
|
||||||
|
},
|
||||||
|
}
|
||||||
7
src_files/.config/nvim/lua/plugins_lazy/undotree.lua
Normal file
7
src_files/.config/nvim/lua/plugins_lazy/undotree.lua
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
"mbbill/undotree",
|
||||||
|
config = function()
|
||||||
|
vim.g.undotree_SplitWidth = 41
|
||||||
|
vim.g.undotree_DiffpanelHeight = 14
|
||||||
|
end,
|
||||||
|
}
|
||||||
49
src_files/.config/nvim/lua/settings.lua
Normal file
49
src_files/.config/nvim/lua/settings.lua
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
vim.opt.hlsearch = true
|
||||||
|
vim.opt.incsearch = true
|
||||||
|
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
vim.opt.scrolloff = 2
|
||||||
|
vim.opt.colorcolumn = '' -- default to off, see keymapping shortcut to toggle
|
||||||
|
vim.opt.signcolumn = "yes" -- "auto", "yes", "no", "number"
|
||||||
|
vim.opt.laststatus = 2
|
||||||
|
vim.opt.splitright = true
|
||||||
|
vim.opt.splitbelow = true
|
||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
vim.opt.cursorlineopt = "both"
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
|
||||||
|
vim.opt.wrap = true
|
||||||
|
vim.opt.textwidth = 0
|
||||||
|
vim.opt.wrapmargin = 0
|
||||||
|
vim.opt.fillchars = { eob = ' ' }
|
||||||
|
|
||||||
|
vim.opt.conceallevel = 0
|
||||||
|
|
||||||
|
vim.opt.spell = false
|
||||||
|
vim.opt.spelllang = 'en_us'
|
||||||
|
|
||||||
|
vim.opt.errorbells = false
|
||||||
|
vim.opt.visualbell = false
|
||||||
|
|
||||||
|
vim.opt.updatetime = 1000
|
||||||
|
|
||||||
|
vim.opt.tabstop = 4
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
|
||||||
|
vim.opt.backup = false
|
||||||
|
vim.opt.swapfile = false
|
||||||
|
vim.opt.undodir = os.getenv("XDG_DATA_HOME") .. "/nvim/undodir"
|
||||||
|
vim.opt.undofile = true
|
||||||
|
|
||||||
|
-- netrw settings
|
||||||
|
vim.g.netrw_browse_split = 0
|
||||||
|
vim.g.netrw_preview = 1
|
||||||
|
vim.g.netrw_banner = 0
|
||||||
|
vim.g.netrw_winsize = 50
|
||||||
|
|
||||||
14
src_files/.config/nvim/lua/theme_transparency.lua
Normal file
14
src_files/.config/nvim/lua/theme_transparency.lua
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
local hl_properties = {
|
||||||
|
"Normal", "NormalFloat", "FloatBorder", "Pmenu", "Terminal", "EndOfBuffer",
|
||||||
|
"FoldColumn", "Folded", "SignColumn", "NormalNC", "WhichKeyFloat", "TelescopeBorder",
|
||||||
|
"TelescopeNormal", "TelescopePromptBorder", "TelescopePromptTitle", "NotifyINFOBody",
|
||||||
|
"NotifyERRORBody", "NotifyWARNBody", "NotifyTRACEBody", "NotifyDEBUGBody",
|
||||||
|
"NotifyINFOTitle", "NotifyERRORTitle", "NotifyWARNTitle", "NotifyTRACETitle",
|
||||||
|
"NotifyDEBUGTitle", "NotifyINFOBorder", "NotifyERRORBorder", "NotifyWARNBorder",
|
||||||
|
"NotifyTRACEBorder", "NotifyDEBUGBorder",
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v in ipairs(hl_properties) do
|
||||||
|
vim.api.nvim_set_hl(0, v, { bg = "none" })
|
||||||
|
end
|
||||||
|
|
||||||
122
src_files/.config/nvim/lua/util_functions.lua
Normal file
122
src_files/.config/nvim/lua/util_functions.lua
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
function ThemeUpdate()
|
||||||
|
local scheme_name = "tokyodark" -- default if unable to parse from file
|
||||||
|
local current_theme_file = vim.fn.stdpath("config") .. "/current-theme"
|
||||||
|
local ok, theme = pcall(dofile, current_theme_file)
|
||||||
|
if ok then
|
||||||
|
scheme_name = theme.colorscheme_name
|
||||||
|
end
|
||||||
|
vim.cmd.colorscheme(scheme_name)
|
||||||
|
pcall(dofile, vim.fn.stdpath('config') .. '/lua/theme_transparency.lua')
|
||||||
|
end
|
||||||
|
|
||||||
|
function TmpBuff(split_opt)
|
||||||
|
local new_cmd = split_opt or "enew"
|
||||||
|
vim.cmd(new_cmd)
|
||||||
|
vim.opt_local.buftype = "nofile"
|
||||||
|
vim.opt_local.bufhidden = "hide"
|
||||||
|
vim.opt_local.swapfile = false
|
||||||
|
vim.cmd("file tmp_" .. os.date("%Y%m%d_%H%M%S") .. "_" .. math.random(471))
|
||||||
|
end
|
||||||
|
|
||||||
|
function ReadShellCmd(command)
|
||||||
|
vim.cmd("read !" .. command)
|
||||||
|
end
|
||||||
|
|
||||||
|
function ToggleTabsSpaces()
|
||||||
|
if vim.opt.expandtab:get() then
|
||||||
|
vim.opt.expandtab = false
|
||||||
|
print("using actual tabs")
|
||||||
|
else
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
print("using spaces in place of tabs")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function ToggleLineNumbers()
|
||||||
|
if vim.opt.number:get() then
|
||||||
|
vim.opt.number = false
|
||||||
|
vim.opt.relativenumber = false
|
||||||
|
else
|
||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function ToggleColorColumn(column_string)
|
||||||
|
if #vim.opt.colorcolumn:get() == 0 then
|
||||||
|
vim.opt.colorcolumn = (column_string or '90')
|
||||||
|
else
|
||||||
|
vim.opt.colorcolumn = ''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function ToggleCursorLine()
|
||||||
|
vim.opt.cursorline = (not vim.opt.cursorline:get())
|
||||||
|
end
|
||||||
|
|
||||||
|
local function EnableWritingModeUiForCurrentWindow()
|
||||||
|
vim.opt_local.number = false
|
||||||
|
vim.opt_local.relativenumber = false
|
||||||
|
vim.opt_local.colorcolumn = ''
|
||||||
|
vim.opt_local.signcolumn = "no"
|
||||||
|
vim.opt_local.cursorline = false
|
||||||
|
vim.opt_local.winfixwidth = true
|
||||||
|
-- vim.opt_local.wrap = true -- TODO: needed?
|
||||||
|
vim.opt_local.laststatus = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function ToggleWritingMode()
|
||||||
|
if vim.g.writing_mode then
|
||||||
|
vim.g.writing_mode = false
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, 'WinSeparator', vim.g.wrmode_prev_hl_winsep or {})
|
||||||
|
vim.opt_local.winfixwidth = false
|
||||||
|
vim.cmd("wincmd l")
|
||||||
|
vim.api.nvim_win_close(0, false)
|
||||||
|
vim.cmd("wincmd h")
|
||||||
|
vim.api.nvim_win_close(0, false)
|
||||||
|
|
||||||
|
vim.opt_local.number = true
|
||||||
|
vim.opt_local.relativenumber = true
|
||||||
|
vim.opt_local.signcolumn = "yes"
|
||||||
|
vim.opt_local.cursorline = true
|
||||||
|
vim.api.nvim_set_hl(0, 'SpellCap', vim.g.wrmode_prev_hl_spellcap or {})
|
||||||
|
vim.opt_local.spell = false
|
||||||
|
-- vim.opt_local.wrap = true -- TODO: needed?
|
||||||
|
vim.opt_local.textwidth = 0
|
||||||
|
vim.opt_local.scrolloff = 2
|
||||||
|
vim.opt_local.formatoptions:remove('t')
|
||||||
|
vim.opt_local.laststatus = 0
|
||||||
|
-- vim.cmd("vertical resize")
|
||||||
|
else
|
||||||
|
vim.g.writing_mode = true
|
||||||
|
|
||||||
|
vim.g.wrmode_prev_hl_winsep = vim.api.nvim_get_hl(0, { name = 'WinSeparator' })
|
||||||
|
vim.api.nvim_set_hl(0, 'WinSeparator', { bg = 'none', fg = '#000000' })
|
||||||
|
local window_width = 72
|
||||||
|
local window_padding = math.max(math.floor((vim.o.columns - window_width) / 2), 1)
|
||||||
|
vim.cmd("vsplit")
|
||||||
|
local writing_pane = vim.api.nvim_get_current_win()
|
||||||
|
EnableWritingModeUiForCurrentWindow()
|
||||||
|
vim.opt_local.spell = true
|
||||||
|
vim.g.wrmode_prev_hl_spellcap = vim.api.nvim_get_hl(0, { name = 'SpellCap' })
|
||||||
|
vim.api.nvim_set_hl(0, 'SpellCap', {})
|
||||||
|
vim.opt_local.textwidth = window_width
|
||||||
|
vim.opt_local.scrolloff = 14
|
||||||
|
vim.opt_local.formatoptions:append('t')
|
||||||
|
vim.cmd("wincmd h")
|
||||||
|
TmpBuff('enew')
|
||||||
|
local padding_pane_left = vim.api.nvim_get_current_win()
|
||||||
|
EnableWritingModeUiForCurrentWindow()
|
||||||
|
vim.cmd("wincmd l")
|
||||||
|
TmpBuff('vnew')
|
||||||
|
local padding_pane_right = vim.api.nvim_get_current_win()
|
||||||
|
EnableWritingModeUiForCurrentWindow()
|
||||||
|
vim.api.nvim_set_current_win(writing_pane)
|
||||||
|
|
||||||
|
vim.api.nvim_win_set_width(padding_pane_left, window_padding)
|
||||||
|
vim.api.nvim_win_set_width(padding_pane_right, window_padding)
|
||||||
|
vim.api.nvim_win_set_width(writing_pane, window_width)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
20
src_files/.config/obsidian/app.json
Normal file
20
src_files/.config/obsidian/app.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"defaultViewMode": "preview",
|
||||||
|
"showLineNumber": true,
|
||||||
|
"spellcheck": false,
|
||||||
|
"autoPairBrackets": false,
|
||||||
|
"autoPairMarkdown": false,
|
||||||
|
"useTab": false,
|
||||||
|
"autoConvertHtml": true,
|
||||||
|
"vimMode": false,
|
||||||
|
"trashOption": "none",
|
||||||
|
"newFileLocation": "folder",
|
||||||
|
"newFileFolderPath": "inbox",
|
||||||
|
"showUnsupportedFiles": true,
|
||||||
|
"attachmentFolderPath": "inbox",
|
||||||
|
"showInlineTitle": false,
|
||||||
|
"readableLineLength": true,
|
||||||
|
"strictLineBreaks": true,
|
||||||
|
"livePreview": false,
|
||||||
|
"propertiesInDocument": "hidden"
|
||||||
|
}
|
||||||
8
src_files/.config/obsidian/appearance.json
Normal file
8
src_files/.config/obsidian/appearance.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"theme": "obsidian",
|
||||||
|
"accentColor": "#2f930e",
|
||||||
|
"baseFontSize": 20,
|
||||||
|
"enabledCssSnippets": [],
|
||||||
|
"translucency": false,
|
||||||
|
"cssTheme": ""
|
||||||
|
}
|
||||||
33
src_files/.config/obsidian/core-plugins.json
Normal file
33
src_files/.config/obsidian/core-plugins.json
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"file-explorer": true,
|
||||||
|
"global-search": true,
|
||||||
|
"switcher": true,
|
||||||
|
"graph": true,
|
||||||
|
"backlink": true,
|
||||||
|
"canvas": true,
|
||||||
|
"outgoing-link": true,
|
||||||
|
"tag-pane": true,
|
||||||
|
"footnotes": false,
|
||||||
|
"properties": false,
|
||||||
|
"page-preview": true,
|
||||||
|
"daily-notes": true,
|
||||||
|
"templates": true,
|
||||||
|
"note-composer": true,
|
||||||
|
"command-palette": true,
|
||||||
|
"slash-command": false,
|
||||||
|
"editor-status": true,
|
||||||
|
"bookmarks": true,
|
||||||
|
"markdown-importer": false,
|
||||||
|
"zk-prefixer": false,
|
||||||
|
"random-note": false,
|
||||||
|
"outline": true,
|
||||||
|
"word-count": true,
|
||||||
|
"slides": false,
|
||||||
|
"audio-recorder": false,
|
||||||
|
"workspaces": false,
|
||||||
|
"file-recovery": true,
|
||||||
|
"publish": false,
|
||||||
|
"sync": false,
|
||||||
|
"bases": true,
|
||||||
|
"webviewer": false
|
||||||
|
}
|
||||||
22
src_files/.config/obsidian/graph.json
Normal file
22
src_files/.config/obsidian/graph.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"collapse-filter": true,
|
||||||
|
"search": "",
|
||||||
|
"showTags": false,
|
||||||
|
"showAttachments": false,
|
||||||
|
"hideUnresolved": false,
|
||||||
|
"showOrphans": true,
|
||||||
|
"collapse-color-groups": true,
|
||||||
|
"colorGroups": [],
|
||||||
|
"collapse-display": true,
|
||||||
|
"showArrow": false,
|
||||||
|
"textFadeMultiplier": 0,
|
||||||
|
"nodeSizeMultiplier": 1,
|
||||||
|
"lineSizeMultiplier": 1,
|
||||||
|
"collapse-forces": true,
|
||||||
|
"centerStrength": 0.518713248970312,
|
||||||
|
"repelStrength": 10,
|
||||||
|
"linkStrength": 1,
|
||||||
|
"linkDistance": 250,
|
||||||
|
"scale": 1,
|
||||||
|
"close": false
|
||||||
|
}
|
||||||
23
src_files/.config/obsidian/hotkeys.json
Normal file
23
src_files/.config/obsidian/hotkeys.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"switcher:open": [
|
||||||
|
{ "modifiers": [ "Ctrl" ], "key": "F" }
|
||||||
|
],
|
||||||
|
"app:toggle-left-sidebar": [
|
||||||
|
{ "modifiers": [ "Ctrl", "Shift" ], "key": "D" }
|
||||||
|
],
|
||||||
|
"app:toggle-right-sidebar": [
|
||||||
|
{ "modifiers": [ "Ctrl", "Shift" ], "key": "F" }
|
||||||
|
],
|
||||||
|
"markdown:toggle-preview": [
|
||||||
|
{ "modifiers": [ "Ctrl", "Shift" ], "key": "E" }
|
||||||
|
],
|
||||||
|
"editor:toggle-readable-line-length": [
|
||||||
|
{ "modifiers": [ "Ctrl", "Shift" ], "key": "R" }
|
||||||
|
],
|
||||||
|
"file-explorer:reveal-active-file": [
|
||||||
|
{ "modifiers": [ "Ctrl", "Shift" ], "key": "N" }
|
||||||
|
],
|
||||||
|
"app:open-settings": [
|
||||||
|
{ "modifiers": [ "Ctrl", "Shift" ], "key": "O" }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
# list of built-in keywords at https://github.com/koekeishiya/skhd/issues/1
|
|
||||||
# staring file was at /opt/homebrew/opt/yabai/share/yabai/examples
|
|
||||||
# notes, stacks: https://github.com/koekeishiya/yabai/issues/203#issuecomment-650642142
|
|
||||||
|
|
||||||
##########################################################################################
|
|
||||||
# key bindings for yabai wm
|
|
||||||
# general idea: alt navigates (move my view); alt+shift modifies (move/change the window)
|
|
||||||
|
|
||||||
# switch to space (to leave SIP in place, configure these in macos system settings)
|
|
||||||
# alt - 1 # switch to space 1
|
|
||||||
# alt - 2 # switch to space 2 (and similar for other numbers)
|
|
||||||
|
|
||||||
# move focused window to the given space
|
|
||||||
alt + shift - 1 : yabai -m window --space 1 --focus
|
|
||||||
alt + shift - 2 : yabai -m window --space 2 --focus
|
|
||||||
alt + shift - 3 : yabai -m window --space 3 --focus
|
|
||||||
alt + shift - 4 : yabai -m window --space 4 --focus
|
|
||||||
alt + shift - 5 : yabai -m window --space 5 --focus
|
|
||||||
alt + shift - 6 : yabai -m window --space 6 --focus
|
|
||||||
alt + shift - 7 : yabai -m window --space 7 --focus
|
|
||||||
alt + shift - 8 : yabai -m window --space 8 --focus
|
|
||||||
alt + shift - 9 : yabai -m window --space 9 --focus
|
|
||||||
|
|
||||||
# all windows in a space to fullscreen in a single stack
|
|
||||||
alt + shift - s : yabai -m space --layout stack
|
|
||||||
# all windows in a space back to the grid (managed)
|
|
||||||
alt + shift - g : yabai -m space --layout bsp
|
|
||||||
# toggle float on/off for the focused window
|
|
||||||
alt + shift - f : yabai -m window --toggle float
|
|
||||||
# balance window sizes
|
|
||||||
alt + shift - 0 : yabai -m space --balance # TODO: figure out better key option
|
|
||||||
|
|
||||||
# focus on next/previous window
|
|
||||||
alt - j : yabai -m window --focus \
|
|
||||||
$(yabai -m query --spaces --space | jq '.type' | tr -d "\"" | sed "s/stack/stack./" | sed "s/.*[^.]\$//")prev
|
|
||||||
alt - k : yabai -m window --focus \
|
|
||||||
$(yabai -m query --spaces --space | jq '.type' | tr -d "\"" | sed "s/stack/stack./" | sed "s/.*[^.]\$//")next
|
|
||||||
|
|
||||||
# move current window up/down in stack
|
|
||||||
alt + shift - k : yabai -m window --swap \
|
|
||||||
$(yabai -m query --spaces --space | jq '.type' | tr -d "\"" | sed "s/stack/stack./" | sed "s/.*[^.]\$//")next
|
|
||||||
alt + shift - j : yabai -m window --swap \
|
|
||||||
$(yabai -m query --spaces --space | jq '.type' | tr -d "\"" | sed "s/stack/stack./" | sed "s/.*[^.]\$//")prev
|
|
||||||
|
|
||||||
##########################################################################################
|
|
||||||
# key bindings for general use
|
|
||||||
|
|
||||||
alt - h : $(which skhd) -k "ctrl + shift - tab"
|
|
||||||
alt - l : $(which skhd) -k "ctrl - tab"
|
|
||||||
|
|
||||||
17
src_files/.config/tmux/.tmux-session-hydrate-default
Normal file
17
src_files/.config/tmux/.tmux-session-hydrate-default
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
tmux_omitted_dirs=(
|
||||||
|
$HOME
|
||||||
|
$(find $DIR_HOME_BOX -type d -maxdepth 1)
|
||||||
|
$DIR_DEV
|
||||||
|
$DIR_GIT_PROJECTS
|
||||||
|
)
|
||||||
|
[[ ! ${tmux_omitted_dirs[(re)$(pwd)]} ]] && {
|
||||||
|
tmux new-window -d -n $EDITOR
|
||||||
|
tmux send-keys -t :$EDITOR "$EDITOR ." c-M
|
||||||
|
tmux new-window -d -n debug
|
||||||
|
tmux new-window -d -n agt
|
||||||
|
tmux new-window -d -n procs
|
||||||
|
tmux rename-window cmd
|
||||||
|
tmux send-keys -t :cmd "clear; [[ -d .git ]] && git status" c-M
|
||||||
|
}
|
||||||
|
clear
|
||||||
|
|
||||||
4
src_files/.config/tmux/.tmux-session-hydrate-hub
Normal file
4
src_files/.config/tmux/.tmux-session-hydrate-hub
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
tmux rename-window inbox
|
||||||
|
tmux send-keys -t :inbox 'cd "$DIR_INBOX"; clear; ls' c-M
|
||||||
|
clear
|
||||||
|
|
||||||
@@ -1,35 +1,55 @@
|
|||||||
# set -g default-terminal "tmux-255color" # TODO: messes up backspace render, fix
|
|
||||||
set -s escape-time 0
|
set -s escape-time 0
|
||||||
|
|
||||||
|
# replace default prefix and bind-key
|
||||||
unbind C-b
|
unbind C-b
|
||||||
set-option -g prefix C-a
|
set-option -g prefix C-Space
|
||||||
bind-key C-a send-prefix
|
bind-key C-Space send-prefix
|
||||||
set -g status-style 'bg=#111111 fg=#22cc00'
|
|
||||||
set -g base-index 1
|
# settings for status line and window list
|
||||||
|
set-option -g base-index 1
|
||||||
|
set-option -g status-position 'bottom'
|
||||||
|
set-option -g status-left-length 28
|
||||||
|
set-option -Fg status-right '#{host} | %Y-%m-%d %H:%M' # or maybe host_short
|
||||||
|
|
||||||
|
# theme settings
|
||||||
|
set-option -g status-style "bg=default fg=default" # default, theme files can overwrite
|
||||||
|
source-file "$XDG_CONFIG_HOME/tmux/theme.conf"
|
||||||
|
|
||||||
|
# unbind keys
|
||||||
|
unbind-key f; unbind-key C-f; unbind-key s; unbind-key C-s
|
||||||
|
unbind-key c; unbind-key n; unbind-key p
|
||||||
|
unbind-key q; unbind-key w
|
||||||
|
unbind-key C-o; unbind-key C-n; unbind-key C-p; unbind-key C-l; unbind-key C-h
|
||||||
|
unbind-key 0
|
||||||
|
|
||||||
# vim-like movement stuff
|
# vim-like movement stuff
|
||||||
set-window-option -g mode-keys vi
|
set-window-option -g mode-keys vi
|
||||||
bind -T copy-mode-vi v send-keys -X begin-selection
|
bind -T copy-mode-vi v send-keys -X begin-selection
|
||||||
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
|
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
|
||||||
bind -r ^ last-window
|
|
||||||
bind -r k select-pane -U
|
bind -r k select-pane -U
|
||||||
bind -r j select-pane -D
|
bind -r j select-pane -D
|
||||||
bind -r h select-pane -L
|
bind -r h select-pane -L
|
||||||
bind -r l select-pane -R
|
bind -r l select-pane -R
|
||||||
|
|
||||||
# reload tmux.conf
|
# reload tmux.conf
|
||||||
bind r source-file "~/.config/tmux/tmux.conf" \; display-message "tmux.conf reloaded"
|
bind-key r source-file "$XDG_CONFIG_HOME/tmux/tmux.conf" \; display-message "tmux.conf reloaded"
|
||||||
|
|
||||||
# kill the current session
|
# closing the current session
|
||||||
bind-key Q rename-session zzzz-temp-kill\; switch-client -p\; kill-session -t zzzz-temp-kill
|
bind-key q kill-session
|
||||||
bind-key W kill-session # TODO: if i can combine this into the above when only 1 session remains, do so
|
bind-key w run-shell "$DIR_SCRIPTS/tmux-session-close #{session_name}"
|
||||||
|
|
||||||
# custom find and switching for sessions using tmux-sessionizer
|
# creating new windows
|
||||||
unbind-key f
|
bind-key n new-window
|
||||||
bind-key f run-shell "tmux neww $DIR_SCRIPTS/tmux-sessionizer"
|
|
||||||
bind-key C-f run-shell "tmux neww $DIR_SCRIPTS/tmux-sessionizer existing"
|
# find and switching for sessions, include using tmux-session-init
|
||||||
bind-key C-h run-shell "tmux neww $DIR_SCRIPTS/tmux-sessionizer hub"
|
bind-key C-f run-shell "tmux neww $DIR_SCRIPTS/tmux-session-init"
|
||||||
bind-key C-l switch-client -l
|
bind-key C-s choose-session
|
||||||
bind-key C-n next-window
|
bind-key S choose-window
|
||||||
bind-key C-p previous-window
|
bind-key C-h run-shell "tmux neww $DIR_SCRIPTS/tmux-session-init hub"
|
||||||
|
bind-key C-j run-shell "tmux neww $DIR_SCRIPTS/tmux-session-init notes" \; switch-client -t "notes:2"
|
||||||
|
bind-key -r C-l switch-client -l
|
||||||
|
bind-key -r C-o last-window
|
||||||
|
bind-key -r C-n next-window
|
||||||
|
bind-key -r C-p previous-window
|
||||||
|
bind-key 0 select-window -t 10
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
#/bin/zsh
|
|
||||||
|
|
||||||
git clone https://github.com/ghifarit53/tokyonight-vim.git
|
|
||||||
git clone https://github.com/leafgarland/typescript-vim.git
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
" base settings
|
|
||||||
set nocompatible
|
|
||||||
let mapleader=","
|
|
||||||
|
|
||||||
" xdg base directory settings/clean-up
|
|
||||||
set runtimepath^=$XDG_CONFIG_HOME/vim
|
|
||||||
" add other dirs to path as needed
|
|
||||||
" XDG_CONFIG_HOME, XDG_CACHE_HOME, XDG_DATA_HOME, XDG_STATE_HOME, XDG_DATA_DIRS
|
|
||||||
" set/override other filenames/paths/dirs as needed
|
|
||||||
|
|
||||||
" plugin config
|
|
||||||
let g:netrw_banner=0 " hide banner
|
|
||||||
let g:netrw_browse_split=0 " <cr> opens in same window
|
|
||||||
let g:netrw_liststyle=3 " listing style: tree
|
|
||||||
let g:netrw_list_hide= '.*\.swp$'
|
|
||||||
|
|
||||||
let g:typescript_indent_disable = 1
|
|
||||||
|
|
||||||
" functions
|
|
||||||
func! ToggleTabMode()
|
|
||||||
set expandtab!
|
|
||||||
if &expandtab
|
|
||||||
echo "using space characters in place of tabs"
|
|
||||||
else
|
|
||||||
echo "using tab characters"
|
|
||||||
endif
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
" copy & paste: registers, clipboard
|
|
||||||
set clipboard+=unnamed " TODO or maybe unamedplus?
|
|
||||||
|
|
||||||
" colors, themes, appearance
|
|
||||||
"set background=light
|
|
||||||
let g:tokyonight_style = 'night' " available: night, storm
|
|
||||||
colorscheme tokyonight
|
|
||||||
|
|
||||||
" measurements, numbers, visual/audible cues
|
|
||||||
set cursorline
|
|
||||||
set colorcolumn=89,90
|
|
||||||
set noerrorbells novisualbell
|
|
||||||
set hlsearch
|
|
||||||
set laststatus=2
|
|
||||||
set number relativenumber
|
|
||||||
set ruler
|
|
||||||
set showcmd
|
|
||||||
set noshowmode
|
|
||||||
set title
|
|
||||||
|
|
||||||
" syntax highlighting
|
|
||||||
syntax enable " TODO 'enable' or 'on'?
|
|
||||||
|
|
||||||
" settings for buffers
|
|
||||||
set hidden
|
|
||||||
|
|
||||||
" settings for panes/splits, tabs
|
|
||||||
set splitright splitbelow
|
|
||||||
map <C-h> <C-w>h
|
|
||||||
map <C-j> <C-w>j
|
|
||||||
map <C-k> <C-w>k
|
|
||||||
map <C-l> <C-w>l
|
|
||||||
|
|
||||||
" finding and opening files
|
|
||||||
set wildmenu
|
|
||||||
set path+=**
|
|
||||||
|
|
||||||
" text input and editing
|
|
||||||
set tabstop=4
|
|
||||||
set expandtab
|
|
||||||
autocmd BufEnter * set formatoptions-=ro
|
|
||||||
" TODO get recursion working for the tags command below
|
|
||||||
command! MakeTags !ctags -f tags -R .
|
|
||||||
|
|
||||||
" shortcuts or aliases
|
|
||||||
" shortcuts for find in pane/tab
|
|
||||||
nnoremap <leader>f. :find<Space>*
|
|
||||||
nmap <leader>fr :vnew<CR><leader>f.
|
|
||||||
nmap <leader>fb :new<CR><leader>f.
|
|
||||||
nmap <leader>ft :tabnew<CR><leader>f.
|
|
||||||
|
|
||||||
" shortcuts for grep in pane/tab
|
|
||||||
nnoremap <leader>g, :r<Space>!grep<Space>--exclude-dir=node_modules<Space>-rIi<Space><Space>.<Left><Left>
|
|
||||||
nmap <leader>g. :enew<CR><leader>g,
|
|
||||||
nmap <leader>gr :vnew<CR><leader>g,
|
|
||||||
nmap <leader>gb :new<CR><leader>g,
|
|
||||||
nmap <leader>gt :tabnew<CR><leader>g,
|
|
||||||
|
|
||||||
" shortcuts for tree (netrw) in pane/tab
|
|
||||||
nnoremap <leader>t. :edit<Space>.<CR>
|
|
||||||
nnoremap <leader>tr :vsplit<Space>.<CR>
|
|
||||||
nnoremap <leader>tb :split<Space>.<CR>
|
|
||||||
nnoremap <leader>tt :tabnew<Space>.<CR>
|
|
||||||
|
|
||||||
" toggle tab/space mode
|
|
||||||
nnoremap <leader>tab :call ToggleTabMode()<CR>
|
|
||||||
|
|
||||||
" toggles related to line numbers and cursor
|
|
||||||
nnoremap <leader>nu :set number!<CR>
|
|
||||||
nnoremap <leader>rnu :set relativenumber!<CR>
|
|
||||||
nnoremap <leader>cc :set cuc!<CR>
|
|
||||||
|
|
||||||
" searching: replace-all in file
|
|
||||||
nnoremap <leader>ra :%s//g<Left><Left>
|
|
||||||
" TODO maybe add global (working dir, recursive) replace-all feature?
|
|
||||||
|
|
||||||
" format file content
|
|
||||||
nnoremap <leader>fmtjson :%!jq<Space>.<Space>-<CR>
|
|
||||||
|
|
||||||
" automatic actions
|
|
||||||
autocmd BufWritePre * %s/\s\+$//e " delete trailing whitespace
|
|
||||||
" autocmd BufWritePre * %s/\n\+\%$//e " delete end-of-file newlines
|
|
||||||
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
# global settings
|
|
||||||
yabai -m config \
|
|
||||||
external_bar off:40:0 \
|
|
||||||
menubar_opacity 1.0 \
|
|
||||||
mouse_follows_focus off \
|
|
||||||
focus_follows_mouse off \
|
|
||||||
display_arrangement_order default \
|
|
||||||
window_origin_display default \
|
|
||||||
window_placement first_child \
|
|
||||||
window_insertion_point focused \
|
|
||||||
window_zoom_persist on \
|
|
||||||
window_shadow off \
|
|
||||||
window_animation_duration 0.0 \
|
|
||||||
window_animation_easing ease_out_circ \
|
|
||||||
window_opacity_duration 0.0 \
|
|
||||||
active_window_opacity 1.0 \
|
|
||||||
normal_window_opacity 0.90 \
|
|
||||||
window_opacity off \
|
|
||||||
insert_feedback_color 0xffd75f5f \
|
|
||||||
split_ratio 0.0 \
|
|
||||||
split_type auto \
|
|
||||||
auto_balance off \
|
|
||||||
top_padding 00 \
|
|
||||||
bottom_padding 00 \
|
|
||||||
left_padding 00 \
|
|
||||||
right_padding 00 \
|
|
||||||
window_gap 00 \
|
|
||||||
layout bsp \
|
|
||||||
mouse_modifier fn \
|
|
||||||
mouse_action1 move \
|
|
||||||
mouse_action2 resize \
|
|
||||||
mouse_drop_action swap
|
|
||||||
|
|
||||||
@@ -1,31 +1 @@
|
|||||||
# default programs
|
[ -r "$HOME/.config/profile" ] && . $HOME/.config/profile
|
||||||
export EDITOR='vim' # TODO: update to nvim once configured
|
|
||||||
|
|
||||||
# env vars used for my organization structure
|
|
||||||
export DIR_HOME_BOX="$HOME/dbox"
|
|
||||||
export DIR_DEV="$HOME/dev"
|
|
||||||
|
|
||||||
# util dirs; do not change without checking impact on xdg base dirs
|
|
||||||
export DIR_LOCAL="$HOME/.local"
|
|
||||||
export DIR_BIN="$DIR_LOCAL/bin"
|
|
||||||
export DIR_BUILD="$DIR_LOCAL/build"
|
|
||||||
export DIR_SCRIPTS="$DIR_LOCAL/scripts"
|
|
||||||
export DIR_TMP="$DIR_LOCAL/tmp"
|
|
||||||
|
|
||||||
# xdg base directory vars
|
|
||||||
export XDG_CONFIG_HOME="$HOME/.config"
|
|
||||||
export XDG_CACHE_HOME="$HOME/.cache"
|
|
||||||
export XDG_DATA_HOME="$DIR_LOCAL/share"
|
|
||||||
export XDG_STATE_HOME="$DIR_LOCAL/state"
|
|
||||||
export XDG_DATA_DIRS="/usr/local/share:/usr/share"
|
|
||||||
#export XDG_CONFIG_DIRS="/etc/xdg" # TODO: does this work on macos?
|
|
||||||
|
|
||||||
# zsh
|
|
||||||
export ZDOTDIR="$XDG_CONFIG_HOME/zsh" # may already be set, set anyway
|
|
||||||
|
|
||||||
# git
|
|
||||||
export GIT_EDITOR="$EDITOR"
|
|
||||||
|
|
||||||
# clean-up of home dir
|
|
||||||
export __CF_USER_TEXT_ENCODING="0x0:0x0"
|
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user