aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--alacritty.yml508
-rw-r--r--alacritty/alacritty.yml42
-rw-r--r--alacritty/colors.yml60
-rw-r--r--alacritty/fonts.yml13
-rw-r--r--bash/env.sh1
-rw-r--r--install.conf.yaml2
-rwxr-xr-xscripts/discord-relay.sh2
-rwxr-xr-xscripts/mkln.sh10
-rwxr-xr-xscripts/socket-relay.sh217
-rw-r--r--tmux.conf39
-rwxr-xr-xwsl.install9
-rwxr-xr-xwsl/gpg.sh77
-rw-r--r--wsl/wsl.sh7
-rw-r--r--zsh/keybindings.zsh10
14 files changed, 427 insertions, 570 deletions
diff --git a/alacritty.yml b/alacritty.yml
deleted file mode 100644
index 4338dce..0000000
--- a/alacritty.yml
+++ /dev/null
@@ -1,508 +0,0 @@
-# Configuration for Alacritty, the GPU enhanced terminal emulator.
-
-# Import additional configuration files
-#
-# Imports are loaded in order, skipping all missing files, with the importing
-# file being loaded last. If a field is already present in a previous import, it
-# will be replaced.
-#
-# All imports must either be absolute paths starting with `/`, or paths relative
-# to the user's home directory starting with `~/`.
-#import:
-# - /path/to/alacritty.yml
-
-# Any items in the `env` entry below will be added as
-# environment variables. Some entries may override variables
-# set by alacritty itself.
-env:
- # TERM variable
- #
- # This value is used to set the `$TERM` environment variable for
- # each instance of Alacritty. If it is not present, alacritty will
- # check the local terminfo database and use `alacritty` if it is
- # available, otherwise `xterm-256color` is used.
- TERM: alacritty
-
-window:
- # Window dimensions (changes require restart)
- #
- # Number of lines/columns (not pixels) in the terminal. The number of columns
- # must be at least `2`, while using a value of `0` for columns and lines will
- # fall back to the window manager's recommended size.
- dimensions:
- columns: 120
- lines: 40
-
- # Spread additional padding evenly around the terminal content.
- dynamic_padding: false
-
- # Window decorations
- #
- # Values for `decorations`:
- # - full: Borders and title bar
- # - none: Neither borders nor title bar
- #
- # Values for `decorations` (macOS only):
- # - transparent: Title bar, transparent background and title bar buttons
- # - buttonless: Title bar, transparent background and no title bar buttons
- decorations: full
-
- # Background opacity
- #
- # Window opacity as a floating point number from `0.0` to `1.0`.
- # The value `0.0` is completely transparent and `1.0` is opaque.
- #opacity: 1.0
-
- # Startup Mode (changes require restart)
- #
- # Values for `startup_mode`:
- # - Windowed
- # - Maximized
- # - Fullscreen
- #
- # Values for `startup_mode` (macOS only):
- # - SimpleFullscreen
- startup_mode: Fullscreen
-
- # Window title
- title:
- Alacritty
-
- # Allow terminal applications to change Alacritty's window title.
- # dynamic_title: true
-
-scrolling:
- # Maximum number of lines in the scrollback buffer.
- # Specifying '0' will disable scrolling.
- history: 10000
-
- # Scrolling distance multiplier.
- multiplier: 3
-
-# Font configuration
-font:
- normal:
- family: FiraCode NF
- style: Regular
- bold:
- family: FiraCode NF
- style: Bold
- italic:
- family: FiraCode NF
- style: Italic
- bold_italic:
- family: FiraCode NF
- style: Bold Italic
-
-selection:
- # This string contains all characters that are used as separators for
- # "semantic words" in Alacritty.
- semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
-
- # When set to `true`, selected text will be copied to the primary clipboard.
- save_to_clipboard: false
-
-cursor:
- # Cursor blinking state
- #
- # Values for `blinking`:
- # - Never: Prevent the cursor from ever blinking
- # - Off: Disable blinking by default
- # - On: Enable blinking by default
- # - Always: Force the cursor to always blink
- blinking: On
-
-# Live config reload (changes require restart)
-live_config_reload: true
-
-# Shell
-#
-# You can set `shell.program` to the path of your favorite shell, e.g.
-# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the
-# shell.
-#
-# Default:
-# - (macOS) /bin/bash --login
-# - (Linux/BSD) user login shell
-# - (Windows) powershell
-shell:
- program: C:\WINDOWS\system32\wsl.exe
- args:
- - -e
- - '/bin/zsh -lc "tmux new -As main"'
-
-# Startup directory
-#
-# Directory the shell is started in. If this is unset, or `None`, the working
-# directory of the parent process will be used.
-working_directory: '\\wsl$\Debian\home\tobyv'
-
-# Mouse bindings
-#
-# Mouse bindings are specified as a list of objects, much like the key
-# bindings further below.
-#
-# To trigger mouse bindings when an application running within Alacritty
-# captures the mouse, the `Shift` modifier is automatically added as a
-# requirement.
-#
-# Each mouse binding will specify a:
-#
-# - `mouse`:
-#
-# - Middle
-# - Left
-# - Right
-# - Numeric identifier such as `5`
-#
-# - `action` (see key bindings for actions not exclusive to mouse mode)
-#
-# - Mouse exclusive actions:
-#
-# - ExpandSelection
-# Expand the selection to the current mouse cursor location.
-#
-# And optionally:
-#
-# - `mods` (see key bindings)
-#mouse_bindings:
-# - { mouse: Right, action: ExpandSelection }
-# - { mouse: Middle, mode: ~Vi, action: PasteSelection }
-
-# Key bindings
-#
-# Key bindings are specified as a list of objects. For example, this is the
-# default paste binding:
-#
-# `- { key: V, mods: Control|Shift, action: Paste }`
-#
-# Each key binding will specify a:
-#
-# - `key`: Identifier of the key pressed
-#
-# - A-Z
-# - F1-F24
-# - Key0-Key9
-#
-# A full list with available key codes can be found here:
-# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
-#
-# Instead of using the name of the keys, the `key` field also supports using
-# the scancode of the desired key. Scancodes have to be specified as a
-# decimal number. This command will allow you to display the hex scancodes
-# for certain keys:
-#
-# `showkey --scancodes`.
-#
-# Then exactly one of:
-#
-# - `chars`: Send a byte sequence to the running application
-#
-# The `chars` field writes the specified string to the terminal. This makes
-# it possible to pass escape sequences. To find escape codes for bindings
-# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
-# of tmux. Note that applications use terminfo to map escape sequences back
-# to keys. It is therefore required to update the terminfo when changing an
-# escape sequence.
-#
-# - `action`: Execute a predefined action
-#
-# - ToggleViMode
-# - SearchForward
-# Start searching toward the right of the search origin.
-# - SearchBackward
-# Start searching toward the left of the search origin.
-# - Copy
-# - Paste
-# - IncreaseFontSize
-# - DecreaseFontSize
-# - ResetFontSize
-# - ScrollPageUp
-# - ScrollPageDown
-# - ScrollHalfPageUp
-# - ScrollHalfPageDown
-# - ScrollLineUp
-# - ScrollLineDown
-# - ScrollToTop
-# - ScrollToBottom
-# - ClearHistory
-# Remove the terminal's scrollback history.
-# - Hide
-# Hide the Alacritty window.
-# - Minimize
-# Minimize the Alacritty window.
-# - Quit
-# Quit Alacritty.
-# - ToggleFullscreen
-# - SpawnNewInstance
-# Spawn a new instance of Alacritty.
-# - CreateNewWindow
-# Create a new Alacritty window from the current process.
-# - ClearLogNotice
-# Clear Alacritty's UI warning and error notice.
-# - ClearSelection
-# Remove the active selection.
-# - ReceiveChar
-# - None
-#
-# - Vi mode exclusive actions:
-#
-# - Open
-# Perform the action of the first matching hint under the vi mode cursor
-# with `mouse.enabled` set to `true`.
-# - ToggleNormalSelection
-# - ToggleLineSelection
-# - ToggleBlockSelection
-# - ToggleSemanticSelection
-# Toggle semantic selection based on `selection.semantic_escape_chars`.
-#
-# - Vi mode exclusive cursor motion actions:
-#
-# - Up
-# One line up.
-# - Down
-# One line down.
-# - Left
-# One character left.
-# - Right
-# One character right.
-# - First
-# First column, or beginning of the line when already at the first column.
-# - Last
-# Last column, or beginning of the line when already at the last column.
-# - FirstOccupied
-# First non-empty cell in this terminal row, or first non-empty cell of
-# the line when already at the first cell of the row.
-# - High
-# Top of the screen.
-# - Middle
-# Center of the screen.
-# - Low
-# Bottom of the screen.
-# - SemanticLeft
-# Start of the previous semantically separated word.
-# - SemanticRight
-# Start of the next semantically separated word.
-# - SemanticLeftEnd
-# End of the previous semantically separated word.
-# - SemanticRightEnd
-# End of the next semantically separated word.
-# - WordLeft
-# Start of the previous whitespace separated word.
-# - WordRight
-# Start of the next whitespace separated word.
-# - WordLeftEnd
-# End of the previous whitespace separated word.
-# - WordRightEnd
-# End of the next whitespace separated word.
-# - Bracket
-# Character matching the bracket at the cursor's location.
-# - SearchNext
-# Beginning of the next match.
-# - SearchPrevious
-# Beginning of the previous match.
-# - SearchStart
-# Start of the match to the left of the vi mode cursor.
-# - SearchEnd
-# End of the match to the right of the vi mode cursor.
-#
-# - Search mode exclusive actions:
-# - SearchFocusNext
-# Move the focus to the next search match.
-# - SearchFocusPrevious
-# Move the focus to the previous search match.
-# - SearchConfirm
-# - SearchCancel
-# - SearchClear
-# Reset the search regex.
-# - SearchDeleteWord
-# Delete the last word in the search regex.
-# - SearchHistoryPrevious
-# Go to the previous regex in the search history.
-# - SearchHistoryNext
-# Go to the next regex in the search history.
-#
-# - macOS exclusive actions:
-# - ToggleSimpleFullscreen
-# Enter fullscreen without occupying another space.
-#
-# - Linux/BSD exclusive actions:
-#
-# - CopySelection
-# Copy from the selection buffer.
-# - PasteSelection
-# Paste from the selection buffer.
-#
-# - `command`: Fork and execute a specified command plus arguments
-#
-# The `command` field must be a map containing a `program` string and an
-# `args` array of command line parameter strings. For example:
-# `{ program: "alacritty", args: ["-e", "vttest"] }`
-#
-# And optionally:
-#
-# - `mods`: Key modifiers to filter binding actions
-#
-# - Command
-# - Control
-# - Option
-# - Super
-# - Shift
-# - Alt
-#
-# Multiple `mods` can be combined using `|` like this:
-# `mods: Control|Shift`.
-# Whitespace and capitalization are relevant and must match the example.
-#
-# - `mode`: Indicate a binding for only specific terminal reported modes
-#
-# This is mainly used to send applications the correct escape sequences
-# when in different modes.
-#
-# - AppCursor
-# - AppKeypad
-# - Search
-# - Alt
-# - Vi
-#
-# A `~` operator can be used before a mode to apply the binding whenever
-# the mode is *not* active, e.g. `~Alt`.
-#
-# Bindings are always filled by default, but will be replaced when a new
-# binding with the same triggers is defined. To unset a default binding, it can
-# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
-# a no-op if you do not wish to receive input characters for that binding.
-#
-# If the same trigger is assigned to multiple actions, all of them are executed
-# in the order they were defined in.
-key_bindings:
- - { key: Space, mods: Control, chars: "\x00" }
- #- { key: Paste, action: Paste }
- #- { key: Copy, action: Copy }
- #- { key: L, mods: Control, action: ClearLogNotice }
- #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" }
- #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, }
- #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown }
- #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, }
- #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
-
- # Vi Mode
- #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
- #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
- #- { key: Escape, mode: Vi|~Search, action: ClearSelection }
- #- { key: I, mode: Vi|~Search, action: ToggleViMode }
- #- { key: I, mode: Vi|~Search, action: ScrollToBottom }
- #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
- #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
- #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
- #- { key: G, mode: Vi|~Search, action: ScrollToTop }
- #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom }
- #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp }
- #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown }
- #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp }
- #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown }
- #- { key: Y, mode: Vi|~Search, action: Copy }
- #- { key: Y, mode: Vi|~Search, action: ClearSelection }
- #- { key: Copy, mode: Vi|~Search, action: ClearSelection }
- #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection }
- #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection }
- #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection }
- #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection }
- #- { key: Return, mode: Vi|~Search, action: Open }
- #- { key: K, mode: Vi|~Search, action: Up }
- #- { key: J, mode: Vi|~Search, action: Down }
- #- { key: H, mode: Vi|~Search, action: Left }
- #- { key: L, mode: Vi|~Search, action: Right }
- #- { key: Up, mode: Vi|~Search, action: Up }
- #- { key: Down, mode: Vi|~Search, action: Down }
- #- { key: Left, mode: Vi|~Search, action: Left }
- #- { key: Right, mode: Vi|~Search, action: Right }
- #- { key: Key0, mode: Vi|~Search, action: First }
- #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last }
- #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied }
- #- { key: H, mods: Shift, mode: Vi|~Search, action: High }
- #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle }
- #- { key: L, mods: Shift, mode: Vi|~Search, action: Low }
- #- { key: B, mode: Vi|~Search, action: SemanticLeft }
- #- { key: W, mode: Vi|~Search, action: SemanticRight }
- #- { key: E, mode: Vi|~Search, action: SemanticRightEnd }
- #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft }
- #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight }
- #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd }
- #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket }
- #- { key: Slash, mode: Vi|~Search, action: SearchForward }
- #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward }
- #- { key: N, mode: Vi|~Search, action: SearchNext }
- #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious }
-
- # Search Mode
- #- { key: Return, mode: Search|Vi, action: SearchConfirm }
- #- { key: Escape, mode: Search, action: SearchCancel }
- #- { key: C, mods: Control, mode: Search, action: SearchCancel }
- #- { key: U, mods: Control, mode: Search, action: SearchClear }
- #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord }
- #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious }
- #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext }
- #- { key: Up, mode: Search, action: SearchHistoryPrevious }
- #- { key: Down, mode: Search, action: SearchHistoryNext }
- #- { key: Return, mode: Search|~Vi, action: SearchFocusNext }
- #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious }
-
- # (Windows, Linux, and BSD only)
- #- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
- #- { key: C, mods: Control|Shift, action: Copy }
- - { key: F, mods: Control|Shift, mode: ~Search, action: ReceiveChar }
- #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
- #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection }
- #- { key: Insert, mods: Shift, action: PasteSelection }
- #- { key: Key0, mods: Control, action: ResetFontSize }
- #- { key: Equals, mods: Control, action: IncreaseFontSize }
- #- { key: Plus, mods: Control, action: IncreaseFontSize }
- #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
- #- { key: Minus, mods: Control, action: DecreaseFontSize }
- #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
-
- # (Windows only)
- #- { key: Return, mods: Alt, action: ToggleFullscreen }
-
- # (macOS only)
- #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
- #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
- #- { key: Key0, mods: Command, action: ResetFontSize }
- #- { key: Equals, mods: Command, action: IncreaseFontSize }
- #- { key: Plus, mods: Command, action: IncreaseFontSize }
- #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
- #- { key: Minus, mods: Command, action: DecreaseFontSize }
- #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
- #- { key: V, mods: Command, action: Paste }
- #- { key: C, mods: Command, action: Copy }
- #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
- #- { key: H, mods: Command, action: Hide }
- #- { key: H, mods: Command|Alt, action: HideOtherApplications }
- #- { key: M, mods: Command, action: Minimize }
- #- { key: Q, mods: Command, action: Quit }
- #- { key: W, mods: Command, action: Quit }
- #- { key: N, mods: Command, action: SpawnNewInstance }
- #- { key: F, mods: Command|Control, action: ToggleFullscreen }
- #- { key: F, mods: Command, mode: ~Search, action: SearchForward }
- #- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
-#debug:
-# Display the time it takes to redraw each frame.
-#render_timer: false
-
-# Keep the log file after quitting Alacritty.
-#persistent_logging: false
-
-# Log level
-#
-# Values for `log_level`:
-# - Off
-# - Error
-# - Warn
-# - Info
-# - Debug
-# - Trace
-#log_level: Warn
-
-# Print all received window events.
-#print_events: false
diff --git a/alacritty/alacritty.yml b/alacritty/alacritty.yml
new file mode 100644
index 0000000..eb4b59a
--- /dev/null
+++ b/alacritty/alacritty.yml
@@ -0,0 +1,42 @@
+import:
+ - ~/.config/alacritty/colors.yml
+ - ~/.config/alacritty/fonts.yml
+ - ~/AppData/Roaming/alacritty/colors.yml
+ - ~/AppData/Roaming/alacritty/fonts.yml
+
+env:
+ TERM: alacritty
+
+window:
+ dimensions:
+ columns: 120
+ lines: 40
+ dynamic_padding: false
+ decorations: full
+ title: Alacritty
+
+scrolling:
+ history: 10000
+ multiplier: 3
+
+selection:
+ semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
+ save_to_clipboard: false
+
+cursor:
+ blinking: On
+
+live_config_reload: true
+
+shell:
+ program: C:\WINDOWS\system32\wsl.exe
+ args:
+ - -e
+ - '/bin/zsh -lc "tmux new -As main"'
+
+working_directory: '\\wsl$\Debian\home\tobyv'
+
+key_bindings:
+ - { key: Space, mods: Control, chars: "\x00" }
+ - { key: T, mods: Control|Shift, action: CreateNewWindow }
+ - { key: F, mods: Control|Shift, mode: ~Search, action: ReceiveChar }
diff --git a/alacritty/colors.yml b/alacritty/colors.yml
new file mode 100644
index 0000000..dbfcd0e
--- /dev/null
+++ b/alacritty/colors.yml
@@ -0,0 +1,60 @@
+schemes:
+ codelight: &light
+ primary:
+ background: '#ffffff'
+ foreground: '#1e1e1e'
+
+ cursor:
+ text: '#d4d4d4'
+ cursor: '#d4d4d4'
+
+ normal:
+ black: '#1e1e1e'
+ red: '#c72e0f'
+ green: '#009000'
+ yellow: '#795e25'
+ blue: '#007acc'
+ magenta: '#af00db'
+ cyan: '#56b6c2'
+ white: '#d4d4d4'
+
+ bright:
+ black: '#1e1e1e'
+ red: '#c72e0f'
+ green: '#009000'
+ yellow: '#795e25'
+ blue: '#007acc'
+ magenta: '#af00db'
+ cyan: '#56b6c2'
+ white: '#d4d4d4'
+
+ codedark: &dark
+ primary:
+ background: '#1e1e1e'
+ foreground: '#d4d4d4'
+
+ cursor:
+ text: '#d4d4d4'
+ cursor: '#d4d4d4'
+
+ normal:
+ black: '#1e1e1e'
+ red: '#f44747'
+ green: '#608b4e'
+ yellow: '#dcdcaa'
+ blue: '#569cd6'
+ magenta: '#c678dd'
+ cyan: '#56b6c2'
+ white: '#d4d4d4'
+
+ bright:
+ black: '#545454'
+ red: '#f44747'
+ green: '#608b4e'
+ yellow: '#dcdcaa'
+ blue: '#569cd6'
+ magenta: '#c678dd'
+ cyan: '#56b6c2'
+ white: '#d4d4d4'
+
+colors: *dark \ No newline at end of file
diff --git a/alacritty/fonts.yml b/alacritty/fonts.yml
new file mode 100644
index 0000000..70c9b2e
--- /dev/null
+++ b/alacritty/fonts.yml
@@ -0,0 +1,13 @@
+font:
+ normal:
+ family: FiraCode NF
+ style: Regular
+ bold:
+ family: FiraCode NF
+ style: Bold
+ italic:
+ family: FiraCode NF
+ style: Italic
+ bold_italic:
+ family: FiraCode NF
+ style: Bold Italic
diff --git a/bash/env.sh b/bash/env.sh
index 3bc6dbd..725e07c 100644
--- a/bash/env.sh
+++ b/bash/env.sh
@@ -8,6 +8,7 @@ export MANROFFOPT="-c"
export STARSHIP_LOG="error"
export FZF_PREVIEW_COMMAND="bat --style=numbers,changes --wrap never --color always {} || cat {} || tree -C {}"
export FZF_CTRL_T_OPTS="--min-height 30 --preview-window down:60% --preview-window noborder --preview '($FZF_PREVIEW_COMMAND) 2> /dev/null'"
+export GOPATH=$HOME/.go
export PATH=$PATH:$HOME/dotfiles/bin
export PATH=$PATH:$HOME/.local/bin
diff --git a/install.conf.yaml b/install.conf.yaml
index 6c738e1..748ad54 100644
--- a/install.conf.yaml
+++ b/install.conf.yaml
@@ -154,7 +154,7 @@
path: wsl/*
~/.config/starship.toml: starship.toml
- ~/.config/alacritty.yml: alacritty.yml
+ ~/.config/alacritty: alacritty
~/.config/bat/config: bat.conf
~/.gitconfig:
~/.ssh/config: ssh/config
diff --git a/scripts/discord-relay.sh b/scripts/discord-relay.sh
new file mode 100755
index 0000000..3932908
--- /dev/null
+++ b/scripts/discord-relay.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec socat UNIX-LISTEN:/var/run/discord-ipc-0,fork,group=discord,umask=007 EXEC:"npiperelay.exe -ep -s //./pipe/discord-ipc-0",nofork >/dev/null 2>&1
diff --git a/scripts/mkln.sh b/scripts/mkln.sh
index 2e5a54b..ef174c2 100755
--- a/scripts/mkln.sh
+++ b/scripts/mkln.sh
@@ -74,8 +74,8 @@ fi
[ "$VERBOSE" == true ] && echo "linking $2 -> $1"
if [ -d "$1" ]; then
- [ "$VERBOSE" == true ] && echo "$1 is a directory. Creating junction."
- args='/J'
+ [ "$VERBOSE" == true ] && echo "$1 is a directory. Creating symbolic link."
+ args='/D'
fi
mkdir -p $(dirname $2)
@@ -107,5 +107,9 @@ cmd="cd ~; cmd /c mklink ${args} ${target} ${source}"
if [ "$DEBUG" == true ]; then
[ "$QUIET" != true ] && printf '\nCommand: \n%s\n\n' "powershell.exe -c ${cmd} &>/dev/null"
else
- powershell.exe -c "${cmd}" &>/dev/null
+ if $QUIET; then
+ powershell.exe -c "${cmd}" &>/dev/null
+ else
+ powershell.exe -c "${cmd}"
+ fi
fi
diff --git a/scripts/socket-relay.sh b/scripts/socket-relay.sh
new file mode 100755
index 0000000..436fa54
--- /dev/null
+++ b/scripts/socket-relay.sh
@@ -0,0 +1,217 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+OPTS=$(getopt -o hds:x: --long help,debug,sock:,exec:,ssh,gpg,gpg-extra,discord -n 'javawrap' -- "$@")
+
+eval set -- "$OPTS"
+
+PAGEANT="$HOME/.ssh/wsl2-ssh-pageant.exe"
+NPIPE="$(command -v npiperelay.exe)"
+SCRIPT="$(basename "$0")"
+
+help() {
+ cat <<-EOF
+$SCRIPT
+Toby Vincent <tobyv13@gmail.com>
+
+$SCRIPT description
+
+USAGE:
+ $SCRIPT [OPTIONS] <COMMAND>
+ $SCRIPT [OPTIONS]
+
+OPTIONS:
+ -h, --help Display this message
+ -s, --sock <SOCKET> Path to the linux socket
+ -x, --exec <CMD> Command to run for socat's EXEC: arg
+ --ssh Relay the ssh agent's socket
+ --gpg Relay the gpg agent's socket
+ --gpg-extra Relay the gpg agent's extra socket
+
+ARGS:
+ start (default)
+ Start the socat process
+
+ stop
+ Kill the socat process
+EOF
+}
+
+say() {
+ if ! $quiet; then
+ echo "$SCRIPT: $1"
+ fi
+}
+
+say_err() {
+ say "$1" >&2
+}
+
+err() {
+ say_err "ERROR: $1"
+ exit 1
+}
+
+need() {
+ for cmd in $@; do
+ if ! command -v $cmd >/dev/null 2>&1; then
+ err "need $cmd (command not found)"
+ fi
+ done
+}
+
+start() {
+ if ! ss -a | grep -q "$sock"; then
+ if test -x "$relay"; then
+ rm -rf "$sock"
+ (setsid nohup socat UNIX-LISTEN:"${sock},${listen_args}" EXEC:"$cmd" >/dev/null 2>&1 &)
+
+ else
+ echo >&2 "WARNING: $relay is not executable."
+ fi
+ fi
+
+ if $gpg; then
+ gpg-connect-agent.exe /bye &>/dev/null
+ fi
+}
+
+stop() {
+ if $gpg; then
+ gpg-connect-agent.exe KILLAGENT /bye &>/dev/null
+ fi
+
+ if pgrep -f "socat.*$sock.*$relay" &>/dev/null; then
+ pkill -f "socat.*$sock.*$relay"
+ fi
+}
+
+check() {
+ pgrep -fa "socat.*$sock.*$relay"
+}
+
+quiet=false
+debug=false
+sock=""
+cmd=""
+gpg=false
+ssh=false
+extra=false
+discord=false
+while test $# -gt 0; do
+ case $1 in
+ -h | --help)
+ help
+ return 0
+ ;;
+ -q | --quiet)
+ quiet=true
+ shift
+ ;;
+ -d | --debug)
+ debug=true
+ shift
+ ;;
+ -s | --sock)
+ sock=$2
+ shift
+ shift
+ ;;
+ -x | --exec)
+ cmd=$2
+ shift
+ shift
+ ;;
+ --ssh)
+ ssh=true
+ shift
+ ;;
+ --gpg)
+ gpg=true
+ shift
+ ;;
+ --gpg-extra)
+ gpg=true
+ extra=true
+ shift
+ ;;
+ --discord)
+ discord=true
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ *)
+ help
+ exit 1
+ ;;
+ esac
+done
+
+need ss
+need socat
+
+listen_args="fork"
+
+case true in
+$ssh)
+ need $PAGEANT
+
+ sock="${SSH_AUTH_SOCK:-$HOME/.ssh/agent.sock}"
+ cmd="$PAGEANT"
+ ;;
+$gpg)
+ need $PAGEANT
+ need "gpg-connect-agent.exe"
+
+ sock="${GPG_AGENT_SOCK:-$HOME/.gnupg/S.gpg-agent}"
+ if $extra; then
+ sock+=".extra"
+ fi
+
+ cmd="$PAGEANT --gpg $(basename $sock)"
+ ;;
+$discord)
+ need $NPIPE
+
+ sock="${DISCORD_IPC_SOCK:-/var/run/discord-ipc-0}"
+ cmd="$NPIPE -ep -s //./pipe/$(basename $sock)"
+
+ listen_args="fork,group=discord,umask=007"
+ ;;
+$(test -z "${cmd}"))
+ err "No EXEC provided. Must supply either --ssh, --gpg, --gpg-extra, --pipe, or --exec"
+ ;;
+esac
+
+if test -z "${sock}"; then
+ err "No socket provided."
+fi
+
+relay="$(echo $cmd | head -n1 | awk '{print $1;}')"
+
+case ${1:-'start'} in
+check)
+ shift
+ check
+ ;;
+start)
+ shift
+ start
+ ;;
+stop)
+ shift
+ stop
+ ;;
+restart)
+ shift
+ stop
+ start
+ ;;
+*)
+ help
+ exit 1
+ ;;
+esac
diff --git a/tmux.conf b/tmux.conf
index 310d4ce..235c09b 100644
--- a/tmux.conf
+++ b/tmux.conf
@@ -1,44 +1,27 @@
set -g mouse on
-
+set -g base-index 1
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",alacritty:Tc"
-set-option -sg escape-time 10
-set-option -g focus-events on
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
-set -g status-style 'bg=#333333 fg=#5eacd3'
-
-bind r source-file ~/.tmux.conf
-set -g base-index 1
set-window-option -g mode-keys vi
-bind -T copy-mode-vi v send-keys -X begin-selection
-bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
-bind | split-window -h
-bind \ split-window -v
unbind '"'
unbind %
-# vim-like pane switching
-bind -r ^ last-window
-bind -r k select-pane -U
-bind -r j select-pane -D
-bind -r h select-pane -L
-bind -r l select-pane -R
+# forget the find window. That is for chumps
+bind-key f run-shell "tmux neww ~/.local/bin/tmux-sessionizer"
-bind -r D neww -c "#{pane_current_path}" "[[ -e TODO.md ]] && nvim TODO.md || nvim ~/.todo.md"
+# Plugins
+set -g @plugin 'tmux-plugins/tpm'
+set -g @plugin 'tmux-plugins/tmux-sensible'
+set -g @plugin 'tmux-plugins/tmux-yank'
+set -g @plugin 'tmux-plugins/tmux-pain-control'
-# forget the find window. That is for chumps
-bind-key -r f run-shell "tmux neww ~/.local/bin/tmux-sessionizer"
+if "test ! -d ~/.tmux/plugins/tpm" \
+ "run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
-bind-key -r i run-shell "tmux neww tmux-cht.sh"
-# bind-key -r G run-shell "~/.local/bin/tmux-sessionizer ~/work/nrdp"
-# bind-key -r C run-shell "~/.local/bin/tmux-sessionizer ~/work/tvui"
-# bind-key -r R run-shell "~/.local/bin/tmux-sessionizer ~/work/milo"
-# bind-key -r H run-shell "~/.local/bin/tmux-sessionizer ~/personal/vim-with-me"
-# bind-key -r T run-shell "~/.local/bin/tmux-sessionizer ~/personal/refactoring.nvim"
-# bind-key -r N run-shell "~/.local/bin/tmux-sessionizer ~/personal/harpoon"
-# bind-key -r S run-shell "~/.local/bin/tmux-sessionizer ~/personal/developer-productivity"
+run '~/.tmux/plugins/tpm/tpm'
diff --git a/wsl.install b/wsl.install
index 0438bb7..7c199f3 100755
--- a/wsl.install
+++ b/wsl.install
@@ -40,15 +40,22 @@ sed -r 's|(RemoteForward\s+.+\s+)\/home\/tobyv\/\.gnupg\/S\.gpg-agent\.extra|\11
# Create windows symlinks to dotfiles
$mkln $@ "gitconfig" "${WINHOME}/.gitconfig"
$mkln $@ "gnupg/gpg.conf" "${WINHOME}/AppData/Roaming/gnupg/gpg.conf"
-$mkln $@ "alacritty.yml" "${WINHOME}/AppData/Roaming/alacritty/alacritty.yml"
+$mkln $@ "alacritty" "${WINHOME}/AppData/Roaming/alacritty"
$mkln $@ "gnupg/gpg-agent.conf" "${WINHOME}/AppData/Roaming/gnupg/gpg-agent.conf"
$mkln $@ "gnupg/scdaemon.conf" "${WINHOME}/AppData/Roaming/gnupg/scdaemon.conf"
$mkln $@ "wt.json" "${WINHOME}/AppData/Local/Packages/Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe/LocalState/settings.json"
$mkln $@ "winget.json" "${WINHOME}/AppData/Local/Packages/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe/LocalState/settings.json"
+# install xclip/xsel
+curl -sL "https://raw.githubusercontent.com/Konfekt/win-bash-xclip-xsel/master/clip.sh" >"${HOME}/.local/bin/xclip"
+curl -sL "https://raw.githubusercontent.com/Konfekt/win-bash-xclip-xsel/master/clip.sh" >"${HOME}/.local/bin/xsel"
+chmod +x "${HOME}/.local/bin/xclip"
+chmod +x "${HOME}/.local/bin/xsel"
+
# install hotkeys.exe
install_dir="${WINHOME}/AppData/Local/Programs/hotkeys"
mkdir -p "${install_dir}"
+rm -f "${install_dir}/hotkeys.exe"
curl -sL "https://github.com/tobyvin/hotkeys/releases/latest/download/hotkeys.exe" >"${install_dir}/hotkeys.exe"
# https://github.com/wslutilities/wslu
diff --git a/wsl/gpg.sh b/wsl/gpg.sh
index e099de4..2404f99 100755
--- a/wsl/gpg.sh
+++ b/wsl/gpg.sh
@@ -7,18 +7,58 @@
# GPG & SSH Socket
# Removing Linux Agent sockets and replace it with wsl2-ssh-pageant socket
+# gpg-init() (
+# if ! ss -a | grep -q "$SSH_AUTH_SOCK"; then
+# rm -f "$SSH_AUTH_SOCK"
+# wsl2_ssh_pageant_bin="$HOME/.ssh/wsl2-ssh-pageant.exe"
+# if test -x "$wsl2_ssh_pageant_bin"; then
+# (setsid nohup socat UNIX-LISTEN:"$SSH_AUTH_SOCK,fork" EXEC:"$wsl2_ssh_pageant_bin" >/dev/null 2>&1 &)
+# else
+# echo >&2 "WARNING: $wsl2_ssh_pageant_bin is not executable."
+# fi
+# unset wsl2_ssh_pageant_bin
+# fi
+
+# if ! ss -a | grep -q "$GPG_AGENT_SOCK"; then
+# rm -rf "$GPG_AGENT_SOCK"
+# wsl2_ssh_pageant_bin="$HOME/.ssh/wsl2-ssh-pageant.exe"
+# if test -x "$wsl2_ssh_pageant_bin"; then
+# (setsid nohup socat UNIX-LISTEN:"$GPG_AGENT_SOCK,fork" EXEC:"$wsl2_ssh_pageant_bin --gpg S.gpg-agent" >/dev/null 2>&1 &)
+# else
+# echo >&2 "WARNING: $wsl2_ssh_pageant_bin is not executable."
+# fi
+# unset wsl2_ssh_pageant_bin
+# fi
+
+# if ! ss -a | grep -q "${GPG_AGENT_SOCK}.extra"; then
+# rm -rf "${GPG_AGENT_SOCK}.extra"
+# wsl2_ssh_pageant_bin="$HOME/.ssh/wsl2-ssh-pageant.exe"
+# if test -x "$wsl2_ssh_pageant_bin"; then
+# (setsid nohup socat UNIX-LISTEN:"${GPG_AGENT_SOCK}.extra,fork" EXEC:"$wsl2_ssh_pageant_bin --gpg S.gpg-agent.extra" >/dev/null 2>&1 &)
+# else
+# echo >&2 "WARNING: $wsl2_ssh_pageant_bin is not executable."
+# fi
+# unset wsl2_ssh_pageant_bin
+# fi
+# )
+
start-pageant() {
local pageant="$HOME/.ssh/wsl2-ssh-pageant.exe"
- local sock=$1
- local cmd="${pageant}"
+ local sock="$1"
+ local cmd="$pageant"
- if echo "$sock" | grep -q "gpg"; then
- cmd+=" --gpg ${sock}"
- fi
+ case "$sock" in
+ *gpg*) cmd+=" --gpg $(basename $sock)" ;;
+ *discord*)
+ pageant="$(command -v npiperelay.exe)"
+ cmd="$pageant -ep -s //./pipe/discord-ipc-0"
+ ;;
+ esac
if ! ss -a | grep -q "$sock"; then
if test -x "$pageant"; then
rm -rf "$sock"
+ # echo "(setsid nohup socat UNIX-LISTEN:\"${sock},fork\" EXEC:\"$cmd\" >/dev/null 2>&1 &)"
(setsid nohup socat UNIX-LISTEN:"${sock},fork" EXEC:"$cmd" >/dev/null 2>&1 &)
else
echo >&2 "WARNING: $pageant is not executable."
@@ -26,19 +66,16 @@ start-pageant() {
fi
}
-start-pageants() {
- sockets=("$SSH_AUTH_SOCK", "$GPG_AGENT_SOCK", "${GPG_AGENT_SOCK}.extra")
- for sock in ${sockets[@]}; do
- start-pageant $sock
- done
-}
-
# Reload
gpg-reset() {
- gpg-connect-agent.exe KILLAGENT /bye &>/dev/null
- pkill -f 'socat.*wsl2-ssh-pageant.exe'
- gpg-connect-agent.exe /bye &>/dev/null
- start-pageants
+ $socket_relay restart --ssh
+ $socket_relay restart --gpg
+ $socket_relay restart --gpg-extra
+}
+
+discord-reset() {
+ sudo pkill -f 'socat.*/var/run/discord-ipc-0.*npiperelay.exe'
+ sudo -b ${HOME}/dotfiles/scripts/discord-relay.sh
}
# Relearn card serial number
@@ -49,4 +86,10 @@ gpg-learn() {
export SSH_AUTH_SOCK="$HOME/.ssh/agent.sock"
export GPG_AGENT_SOCK="$HOME/.gnupg/S.gpg-agent"
-start-pageants
+socket_relay="${HOME}/dotfiles/scripts/socket-relay.sh"
+
+$socket_relay start --ssh
+$socket_relay start --gpg
+$socket_relay start --gpg-extra
+
+sudo -b ${HOME}/dotfiles/scripts/discord-relay.sh
diff --git a/wsl/wsl.sh b/wsl/wsl.sh
index ef04633..b63e914 100644
--- a/wsl/wsl.sh
+++ b/wsl/wsl.sh
@@ -6,7 +6,6 @@ WINHOME="/mnt/c/Users/$USER"
export BROWSER=wslview
export EDITOR="code --wait"
-alias cb=clip.exe
alias wsl=wsl.exe
alias ykman='/mnt/c/Program\ Files/Yubico/YubiKey\ Manager/ykman.exe'
@@ -40,9 +39,9 @@ wsl_cmd_proxy() {
powershell.exe -NoProfile -c 'cd $HOME;' "$exe" "$cmd" "$args"
}
-function winget { wsl_cmd_proxy "winget.exe" "$@"; }
-function scoop { wsl_cmd_proxy "scoop" "$@"; }
-function alacritty { wsl_cmd_proxy "alacritty.exe" "$@"; }
+winget() { wsl_cmd_proxy "winget.exe" "$@"; }
+scoop() { wsl_cmd_proxy "scoop" "$@"; }
+alacritty() { wsl_cmd_proxy "alacritty.exe" "$@"; }
# https://github.com/validatedev/drop-cache-if-idle
[ -z "$(ps -ef | grep cron | grep -v grep)" ] && sudo /etc/init.d/cron start &>/dev/null
diff --git a/zsh/keybindings.zsh b/zsh/keybindings.zsh
index df70112..04118d8 100644
--- a/zsh/keybindings.zsh
+++ b/zsh/keybindings.zsh
@@ -1,11 +1,5 @@
#!/usr/bin/env zsh
-if [ -n "${WSL_DISTRO_NAME+1}" ]; then
- clip=clip.exe
-else
- clip=/dev/null
-fi
-
r-delregion() {
if ((REGION_ACTIVE)) then
zle kill-region
@@ -42,7 +36,7 @@ r-undo() {
r-copy() {
if ((REGION_ACTIVE)) then
zle copy-region-as-kill
- printf "$CUTBUFFER" | $clip
+ printf "$CUTBUFFER" | xclip -i
else
zle kill-whole-line
fi
@@ -54,7 +48,7 @@ r-cut() {
else
zle kill-whole-line
fi
- printf "$CUTBUFFER" | $clip
+ printf "$CUTBUFFER" | xclip -i
}
for key kcap seq mode widget (