init checkin

This commit is contained in:
LuKe Tidd 2022-01-08 11:53:59 -05:00
parent 7a87842c47
commit 8dd0abb090
3 changed files with 248 additions and 1 deletions

View File

@ -1,4 +1,4 @@
Copyright (c) <year> <owner>. All rights reserved.
Copyright (c) 2022 Luke Tidd. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

119
bashrc Normal file
View File

@ -0,0 +1,119 @@
# If not running interactively, don't do anything
[[ -z "$PS1" ]] && return
[[ $- == *i* ]] && stty -ixon
####
# settings
set -o vi
shopt -s checkwinsize # update the values of LINES and COLUMNS.
shopt -s nullglob
bind 'set enable-bracketed-paste off'
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=
GDK_BACKEND=wayland
####
# paths
function in_path() {
new_path="$1"
a=0
while true; do
a=$((a+1))
current="$(cut -d: -f"${a}" <<< "$PATH")"
if [[ -z "$current" ]]; then
return 1
fi
if [[ "$new_path" == "$current" ]]; then
return 0
fi
done
}
unset additional_paths
declare -a additional_paths
additional_paths=(
"${HOME}/bin"
"${HOME}/bin2"
"${HOME}/go/bin"
"${HOME}/local/bin"
"${HOME}/.cargo/bin"
"${HOME}/git/cr/depot_tools"
"/usr/local/go/bin/"
)
for path in "${additional_paths[@]}"; do
in_path "$path" || PATH="${path}:${PATH}"
done
unset additional_paths
unset in_path
####
# sources
unset sources
declare -a sources
sources=(
"${HOME}/.bash_aliases"
"${HOME}/.bash_functions"
"${HOME}/.bash_functions2"
"${HOME}/.cargo/env"
"${KITTY_INSTALLATION_DIR}/shell-integration/bash/kitty.bash"
)
for source in "${sources[@]}"; do
if [[ -r "${source}" ]]; then
. "${source}"
fi
done
unset sources
if [[ -d "${HOME}/.config/aliases" ]]; then
readarray -d '' bash_sources < <(find "${HOME}/.config/aliases" -type f | sort -V | tr '\n' '\0')
for source in "${bash_sources[@]}"; do
. "$source"
done
fi
####
# env
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
export PS1='$ '
export VISUAL=vim
export EDITOR="$VISUAL"
export SYSTEMD_PAGER="cat"
export GIT_PAGER="cat"
export XDG_CONFIG_HOME="${HOME}/.config"
export XDG_CURRENT_DESKTOP=sway
export MOZ_ENABLE_WAYLAND=1
case "$TERM" in
screen-256color) export PS1='\[\033[1;35m\]\d \t ${debian_chroot:+($debian_chroot)}\[\033[0;55m\]\H\[\033[00m\]:\[\033[01;55m\]\w\[\033[00m\]\n\$ ' && alias ls='ls --color=auto';;
esac
##############################
# ssh auth sock
auth_sock_dir="${HOME}/.config/ssh"
auth_sock_log="/tmp/ssh_auth_sock"
if [[ ! -d "$auth_sock_dir" ]]; then
mkdir -p "$auth_sock_dir"
fi
ssh_auth_link="${auth_sock_dir}/ssh_auth_sock"
pgrep ssh-agent &>/dev/null
if [[ "$?" == "1" ]]; then
eval "$(ssh-agent &>"$auth_sock_log")"
if [[ -L "$ssh_auth_link" ]]; then
rm "$ssh_auth_link"
fi
if [[ -z "$SSH_AUTH_SOCK" ]]; then
printf 'Something went wrong with ssh-agent:\n' >&2
cat "$auth_sock_log" >&2
else
ln -s "$SSH_AUTH_SOCK" "$ssh_auth_link"
fi
else
[[ -L "${ssh_auth_link}" ]] && [[ -e "${ssh_auth_link}" ]] && export SSH_AUTH_SOCK="$ssh_auth_link"
fi

128
tmux_control Executable file
View File

@ -0,0 +1,128 @@
#!/usr/bin/env bash
function link_or_rm() {
local env="$1"
local tmp="$2"
if [[ -z "${env}" ]]; then
# No auth sock; remove symlink, if any.
rm -f -- "${tmp}"
elif [[ "${env}" != "${tmp}" ]]; then
# Construct expected symlink to point to auth sock.
ln -snf -- "${env}" "${tmp}"
fi
}
# Get invocation, stx or mtx
zero="$0"
invocation=$(basename "$zero")
case "$invocation" in
tmux_control)
declare -a tmux_links
tmux_links=( stx mtx sx mx tls )
for link in "${tmux_links[@]}"; do
if [[ ! -h "${HOME}/bin/${link}" ]]; then
ln -s "${HOME}/bin/tmux_control" "${HOME}/bin/${link}"
fi
done
echo 'stx or sx for inner sessions; mtx or mx for outer sessions, tls to list all sessions' >&2
exit 1
;;
sx)
socket="tmux_${USER}_stx"
tmux -L "${socket}" "$@"
exit $?
;;
mx)
socket="tmux_${USER}_mtx"
tmux -L "${socket}" "$@"
exit $?
;;
tls)
declare -a sockets
readarray -d '' sockets < <(find "/tmp/tmux-$(id -u)" -maxdepth 1 -type s -print0)
for socket in ${sockets[*]}; do
printf '%s\n' "$socket"
tmux -L "${socket}" list-sessions | sed 's/^/ /'
done
exit 0
esac
socket="tmux_${USER}_${invocation}"
style="inner"
if [[ "${invocation}" == mtx ]]; then
style="outer"
fi
config="${HOME}/.tmux.conf_${style}"
session_name="default"
if [[ -n $1 ]]; then
session_name="$1"
fi
if [[ "$1" == "test" ]]; then
echo "invocation: ${invocation}"
echo "config: ${config}"
echo "session: ${session_name}"
exit 0
fi
if [[ ! -f "${config}" ]]; then
echo "Didn't find ${config}" >&2
exit 1
fi
# Make the temp directory if it doesn't exist
home_sock_folder="${HOME}/.tmp"
if ! [ -d "${home_sock_folder}" ]; then
mkdir -m 700 "${home_sock_folder}"
fi
# Symlinks to sockets that might change out from under tmux
if [[ -z "${TMUX}" ]] || [[ "$style" == "inner" && "$TMUX" =~ mtx ]]; then
ssh_auth_sock_symlink="${home_sock_folder}/ssh_auth_sock"
fwd_ssh_sock_symlink="${home_sock_folder}/fwd_ssh_auth_sock"
sway_sock_symlink="${home_sock_folder}/sway_sock"
i3_sock_symlink="${home_sock_folder}/i3_sock"
link_or_rm "${SSH_AUTH_SOCK}" "${ssh_auth_sock_symlink}"
link_or_rm "${FWD_SSH_AUTH_SOCK}" "${fwd_ssh_sock_symlink}"
# SWAYSOCK == I3SOCK, probably some Xwayland compatability thing
link_or_rm "${SWAYSOCK}" "${sway_sock_symlink}"
link_or_rm "${SWAYSOCK}" "${i3_sock_symlink}"
# See if there are any sessions on this socket
echo running: tmux -L "${socket}" list-sessions
tmux -L "${socket}" list-sessions
echo results: $?
if [[ $? != 0 ]]; then
# No tmux session @ $socket
exec env \
I3SOCK="${i3_sock_symlink}" \
SWAYSOCK="${sway_sock_symlink}" \
SSH_AUTH_SOCK="${ssh_auth_sock_symlink}" \
FWD_SSH_AUTH_SOCK="${f}" \
tmux -f "${config}" -L "${socket}" ${args} new-session -s "${session_name}"
elif tmux -L "${socket}" list-sessions 2>/dev/null | grep "^${session_name}:" &>/dev/null; then
# A named session exists
exec env \
I3SOCK="${i3_sock_symlink}" \
SWAYSOCK="${sway_sock_symlink}" \
SSH_AUTH_SOCK="${ssh_auth_sock_symlink}" \
FWD_SSH_AUTH_SOCK="${f}" \
tmux -f "${config}" -L "${socket}" ${args} attach -t "${session_name}"
else
# Some session lives at that socket but it's a different name than is given
exec env \
I3SOCK="${i3_sock_symlink}" \
SWAYSOCK="${sway_sock_symlink}" \
SSH_AUTH_SOCK="${ssh_auth_sock_symlink}" \
FWD_SSH_AUTH_SOCK="${f}" \
tmux -f "${config}" -L "${socket}" ${args} new-session -s "${session_name}"
fi
else
echo "Already in a tmux session. Giving up."
exit 1
fi