Compare commits

...

20 Commits

Author SHA1 Message Date
f1700e1d3d Rework profile/env for shells 2025-11-14 20:00:31 -06:00
52610e056a Ignore brave browser in theme-set for now
I dug at this for a while and it never worked well. There might be some
way to do this with what currently exists, but it isn't obvious if so
and I don't think it is worth it. I think I may prefer to just set brave
to dark mode and keep the frame minimal. Also, my plan is to switch to
using qutebrowser as my primary browser anyway.
2025-11-14 20:00:31 -06:00
97519acea1 Import omarcy-mars-theme and local files, reformat & rename other files 2025-11-14 19:59:44 -06:00
5c9820d069 Add hyprland.conf file 2025-11-14 11:51:32 -06:00
bb97234f1b Adjust install, file-copy, and theme logic after first run on arch linux 2025-11-14 00:29:18 -06:00
91cc2cf14a Add logic to theme-set for brave browser, macos not working so far 2025-11-13 02:11:45 -06:00
ac91c7974c Add writing mode and ui toggles for nvim, tmux theme updates, wallpapers 2025-11-12 15:35:31 -06:00
1377026a56 Make various small clean-up changes 2025-11-08 15:44:42 -06:00
066ef0e6fa Adjust/add install/build programs, add mpv config, clean up zsh config 2025-11-08 01:20:00 -06:00
b5e0d1b2e6 Rename ref to docs, move attribution from README to its own file 2025-11-07 16:48:14 -06:00
bb453be9e8 Small changes from here and there 2025-11-07 14:58:10 -06:00
f98658f02b Replace most install scripts with list in csv file 2025-11-07 14:57:43 -06:00
f4baf50cf1 Update aerospace keybinds, remove skhd, consolidate some theme scripts 2025-11-02 22:28:18 -06:00
392b24e18b Adjust colors in pina neovim theme 2025-10-30 21:59:00 -05:00
529eef185c Move to-do items from README into separate file 2025-10-30 15:04:24 -05:00
5c8dfa34ca Add support for extra themes, other small changes, drop btop 2025-10-30 15:01:17 -05:00
bd5cb81499 Add theme-set/switching logic, and minor nvim, tmux, obsidian changes 2025-10-30 00:32:16 -05:00
f8bb7bbf03 Various small changes from the last week or so 2025-10-24 22:35:52 -05:00
49be8f8393 Update tmux-session search-dir order, add btop config 2025-10-18 15:16:24 -05:00
f36cb204c4 Add various small changes from use over the last few days 2025-10-15 13:16:04 -05:00
131 changed files with 1724 additions and 731 deletions

3
.tmux-session-hydrate Normal file
View File

@@ -0,0 +1,3 @@
source "$XDG_CONFIG_HOME/tmux/.tmux-session-hydrate-default"
tmux rename-window -t procs nv-kickstart
tmux send-keys -t :nv-kickstart "cd $DIR_GIT_PROJECTS/other/kickstart.nvim" c-M

View File

@@ -1,33 +1,34 @@
# dotfiles, plus scripts for box setup
### prereqs
- zsh and git installed
## prereqs
- programs installed: git, sed, zsh
- git clone this repo
#### specific prereqs, linux distros
### specific prereqs, linux distros
- sudo access is configured for current user
#### specific prereqs, macos
### specific prereqs, macos
- install the package manager, [homebrew](https://brew.sh/)
- for aerospace window manager, have only 1 workspace/desktop
- manual settings, refer to [ref/macos-system-settings](ref/macos-system-settings.txt)
- manual settings, refer to [docs/macos-system-settings](docs/macos-system-settings.md)
## script run
### script run
- to do the full setup, from git root dir, run: `./box_setup.sh`
- to copy dotfiles only, from git root dir, run: `./copy_dotfiles.sh`
### after script run
- complete manual actions specified in [ref/post-run](ref/post-run.md)
## after script run
------------------------------------------------------------------------------------------
- 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
- choose window manager for linux, then configure
- config for: terminal (ghostty); shell; mpd, mpc, ncmpcpp; mpv
- decide on docker? or alternatives like podman? any license concerns?
- switch installation approach, use csv file with programs to install, install types,
any extra flags/opts, comments
- regarding the system-types idea i'd started to build in already, maybe have a
column for filtering in the csv file, or just have multiple csv files corresponding
to a base/core install, a music-studio install, a employer/work machine, etc.
- add command in tmux to perform cd to a given dir in all windows of the current session

View File

@@ -7,6 +7,8 @@
exit 0
}
echo "---- settings vars for system type -----"
# determine OS and, if linux, distro
[[ "$OSTYPE" = *"darwin"* ]] && setup_os="macos" || {
[[ "$OSTYPE" = *"linux"* ]] && setup_os="linux" && {
@@ -26,7 +28,7 @@
[[ "$setup_os" = "linux" ]] && {
case $setup_distro in
(arch | artix)
install_cmd="sudo pacman -S"
install_cmd="sudo pacman -S --noconfirm"
update_pkg_manager_and_defs_cmd='' # don't; update system instead?
update_pkgs_cmd='sudo pacman -Syu'
;;
@@ -47,12 +49,13 @@ export BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD="$update_pkg_manager_and_defs_c
export BOX_SETUP_UPDATE_PKGS_CMD="$update_pkgs_cmd"
# make dirs and copy configs/dotfiles
source ./src_files/.config/zsh/.zshenv
. ./src_files/shell/profile
./make_dirs.sh
./copy_dotfiles.sh $1
# install programs
source $ZDOTDIR/.zshenv
source $ZDOTDIR/.zshrc
. $ZDOTDIR/.zshrc
./install_programs.sh $1
echo "setting the default theme: $DEFAULT_THEME_NAME"
$DIR_SCRIPTS/theme-set $DEFAULT_THEME_NAME

View File

@@ -7,7 +7,7 @@ copy_file() {
local to=$2
local filename=$(basename $from)
[[ -e $to/$filename ]] && rm $to/$filename
echo_and_execute cp -p $from $to/$filename
echo_and_execute cp -RPp $from $to/$filename
}
copy_dir() {
@@ -17,7 +17,7 @@ copy_dir() {
local directories=(`find . -mindepth 1 -maxdepth 1 -type d`)
for dir in $directories; do
[[ -d $to/$dir ]] && rm -rf $to/$dir
echo_and_execute cp -rp $dir $to/$dir
echo_and_execute cp -RPp $dir $to/$dir
done
local files=(`find . -mindepth 1 -maxdepth 1 -type f`)
for file in $files; do
@@ -26,30 +26,41 @@ copy_dir() {
popd > /dev/null
}
link_dir() {
local src_dir=$1
local link_dir=$2
[[ -h "$link_dir" ]] && rm $link_dir
[[ -d "$link_dir" ]] && rm -rf $link_dir
echo_and_execute ln -s $src_dir $link_dir
sym_link() {
[[ ! -e "$1" ]] && echo "skipping link, target does not exist: $1" && return
[[ -h "$2" ]] && rm $2
[[ -f "$2" || -d "$2" ]] && rm -rf $2
echo_and_execute ln -s $1 $2
}
echo "---- copying dotfiles ------------------------------------------------"
echo "---- copying dotfiles ------------------"
. ./src_files/shell/profile
copy_file src_files/.config/zsh/.zshenv $HOME # duplicate, copy anyway, ensures $ZDOTDIR
# copy over env/profile files used by shell(s)
copy_file src_files/shell/profile $XDG_CONFIG_HOME
copy_file src_files/shell/.profile $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
[[ "$OSTYPE" = *"darwin"* ]] && copy_dir src_files/bin_overrides_macos $DIR_BIN
copy_dir src_files/.local/scripts $DIR_SCRIPTS
# macOS overrides as needed
[[ "$OSTYPE" = *"darwin"* ]] && copy_dir src_files/bin_overrides_macos $DIR_BIN
# obsidian uses a per-vault config model, so copy to all target vaults/dirs
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
# [[ $1 = "studio-music" ]] {
# [[ "$OSTYPE" = *"darwin"* ]] &&
# link_dir "$XDG_CONFIG_HOME/REAPER" "$HOME/Library/Application Support/REAPER" # TODO: get reaper config set up
# sym_link "$XDG_CONFIG_HOME/REAPER" "$HOME/Library/Application Support/REAPER"
# }
# set up themes and theme-switcher
./theme_config.sh

43
docs/attribution.md Normal file
View File

@@ -0,0 +1,43 @@
# attribution
## Original pattern/approach and some core config logic
The original pattern and approach for this project, the original program-installation
and copy-configs-and-files scripts/logic, the "tmux sessionizer" (tmux session init
logic), my initial neovim and tmux configs, and my general workflow/workspace strategy,
were derived from several of ThePrimeagen's (aka Michael Paulson) projects and videos,
including a FrontEnd Masters course which he taught (each are listed below). I was
unable to 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).
## Some themes and theme-swtiching/setting logic
The theme configuration files in this repository under
[src_files/imports/themes-omarchy-core](../src_files/imports/themes-omarchy-core)
are copied from, and much of the "theme-switching" or "theme-setting" logic and scripts
are derived 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/ecosystem. 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).

View 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
View 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:
- `chsh -l` to see options; if target shell isn't listed, then 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

11
docs/todo.md Normal file
View File

@@ -0,0 +1,11 @@
# todo items
- config for shell (using zsh for now, but considering oksh)
- config for calcurse
- config for mpd, and client(s), (mpd clients to consider: mpc, ncmpcpp, ncmpc, inori)
- hyprland config and install on linux
- web browsers config and install
- get find, xargs, awk (use nawk) as unified as i can across system types
- pick rss reader; newsboat? others? option with inbox and separate queues?
- decide if i even want a filemanager; if yes, pick one and configure

View File

@@ -4,20 +4,20 @@
idea from the ThePrimeagen: designated workspace/label/desktop per app/purpose
### current layout/plan
### current layout
| workspace number | wm layout/mode |
|--------------------------------------------------------------|------------------------|
| 1. notes (stack: nvim, obsidian) | stack |
| 2. music makeing - misc | stack |
| 3. music making - daw | floating (workaround) |
| 4. drawing (currently: gimp) | stack |
| 5. music/audio listening | stack |
| 6. comms (stack: emails, chats, av/calls) | stack |
| 7. web browser | stack |
| 8. terminal (primary; one-offs & tui apps can be anywhere) | stack |
| 9. programming - misc (whatever is not in terminal) | stack |
| 0. general - misc (catch-all) | stack |
| key | app/focus |
|-----|-----------|
| 1. | notes (nvim, obsidian) |
| 2. | music makeing - misc |
| 3. | music making - daw |
| 4. | drawing (gimp) |
| 5. | music/audio listening |
| 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) |
### ideas/guidelines:
- use this consistently accross all machines

View File

@@ -1,34 +1,59 @@
#!/bin/zsh
find_scripts_in_dir() {
echo $(find $1 -maxdepth 1 -mindepth 1 -type f | sort)
}
install_scripts_from_list() {
for script in $@; do
if [[ -x $script ]]; then
echo "executing: $script"
./$script
fi
apply_overrides() {
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"
}
system_types_list="base"
scripts_from_dir=($(find_scripts_in_dir "./installs_and_builds"))
[[ $1 = "personal" ]] && {
system_types_list+=", personal"
scripts_from_dir+=($(find_scripts_in_dir "./installs_and_builds/personal"))
}
[[ $1 = "studio-music" ]] && {
system_types_list+=", studio-music"
scripts_from_dir+=($(find_scripts_in_dir "./installs_and_builds/studio_music"))
}
[[ $1 = "work-placeholder" ]] && {
system_types_list+=", work-placeholder"
scripts_from_dir+=($(find_scripts_in_dir "./installs_and_builds/work_placeholder"))
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
}
echo "---- installing programs ---------------------------------------------"
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"
install_scripts_from_list "${scripts_from_dir[@]}"
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

View 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

View 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'

View File

@@ -0,0 +1,36 @@
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,,,,
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'; alpine: kind='build_custom'; 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'; alpine: name='pandoc-cli';,work: name='',
1 name kind os_overrides distro_overrides system_type_overrides notes
2 gcc package_manager macos: name=''
3 clang package_manager macos: name=''
4 musl package_manager macos: name=''
5 coreutils package_manager linux: name=''
6 findutils package_manager linux: name=''
7 make package_manager
8 cmake package_manager
9 mpv package_manager
10 kitty package_manager macos: name='--cask kitty'
11 zsh package_manager
12 ksh build_custom
13 tmux package_manager
14 neovim package_manager
15 mutt package_manager
16 podman package_manager
17 curl package_manager
18 grep package_manager
19 ripgrep package_manager
20 sed package_manager macos: name=''
21 fzf package_manager
22 jq package_manager
23 parallel package_manager
24 gettext package_manager
25 htop package_manager
26 ffmpeg package_manager work: name=''
27 mpd package_manager
28 ncmpcpp package_manager
29 git package_manager
30 calcurse package_manager
31 zathura package_manager macos: name=''
32 tenacity package_manager macos: name='--cask audacity' work: name='' tenacity not available via homebrew; use audacity in macos
33 bitwig-studio package_manager macos: name='--cask bitwig-studio' artix: kind='aur'; arch: kind='aur'; alpine: kind='build_custom'; debian: kind='build_custom'; work: name=''
34 gimp package_manager macos: name='--cask gimp'
35 --cask nikitabobko/tap/aerospace package_manager linux: name=''
36 pandoc package_manager arch: name='pandoc-cli'; artix: name='pandoc-bin'; alpine: name='pandoc-cli'; work: name=''

View File

@@ -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}

View File

@@ -1,3 +0,0 @@
#!/bin/zsh
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv_placeholder

View File

@@ -1,27 +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 \
grep \
ripgrep
utils_package_name_pandoc="pandoc"
case $BOX_SETUP_DISTRO in
(arch | alpine)
utils_package_name_pandoc="pandoc-cli"
;;
(artix)
utils_package_name_pandoc="pandoc-bin"
;;
esac
${=BOX_SETUP_INSTALL_COMMAND} $utils_package_name_pandoc
[[ "$BOX_SETUP_OS" = "macos" ]] &&
${=BOX_SETUP_INSTALL_COMMAND} coreutils findutils

View File

@@ -1,3 +0,0 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} zsh

View File

@@ -1,6 +0,0 @@
#!/bin/zsh
install_option_prefix=''
[[ "$BOX_SETUP_OS" = "macos" ]] && install_option_prefix='--cask'
# NOTE: ghostty not currently in debian repos, maybe build from source
${=BOX_SETUP_INSTALL_COMMAND} "$install_option_prefix" ghostty

View File

@@ -1,3 +0,0 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} tmux

View File

@@ -1,18 +0,0 @@
#!/bin/zsh
linux_wm_and_utils() {
# TODO: pick wm for linux; options: dwm, i3, others?
echo "linux_wm_and_utils not yet implemented"
}
macos_wm_and_utils() {
brew install koekeishiya/formulae/skhd
skhd --start-service
sleep 14 # time to give permission in accessibility settings
skhd --restart-service
# NOTE: currently, aerospace seems to need system restart to take effect
brew install --cask nikitabobko/tap/aerospace
}
[[ "$BOX_SETUP_OS" = "macos" ]] && macos_wm_and_utils || linux_wm_and_utils

View File

@@ -1,3 +0,0 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} neovim

View File

@@ -1,3 +0,0 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} mutt

View File

@@ -1,3 +0,0 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} khal

View File

@@ -1,10 +0,0 @@
#!/bin/zsh
# TODO: get browser config and install set up
# current idea: qutebrowser for general, tor for sensitive, brave as a backup option
# install_option_prefix=''
# [[ "$BOX_SETUP_OS" = "macos" ]] && install_option_prefix='--cask'
# firefox_package_name='firefox'
# [[ "$BOX_SETUP_DISTRO" = "debian" ]] && firefox_package_name='firefox-esr'
# ${=BOX_SETUP_INSTALL_COMMAND} "$install_option_prefix" "$firefox_package_name"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# TODO: pick rss reader; newsboat? others? option with inbox and separate queues?
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder

View File

@@ -1,9 +0,0 @@
#!/bin/zsh
# local music
${=BOX_SETUP_INSTALL_COMMAND} mpd mpc ncmpcpp
# possible mpd clients to consider: ncmpc, inori
# spotify
# TODO: decide if i want to use the package-manager install below, or build from source
# ${=BOX_SETUP_INSTALL_COMMAND} ncspot

View File

@@ -1,3 +0,0 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} mpv

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
[[ "$BOX_SETUP_OS" = "macos" ]] && exit 0 # TODO: maybe find an option for macos
${=BOX_SETUP_INSTALL_COMMAND} nsxiv

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
[[ "$BOX_SETUP_OS" = "macos" ]] && exit 0 # TODO: maybe find an option for macos
${=BOX_SETUP_INSTALL_COMMAND} zathura

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# TODO: do i even want a filemanager? if yes, pick one; consider: lf, ranger, others?
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder

View File

@@ -1,6 +0,0 @@
#!/bin/zsh
# only audio editor(s) in this file; daws are handled separately
install_option_prefix=''
[[ "$BOX_SETUP_OS" = "macos" ]] && install_option_prefix='--cask'
${=BOX_SETUP_INSTALL_COMMAND} "$install_option_prefix" audacity

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# TODO: set this up; likely using ffmpeg (work on macos?), maybe others
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder

View File

@@ -1,7 +0,0 @@
#!/bin/zsh
install_option_prefix=''
[[ "$BOX_SETUP_OS" = "macos" ]] && install_option_prefix='--cask'
${=BOX_SETUP_INSTALL_COMMAND} "$install_option_prefix" gimp
# ${=BOX_SETUP_INSTALL_COMMAND} imagemagick # TODO: consider this program too

View File

@@ -1,3 +0,0 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} git

View File

@@ -1,13 +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
[[ "$BOX_SETUP_DISTRO" = "debian" ]] && setup_docker_on_debian || {
${=BOX_SETUP_INSTALL_COMMAND} docker
}

View File

@@ -1,13 +0,0 @@
#!/bin/zsh
[[ "$BOX_SETUP_OS" != "macos" ]] && {
${=BOX_SETUP_INSTALL_COMMAND} gcc g++ clang clang++
}
# TODO: review and decide if the things below are needed
# install_lua_package="lua5.1"
#[[ "$BOX_SETUP_OS" = "macos" ]] && install_lua_package="lua@5.1"
#${=BOX_SETUP_INSTALL_COMMAND} "$install_lua_package" liblua5.1-0-dev
# TODO: do i want to install luarocks? lazy.nvim plugin manager currently expects it
#luarocks install luacheck

View File

@@ -1,12 +1,12 @@
#!/bin/zsh
source ./src_files/.config/zsh/.zshenv # ensure env vars set for use below
echo "---- making system dirs ----------------"
. ./src_files/shell/profile # ensure env vars set for use below
# 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_TMP" ]] && mkdir -p "$DIR_TMP"
[[ ! -d "$DIR_USER_OPT" ]] && mkdir -p "$DIR_USER_OPT"
[[ ! -d "$DIR_USER_LIB" ]] && mkdir -p "$DIR_USER_LIB"
@@ -23,6 +23,8 @@ source ./src_files/.config/zsh/.zshenv # ensure env vars set for use below
[[ ! -d "$DIR_DEV" ]] && mkdir -p $DIR_DEV
[[ ! -d "$DIR_GIT_PROJECTS" ]] && mkdir -p $DIR_GIT_PROJECTS
[[ ! -d "$DIR_GIT_PROJECTS/me" ]] && mkdir -p $DIR_DEV/git/me
[[ ! -d "$DIR_GIT_PROJECTS/forks" ]] && mkdir -p $DIR_DEV/git/forks
[[ ! -d "$DIR_GIT_PROJECTS/learning" ]] && mkdir -p $DIR_DEV/git/learning
[[ ! -d "$DIR_GIT_PROJECTS/other" ]] && mkdir -p $DIR_DEV/git/other
# directories for music/audio production

View File

@@ -1,14 +0,0 @@
// 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/mission-control:
- `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
- in general, just go through most pages/options and set them as desired

View File

@@ -1,3 +0,0 @@
# Manual steps needed after dotfile copy and/or installs
currently none, wooooo

View File

@@ -1,133 +1,75 @@
# options commands : https://nikitabobko.github.io/AeroSpace/commands
after-startup-command = []
start-at-login = true # start aerospace at login
# ref: https://nikitabobko.github.io/AeroSpace/commands
# ref: https://nikitabobko.github.io/AeroSpace/guide
after-startup-command = []
start-at-login = true
# ref: https://nikitabobko.github.io/AeroSpace/guide#normalization
enable-normalization-flatten-containers = true
enable-normalization-opposite-orientation-for-nested-containers = true
accordion-padding = 0 # ref: https://nikitabobko.github.io/AeroSpace/guide#layouts
default-root-container-layout = 'accordion' # tiles|accordion
default-root-container-orientation = 'vertical' # horizontal|vertical|auto
# refs: https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
# https://nikitabobko.github.io/AeroSpace/commands#move-mouse
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
# ref: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app
automatically-unhide-macos-hidden-apps = true
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
[key-mapping]
preset = 'qwerty' # qwerty|dvorak|colemak
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
# ref: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
# gaps between windows (inner-*) and between monitor edges (outer-*).
[gaps]
inner.horizontal = 0
inner.horizontal = 0 # inner* - between windows and other windows
inner.vertical = 0
outer.left = 0
outer.left = 0 # outer* - between windows and monitor edges
outer.bottom = 0
outer.top = 0
outer.right = 0
# 'main' binding mode; ref: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
[mode.main.binding] # 'main' binding mode must be always presented
# All possible keys:
# - Letters. a, b, c, ..., z
# - Numbers. 0, 1, 2, ..., 9
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
# - F-keys. f1, f2, ..., f20
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon,
# backtick, leftSquareBracket, rightSquareBracket, space, enter, esc,
# backspace, tab, pageUp, pageDown, home, end, forwardDelete,
# sectionSign (ISO keyboards only, european keyboards only)
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
# keypadMinus, keypadMultiply, keypadPlus
# - Arrows. left, down, up, right
[mode.main.binding]
cmd-comma = 'layout v_accordion'
cmd-period = 'layout h_tiles'
cmd-slash = 'layout horizontal vertical'
# All possible modifiers: cmd, alt, ctrl, shift
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
# You can uncomment the following lines to open up terminal with alt + enter shortcut
# (like in i3)
# alt-enter = '''exec-and-forget osascript -e '
# tell application "Terminal"
# do script
# activate
# end tell'
# '''
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
alt-comma = 'layout v_accordion'
alt-period = 'layout h_tiles'
alt-slash = 'layout horizontal vertical'
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
# new windows are added to the stack "below" the current, so swap up and down
alt-j = 'focus up'
alt-k = 'focus down'
# bindings: alt-l -> ctrl-tab, alt-h -> ctrl-shift-tab
# alt-l = "exec-and-forget osascript -e 'tell application \"System Events\" to key code 48 using control down'"
# alt-h = "exec-and-forget osascript -e 'tell application \"System Events\" to key code 48 using {control down, shift down}'"
# See: https://nikitabobko.github.io/AeroSpace/commands#move
# new windows are added to the stack "below" the current, so swap up and down
alt-shift-j = 'move up'
alt-shift-k = 'move down'
alt-shift-h = 'move left'
alt-shift-l = 'move right'
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
alt-minus = 'resize smart -50'
alt-equal = 'resize smart +50'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
alt-1 = 'workspace 1'
alt-2 = 'workspace 2'
alt-3 = 'workspace 3'
alt-4 = 'workspace 4'
alt-5 = 'workspace 5'
alt-6 = 'workspace 6'
alt-7 = 'workspace 7'
alt-8 = 'workspace 8'
alt-9 = 'workspace 9'
alt-0 = 'workspace 0'
# 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'
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
alt-shift-1 = 'move-node-to-workspace 1'
alt-shift-2 = 'move-node-to-workspace 2'
alt-shift-3 = 'move-node-to-workspace 3'
alt-shift-4 = 'move-node-to-workspace 4'
alt-shift-5 = 'move-node-to-workspace 5'
alt-shift-6 = 'move-node-to-workspace 6'
alt-shift-7 = 'move-node-to-workspace 7'
alt-shift-8 = 'move-node-to-workspace 8'
alt-shift-9 = 'move-node-to-workspace 9'
alt-shift-0 = 'move-node-to-workspace 0'
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'
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
alt-shift-semicolon = 'mode service'
cmd-shift-semicolon = 'mode service'
# 'service' binding mode declaration.
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
[mode.service.binding]
esc = ['reload-config', 'mode main']
backspace = ['close-all-windows-but-current', 'mode main']
r = ['flatten-workspace-tree', 'mode main'] # reset layout
r = ['reload-config', 'flatten-workspace-tree', 'mode main'] # reset layout
f = ['flatten-workspace-tree', 'layout floating', 'mode main']
s = ['flatten-workspace-tree', 'layout v_accordion', 'mode main']
g = ['flatten-workspace-tree', 'layout h_tiles', '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']
alt-shift-h = ['join-with left', 'mode main']
alt-shift-j = ['join-with down', 'mode main']
alt-shift-k = ['join-with up', 'mode main']
alt-shift-l = ['join-with right', 'mode main']
down = 'volume down'
up = 'volume up'
shift-down = ['volume set 0', 'mode main']

View File

@@ -1,8 +1,17 @@
# font stuff
font-style = Regular
font-feature = -calt, -liga, -dlig
# window stuff
macos-titlebar-proxy-icon = hidden
window-decoration = none
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"
# theme opts: tokyonight_night_manual, bamboo
theme = tokyonight_night_manual

View File

@@ -1,25 +0,0 @@
# primary
background = #111c18
foreground = #C1C497
cursor-color = #D7C995
cursor-text = #000000
# normal colors
palette = 0=#23372B
palette = 1=#FF5345
palette = 2=#549e6a
palette = 3=#459451
palette = 4=#509475
palette = 5=#D2689C
palette = 6=#2DD5B7
palette = 7=#F6F5DD
# bright colors
palette = 8=#53685B
palette = 9=#db9f9c
palette = 10=#143614
palette = 11=#E5C736
palette = 12=#ACD4CF
palette = 13=#75bbb3
palette = 14=#8CD3CB
palette = 15=#9eebb3

View File

@@ -47,6 +47,48 @@
(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

View File

@@ -1,3 +1,4 @@
(file-version 1)
(action "windows-hide-docks" "<Shift><Control>d")
(action "view-show-rulers" "<Shift><Control>r")
(action "view-zoom-fit-in" "<Shift><Control>f")
(action "windows-hide-docks" "<Shift><Control>d")

View 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 LeftCPUs4 Blank MemorySwap MemorySwap Blank NetworkIO NetworkIO
column_meter_modes_0=1 3 2 1 3 2 2 3
column_meters_1=RightCPUs2 RightCPUs4 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

View 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).*$

View 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

View File

@@ -0,0 +1,4 @@
h seek -5
l seek 5
H seek -30
L seek 30

View File

@@ -0,0 +1,3 @@
screenshot-format=png
screenshot-dir="~/dbox/inbox"
screenshot-template="%F-%p-%n"

View File

@@ -4,10 +4,13 @@ local csgAutocmd = vim.api.nvim_create_autocmd
require("settings")
require("plugin_manager")
require("key_mappings")
require("colorscheme_settings")
require("util_functions")
csgAutocmd({"BufWritePre"}, {
group = csGroup,
pattern = "*",
command = [[%s/\s\+$//e]],
})
ThemeUpdate()

View File

@@ -1,17 +0,0 @@
local defaultColorScheme = "tokyodark"
function SetColorSchemeWrapper(scheme)
scheme = scheme or defaultColorScheme
vim.cmd.colorscheme(scheme)
end
SetColorSchemeWrapper(defaultColorScheme)
--
-- SetColorSchemeWrapper("tokyodark")
-- SetColorSchemeWrapper("tokyonight-night")
-- SetColorSchemeWrapper("bamboo-vulgaris")
-- SetColorSchemeWrapper("rose-pine-main")
-- SetColorSchemeWrapper("gruvbox")
-- SetColorSchemeWrapper("slate")
-- SetColorSchemeWrapper("sorbet")

View File

@@ -7,23 +7,23 @@ local kmgAutocmd = vim.api.nvim_create_autocmd
-- explore the directory of the current file (using netrw)
vim.keymap.set("n", "<leader>n", vim.cmd.Ex)
-- move selected lines up or down
-- 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")
-- vertically center cursor with half-page jumps
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
-- reduce effective distance of half-page jumps and vertically-pad the cursor
vim.keymap.set("n", "<C-d>", "<C-d>4<C-y>M")
vim.keymap.set("n", "<C-u>", "<C-u>4<C-e>M")
-- 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", "ma=ap'a")
vim.keymap.set("n", "=ap", "mF=ap'F")
-- shortcuts for deleting into the void register
vim.keymap.set({ "n", "v" }, "<leader>d", "\"_d")
vim.keymap.set({ "n", "v" }, "<leader>d", [["_d]])
vim.keymap.set("x", "<leader>P", [["_dP]]) -- replace selected text, keep main register
-- shortcuts for using + register (system clipboard)
@@ -34,32 +34,51 @@ 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//g<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()
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)
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
})
------------------------------------------------------------------------------------------
-- quickfix TODO: learn about quickfix (:help quickfix), then maybe use these
-- visual/ui-related toggles and shortcuts
-- vim.keymap.set("n", "<C-k>", "<cmd>cnext<CR>zz")
-- vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz")
-- vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz")
-- vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz")
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
@@ -71,14 +90,17 @@ 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", dap.set_breakpoint, { desc = "debug: set 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").toggle()
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
@@ -99,18 +121,30 @@ kmgAutocmd('LspAttach', {
callback = function(e)
local opts = { buffer = e.buf }
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
vim.keymap.set("n", "K", function() vim.lsp.buf.hover() 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>vdv", function() vim.diagnostic.open_float() end, opts)
vim.keymap.set("n", "<leader>vdn", function() vim.diagnostic.goto_next() end, opts)
vim.keymap.set("n", "<leader>vdp", function() vim.diagnostic.goto_prev() end, opts)
vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts)
vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts)
vim.keymap.set("n", "<leader>vrl", function() vim.lsp.buf.references() end, opts)
vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() 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
@@ -121,10 +155,14 @@ local custom_grep_str_w_regex = function()
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>fg', tscBuiltin.git_files, { desc = 'tscope find git-tracked files' })
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")
@@ -133,28 +171,14 @@ 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)
vim.keymap.set("n", "<leader>hz", function() harpoon:list():select(1) end)
vim.keymap.set("n", "<leader>hx", function() harpoon:list():select(2) end)
vim.keymap.set("n", "<leader>hc", function() harpoon:list():select(3) end)
vim.keymap.set("n", "<leader>hv", function() harpoon:list():select(4) end)
vim.keymap.set("n", "<leader>hZ", function() harpoon:list():replace_at(1) end)
vim.keymap.set("n", "<leader>hX", function() harpoon:list():replace_at(2) end)
vim.keymap.set("n", "<leader>hC", function() harpoon:list():replace_at(3) end)
vim.keymap.set("n", "<leader>hV", function() harpoon:list():replace_at(4) 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)
-- treesitter and treesitter-context
vim.keymap.set("n", "<leader>tc", function() vim.cmd.TSContext({ "toggle" }) end)
-- fugitive (git integration)
vim.keymap.set("n", "<leader>gG", vim.cmd.Git)
vim.keymap.set("n", "<leader>gg", ":Git ") -- shortcut, arbitrary git commands
vim.keymap.set("n", "<leader>ga", function() vim.cmd.Git({ "add %"}) end)
vim.keymap.set("n", "<leader>gs", function() vim.cmd.Git({ "-p status" }) end)
vim.keymap.set("n", "<leader>gc", function() vim.cmd.Git({ "commit -a" }) end)
-- conform (formatter)
vim.keymap.set("n", "<leader>fmt", function()
require("conform").format({ bufnr = 0 })

View File

@@ -1,4 +1,3 @@
-- TODO: maybe switch this over from git-clone approach to neovim's builtin vim.pack.add
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({

View File

@@ -95,7 +95,7 @@ return {
end,
},
{
"jay-babu/mason-nvim-dap.nvim", -- TODO: here, or handle manually outside of neovim?
"jay-babu/mason-nvim-dap.nvim", -- TODO: install here? manually outside of neovim?
dependencies = {
"williamboman/mason.nvim",
"mfussenegger/nvim-dap",
@@ -119,10 +119,5 @@ return {
dependencies = {
"mfussenegger/nvim-dap",
},
-- TODO: disabled by default, keymapping to toggle
-- config = function()
-- local dap_virtual_text = require("nvim-dap-virtual-text")
-- dap_virtual_text.setup()
-- end,
},
}

View File

@@ -4,8 +4,12 @@ return {
branch = "harpoon2", -- https://github.com/ThePrimeagen/harpoon/tree/harpoon2
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local harpoon = require("harpoon")
harpoon:setup()
require("harpoon"):setup({
settings = {
save_on_toggle = true,
sync_on_ui_close = true,
},
})
end,
},
}

View File

@@ -1,4 +1,10 @@
return {
{
"L3MON4D3/LuaSnip",
version = "v2.*",
-- build = "make install_jsregexp"
},
{
"neovim/nvim-lspconfig",
dependencies = {
"stevearc/conform.nvim",
@@ -29,7 +35,7 @@ return {
ensure_installed = {
"clangd",
"lua_ls",
"ruby_lsp",
-- "ruby_lsp",
-- "gopls",
-- "tailwindcss",
},
@@ -120,4 +126,5 @@ return {
-- vim.lsp.enable('standardrb')
-- vim.lsp.enable('herb_ls') -- targets html + ruby (erb files)
end,
},
}

View File

@@ -1,10 +1,34 @@
return {
-- TODO: decide which of these i won't be using, then remove from this file
{
"tiagovla/tokyodark.nvim",
lazy = false,
priority = 1000,
opts = {
custom_highlights = function(highlights, _palette)
highlights.Comment['fg'] = "#8a9097"
highlights.LineNr['fg'] = "#8088A8"
return highlights
end,
},
},
{
'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",
-- lazy = false,
-- priority = 1000,
opts = {
terminal_colors = true, -- add neovim terminal colors
undercurl = true,
@@ -30,13 +54,12 @@ return {
},
},
{
-- even if not connected to a zz-this-box theme, keep this for nvim diffthis
"rose-pine/neovim",
name = "rose-pine",
},
{
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
opts = {
style = "night", -- "night", "storm", "moon", "day"
styles = {
@@ -49,25 +72,4 @@ return {
end,
},
},
{
"tiagovla/tokyodark.nvim",
lazy = false,
priority = 1000,
opts = {
custom_highlights = function(highlights, _palette)
highlights.Comment['fg'] = "#8a9097"
highlights.LineNr['fg'] = "#8088A8"
return highlights
end,
},
},
{
'ribru17/bamboo.nvim',
-- lazy = false,
-- priority = 1000,
config = function()
require('bamboo').setup { }
require('bamboo').load()
end,
},
}

View File

@@ -1,7 +1,6 @@
return {
{
"nvim-treesitter/nvim-treesitter",
branch = 'master',
lazy = false,
build = ":TSUpdate",
config = function()
@@ -14,12 +13,14 @@ return {
},
sync_install = false, -- install `ensure_installed` parsers synchronously
auto_install = true, -- install missing on BufEnter, requires tree-sitter CLI
ignore_install = {},
-- indent = { enable = true }, -- TODO: do i want this?
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", }) do
for i, v in ipairs({ "html", "csv", }) do
if lang == v then
print("treesitter disabled for this language")
return true
@@ -49,25 +50,7 @@ return {
-- branch = "master",
-- },
-- }
-- vim.treesitter.language.register("templ", "templ")
end
},
{
"nvim-treesitter/nvim-treesitter-context",
after = "nvim-treesitter",
opts = {
enable = false, -- can enable/disable via manual command
multiwindow = false,
max_lines = 0, -- lines the window should span; x <= 0 means no limit
min_window_height = 10, -- min window height to enable; x <= 0 means no limit
line_numbers = true,
multiline_threshold = 40, -- max lines to show for a single context
trim_scope = 'outer', -- 'inner', 'outer'; discard lines if max_lines exceeded
mode = 'cursor', -- 'cursor', 'topline'; line used to calculate context
separator = "-", -- 1 char, like '-'; only shown when >= 2 lines above
zindex = 20, -- z-index of the context window
on_attach = nil, -- (fun(buf: integer): boolean); return false to disable attaching
},
},
}

View File

@@ -1,3 +1,7 @@
return {
"mbbill/undotree",
config = function()
vim.g.undotree_SplitWidth = 41
vim.g.undotree_DiffpanelHeight = 14
end,
}

View File

@@ -1,25 +1,28 @@
vim.g.mapleader = " "
-- -- TODO: do i want these?
-- vim.opt.isfname:append("@-@")
-- vim.opt.guicursor = ""
vim.opt.hlsearch = true
vim.opt.incsearch = true
vim.opt.termguicolors = true
vim.opt.scrolloff = 2
vim.opt.colorcolumn = "90"
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.nu = 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.spell = false
vim.opt.spelllang = 'en_us'
vim.opt.errorbells = false
vim.opt.visualbell = false

View 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

View File

@@ -0,0 +1,119 @@
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.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.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

View File

@@ -13,6 +13,7 @@
"showUnsupportedFiles": true,
"attachmentFolderPath": "inbox",
"showInlineTitle": false,
"readableLineLength": false,
"readableLineLength": true,
"strictLineBreaks": true,
"livePreview": false
}

View File

@@ -1,5 +1,8 @@
{
"theme": "obsidian",
"accentColor": "#2f930e",
"baseFontSize": 18
"baseFontSize": 18,
"enabledCssSnippets": [],
"translucency": false,
"cssTheme": "Obsidian gruvbox"
}

View File

@@ -1,18 +1,20 @@
{
"markdown:toggle-preview": [
{
"modifiers": [
"Alt"
],
"key": "R"
}
{ "modifiers": [ "Ctrl", "Shift" ], "key": "E" }
],
"switcher:open": [
{
"modifiers": [
"Ctrl"
{ "modifiers": [ "Ctrl" ], "key": "F" }
],
"key": "F"
}
"app:toggle-left-sidebar": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "D" }
],
"app:toggle-right-sidebar": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "F" }
],
"editor:toggle-readable-line-length": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "R" }
],
"file-explorer:reveal-active-file": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "N" }
]
}

View File

@@ -1,10 +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 general use
alt - h : $(which skhd) -k "ctrl + shift - tab"
alt - l : $(which skhd) -k "ctrl - tab"

View File

@@ -0,0 +1 @@
/Users/david/.config/z-this-box/themes/.current-theme/tmux.conf

View File

@@ -1,17 +1,26 @@
# set -g default-terminal "tmux-255color" # TODO: messes up backspace render, fix
set -s escape-time 0
# replace default prefix and bind-key
unbind C-b
set-option -g prefix C-Space
bind-key C-Space send-prefix
set -g status-style 'bg=#111111 fg=#22cc00'
set -g base-index 0
# 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
set-window-option -g mode-keys vi
@@ -41,4 +50,5 @@ 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

View File

@@ -1,45 +1 @@
# default programs
export BROWSER='brave'
export EDITOR='nvim'
export TERMINAL='ghostty'
# env vars used for my organization structure
export DIR_HOME_BOX="$HOME/dbox"
export DIR_MUSIC="$DIR_HOME_BOX/media/music"
export DIR_DEV="$HOME/dev"
export DIR_GIT_PROJECTS="$DIR_DEV/git"
export DIR_NOTES="$DIR_HOME_BOX/notes"
# 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_SCRIPTS="$DIR_LOCAL/scripts"
export DIR_TMP="$DIR_LOCAL/tmp"
export DIR_USER_OPT="$HOME/opt"
export DIR_USER_LIB="$DIR_LOCAL/lib"
# 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"
# obsidian
export OBSIDIAN_WORKSPACES_TO_CONFIGURE=("$DIR_NOTES")
# reaper
DIR_REAPER_PORTABLE_SHARED="$DIR_USER_OPT/reaper-portable/shared"
DIR_REAPER_PORTABLE_LINUX="$DIR_USER_OPT/reaper-portable/linux"
DIR_REAPER_PORTABLE_MACOS="$DIR_USER_OPT/reaper-portable/macos"
# clean-up of home dir
export __CF_USER_TEXT_ENCODING="0x0:0x0"
[ -r "$HOME/.config/profile" ] && . $HOME/.config/profile

View File

@@ -12,27 +12,32 @@ alias cl='clear; '
alias cls='clear;ls'
# shortcuts for executables
alias nv='nvim'
alias n='nvim'
alias tms='tmux-session-init'
alias nv='nvim'
alias ths='theme-set'
alias thw='theme-update-wallpaper'
alias tmi='tmux-session-init'
# executable overrides
alias ls='ls -F'
alias ksh=oksh # NOTE: if i ever use openBSD, conditionally remove this alias
# focus/productivity/similar
alias cal="calcurse"
alias note="cd $DIR_NOTES/inbox; $EDITOR"
alias todo="cd $DIR_NOTES/rhythm; $EDITOR todo.md"
alias budget="open $DIR_HOME_BOX/finance/budget/.current"
# misc commands
alias cal='khal calendar'
alias pdt='ping -c 2 drinkingtea.net'
alias ppw='ping -c 2 pinewoods.xyz'
alias weather='curl wttr.in'
alias weather='curl "wttr.in/dfw?2&F"'
alias shrug='echo "¯\\_(ツ)_/¯"'
alias journal="cd $DIR_HOME_BOX; $EDITOR .current-journal"
alias ncspotkeys="$EDITOR $DIR_GIT_PROJECTS/other/ncspot/doc/users.md"
# source extensions and system-specific files
[[ -a "$ZDOTDIR/zsh-general-dev" ]] && source "$ZDOTDIR/zsh-general-dev"
[[ -a "$ZDOTDIR/zsh-life-system" ]] && source "$ZDOTDIR/zsh-life-system"
[[ -a "$ZDOTDIR/zsh-general-dev" ]] && . "$ZDOTDIR/zsh-general-dev"
# dev/lang setup
# programming and language setup
[[ -n $(command -v mise) ]] && eval "$(mise activate zsh)"
export DEVKITARM=/opt/devkitpro/devkitARM

View File

@@ -1,5 +1,5 @@
# set env vars, path updates, etc
[[ -a $HOME/.local-box-vars ]] && source $HOME/.local-box-vars
[[ -a $HOME/.local-box-vars ]] && . $HOME/.local-box-vars
# login shortcuts
alias assume="source assume"
@@ -22,3 +22,5 @@ alias lintjs='npx prettier --write'
alias prl='poetry run black'
alias prt='poetry run pytest'
# containerization
alias docker=podman

View File

@@ -1,7 +0,0 @@
# life system shortcuts
alias life-system="cd $DIR_HOME_BOX/life/system; clear; ls"
alias goals="clear; sed -n 2,7p $DIR_HOME_BOX/life/system/direction/goals/current-goals.txt"
alias note="cd $DIR_HOME_BOX/life/system/tasks/inbox; $EDITOR"
alias todo="cd $DIR_HOME_BOX/life/system/tasks; $EDITOR +5 todo.txt"
alias budget="open $DIR_HOME_BOX/life/finance/budget/.current"

View File

@@ -0,0 +1,3 @@
return {
colorscheme_name = 'gruvbox'
}

View File

@@ -0,0 +1,2 @@
set-window-option -g window-style bg=default # transparency
set-option -g status-style 'bg=default fg=#22cc00'

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

View File

@@ -0,0 +1,3 @@
return {
colorscheme_name = 'mars'
}

View File

@@ -0,0 +1,2 @@
set-window-option -g window-style bg=default # transparency
set-option -g status-style 'bg=default fg=#e07b5f'

View File

@@ -0,0 +1,3 @@
return {
colorscheme_name = 'bamboo'
}

View File

@@ -0,0 +1,2 @@
set-window-option -g window-style bg=default # transparency
set-option -g status-style 'bg=#549E6A fg=#000000'

View File

@@ -0,0 +1 @@
125,176,133

View File

@@ -0,0 +1,3 @@
return {
colorscheme_name = 'pina'
}

View File

@@ -0,0 +1,2 @@
set-window-option -g window-style bg=default # transparency
set-option -g status-style 'bg=default fg=#7db085'

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

View File

@@ -0,0 +1 @@
47,47,47

View File

@@ -0,0 +1,48 @@
# TODO: this is currently just a copy of tokyonight, switch over to tokyodark
## name: Tokyo Night
## license: MIT
## author: Folke Lemaitre
## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_night.conf
background #1a1b26
foreground #c0caf5
selection_background #283457
selection_foreground #c0caf5
url_color #73daca
cursor #c0caf5
cursor_text_color #1a1b26
# Tabs
active_tab_background #7aa2f7
active_tab_foreground #16161e
inactive_tab_background #292e42
inactive_tab_foreground #545c7e
#tab_bar_background #15161e
# Windows
active_border_color #7aa2f7
inactive_border_color #292e42
# normal
color0 #15161e
color1 #f7768e
color2 #9ece6a
color3 #e0af68
color4 #7aa2f7
color5 #bb9af7
color6 #7dcfff
color7 #a9b1d6
# bright
color8 #414868
color9 #f7768e
color10 #9ece6a
color11 #e0af68
color12 #7aa2f7
color13 #bb9af7
color14 #7dcfff
color15 #c0caf5
# extended colors
color16 #ff9e64
color17 #db4b4b

View File

@@ -0,0 +1,3 @@
return {
colorscheme_name = 'tokyodark'
}

View File

@@ -0,0 +1,2 @@
set-window-option -g window-style bg=default # transparency
set-option -g status-style 'bg=default fg=#22cc00'

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

View File

@@ -1,7 +1,7 @@
#!/bin/sh
# trying the "portable install" option; using this launch script to point to that
source "$XDG_CONFIG_HOME/zsh/.zshenv"
. $XDG_CONFIG_HOME/profile
reaper_portable_exec_linux="$DIR_REAPER_PORTABLE_LINUX/REAPER/reaper"
[[ ! -x "$reaper_portable_exec_linux" ]] && {

View File

@@ -0,0 +1,75 @@
#!/bin/zsh
# This script is modeled after Omarchy's omarchy-theme-set script and my theme-switching
# approach is modeled after Omarchy's theme-switching approach.
# (See: https://github.com/basecamp/omarchy)
# Omarchy is licensed under the MIT License. See the original LICENSE file for details at:
# https://github.com/basecamp/omarchy/blob/master/LICENSE
# Copyright (c) David Heinemeier Hansson
##########################################################################################
theme_update_terminal() {
case "$TERMINAL" in
("havoc" | "foot")
echo "TODO: theme update for havoc or foot not yet implemented"
;;
("kitty")
killall -SIGUSR1 kitty
;;
esac
}
theme_update_tmux() {
tmux source-file $DIR_THEME_SETTINGS/.current-theme/tmux.conf
}
theme_update_neovim() {
nvim_stdpath_run=$(dirname $(
nvim -l <(echo "vim.cmd.echo('stdpath(\"run\")')") > /dev/stdout 2>&1
))
find "$nvim_stdpath_run" -type s -name "nvim*" 2> /dev/null |
while IFS= read -r nvim_server; do
timeout 2s nvim --server "$nvim_server" \
--remote-expr "execute('lua ThemeUpdate()')" \
> /dev/null 2>&1
done
}
theme_update_browser() {
policy='BrowserThemeColor'
color_hex=$(
printf '#%02x%02x%02x' $(
cat $DIR_THEME_SETTINGS/.current-theme/brave.theme | tr ',' ' '
)
)
[[ "$OSTYPE" != *"darwin"* ]] && {
echo "{\"$policy\": \"$color_hex\"}" > "/etc/brave/policies/managed/color.json"
brave --refresh-platform-policy --no-startup-window > /dev/null
} || {
# TODO: fix or just remove this macos part; currently, property is set and seen
# by brave, but colors are applied either with a huge delay or not at all
# defaults write com.brave.Browser $policy -string "$color_hex"
}
}
[[ ! -z $1 ]] && raw_target="$1" ||
raw_target=$(
find $DIR_THEME_SETTINGS -mindepth 1 -maxdepth 1 -type d -exec basename -- {} \; |
fzf
)
target_theme="$DIR_THEME_SETTINGS/$(echo $raw_target | tr ' ' '-' | tr '[:upper:]' '[:lower:]')"
[[ ! -d "$target_theme" ]] && echo "theme not found: $target_theme" && exit 1
ln -snf "$target_theme" $DIR_THEME_SETTINGS/.current-theme
theme_update_terminal
theme_update_tmux
theme_update_neovim &
theme_update_browser
# theme_update_obsidian # TODO: decide if theming beyond transparency is worth it, if so, implement
# theme_update_reaper # TODO: implement
# theme_update_mutt # TODO: possible and actually desired?
theme-update-wallpaper "zz-default-for-theme" &

View File

@@ -0,0 +1,26 @@
#!/bin/zsh
set_wallpaper_linux() {
echo "TODO: theme_update_wallpaper_linux not yet implemented"
}
set_wallpaper_macos() {
# after back and forth with gpt and failing approaches, landing on this swift snippet
swift <(cat << NESTED_SWIFT_BLOCK
import AppKit
let url = URL(fileURLWithPath: "$1")
try NSWorkspace.shared.setDesktopImageURL(url, for: NSScreen.main!, options: [:])
NESTED_SWIFT_BLOCK
)
}
wallpaper_dir=$DIR_THEME_SETTINGS/.current-theme/wallpaper
image_paths=($(find $wallpaper_dir -type f | sort)) 2> /dev/null
[[ $1 = "zz-default-for-theme" ]] && target_wallpaper=${image_paths[@]:0:1} ||
target_wallpaper=$(printf '%s\n' ${image_paths[@]} | fzf)
[[ -z $target_wallpaper ]] && exit 0
[[ "$OSTYPE" = *"darwin"* ]] && set_wallpaper_macos $target_wallpaper ||
set_wallpaper_linux $target_wallpaper

View File

@@ -7,14 +7,14 @@ tmux_switch_to() {
tmux_hydrate() {
local tmux_hydrate_path="$XDG_CONFIG_HOME/tmux/.tmux-session-hydrate-default"
[[ -f $2/.tmux-session-hydrate ]] && tmux_hydrate_path="$2/.tmux-session-hydrate"
[[ -f $tmux_hydrate_path ]] && tmux send-keys -t $1 "source $tmux_hydrate_path" c-M
[[ -f $tmux_hydrate_path ]] && tmux send-keys -t $1 ". $tmux_hydrate_path" c-M
}
tmux_existing_sessions=$(tmux list-sessions 2> /dev/null || echo '')
tmux_search_dirs=(
$DIR_HOME_BOX
$DIR_DEV
$DIR_GIT_PROJECTS/*
$DIR_DEV
$DIR_HOME_BOX
)
tmux_target_name=''
tmux_target_path=''

View File

@@ -0,0 +1,3 @@
#!/bin/sh
/Applications/Brave\ Browser.app/Contents/MacOS/Brave\ Browser $@

View File

@@ -1,7 +1,7 @@
#!/bin/sh
# trying the "portable install" option; using this launch script to point to that
source "$XDG_CONFIG_HOME/zsh/.zshenv"
. $XDG_CONFIG_HOME/profile
reaper_portable_exec_macos="$DIR_REAPER_PORTABLE_MACOS/REAPER.app/Contents/MacOS/REAPER"
[[ ! -x "$reaper_portable_exec_macos" ]] && {

View File

@@ -0,0 +1,21 @@
Copyright (c) David Heinemeier Hansson
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

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