Compare commits

..

3 Commits

Author SHA1 Message Date
bde573e35b Rework profile/env for shells 2025-11-14 18:05:39 -06:00
c5b93865d0 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 14:52:24 -06:00
2ca301b3e2 Import in omarcy-mars-theme, reformat and rename a few other files 2025-11-14 14:03:55 -06:00
117 changed files with 540 additions and 1199 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,15 +1,4 @@
# dotfiles, plus installation and related scripts # dotfiles, plus scripts for box setup
This repo contains a collection of scripts and files related to:
- 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 ## prereqs
@@ -28,8 +17,8 @@ portions).
## script run ## script run
- to do the full setup, from the repo's root dir, run: `./box_setup.sh` - to do the full setup, from git root dir, run: `./box_setup.sh`
- to copy dotfiles only, from the repo's root dir, run: `./copy_dotfiles.sh` - to copy dotfiles only, from git root dir, run: `./copy_dotfiles.sh`
## after script run ## after script run

View File

@@ -2,37 +2,34 @@
[[ $1 = "--help" ]] && { [[ $1 = "--help" ]] && {
echo "\nusage: ./box_setup.sh [system-type]" echo "\nusage: ./box_setup.sh [system-type]"
echo "\nsystem-type options: music_studio, programming" echo "\nsystem-type options: personal, studio-music, work-placeholder"
echo "\nexamples:\n ./box_setup.sh\n ./box_setup.sh music_studio\n" echo "\nexamples:\n ./box_setup.sh\n ./box_setup.sh studio-music\n"
exit 0 exit 0
} }
echo "---- settings vars for system type -----" echo "---- settings vars for system type -----"
# determine OS and distro # determine OS and, if linux, distro
case "$OSTYPE" in [[ "$OSTYPE" = *"darwin"* ]] && setup_os="macos" || {
(*linux*) [[ "$OSTYPE" = *"linux"* ]] && setup_os="linux" && {
setup_os="linux"
[[ -f /etc/os-release ]] && . /etc/os-release [[ -f /etc/os-release ]] && . /etc/os-release
setup_distro=$(echo "${NAME%% *}" | tr '[:upper:]' '[:lower:]') setup_distro=$(echo "${NAME%% *}" | tr '[:upper:]' '[:lower:]')
;; [[ -z "$setup_distro" ]] && echo "OS: linux; distro not detected" && exit 1
(*darwin*) }
setup_os="macos" }
setup_distro="macos" # just repeat macos, but maybe there is some better value [[ -z "$setup_os" ]] && echo "OS not detected" && exit 1
;;
esac
# ensure OS and distro are set before proceeding
[[ -z "$setup_os" ]] && echo "setup OS not detected" && exit 1
[[ -z "$setup_distro" ]] && echo "setup distro not detected" && exit 1
# set package manager commands for installs # set package manager commands for installs
case "$setup_os" in [[ "$setup_os" = "macos" ]] && {
(linux) install_cmd="brew install"
update_pkg_manager_and_defs_cmd='brew update'
update_pkgs_cmd='brew upgrade'
} || {
[[ "$setup_os" = "linux" ]] && {
case $setup_distro in case $setup_distro in
(arch | artix) (arch | artix)
install_cmd="sudo pacman -S --noconfirm" install_cmd="sudo pacman -S --noconfirm"
update_pkg_manager_and_defs_cmd='' # don't; update system instead update_pkg_manager_and_defs_cmd='' # don't; update system instead?
update_pkgs_cmd='sudo pacman -Syu' update_pkgs_cmd='sudo pacman -Syu'
;; ;;
(debian) (debian)
@@ -41,13 +38,8 @@ case "$setup_os" in
update_pkgs_cmd='sudo apt upgrade' update_pkgs_cmd='sudo apt upgrade'
;; ;;
esac esac
;; }
(macos) }
install_cmd="brew install"
update_pkg_manager_and_defs_cmd='brew update'
update_pkgs_cmd='brew upgrade'
;;
esac
# export vars for scripts # export vars for scripts
export BOX_SETUP_OS="$setup_os" export BOX_SETUP_OS="$setup_os"
@@ -59,11 +51,11 @@ export BOX_SETUP_UPDATE_PKGS_CMD="$update_pkgs_cmd"
# make dirs and copy configs/dotfiles # make dirs and copy configs/dotfiles
. ./src_files/shell/profile . ./src_files/shell/profile
./make_dirs.sh ./make_dirs.sh
./copy_dotfiles.sh "--skip-theme-config" ./copy_dotfiles.sh $1
# install programs # install programs
. $ZDOTDIR/.zshrc . $ZDOTDIR/.zshrc
./install_programs.sh $1 ./install_programs.sh $1
# configure themes echo "setting the default theme: $DEFAULT_THEME_NAME"
./theme_config.sh $DIR_SCRIPTS/theme-set $DEFAULT_THEME_NAME

View File

@@ -1,53 +1,45 @@
#!/bin/sh #!/bin/zsh
echo_and_execute() { echo_and_execute() { echo "executing: $@" && "$@" }
echo "executing: $@" && "$@"
}
copy_file() { copy_file() {
from=$1 local from=$1
to=$2 local to=$2
filename=$(basename "$from") local filename=$(basename $from)
[ "$3" = "--sudo" ] && [[ -e $to/$filename ]] && rm $to/$filename
echo_and_execute sudo cp -RPp "$from" "$to/$filename" || echo_and_execute cp -RPp $from $to/$filename
{
[ -e "$to/$filename" ] && rm "$to/$filename"
echo_and_execute cp -RPp "$from" "$to/$filename"
}
} }
copy_dir() { copy_dir() {
from=$1 local from=$1
to=$2 local to=$2
prev_dir=$(pwd) pushd $from > /dev/null
cd "$from" || return 1 local directories=(`find . -mindepth 1 -maxdepth 1 -type d`)
find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do for dir in $directories; do
[ -d "$to/$dir" ] && rm -rf "$to/$dir" [[ -d $to/$dir ]] && rm -rf $to/$dir
echo_and_execute cp -RPp "$dir" "$to/$dir" echo_and_execute cp -RPp $dir $to/$dir
done done
find . -mindepth 1 -maxdepth 1 -type f | while read -r file; do local files=(`find . -mindepth 1 -maxdepth 1 -type f`)
copy_file "$file" "$to" for file in $files; do
copy_file $file $to
done done
cd "$prev_dir" || return 1 popd > /dev/null
} }
sym_link() { sym_link() {
! [ -e "$1" ] && echo "skipping link, target does not exist: $1" && return [[ ! -e "$1" ]] && echo "skipping link, target does not exist: $1" && return
[ -h "$2" ] && rm "$2" [[ -h "$2" ]] && rm $2
test -f "$2" -o -d "$2" && rm -rf "$2" [[ -f "$2" || -d "$2" ]] && rm -rf $2
echo_and_execute ln -s "$1" "$2" echo_and_execute ln -s $1 $2
} }
echo "---- copying dotfiles ------------------" echo "---- copying dotfiles ------------------"
. ./src_files/shell/profile . ./src_files/shell/profile
# copy over env/profile files used by shell(s) # 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/profile $XDG_CONFIG_HOME
copy_file src_files/shell/rc $XDG_CONFIG_HOME copy_file src_files/shell/.profile $HOME
copy_file src_files/.config/zsh/.zshenv $HOME copy_file src_files/.config/zsh/.zshenv $HOME
# TODO: move this into xdg type dir if possible
copy_file src_files/.config/X11/xinit/.xinitrc $HOME
# copy over configs, executables, and scripts # copy over configs, executables, and scripts
copy_dir src_files/.config $XDG_CONFIG_HOME copy_dir src_files/.config $XDG_CONFIG_HOME
@@ -55,30 +47,20 @@ copy_dir src_files/.local/bin $DIR_BIN
copy_dir src_files/.local/scripts $DIR_SCRIPTS copy_dir src_files/.local/scripts $DIR_SCRIPTS
# macOS overrides as needed # macOS overrides as needed
case "$OSTYPE" in *darwin*) copy_dir src_files/bin_overrides_macos $DIR_BIN;; esac [[ "$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 # obsidian uses a per-vault config model, so copy to all target vaults/dirs
IFS=","; for obs_dir in $OBSIDIAN_WORKSPACES_TO_CONFIGURE; do for obs_dir in "${OBSIDIAN_WORKSPACES_TO_CONFIGURE[@]}"; do
! [ -d "$obs_dir/.obsidian" ] && mkdir "$obs_dir/.obsidian" [[ ! -d "$obs_dir/.obsidian" ]] && mkdir "$obs_dir/.obsidian"
copy_dir "$XDG_CONFIG_HOME/obsidian" "$obs_dir/.obsidian" copy_dir $XDG_CONFIG_HOME/obsidian "$obs_dir/.obsidian"
done done
# TODO: get reaper config set up # TODO: get reaper config set up
# case "$OSTYPE" in # [[ $1 = "studio-music" ]] {
# (*darwin*) # [[ "$OSTYPE" = *"darwin"* ]] &&
# sym_link "$XDG_CONFIG_HOME/REAPER" "$HOME/Library/Application Support/REAPER" # sym_link "$XDG_CONFIG_HOME/REAPER" "$HOME/Library/Application Support/REAPER"
# ;; # }
# esac
# copy settings/configs to /etc locations
case "$OSTYPE" in
(*darwin*)
;;
(*)
copy_file src_files/etc/47-elogind.conf /etc/elogind/logind.conf.d --sudo
;;
esac
# set up themes and theme-switcher # set up themes and theme-switcher
! [ "$1" = "--skip-theme-config" ] && ./theme_config.sh ./theme_config.sh

View File

@@ -1,14 +1,14 @@
# Attribution # attribution
## Original pattern/approach and some core config logic ## Original pattern/approach and some core config logic
The original idea and approach for this project, including the original versions of my The original pattern and approach for this project, the original program-installation
program-installation script, the copy-configs-and-files script, the "tmux sessionizer" and copy-configs-and-files scripts/logic, the "tmux sessionizer" (tmux session init
(tmux session init logic), my initial neovim and tmux configs, and (though not code) logic), my initial neovim and tmux configs, and my general workflow/workspace strategy,
my general workflow/workspace strategy, were derived from several of ThePrimeagen's were derived from several of ThePrimeagen's (aka Michael Paulson) projects and videos,
(aka Michael Paulson's) projects and videos, including a FrontEnd Masters course which including a FrontEnd Masters course which he taught (each are listed below). I was
he taught (each are listed below). I could not locate any required licenses or copyrights unable to locate any required licenses or copyrights for the code contained within
for the code contained within these sources, but I wanted to give attribution nonetheless. these sources, but I wanted to give attribution nonetheless.
- [dev/setup/config repo](https://github.com/ThePrimeagen/dev) - [dev/setup/config repo](https://github.com/ThePrimeagen/dev)
- [neovim config](https://github.com/ThePrimeagen/init.lua) - [neovim config](https://github.com/ThePrimeagen/init.lua)
@@ -16,14 +16,19 @@ for the code contained within these sources, but I wanted to give attribution no
- [YouTube video - neovim config video](https://www.youtube.com/watch?v=w7i4amO_zaE) - [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/) - [FrontEnd Masters course - dev productivity v2](https://frontendmasters.com/courses/developer-productivity-v2/)
## Theme-swtiching/setting logic and some themes ## Idea of using a list of programs in a file for build/install
Much of the "theme-switching" or "theme-setting" logic and scripts are derived from The idea of using a file with a list of programs in it for building and/or
[Omarchy](https://github.com/basecamp/omarchy), and some theme configuration files installing programs was inspired by Luke Smith's
in this repository under [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) [src_files/imports/themes-omarchy-core](../src_files/imports/themes-omarchy-core)
are copied from [Omarchy](https://github.com/basecamp/omarchy), which is licensed are copied from, and much of the "theme-switching" or "theme-setting" logic and scripts
under the [MIT License](https://github.com/basecamp/omarchy/blob/master/LICENSE). 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 Copyright (c) David Heinemeier Hansson
@@ -31,8 +36,8 @@ Copyright (c) David Heinemeier Hansson
Additional theme configuration files in this repository under Additional theme configuration files in this repository under
[src_files/imports/themes-omarchy-extra](../src_files/imports/themes-omarchy-extra) [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. are copied or derived from projects of additional conrtibutors to the Omarchy
For information about authors/licenses/copyrights for each, refer to any LICENSE and/or community/ecosystem. For information about authors/licenses/copyrights for each, refer
ATTRIBUTION.md files in each theme's respective directory under 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). [src_files/imports/themes-omarchy-extra](../src_files/imports/themes-omarchy-extra).

View File

@@ -1,242 +0,0 @@
# Artix Linux - Install and System Config
**Attribution:**
Most or much of this was generated by or derived from Grok, or else from Artix docs, Arch docs/wiki, or else the docs for the particular programs or packages used. I'm not claiming any of this is mine, just putting it here in one file for future convenience/reference.
I used this approach in December of 2025 to install Artix Linux on a Framework 13in laptop from 2023 q4.
- OS and distro: Artix Linux
- init system: dinit
- partitioning, GUID Partition Table:
- unencrypted boot partition (size: 512M), UEFI
- LUKS-encrypted LVM:
- swap partition (size: amount of memory + 4G)
- root/default partition (size: remaining space)
For reference, doc page from Artix for installation:
https://wiki.artixlinux.org/Main/Installation
---
## install steps
- [ ] if not already done, download artix ISO (dinit version) and dd it onto a usb drive
- [ ] boot the live usb and select the install option (whatever it may look like)
- [ ] connect to the internet
```bash
connmanctl
//// within connmanctl
enable wifi
scan wifi
agent on
services
connect <wifi_XXXXXXXXXXXXXXXX_managed_psk>
quit
```
- [ ] verify connection using `ping`
- [ ] update live system keys/mirrors
```bash
pacman -Sy artix-keyring
```
- [ ] run lsblk and identify the storage drive on which to install
- note: when i ran this in 2025 dec on my framework laptop, it was `/dev/nvme0n1`
- [ ] partition the drive
```bash
cfdisk <target storage drive>
# use GPT (guid partition table)
# new partition, size 512M, type 'EFI System'
# new partition, size (remaining), type 'Linux LVM'
# write changes
# quit cfdisk
```
- [ ] set up LVM volumes
```bash
cryptsetup luksFormat --type luks2 /dev/<LVM partition>
cryptsetup open /dev/<LVM partition> artixlvm
pvcreate /dev/mapper/artixlvm
vgcreate artixvg /dev/mapper/artixlvm
lvcreate -L <size of memory + 4G, e.g. 36G> artixvg -n swap
lvcreate -l 100%FREE artixvg -n root
```
- [ ] set filesystems for partitions/volumes
```bash
mkfs.vfat -F32 /dev/<boot partition>
mkfs.ext4 /dev/artixvg/root
mkswap /dev/artixvg/swap
```
- [ ] mount the partitions/volumes
```bash
mount /dev/artixvg/root /mnt
mkdir /mnt/boot
mount /dev/<boot partition> /mnt/boot
swapon /dev/artixvg/swap
```
- [ ] install base system and needed packages
```bash
basestrap /mnt base base-devel linux \
linux-firmware \
dinit elogind-dinit \
lvm2 cryptsetup grub efibootmgr mkinitcpio \
connman connman-dinit wpa_supplicant \
git less neovim zsh
```
- [ ] generate fstab
```bash
fstabgen -U /mnt >> /mnt/etc/fstab
# verify (add noatime to ext4 line if desired)
vi /mnt/etc/fstab
```
- [ ] chroot into installed system
```bash
artix-chroot /mnt
```
- [ ] set timezone, hardware clock, locale
```bash
ln -sf /usr/share/zoneinfo/<path to target zone> /etc/localtime
hwclock --systohc
nvim /etc/locale.gen
# uncomment en_US.UTF-8 UTF-8; add others if desired
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
```
- [ ] set hostname and /etc/hosts
```bash
echo "<computer name>" > /etc/hostname
nvim /etc/hosts
# ensure /etc/hosts includes the following:
127.0.0.1 localhost
::1 localhost
127.0.1.1 <computer name>.localdomain <computer name>"
```
- [ ] mkinitcpio with hooks
```bash
nvim /etc/mkinitcpio.conf
# go to HOOKS and set it thus:
HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 resume filesystems fsck)
mkinitcpio -P
```
- [ ] grub config and install
```bash
blkid
# note the UUID of the LVM/LUKS partition
nvim /etc/default/grub
# ensure the following is set:
GRUB_CMDLINE_LINUX="cryptdevice=UUID=<UUID from blkid above>:artixlvm root=/dev/mapper/artixvg-root resume=/dev/mapper/artixvg-swap quiet rw"
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Artix
grub-mkconfig -o /boot/grub/grub.cfg
```
- [ ] set up connman for installed system
```bash
mkdir -p /etc/dinit.d/boot.d
ln -s ../connmand /etc/dinit.d/boot.d/connmand
```
- [ ] set root password, set up user
```bash
passwd
useradd -m -G wheel,audio,video,optical,storage <username>
passwd <username>
pacman -S sudo
EDITOR=nvim visudo
# uncomment the line in /etc/sudoers which looks something like the below:
echo "%wheel ALL=(ALL) ALL"
```
- [ ] close stuff out and reboot
```bash
exit
umount -R /mnt
swapoff -a
cryptsetup close cryptlvm # may not work, just ignore and reboot
reboot
```
---
## system config (post install)
_NOTE: don't put anything here which should be in my dotfiles-and-setup scripts instead_
- [ ] set up chrony (for syncing system time with ntp servers)
- _NOTE: edit defaults in `/etc/chrony/chrony.conf` if desired_
```bash
sudo pacman -S chrony chrony-dinit
# Fallback if dinitctl enable fails (symlink method)
sudo mkdir -p /etc/dinit.d/boot.d
sudo ln -s ../chronyd /etc/dinit.d/boot.d/chronyd
# alt: sudo dinitctl enable chronyd
/etc/dinit.d/chronyd start
# alt: sudo dinitctl start chronyd
```
---
## troubleshooting
if i need to try something again and reopen the LVM, the below should work:
```bash
cryptsetup open /dev/<target device> artixlvm
# enter existing password
vgchange -ay artixvg
# or, if only one VG exists:
vgchange -ay
```
if date/time get messed up (such as due to battery running out), fix with:
```bash
# can manually adjust to local time; grok said "date is UTC if hardware is set that way"
sudo date -s "2025-12-17 12:47:00"
# or, if chrony, ntp, or similar is set up, can trigger sync
chronyd -q
# can check after with `date` or `chronyc tracking`
sudo hwclock -w --utc
```

View File

@@ -1,18 +0,0 @@
# xlibre/x11 - adding xrandr modes
## 2026-01-16, artix linux, framework 13in laptop
### to add 1920x1280 resolution option:
```sh
dispmanage_modeline=$(cvt 1920 1280 60 | sed -n '2p' | sed -E "s/^Modeline //g")
dispmanage_mode_id=$(printf "%s" "$dispmanage_modeline" | sed -E "s/^([^ ]+)\s.*$/\1/g")
printf "%s" "$modeline" | xargs xrandr --newmode
printf "%s" "$mode_id" | xargs xrandr --addmode eDP
# NOTE: the lines above have been added to .xinitrc, just leaving here for reference
# then, add the $mode_id value to my display-manage script as the target mode:
DISPMANAGE_LAPTOP_MODE='"1920x1280_60.00"'
```

View File

@@ -5,8 +5,8 @@
- shell - shell
- check user's shell using `echo $SHELL` or otherwise - check user's shell using `echo $SHELL` or otherwise
- if not the desired shell: - if not the desired shell:
- `cat /etc/shells` (or `chsh -l` if supported) to see options - `chsh -l` to see options; if target shell isn't listed, then add it
- if target shell isn't listed, add it to `/etc/shells` to `/etc/shells`
- then change the shell with `chsh -s <path to target shell>` - then change the shell with `chsh -s <path to target shell>`
## macOS ## macOS
@@ -14,8 +14,4 @@
- aerospace - aerospace
- grant aerospace permission in accessibility settings - grant aerospace permission in accessibility settings
- likely need system reboot before aerospace works - likely need system reboot before aerospace works
- skhd
- run `skhd --start-service`
- grant skhd permission in accessibility settings
- run `skhd --restart-service`

View File

@@ -1,32 +1,11 @@
# TODO items # todo items
## pending to call setup work initially done - config for shell (using zsh for now, but considering oksh)
- config for calcurse
- finished dwm config and installation on linux
- add dmenu
- add st
- xresources working? use from/within theme-changing logic?
- finished artix/dinit setup
- remapped ctrl, alt, and super keys as needed
- adjusted keyrepeat speed, trackpad/mouse speed, etc
- did any normal/recommended stuff, refer to wiki
- include screen locking and sleep/hibernate
- figured out wiregaurd/vpn stuff
- finish xlibre setup, including installing any needed packages and doing config
- web browsers:
- primary, qutebrowser: config and install
- secondary, tor and either brave or librewolf: install only (no config)
## optional
- configured neomutt
- config for mpd, and client(s), (mpd clients to consider: mpc, ncmpcpp, ncmpc, inori) - config for mpd, and client(s), (mpd clients to consider: mpc, ncmpcpp, ncmpc, inori)
- get find, xargs, and awk (use nawk) as unified as i can across system types - hyprland config and install on linux
- seems mpv install (maybe others?) bring in wayland, see if i can remove it - web browsers config and install
- switched to macports (replace homebrew) before september 2026 - get find, xargs, awk (use nawk) as unified as i can across system types
- adjusted tmux so that n goes next/down and N goes prev/up in search results - pick rss reader; newsboat? others? option with inbox and separate queues?
- figured out nvim debug options for linux and macos, then update nvim's dap.lua - decide if i even want a filemanager; if yes, pick one and configure
- picked and configured rss reader
- newsboat? others? option with inbox and separate queues?
- make all these scripts POSIX-compliant (or at least usable in ksh/oksh)

View File

@@ -1,53 +1,61 @@
# notes regarding my workflow and system use # notes regarding my workflow and intended use of workspaces
## workspaces layout ## workspaces layout
idea from the ThePrimeagen: designated workspace/tags/desktop per app/purpose idea from the ThePrimeagen: designated workspace/label/desktop per app/purpose
### current layout ### current layout
| key | app/focus | key | app/focus |
|-----|----------- |-----|-----------|
| 1. | ideas/drawing (gimp) | 1. | notes (nvim, obsidian) |
| 2. | music makeing - misc | 2. | music makeing - misc |
| 3. | music making - daw | 3. | music making - daw |
| 4. | listening/wathcing (any music, audio, or video) | 4. | drawing (gimp) |
| 5. | games | 5. | music/audio listening |
| 6. | comms (emails, chats, av/calls) | 6. | comms (emails, chats, av/calls) |
| 7. | web browser | 7. | web browser |
| 8. | primary terminal (with tmux) | 8. | terminal (primary; one-off terminals & tui apps can be anywhere) |
| 9. | general - misc (catch-all) | 9. | programming - misc (whatever is not in primary terminal) |
| 0. | system monitor (htop) | 0. | general - misc (catch-all) |
- note: programs which i'm likely to use with peripherals (i.e. trackpad, mouse, stylus, ### ideas/guidelines:
etc) should be where i can navigate those screens with one hand - use this consistently accross all machines
- for me, my left hand would still be on the keyboard, so: workspaces 1 through 5 - 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 ## workflow / use notes
- mental model for navigating windows: - related to the layout above, my approach is to run almost every window in fullscreen
- each window is in a stack - note: on macOS, this is not mac's notion of fullscreen, which basically moves
- keybinds: mod + j/k, to move down/up the stack windows to new workspaces/desktops when going to fullscreen mode; instead, when i
- each tab is in a circular list (imagine it is horizontal) say 'fullscreen', the idea is taking up all of the normal screen (excluding the
- keybinds: mod + h/l, to move left/right in this list menu bar at the top of the screen)
- note: in primary terminal, i'm running tmux, which has its own navigation approach, - key bindings are set for moving window focus up/down (vim style: mod + k/j)
refer to the tmux.conf and tmux-session-init scripts - the mental model here is that every fullscreen window is in a stack, so i can move
- my default approach is to run windows in fullscreen focus up and down the stack (and i try to maintain consistent order in stacks,
- note: on macOS, this is not mac's notion of fullscreen with windows essentially e.g. in the comms workspace, email is always on the bottom and chat apps are above)
moved to a new desktop; instead, i just want the windows taking up all of the - for apps with tabs, pair the above mental model of a stack with a mental model of a
normal screen space (excluding any menu bar at the top of the screen) circular list being in any position in that stack
- for the workspaces where i keep multiple apps, i try to maintain consistent order of - so, keybindings are also set for previous/next tab (vim style: mod + h/l)
those apps within the stack of each respective workspace - 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
## theme usage ## example cases
| theme name | focus / use context - 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
| gruvbox | admin/productivity work (default theme) a different tab, i then just move "right or left" through my tabs
| tokyodark | music - if i want a particular music-playing app/tui, i jumpt to workspace 4 and move
| pina | programming/coding focus up or down as needed to find it
| mars | night (within 2+ hours of sleep) - variation case: if i want a particular terminal workspace, i jump to workspace
| lanterns | (tbd?) 8, but then i'm in tmux land and navigate via the methods i've set up for tmux
| lighthouse | (tbd?)
| jade | (tbd?)

View File

@@ -1,16 +1,24 @@
#!/bin/zsh #!/bin/zsh
build_install() { apply_overrides() {
echo "-- installing $1" 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"
}
target=$(echo "custom-$1-$BOX_SETUP_OS-$BOX_SETUP_DISTRO" | tr '-' '_') build_custom() {
target=$(echo "custom_$BOX_SETUP_OS-$BOX_SETUP_DISTRO-$1" | tr '-' '_')
[[ ! -e ./installs_and_builds/$target ]] && [[ ! -e ./installs_and_builds/$target ]] &&
target=$(echo "custom-$1-$BOX_SETUP_OS-default" | tr '-' '_') target=$(echo "custom_default_$1" | tr '-' '_')
[[ ! -e ./installs_and_builds/$target ]] && [[ ! -e ./installs_and_builds/$target ]] &&
target=$(echo "custom-$1-default" | tr '-' '_') echo "custom build/install script not found for: $1" &&
[[ ! -e ./installs_and_builds/$target ]] &&
${=BOX_SETUP_INSTALL_COMMAND} "$1" &&
return return
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/$1.XXXXXXXX") || { tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/$1.XXXXXXXX") || {
@@ -30,14 +38,22 @@ echo "---- updating package manager / packages"
echo "---- installing programs ---------------" echo "---- installing programs ---------------"
[[ -z $1 ]] && system_types_list="base" || system_types_list="base,$1" [[ -z $1 ]] && system_types_list="base" || system_types_list="base,$1"
echo "-------- for system types: $system_types_list"
echo "$system_types_list" | sed 1d "installs_and_builds/programs.csv" |
sed -E "s/,/\n/g" | while IFS=, read -r name kind os_overrides distro_overrides system_overrides notes; do
while IFS= read -r system_type; do apply_overrides $name $kind $os_overrides '' | IFS=, read -r name kind
echo "-------- install for system type: $system_type" apply_overrides $name $kind $distro_overrides '' | IFS=, read -r name kind
cat "installs_and_builds/programs_$system_type.txt" | apply_overrides $name $kind $system_overrides $system_types_list |
while IFS= read -r program_name; do IFS=, read -r name kind
build_install "$program_name"
done [[ $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 done

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "program not applicable for this OS or distro, skipping build/installation"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# use normal package manager for macos install, since default is noop for other OSs
${=BOX_SETUP_INSTALL_COMMAND} --cask nikitabobko/tap/aerospace

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "TODO: custom script for bitwig not yet implemented; may just want manual install"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "TODO: custom script for bitwig not yet implemented; may just want manual install"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "program not applicable for this OS or distro, skipping build/installation"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# use normal package manager for macos install, since default is noop for other OSs
${=BOX_SETUP_INSTALL_COMMAND} coreutils

View File

@@ -1,7 +1,6 @@
#!/bin/zsh #!/bin/zsh
git clone https://github.com/ibara/oksh.git git clone https://github.com/ibara/oksh.git
pushd oksh > /dev/null pushd oksh > /dev/null
./configure ./configure
make && sudo make install make && sudo make install

View File

@@ -1,8 +0,0 @@
#!/bin/sh
# for now, use luke's build; i can make my own fork later if desired
git clone https://github.com/LukeSmithxyz/dmenu.git
pushd dmenu > /dev/null
sudo make clean install
popd > /dev/null

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,7 +0,0 @@
#!/bin/sh
git clone https://git.drinkingtea.net/david/dwm.git
pushd dwm > /dev/null
sudo make clean install
popd > /dev/null

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "program not applicable for this OS or distro, skipping build/installation"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# use normal package manager for macos install, since default is noop for other OSs
${=BOX_SETUP_INSTALL_COMMAND} findutils

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# adjust prefix for package manager before install
${=BOX_SETUP_INSTALL_COMMAND} --cask gimp

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# adjust prefix for package manager before install
${=BOX_SETUP_INSTALL_COMMAND} --cask kitty

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

@@ -1,3 +0,0 @@
#!/bin/sh
echo 'TODO: custom script for mise is not yet implemented'

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# for debian, use package name `openssh-server` instead of `openssh`
${=BOX_SETUP_INSTALL_COMMAND} openssh-server

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# change package name; on arch it is 'pandoc-cli'
${=BOX_SETUP_INSTALL_COMMAND} pandoc-cli

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# change package name; on artix it is 'pandoc-bin'
${=BOX_SETUP_INSTALL_COMMAND} pandoc-bin

View File

@@ -0,0 +1,25 @@
#!/bin/zsh
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
# 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

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "program not applicable for this OS or distro, skipping build/installation"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# use normal package manager for macos install, since default is noop for other OSs
${=BOX_SETUP_INSTALL_COMMAND} koekeishiya/formulae/skhd

View File

@@ -1,9 +0,0 @@
#!/bin/sh
# git clone https://git.drinkingtea.net/david/st.git
# pushd st > /dev/null
# sudo make clean install
# popd > /dev/null
echo "TODO: st build not yet done, skipping this install for now"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# tenacity is not readily available on macos, so just use audacity for now
${=BOX_SETUP_INSTALL_COMMAND} --cask audacity

View File

@@ -1,17 +0,0 @@
#!/bin/zsh
# change package name; on artix it is 'pandoc-bin'
${=BOX_SETUP_INSTALL_COMMAND} \
xlibre-xserver \
xlibre-video-amdgpu \
xlibre-input-libinput \
libx11 \
libxft \
libxinerama
# `xlibre-video-amdgpu` depends on system gpu; ref lspci; maybe use `xlibre-drivers` instead
# if `xlibre-input-libinput` doesn't work, try `xlibre-input-evdev` (generic module) if libinput does not work
${=BOX_SETUP_INSTALL_COMMAND} \
xorg-xinit \
xorg-xrandr

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

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,37 +0,0 @@
gcc
musl
coreutils
findutils
xlibre
make
mpv
kitty
st
dmenu
zsh
ksh
tmux
neovim
neomutt
curl
grep
ripgrep
sed
less
openssh
fzf
jq
parallel
gettext
htop
ffmpeg
mpd
ncmpcpp
git
calcurse
zathura
gimp
dwm
qutebrowser
aerospace
skhd

View File

@@ -1,2 +0,0 @@
tenacity
bitwig-studio

View File

@@ -1,5 +0,0 @@
clang
cmake
mise
podman
pandoc

View File

@@ -1,41 +1,33 @@
#!/bin/sh #!/bin/zsh
. ./src_files/shell/profile # ensure env vars set for use below
echo "---- making system dirs ----------------" 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 # some standard/common directories, some overlap/use in XDG directories
! [ -d "$DIR_LOCAL" ] && mkdir -p "$DIR_LOCAL" [[ ! -d "$DIR_LOCAL" ]] && mkdir -p "$DIR_LOCAL"
! [ -d "$DIR_BIN" ] && mkdir -p "$DIR_BIN" [[ ! -d "$DIR_BIN" ]] && mkdir -p "$DIR_BIN"
! [ -d "$DIR_SCRIPTS" ] && mkdir -p "$DIR_SCRIPTS" [[ ! -d "$DIR_SCRIPTS" ]] && mkdir -p "$DIR_SCRIPTS"
! [ -d "$DIR_USER_OPT" ] && mkdir -p "$DIR_USER_OPT" [[ ! -d "$DIR_USER_OPT" ]] && mkdir -p "$DIR_USER_OPT"
! [ -d "$DIR_USER_LIB" ] && mkdir -p "$DIR_USER_LIB" [[ ! -d "$DIR_USER_LIB" ]] && mkdir -p "$DIR_USER_LIB"
# directories related to XDG Base Directory specification # directories related to XDG Base Directory specification
! [ -d "$XDG_CONFIG_HOME" ] && mkdir -p "$XDG_CONFIG_HOME" [[ ! -d "$XDG_CONFIG_HOME" ]] && mkdir -p "$XDG_CONFIG_HOME"
! [ -d "$XDG_CACHE_HOME" ] && mkdir -p "$XDG_CACHE_HOME" [[ ! -d "$XDG_CACHE_HOME" ]] && mkdir -p "$XDG_CACHE_HOME"
! [ -d "$XDG_DATA_HOME" ] && mkdir -p "$XDG_DATA_HOME" [[ ! -d "$XDG_DATA_HOME" ]] && mkdir -p "$XDG_DATA_HOME"
! [ -d "$XDG_STATE_HOME" ] && mkdir -p "$XDG_STATE_HOME" [[ ! -d "$XDG_STATE_HOME" ]] && mkdir -p "$XDG_STATE_HOME"
# additional directories for how i'm organizing my system # additional directories for how i'm organizing my system
! [ -d "$DIR_HOME_BOX" ] && mkdir -p "$DIR_HOME_BOX" [[ ! -d "$DIR_HOME_BOX" ]] && mkdir -p $DIR_HOME_BOX
! [ -d "$DIR_INBOX" ] && mkdir -p "$DIR_INBOX" [[ ! -d "$DIR_MUSIC" ]] && mkdir -p $DIR_MUSIC
! [ -d "$DIR_NOTES" ] && mkdir -p "$DIR_NOTES" [[ ! -d "$DIR_NOTES" ]] && mkdir -p $DIR_NOTES
! [ -d "$DIR_MUSIC" ] && mkdir -p "$DIR_MUSIC" [[ ! -d "$DIR_DEV" ]] && mkdir -p $DIR_DEV
! [ -d "$DIR_DEV" ] && mkdir -p "$DIR_DEV" [[ ! -d "$DIR_GIT_PROJECTS" ]] && mkdir -p $DIR_GIT_PROJECTS
! [ -d "$DIR_GIT_PROJECTS" ] && mkdir -p "$DIR_GIT_PROJECTS" [[ ! -d "$DIR_GIT_PROJECTS/me" ]] && mkdir -p $DIR_DEV/git/me
! [ -d "$DIR_GIT_PROJECTS/me" ] && mkdir -p "$DIR_GIT_PROJECTS/me" [[ ! -d "$DIR_GIT_PROJECTS/forks" ]] && mkdir -p $DIR_DEV/git/forks
! [ -d "$DIR_GIT_PROJECTS/forks" ] && mkdir -p "$DIR_GIT_PROJECTS/forks" [[ ! -d "$DIR_GIT_PROJECTS/learning" ]] && mkdir -p $DIR_DEV/git/learning
! [ -d "$DIR_GIT_PROJECTS/learning" ] && mkdir -p "$DIR_GIT_PROJECTS/learning" [[ ! -d "$DIR_GIT_PROJECTS/other" ]] && mkdir -p $DIR_DEV/git/other
! [ -d "$DIR_GIT_PROJECTS/other" ] && mkdir -p "$DIR_GIT_PROJECTS/other"
# directories for music/audio production # directories for music/audio production
! [ -d "$DIR_REAPER_PORTABLE_SHARED" ] && mkdir -p "$DIR_REAPER_PORTABLE_SHARED" [[ ! -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_LINUX" ]] && mkdir -p $DIR_REAPER_PORTABLE_LINUX
! [ -d "$DIR_REAPER_PORTABLE_MACOS" ] && mkdir -p "$DIR_REAPER_PORTABLE_MACOS" [[ ! -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"

View File

@@ -1,38 +0,0 @@
#!/bin/sh
prefix="/usr"
exec_prefix="${prefix}"
xrdb="xrdb"
xinitdir="/etc/X11/xinit"
xmodmap="xmodmap"
userresources="$HOME/.Xresources"
usermodmap="$HOME/.Xmodmap"
sysresources="$xinitdir/.Xresources"
sysmodmap="$xinitdir/.Xmodmap"
# merge in defaults and keymaps
[ -x /usr/bin/cpp ] && xinit_nocpp_opt="" || xinit_nocpp_opt="-nocpp"
[ -f "$sysresources" ] && "$xrdb" "$xinit_nocpp_opt" -merge "$sysresources"
[ -f "$sysmodmap" ] && "$xmodmap" "$sysmodmap"
[ -f "$userresources" ] && "$xrdb" -nocpp -merge "$userresources"
[ -f "$usermodmap" ] && "$xmodmap" "$usermodmap"
# source xinitdrc.d script files
[ -d "$xinitdir"/xinitrc.d ] && {
for f in "$xinitdir/xinitrc.d"/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
}
# xrandr mode for laptop display (framework 13in), target 1920x1280 resolution
dispmanage_modeline=$(cvt 1920 1280 60 | sed -n '2p' | sed -E "s/^Modeline //g")
dispmanage_mode_id=$(printf "%s" "$dispmanage_modeline" | sed -E "s/^([^ ]+)\s.*$/\1/g")
printf "%s" "$dispmanage_modeline" | xargs xrandr --newmode
printf "%s" "$dispmanage_mode_id" | xargs xrandr --addmode eDP
xrandr --output eDP --mode "1920x1280_60.00"
# start window manager
exec dwm

View File

@@ -25,18 +25,23 @@ default-root-container-orientation = 'vertical' # opts: horizontal vertical auto
outer.right = 0 outer.right = 0
[mode.main.binding] [mode.main.binding]
# layouts
cmd-comma = 'layout v_accordion' cmd-comma = 'layout v_accordion'
cmd-period = 'layout h_tiles' cmd-period = 'layout h_tiles'
cmd-slash = 'layout floating' cmd-slash = 'layout horizontal vertical'
# window resizing
alt-minus = 'resize smart -50' alt-minus = 'resize smart -50'
alt-equal = 'resize smart +50' alt-equal = 'resize smart +50'
# window focus/view # in stack mode, new windows are added "below" the current, so swap up and down
cmd-j = 'focus up' # new windows are added "below" current, so swap up and down cmd-j = 'focus up'
cmd-k = 'focus down' 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-1 = 'workspace 1'
cmd-2 = 'workspace 2' cmd-2 = 'workspace 2'
cmd-3 = 'workspace 3' cmd-3 = 'workspace 3'
@@ -47,10 +52,6 @@ default-root-container-orientation = 'vertical' # opts: horizontal vertical auto
cmd-8 = 'workspace 8' cmd-8 = 'workspace 8'
cmd-9 = 'workspace 9' cmd-9 = 'workspace 9'
cmd-0 = 'workspace 10' cmd-0 = 'workspace 10'
# window movement
cmd-shift-j = 'move up' # new windows are added "below" current, so swap up and down
cmd-shift-k = 'move down'
cmd-shift-1 = 'move-node-to-workspace 1' cmd-shift-1 = 'move-node-to-workspace 1'
cmd-shift-2 = 'move-node-to-workspace 2' cmd-shift-2 = 'move-node-to-workspace 2'
cmd-shift-3 = 'move-node-to-workspace 3' cmd-shift-3 = 'move-node-to-workspace 3'
@@ -62,3 +63,13 @@ default-root-container-orientation = 'vertical' # opts: horizontal vertical auto
cmd-shift-9 = 'move-node-to-workspace 9' cmd-shift-9 = 'move-node-to-workspace 9'
cmd-shift-0 = 'move-node-to-workspace 10' 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']

View File

@@ -33,9 +33,9 @@ enable_mouse=1
delay=40 delay=40
hide_function_bar=0 hide_function_bar=0
header_layout=two_50_50 header_layout=two_50_50
column_meters_0=LeftCPUs2 LeftCPUs8 Blank MemorySwap MemorySwap Blank NetworkIO NetworkIO column_meters_0=LeftCPUs2 LeftCPUs4 Blank MemorySwap MemorySwap Blank NetworkIO NetworkIO
column_meter_modes_0=1 3 2 1 3 2 2 3 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_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 column_meter_modes_1=1 3 2 2 2 2 2 2 2 2 2 2 2 1
tree_view=0 tree_view=0
sort_key=47 sort_key=47

View File

@@ -1 +0,0 @@
IRB.conf[:HISTORY_FILE] ||= File.join(ENV["XDG_DATA_HOME"], "irb", "history")

View File

@@ -1,2 +0,0 @@
[ -r "$XDG_CONFIG_HOME/profile" ] && . "$XDG_CONFIG_HOME/profile"
[ -r "$XDG_CONFIG_HOME/rc" ] && . "$XDG_CONFIG_HOME/rc"

View File

@@ -1 +0,0 @@
<localRepository>${env.XDG_CACHE_HOME}/maven/repository</localRepository>

View File

@@ -1,3 +0,0 @@
ncmcpp_directory = "$XDG_DATA_HOME/ncmpcpp"
lyrics_directory = "$DIR_MUSIC/.lyrics"
mpd_music_dir = "$DIR_MUSIC"

View File

@@ -0,0 +1,66 @@
initial_screen = "library"
library_tabs = ["playlists", "albums", "artists", "browse"]
[keybindings]
"Space" = "playpause"
##########################################################################################
# theme
# [theme] # from eltoncezar, similar to official spotify colors
# background = "#191414"
# primary = "#FFFFFF"
# secondary = "light black"
# title = "#1DB954"
# playing = "#1DB954"
# playing_selected = "#1ED760"
# playing_bg = "#191414"
# highlight = "#FFFFFF"
# highlight_bg = "#484848"
# error = "#FFFFFF"
# error_bg = "red"
# statusbar = "#191414"
# statusbar_progress = "#1DB954"
# statusbar_bg = "#1DB954"
# cmdline = "#FFFFFF"
# cmdline_bg = "#191414"
# search_match = "light red"
[theme] # from wojciech-zurek, tokyonight
background = "#1a1b26"
primary = "#9aa5ce"
secondary = "#414868"
title = "#9ece6a"
playing = "#7aa2f7"
playing_selected = "#bb9af7"
playing_bg = "#24283b"
highlight = "#c0caf5"
highlight_bg = "#24283b"
error = "#414868"
error_bg = "#f7768e"
statusbar = "#ff9e64"
statusbar_progress = "#7aa2f7"
statusbar_bg = "#1a1b26"
cmdline = "#c0caf5"
cmdline_bg = "#24283b"
search_match = "#f7768e"
# [theme] # from clooles, uses defaults/primary, supports transparency, for dynamic themes
# background = "default"
# primary = "foreground"
# secondary = "light black"
# title = "primary"
# playing = "primary"
# playing_selected = "primary"
# playing_bg = "primary"
# highlight = "#FFFFFF"
# highlight_bg = "#484848"
# error = "#FF0000"
# error_bg = "red"
# statusbar = "primary"
# statusbar_progress = "primary"
# statusbar_bg = "primary"
# cmdline = "default"
# cmdline_bg = "primary"
# search_match = "light red"

View File

@@ -1,6 +1,16 @@
local csGroup = vim.api.nvim_create_augroup("coreSettingsGroup", { clear = true })
local csgAutocmd = vim.api.nvim_create_autocmd
require("settings") require("settings")
require("plugin_manager") require("plugin_manager")
require("key_mappings") require("key_mappings")
require("util_functions") require("util_functions")
require("auto_commands")
csgAutocmd({"BufWritePre"}, {
group = csGroup,
pattern = "*",
command = [[%s/\s\+$//e]],
})
ThemeUpdate() ThemeUpdate()

View File

@@ -1,20 +0,0 @@
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
})

View File

@@ -11,9 +11,9 @@ vim.keymap.set("n", "<leader>n", vim.cmd.Ex)
vim.keymap.set("v", "J", ":m '>+1<CR>gv") vim.keymap.set("v", "J", ":m '>+1<CR>gv")
vim.keymap.set("v", "K", ":m '<-2<CR>gv") vim.keymap.set("v", "K", ":m '<-2<CR>gv")
-- add extra vertical padding for the cursor after half-page jumps -- reduce effective distance of half-page jumps and vertically-pad the cursor
vim.keymap.set("n", "<C-d>", "<C-d>4<C-e>") vim.keymap.set("n", "<C-d>", "<C-d>4<C-y>M")
vim.keymap.set("n", "<C-u>", "<C-u>4<C-y>") vim.keymap.set("n", "<C-u>", "<C-u>4<C-e>M")
-- open folds when iterating search results -- open folds when iterating search results
vim.keymap.set("n", "n", "nzv") vim.keymap.set("n", "n", "nzv")
@@ -22,13 +22,13 @@ vim.keymap.set("n", "N", "Nzv")
-- maintain cursor position after paragraph formatting -- maintain cursor position after paragraph formatting
vim.keymap.set("n", "=ap", "mF=ap'F") vim.keymap.set("n", "=ap", "mF=ap'F")
-- replace selected text, keep main register -- shortcuts for deleting into the void register
vim.keymap.set("x", "<leader>P", [["_dP]]) 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) -- shortcuts for using + register (system clipboard)
vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]]) vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]])
vim.keymap.set("n", "<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>D", [["+D]])
vim.keymap.set("n", "<leader>p", [["+p]]) vim.keymap.set("n", "<leader>p", [["+p]])
@@ -133,6 +133,18 @@ kmgAutocmd('LspAttach', {
end 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 -- plugins
@@ -164,13 +176,6 @@ for i = 1, 10, 1 do
vim.keymap.set("n", "<leader>h" .. (i % 10), function() harpoon:list():replace_at(i) end) vim.keymap.set("n", "<leader>h" .. (i % 10), function() harpoon:list():replace_at(i) end)
end end
--- fugitive (git integration)
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>gl", function() vim.cmd.Git({ "log"}) 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)
-- undotree -- undotree
vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle) vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
@@ -179,7 +184,3 @@ vim.keymap.set("n", "<leader>fmt", function()
require("conform").format({ bufnr = 0 }) require("conform").format({ bufnr = 0 })
end) end)
-- obisdian / notes
vim.keymap.set("n", "<leader>oo", function() vim.cmd("Obsidian open") end)
vim.keymap.set("n", "<leader>ot", "o- [ ] ")

View File

@@ -5,10 +5,10 @@ return {
local dap = require("dap") local dap = require("dap")
dap.set_log_level("DEBUG") dap.set_log_level("DEBUG")
-- dap.adapters.codelldb = { dap.adapters.codelldb = {
-- type = "executable", type = "executable",
-- command = "codelldb", command = "codelldb",
-- } }
local dapConfigArgsInput = function() local dapConfigArgsInput = function()
return vim.split(vim.fn.input("args: "), " ") return vim.split(vim.fn.input("args: "), " ")
@@ -104,7 +104,7 @@ return {
config = function() config = function()
require("mason-nvim-dap").setup({ require("mason-nvim-dap").setup({
ensure_installed = { ensure_installed = {
-- "codelldb", "codelldb",
-- "delve", -- "delve",
}, },
automatic_installation = true, automatic_installation = true,

View File

@@ -1,26 +0,0 @@
return {
{
"obsidian-nvim/obsidian.nvim",
version = "*", -- '*' for latest release, not latest commit
ft = "markdown",
opts = {
footer = {
enabled = false,
},
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"),
},
},
},
},
}

View File

@@ -4,20 +4,13 @@ return {
dependencies = { "nvim-lua/plenary.nvim" }, dependencies = { "nvim-lua/plenary.nvim" },
opts = { opts = {
defaults = { defaults = {
layout_strategy = "vertical", layout_strategy = "horizontal",
layout_config = { layout_config = {
horizontal = { horizontal = {
width = 0.98, width = 0.98,
height = 0.98, height = 0.98,
preview_width = 0.45, preview_width = 0.45,
}, },
vertical = {
width = 0.98,
height = 0.98,
preview_height = 0.55,
preview_cutoff = 14,
prompt_position = 'bottom',
},
}, },
path_display = { "truncate", }, path_display = { "truncate", },
}, },

View File

@@ -4,20 +4,11 @@ return {
lazy = false, lazy = false,
priority = 1000, priority = 1000,
opts = { opts = {
custom_highlights = function(highlights, palette) custom_highlights = function(highlights, _palette)
highlights.Comment['fg'] = "#8a9097" highlights.Comment['fg'] = "#8a9097"
highlights.LineNr['fg'] = "#8088A8" highlights.LineNr['fg'] = "#8088A8"
highlights.Visual['bg'] = palette.bg3
return highlights return highlights
end, end,
gamma = 0.92, -- brightness
styles = {
comments = { italic = true },
keywords = { italic = false },
identifiers = { italic = false },
functions = {},
variables = {},
},
}, },
}, },
{ {

View File

@@ -21,8 +21,6 @@ vim.opt.textwidth = 0
vim.opt.wrapmargin = 0 vim.opt.wrapmargin = 0
vim.opt.fillchars = { eob = ' ' } vim.opt.fillchars = { eob = ' ' }
vim.opt.conceallevel = 0
vim.opt.spell = false vim.opt.spell = false
vim.opt.spelllang = 'en_us' vim.opt.spelllang = 'en_us'

View File

@@ -80,7 +80,6 @@ function ToggleWritingMode()
vim.opt_local.relativenumber = true vim.opt_local.relativenumber = true
vim.opt_local.signcolumn = "yes" vim.opt_local.signcolumn = "yes"
vim.opt_local.cursorline = true 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.spell = false
-- vim.opt_local.wrap = true -- TODO: needed? -- vim.opt_local.wrap = true -- TODO: needed?
vim.opt_local.textwidth = 0 vim.opt_local.textwidth = 0
@@ -99,8 +98,6 @@ function ToggleWritingMode()
local writing_pane = vim.api.nvim_get_current_win() local writing_pane = vim.api.nvim_get_current_win()
EnableWritingModeUiForCurrentWindow() EnableWritingModeUiForCurrentWindow()
vim.opt_local.spell = true 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.textwidth = window_width
vim.opt_local.scrolloff = 14 vim.opt_local.scrolloff = 14
vim.opt_local.formatoptions:append('t') vim.opt_local.formatoptions:append('t')

View File

@@ -1,2 +0,0 @@
# this file is just here to easily allow committing this directory to git
# the imported themes are copied here when ./copy_dotfiles.sh is run

View File

@@ -15,6 +15,5 @@
"showInlineTitle": false, "showInlineTitle": false,
"readableLineLength": true, "readableLineLength": true,
"strictLineBreaks": true, "strictLineBreaks": true,
"livePreview": false, "livePreview": false
"propertiesInDocument": "hidden"
} }

View File

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

View File

@@ -1,4 +1,7 @@
{ {
"markdown:toggle-preview": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "E" }
],
"switcher:open": [ "switcher:open": [
{ "modifiers": [ "Ctrl" ], "key": "F" } { "modifiers": [ "Ctrl" ], "key": "F" }
], ],
@@ -8,16 +11,10 @@
"app:toggle-right-sidebar": [ "app:toggle-right-sidebar": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "F" } { "modifiers": [ "Ctrl", "Shift" ], "key": "F" }
], ],
"markdown:toggle-preview": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "E" }
],
"editor:toggle-readable-line-length": [ "editor:toggle-readable-line-length": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "R" } { "modifiers": [ "Ctrl", "Shift" ], "key": "R" }
], ],
"file-explorer:reveal-active-file": [ "file-explorer:reveal-active-file": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "N" } { "modifiers": [ "Ctrl", "Shift" ], "key": "N" }
],
"app:open-settings": [
{ "modifiers": [ "Ctrl", "Shift" ], "key": "O" }
] ]
} }

View File

@@ -1,15 +0,0 @@
# ref: built-in keywords, https://github.com/koekeishiya/skhd/issues/1
# vim-like left/right movements for navigating tabs
cmd - h : $(which skhd) -k "ctrl + shift - tab"
cmd - l : $(which skhd) -k "ctrl - tab"
# shortcuts to open programs
cmd - return : open -n -a kitty.app
cmd + shift - b : open -n -a Brave\ Browser.app
cmd - s : open -n -a kitty.app --args --override macos_quit_when_last_window_closed=yes htop
cmd - b : open -n -a kitty.app --args --override macos_quit_when_last_window_closed=yes bookmark-find
# shortcuts to scripts/procs
# cmd - zxcv : path/to/script.sh

View File

@@ -4,14 +4,15 @@ tmux_omitted_dirs=(
$DIR_DEV $DIR_DEV
$DIR_GIT_PROJECTS $DIR_GIT_PROJECTS
) )
[[ ! ${tmux_omitted_dirs[(re)$(pwd)]} ]] && { [[ ! ${tmux_omitted_dirs[(re)$(pwd)]} ]] && {
tmux new-window -d -n $EDITOR tmux new-window -d -n $EDITOR
tmux send-keys -t :$EDITOR "$EDITOR ." c-M tmux send-keys -t :$EDITOR "$EDITOR ." c-M
tmux new-window -d -n debug tmux new-window -d -n daa
tmux new-window -d -n agt
tmux new-window -d -n procs tmux new-window -d -n procs
tmux rename-window cmd tmux rename-window cmd
tmux send-keys -t :cmd "clear; [[ -d .git ]] && git status" c-M tmux send-keys -t :cmd "clear; [[ -d .git ]] && git status" c-M
} }
clear clear

View File

@@ -1,4 +0,0 @@
tmux rename-window inbox
tmux send-keys -t :inbox 'cd "$DIR_INBOX"; clear; ls' c-M
clear

View File

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

View File

@@ -9,7 +9,7 @@ bind-key C-Space send-prefix
set-option -g base-index 1 set-option -g base-index 1
set-option -g status-position 'bottom' set-option -g status-position 'bottom'
set-option -g status-left-length 28 set-option -g status-left-length 28
set-option -Fg status-right '#{host} | %Y-%m-%d %H:%M' # or maybe host_short set-option -Fg status-right '#{host} | %Y%m%d %H:%M' # or maybe host_short
# theme settings # theme settings
set-option -g status-style "bg=default fg=default" # default, theme files can overwrite set-option -g status-style "bg=default fg=default" # default, theme files can overwrite
@@ -46,7 +46,6 @@ bind-key C-f run-shell "tmux neww $DIR_SCRIPTS/tmux-session-init"
bind-key C-s choose-session bind-key C-s choose-session
bind-key S choose-window bind-key S choose-window
bind-key C-h run-shell "tmux neww $DIR_SCRIPTS/tmux-session-init hub" 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-l switch-client -l
bind-key -r C-o last-window bind-key -r C-o last-window
bind-key -r C-n next-window bind-key -r C-n next-window

View File

View File

@@ -1,5 +1,43 @@
[ -r "$HOME/.config/profile" ] && . "$HOME/.config/profile" # use vim-like control in shell
[ -r "$XDG_CONFIG_HOME/rc" ] && . "$XDG_CONFIG_HOME/rc" set -o vi
# path updates
export PATH=$DIR_BIN:$DIR_SCRIPTS:$PATH:$XDG_DATA_HOME
export PATH=$PATH:/opt/homebrew/opt/ccache/libexec:/opt/homebrew/bin
# shortcuts for common commands
alias 3e='echo;echo;echo'
alias 12e='3e;3e;3e;3e'
alias cl='clear; '
alias cls='clear;ls'
# shortcuts for executables
alias n='nvim'
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 pdt='ping -c 2 drinkingtea.net'
alias ppw='ping -c 2 pinewoods.xyz'
alias weather='curl "wttr.in/dfw?2&F"'
alias shrug='echo "¯\\_(ツ)_/¯"'
# source extensions and system-specific files
[[ -a "$ZDOTDIR/zsh-general-dev" ]] && . "$ZDOTDIR/zsh-general-dev"
# programming and language setup
[[ -n $(command -v mise) ]] && eval "$(mise activate zsh)"
export DEVKITARM=/opt/devkitpro/devkitARM
# overwrite PS1 here, since zsh decided to use different special chars
export PS1="%n@%m %1~ %# "

View File

@@ -0,0 +1,26 @@
# set env vars, path updates, etc
[[ -a $HOME/.local-box-vars ]] && . $HOME/.local-box-vars
# login shortcuts
alias assume="source assume"
alias login-aws='aws sso login --profile'
alias login-aws-id-list="grep sso_account_id $HOME/.aws/config"
# git stuff
alias gfo='git fetch origin'
alias gfl='git fetch origin; git log'
alias gpo='git pull origin'
alias gppo='git push origin'
alias gst='git status'
alias git-push-to-temp='git branch -D temp; git checkout -b temp; git push origin temp -uf; git checkout -'
alias gptemp='git-push-to-temp'
# code/test/linter run and build commands
alias bel='bundle exec standardrb'
alias bet='bundle exec rspec'
alias lintjs='npx prettier --write'
alias prl='poetry run black'
alias prt='poetry run pytest'
# containerization
alias docker=podman

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,3 +0,0 @@
#!/bin/sh
mise exec ruby@$MISE_RUBY_VERSION -- bundle "$@"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
mise exec go@$MISE_GO_VERSION -- go "$@"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
mise exec ruby@$MISE_RUBY_VERSION -- irb "$@"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
mise exec python@$MISE_PYTHON_VERSION -- python "$@"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
mise exec ruby@$MISE_RUBY_VERSION -- ruby "$@"

View File

@@ -1,51 +0,0 @@
#!/bin/sh
BKMRK_FIND_TMP_PATH="/tmp/bookmark-find-selected-url"
[ -z "$1" ] && bkmrk_find_search_root="$DIR_HOME_BOX" || bkmrk_find_search_root="$1"
# search for boookmark
bm_selected_bookmark_url=$(
find "$bkmrk_find_search_root" \
\( -type d -name "*archive" -prune \) \
-o \( -type d -name "*z-sort" -prune \) \
-o -name "*.bkmrk" -print |
while IFS= read -r bookmark_file; do tail -n +2 "$bookmark_file"; done |
fzf \
--style full \
--border --padding 0,1 \
--border-label '|bookmarks|' \
--preview='bookmark-preview-info {}' |
sed -E "s/^[^^]+\^([^^]+)\^.*$/\1/g" ||
printf "%s" "BKMRK_FIND_ERROR"
)
# notify if lookup failed
[ "$bm_selected_bookmark_url" = "BKMRK_FIND_ERROR" ] &&
printf "%s\n" "error while selecting bookmark" &&
printf "%s" "error while selecting bookmark" > "$BKMRK_FIND_TMP_PATH" &&
read && # read command to force a pause for input (hit return) before shell is closed
exit 0 # exit 0 so (in macOS) skhd's invocation returns success and terminal can quit
# write selection to tmp path
printf "%s" "$bm_selected_bookmark_url" > "$BKMRK_FIND_TMP_PATH"
# copy selection to clipboard
[ "$XDG_SESSION_TYPE" = "wayland" ] && command -v wl-copy > /dev/null 2>&1 && {
printf "%s" "$bm_selected_bookmark_url" | wl-copy
} || {
command -v xclip > /dev/null 2>&1 && {
printf "%s" "$bm_selected_bookmark_url" | xclip -selection clipboard
}
} || {
command -v pbcopy > /dev/null 2>&1 && {
printf "%s" "$bm_selected_bookmark_url" | pbcopy
}
} || {
printf "error finding tool for copy/paste, selected bookmark (%s) written to %s\n" \
"$bm_selected_bookmark_url" \
"$BKMRK_FIND_TMP_PATH"
read # read command to force a pause for input (hit return) before shell is closed
}
exit 0 # exit 0 so (in macOS) skhd's invocation returns success and terminal can quit

View File

@@ -1,26 +0,0 @@
#!/bin/sh
IFS="^" read -r bm_name bm_url bm_date_added bm_type bm_comments <<BM_LINE_BLOCK
$(printf "%s" "$@")
BM_LINE_BLOCK
bm_preview_format_block=$(cat <<'BM_PREVIEW_FORMAT_BLOCK'
name:
%s
url:
%s
date_added:
%s
type:
%s
comments:
%s
BM_PREVIEW_FORMAT_BLOCK)
printf "$bm_preview_format_block" \
"$bm_name" "$bm_url" "$bm_date_added" "$bm_type" "$bm_comments"

View File

@@ -1,63 +0,0 @@
#!/bin/sh
DISPMANAGE_EXT_PORT_ID_PREFIX="DisplayPort"
DISPMANAGE_LAPTOP_ID="eDP"
DISPMANAGE_LAPTOP_MODE='"1920x1280_60.00"'
non_primary_monitors_off() {
xrandr |
grep -v "^Screen" |
grep -v "^\s" |
grep -v "primary" |
while read -r target_mon_id remaining_text; do
xrandr --output "$target_mon_id" --off
done
}
solo_monitor_mode() {
mode_id="--auto"
[ "$1" = "$DISPMANAGE_LAPTOP_ID" ] &&
[ -n "$DISPMANAGE_LAPTOP_MODE" ] &&
mode_id="--mode $DISPMANAGE_LAPTOP_MODE"
echo "$mode_id" | xargs xrandr --output "$1" --primary
non_primary_monitors_off
! [ "$2" = "--quiet" ] && echo "display-manage: solo monitor mode, $1"
}
primary_mon_id=""
case "$1" in
(l | laptop)
primary_mon_id="$DISPMANAGE_LAPTOP_ID"
;;
(e | external)
primary_mon_id=$(
xrandr |
grep "^$DISPMANAGE_EXT_PORT_ID_PREFIX.*\sconnected" |
sed -n "1p" |
sed -E "s/^([^ ]+).*$/\1/g"
)
;;
# for one-off/special cases; just set things explicitly here and exit
# (c1 | case1)
# xrandr --output DisplayPort-1 --primary --auto \
# --output HDMI-1 --auto \
# --output eDP --auto --same-as DisplayPort-1
# exit 0
# ;;
esac
[ -z "$primary_mon_id" ] &&
echo "display-manage: target monitor not detected or not configured; using laptop" &&
solo_monitor_mode "$DISPMANAGE_LAPTOP_ID" &&
exit 0
case "$2" in
(m | mirror)
solo_monitor_mode "$primary_mon_id" --quiet
xrandr --output "$DISPMANAGE_LAPTOP_ID" --auto --same-as "$primary_mon_id"
echo "display-manage: $primary_mon_id monitor, primary; laptop monitor, mirror"
;;
(*)
solo_monitor_mode "$primary_mon_id"
;;
esac

View File

@@ -1,25 +0,0 @@
#!/bin/sh
# adjust settings in src_files/shell/profile, src_files/shell/rc, or otherwise
# where feasible. if not feasible and i don't care about the programs, just
# wipe out the associated files.
################
# clean up and re-org
[ -d "$HOME/.cups" ] &&
mv "$HOME"/.cups/* "$XDG_CONFIG_HOME/cups/" &&
rmdir "$HOME/.cups"
################
# wipe out
rm -rf "$HOME"/.bash*
rm -rf "$HOME"/.sh_history # HISTFILE should be used instead, so just wipe this if present
rm -rf "$HOME"/.python_history # since v 3.13.0a3, respects PYTHON_HISTORY; just wipe this
rm -rf "$HOME"/.ruby-lsp # not sure if i want this or not, just delete for now
rm -rf "$HOME"/.vim* # using neovim, so if any vim stuff is made, delete it
[ -d "$HOME/Public" ] && sudo rm -rf "$HOME/Public" # apple
[ -d "$HOME/Documents" ] && sudo rm -rf "$HOME/Documents" # apple

View File

@@ -36,6 +36,23 @@ theme_update_neovim() {
done 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" || [[ ! -z $1 ]] && raw_target="$1" ||
raw_target=$( raw_target=$(
find $DIR_THEME_SETTINGS -mindepth 1 -maxdepth 1 -type d -exec basename -- {} \; | find $DIR_THEME_SETTINGS -mindepth 1 -maxdepth 1 -type d -exec basename -- {} \; |
@@ -50,7 +67,9 @@ ln -snf "$target_theme" $DIR_THEME_SETTINGS/.current-theme
theme_update_terminal theme_update_terminal
theme_update_tmux theme_update_tmux
theme_update_neovim & theme_update_neovim &
# theme_update_mutt # TODO: possible? or does it just use terminal colors anyway? 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_reaper # TODO: implement
# theme_update_mutt # TODO: possible and actually desired?
theme-update-wallpaper "zz-default-for-theme" & theme-update-wallpaper "zz-default-for-theme" &

View File

@@ -1,14 +1,13 @@
#!/bin/zsh #!/bin/zsh
tmux_switch_to() { tmux_switch_to() {
[ -z "$TMUX" ] && tmux attach-session -t "$1" || tmux switch-client -t "$1" [[ -z $TMUX ]] && tmux attach-session -t $1 || tmux switch-client -t $1
} }
tmux_hydrate() { tmux_hydrate() {
hydrate_path="$XDG_CONFIG_HOME/tmux/.tmux-session-hydrate-default" local tmux_hydrate_path="$XDG_CONFIG_HOME/tmux/.tmux-session-hydrate-default"
[ "$1" = "hub" ] && hydrate_path="$XDG_CONFIG_HOME/tmux/.tmux-session-hydrate-hub" [[ -f $2/.tmux-session-hydrate ]] && tmux_hydrate_path="$2/.tmux-session-hydrate"
[ -f "$2/.tmux-session-hydrate" ] && hydrate_path="$2/.tmux-session-hydrate" [[ -f $tmux_hydrate_path ]] && tmux send-keys -t $1 ". $tmux_hydrate_path" c-M
[ -f "$hydrate_path" ] && tmux send-keys -t $1 ". $hydrate_path" c-M
} }
tmux_existing_sessions=$(tmux list-sessions 2> /dev/null || echo '') tmux_existing_sessions=$(tmux list-sessions 2> /dev/null || echo '')
@@ -25,13 +24,12 @@ tmux_target_path=''
if [[ $tmux_target_path = "." ]]; then tmux_target_name=$(basename $(pwd)) && tmux_target_path=$(pwd); if [[ $tmux_target_path = "." ]]; then tmux_target_name=$(basename $(pwd)) && tmux_target_path=$(pwd);
elif [[ $tmux_target_path = "hub" ]]; then tmux_target_name="hub" && tmux_target_path="$HOME"; elif [[ $tmux_target_path = "hub" ]]; then tmux_target_name="hub" && tmux_target_path="$HOME";
elif [[ $tmux_target_path = "notes" ]]; then tmux_target_name="notes" && tmux_target_path="$DIR_NOTES";
elif [[ -n $tmux_target_path ]]; then tmux_target_name=$(basename "$tmux_target_path" | tr . _); elif [[ -n $tmux_target_path ]]; then tmux_target_name=$(basename "$tmux_target_path" | tr . _);
fi fi
[[ -z $tmux_target_name ]] && exit 0 [[ -z $tmux_target_name ]] && exit 0
! (echo $tmux_existing_sessions | grep -q "^$tmux_target_name:") && ! (echo $tmux_existing_sessions | grep -q "$tmux_target_name") &&
tmux new-session -d -s $tmux_target_name -c $tmux_target_path && tmux new-session -d -s $tmux_target_name -c $tmux_target_path &&
tmux_hydrate $tmux_target_name $tmux_target_path tmux_hydrate $tmux_target_name $tmux_target_path
tmux_switch_to $tmux_target_name tmux_switch_to $tmux_target_name

View File

@@ -1,2 +0,0 @@
[Login]
HandleLidSwitchDocked=ignore

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