mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-27 20:45:31 +00:00
Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3d917454a0 | |||
| 5b34ecfb97 | |||
| 1817cf6962 | |||
| bc914a1c5f | |||
| 48b9df95ab | |||
| 2799e80b2d | |||
|
|
5bbc241ec9 | ||
| 5e00422a28 | |||
|
|
44eacf9261 | ||
| 4f2c1f0b9b | |||
| 0fdc9fd08a | |||
| 65aaa4bec2 | |||
| a8835daede | |||
| 39ddc2ae00 | |||
| 06c2686815 | |||
| b259e4b992 | |||
|
|
47703cd182 | ||
| 6d31371af4 | |||
| c2250ee80c | |||
| a1d075fc0d | |||
| a3cc12aae1 | |||
| 808748a050 | |||
|
|
e29507ee61 | ||
| bd6408b024 | |||
| 45cf9ef2a5 | |||
| 5cc78e14e4 | |||
| 5683809e18 | |||
| 723d40a704 | |||
|
|
55ce79d9d1 |
3
.actrc
Normal file
3
.actrc
Normal file
@@ -0,0 +1,3 @@
|
||||
--container-architecture linux/amd64
|
||||
--env-file .env
|
||||
--secret-file .env
|
||||
@@ -15,6 +15,10 @@ indent_size = 4
|
||||
indent_style = tab
|
||||
indent_size = 1
|
||||
|
||||
[*.plist]
|
||||
indent_size = 1
|
||||
indent_style = tab
|
||||
|
||||
[local/bin/*]
|
||||
shell_variant = bash # --language-variant
|
||||
binary_next_line = true
|
||||
|
||||
35
.github/tag-changelog-config.js
vendored
Normal file
35
.github/tag-changelog-config.js
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
module.exports = {
|
||||
types: [
|
||||
{ types: ['feat', 'feature', 'Feat'], label: '🎉 New Features' },
|
||||
{ types: ['fix', 'bugfix', 'Fix'], label: '🐛 Bugfixes' },
|
||||
{ types: ['improvements', 'enhancement'], label: '🔨 Improvements' },
|
||||
{ types: ['perf'], label: '🏎️ Performance Improvements' },
|
||||
{ types: ['build', 'ci'], label: '🏗️ Build System' },
|
||||
{ types: ['refactor'], label: '🪚 Refactors' },
|
||||
{ types: ['doc', 'docs'], label: '📚 Documentation Changes' },
|
||||
{ types: ['test', 'tests'], label: '🔍 Tests' },
|
||||
{ types: ['style', 'codestyle'], label: '💅 Code Style Changes' },
|
||||
{ types: ['chore', 'Chore'], label: '🧹 Chores' },
|
||||
{ types: ['other', 'Other'], label: 'Other Changes' },
|
||||
],
|
||||
|
||||
excludeTypes: [],
|
||||
|
||||
renderTypeSection: function (label, commits) {
|
||||
let text = `\n## ${ label }\n\n`
|
||||
|
||||
commits.forEach((commit) => {
|
||||
const scope = commit.scope ? `**${ commit.scope }:** ` : ''
|
||||
text += `- ${ scope }${ commit.subject }\n`
|
||||
})
|
||||
|
||||
return text
|
||||
},
|
||||
|
||||
renderChangelog: function (release, changes) {
|
||||
const now = new Date()
|
||||
const d = now.toISOString().substring(0, 10);
|
||||
const header = `# ${ release } - ${ d }\n`;
|
||||
return header + changes + '\n\n'
|
||||
},
|
||||
}
|
||||
23
.github/workflows/changelog.yml
vendored
Normal file
23
.github/workflows/changelog.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
name: Debug Changelog # Workflow name displayed on GitHub
|
||||
|
||||
on:
|
||||
workflow_dispatch: # Trigger manually
|
||||
|
||||
jobs:
|
||||
debug-changelog:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Create changelog text
|
||||
id: changelog
|
||||
uses: loopwerk/tag-changelog@v1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: "Echo results"
|
||||
id: output-changelog
|
||||
run: |
|
||||
echo "${{ steps.changelog.outputs.changes }}"
|
||||
35
.github/workflows/new-release.yml
vendored
35
.github/workflows/new-release.yml
vendored
@@ -18,34 +18,23 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v3 # Checkout our working repository
|
||||
|
||||
- uses: fregante/daily-version-action@v2
|
||||
name: Create tag if necessary
|
||||
- name: Create tag if necessary
|
||||
uses: fregante/daily-version-action@v2
|
||||
id: daily-version
|
||||
|
||||
- name: Conventional Changelog Action
|
||||
- name: Create changelog text
|
||||
if: steps.daily-version.outputs.created
|
||||
id: changelog
|
||||
uses: TriPSs/conventional-changelog-action@v3
|
||||
uses: loopwerk/tag-changelog@v1
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
skip-git-pull: "true"
|
||||
output-file: "false"
|
||||
fallback-version: "${{ steps.daily-version.outputs.version }}"
|
||||
skip-version-file: "true"
|
||||
git-message: "chore(release): {version}"
|
||||
git-user-name: "${{ github.actor }}"
|
||||
git-user-email: "${{ github.actor }}@users.noreply.github.com"
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: Create release
|
||||
if: env.DAILY_VERSION_CREATED
|
||||
uses: actions/github-script@v5.2.0
|
||||
uses: actions/create-release@latest
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
await github.request(
|
||||
`POST /repos/${{ github.repository }}/releases`,
|
||||
{
|
||||
tag_name: "${{ steps.daily-version.outputs.version }}",
|
||||
body: "${{ steps.daily-version.outputs.clean_changelog }}"
|
||||
}
|
||||
);
|
||||
tag_name: ${{ steps.daily-version.outputs.version }}
|
||||
release_name: Release ${{ steps.daily-version.outputs.version }}
|
||||
body: ${{ steps.changelog.outputs.changes }}
|
||||
|
||||
4
.github/workflows/update-submodules.yml
vendored
4
.github/workflows/update-submodules.yml
vendored
@@ -1,6 +1,6 @@
|
||||
name: Update submodules
|
||||
on:
|
||||
schedule: [cron: 0 6 * * 0]
|
||||
schedule: [cron: 0 3 * * *]
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
|
||||
- name: Update submodules
|
||||
run: |
|
||||
if git commit -am"Update submodules (automated)
|
||||
if git commit -am"chore(git): Update submodules (automated)
|
||||
|
||||
$(git submodule --quiet foreach \
|
||||
'tag="$(git describe --tags --abbrev=0 origin/HEAD)"
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -8,4 +8,5 @@ config/fzf
|
||||
config/cheat/cheatsheets/pure-bash-bible/*
|
||||
config/cheat/cheatsheets/tldr/*
|
||||
!.gitkeep
|
||||
.env
|
||||
|
||||
|
||||
43
Brewfile
43
Brewfile
@@ -15,6 +15,9 @@ tap "mongodb/brew"
|
||||
tap "shivammathur/extensions"
|
||||
tap "shivammathur/php"
|
||||
tap "teamookla/speedtest"
|
||||
tap "xwmx/taps"
|
||||
# Run your GitHub Actions locally 🚀
|
||||
brew "act"
|
||||
# Interpreted, interactive, object-oriented programming language
|
||||
brew "python@3.11"
|
||||
# Automate deployment, configuration, and upgrading
|
||||
@@ -61,6 +64,8 @@ brew "curl"
|
||||
brew "difftastic"
|
||||
# Tool for exploring each layer in a docker image
|
||||
brew "dive"
|
||||
# Lightweight DNS forwarder and DHCP server
|
||||
brew "dnsmasq"
|
||||
# Command-line DNS client
|
||||
brew "dog"
|
||||
# Lightning-fast linter for .env files written in Rust
|
||||
@@ -69,6 +74,8 @@ brew "dotenv-linter"
|
||||
brew "editorconfig-checker"
|
||||
# Useful examples at the command-line
|
||||
brew "eg-examples"
|
||||
# Run arbitrary commands when files change
|
||||
brew "entr"
|
||||
# CLI for templating and/or deploying FaaS functions
|
||||
brew "faas-cli"
|
||||
# Simple, fast and user-friendly alternative to find
|
||||
@@ -81,6 +88,8 @@ brew "freetds"
|
||||
brew "fswatch"
|
||||
# Command-line fuzzy finder written in Go
|
||||
brew "fzf"
|
||||
# Graphics library to dynamically manipulate images
|
||||
brew "gd"
|
||||
# Disk usage analyzer with console interface written in Go
|
||||
brew "gdu", link: false
|
||||
# GitHub command-line tool
|
||||
@@ -113,6 +122,8 @@ brew "netpbm"
|
||||
brew "icu4c"
|
||||
# OpenType text shaping engine
|
||||
brew "harfbuzz"
|
||||
# Framework for layout and rendering of i18n text
|
||||
brew "pango"
|
||||
# Library to render SVG files using Cairo
|
||||
brew "librsvg"
|
||||
# Graph visualization software from AT&T and Bell Labs
|
||||
@@ -127,6 +138,10 @@ brew "hadolint"
|
||||
brew "htop"
|
||||
# Website copier/offline browser
|
||||
brew "httrack"
|
||||
# Configurable static site generator
|
||||
brew "hugo"
|
||||
# ISO/IEC 23008-12:2017 HEIF file format decoder and encoder
|
||||
brew "libheif"
|
||||
# Tools and libraries to manipulate images in many formats
|
||||
brew "imagemagick"
|
||||
# Lightweight and flexible command-line JSON processor
|
||||
@@ -149,14 +164,18 @@ brew "mas"
|
||||
brew "midnight-commander"
|
||||
# Ambitious Vim-fork focused on extensibility and agility
|
||||
brew "neovim"
|
||||
# No Nonsense Neovim Client in Rust
|
||||
brew "neovide", link: false
|
||||
# HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
|
||||
brew "nginx"
|
||||
# Port scanning utility for large networks
|
||||
brew "nmap"
|
||||
# Manage multiple Node.js versions
|
||||
brew "nvm"
|
||||
# Development kit for the Java programming language
|
||||
brew "openjdk"
|
||||
# Generate clients, server & docs from an OpenAPI spec (v2, v3)
|
||||
brew "openapi-generator"
|
||||
# Development kit for the Java programming language
|
||||
brew "openjdk"
|
||||
# Swiss-army knife of markup format conversion
|
||||
brew "pandoc"
|
||||
# Highly capable, feature-rich programming language
|
||||
@@ -189,6 +208,10 @@ brew "shfmt"
|
||||
brew "starship"
|
||||
# Version control system designed to be a better CVS
|
||||
brew "subversion"
|
||||
# Feature-rich console based todo list manager
|
||||
brew "task"
|
||||
# Terminal user interface for taskwarrior
|
||||
brew "taskwarrior-tui"
|
||||
# Send macOS User Notifications from the command-line
|
||||
brew "terminal-notifier", link: false
|
||||
# Tool to build, change, and version infrastructure
|
||||
@@ -237,6 +260,8 @@ brew "gesquive/tap/git-user"
|
||||
brew "jesseduffield/lazygit/lazygit"
|
||||
# High-performance, schema-free, document-oriented database
|
||||
brew "mongodb/brew/mongodb-community"
|
||||
# Imagick PHP extension
|
||||
brew "shivammathur/extensions/imagick@8.2"
|
||||
# Xdebug PHP extension
|
||||
brew "shivammathur/extensions/xdebug@7.4"
|
||||
# Xdebug PHP extension
|
||||
@@ -253,10 +278,14 @@ brew "shivammathur/php/php@8.0"
|
||||
brew "teamookla/speedtest/speedtest"
|
||||
# Command-line helper for the 1Password password manager
|
||||
cask "1password-cli"
|
||||
# Turn audio CDs and files into audiobooks
|
||||
cask "audiobook-builder"
|
||||
# Text editor
|
||||
cask "coda"
|
||||
# Universal database tool and SQL client
|
||||
cask "dbeaver-community"
|
||||
# Database version management tool
|
||||
cask "dbngin"
|
||||
# App to build and share containerized applications and microservices
|
||||
cask "docker"
|
||||
# Reimagine your terminal
|
||||
@@ -293,6 +322,8 @@ cask "monofocus"
|
||||
cask "neovide"
|
||||
# Reverse proxy, secure introspectable tunnels to localhost
|
||||
cask "ngrok"
|
||||
# Knowledge base that works on top of a local folder of plain text Markdown files
|
||||
cask "obsidian"
|
||||
# Scheduling application focusing on organization
|
||||
cask "omnifocus"
|
||||
# Collaboration platform for API development
|
||||
@@ -313,6 +344,10 @@ cask "quitter"
|
||||
cask "raycast"
|
||||
# Move and resize windows using keyboard shortcuts or snap areas
|
||||
cask "rectangle"
|
||||
# GUI for rsync
|
||||
cask "rsyncosx"
|
||||
# GUI for rsync
|
||||
cask "rsyncui"
|
||||
# MySQL/MariaDB database management
|
||||
cask "sequel-ace"
|
||||
# Collection of apps available by subscription
|
||||
@@ -338,5 +373,9 @@ cask "whalebird"
|
||||
# View output from scripts in the menu bar
|
||||
cask "xbar"
|
||||
mas "1Password for Safari", id: 1569813296
|
||||
mas "Audiobook Builder", id: 1437681957
|
||||
mas "Flow", id: 1423210932
|
||||
mas "Keynote", id: 409183694
|
||||
mas "Numbers", id: 409203825
|
||||
mas "Pages", id: 409201541
|
||||
mas "Tailscale", id: 1475387142
|
||||
|
||||
@@ -5,4 +5,3 @@ git submodule add --name dotbot-brew -f https://github.com/wren/dotbot-brew.git
|
||||
git submodule add --name dotbot-include -f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
|
||||
git submodule add --name cheat-community -f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
|
||||
git submodule add --name tmux/tpm -f https://github.com/tmux-plugins/tpm.git config/tmux/plugins/tpm
|
||||
|
||||
|
||||
@@ -4,4 +4,9 @@ email = ismo.vuorinen@vincit.fi
|
||||
|
||||
[home]
|
||||
name = Ismo Vuorinen
|
||||
email = ismo@vuorinen.net
|
||||
email = ismo@ivuorinen.net
|
||||
|
||||
[github]
|
||||
name = ivuorinen
|
||||
email = ivuorinen@users.noreply.github.com
|
||||
|
||||
|
||||
@@ -5,23 +5,7 @@ return { -- use mason-lspconfig to configure LSP installations
|
||||
-- overrides `require("mason-lspconfig").setup(...)`
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"ansiblels",
|
||||
"bashls",
|
||||
"clangd",
|
||||
"codeqlls",
|
||||
"cssls",
|
||||
"diagnosticls",
|
||||
"eslint",
|
||||
"graphql",
|
||||
"html",
|
||||
"intelephense",
|
||||
"jsonls",
|
||||
"psalm",
|
||||
"stylelint_lsp",
|
||||
"tailwindcss",
|
||||
"tsserver",
|
||||
"vuels",
|
||||
"yamlls",
|
||||
},
|
||||
},
|
||||
}, -- use mason-null-ls to configure Formatters/Linter installation for null-ls sources
|
||||
|
||||
@@ -42,7 +42,6 @@ return {
|
||||
null_ls.builtins.formatting.isort,
|
||||
null_ls.builtins.formatting.jq,
|
||||
null_ls.builtins.formatting.phpcsfixer,
|
||||
null_ls.builtins.formatting.prettierd,
|
||||
null_ls.builtins.formatting.shfmt.with {
|
||||
args = { "-i", "1", "-bn", "-ci", "-sr", "-kb", "-fn" },
|
||||
},
|
||||
|
||||
@@ -25,9 +25,9 @@ export HOMEBREW_PKG="$HOMEBREW/opt"
|
||||
export HOMEBREW_NO_ENV_HINTS=1
|
||||
|
||||
path_append "/usr/local/bin"
|
||||
path_append "$HOMEBREW_SBIN"
|
||||
path_append "$HOMEBREW_BIN"
|
||||
path_append "$XDG_BIN_HOME"
|
||||
path_prepend "$HOMEBREW_SBIN"
|
||||
path_prepend "$HOMEBREW_BIN"
|
||||
path_prepend "$XDG_BIN_HOME"
|
||||
|
||||
# brew, https://brew.sh
|
||||
have brew && {
|
||||
|
||||
@@ -121,7 +121,6 @@ export _Z_DATA="$XDG_STATE_HOME/z"
|
||||
export ANDROID_HOME="$XDG_DATA_HOME/android"
|
||||
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
|
||||
export TMUX_CONF="$DOTFILES/config/tmux/tmux.conf"
|
||||
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||
export BAT_THEME="ansi"
|
||||
export CHEAT_USE_FZF=true
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# vim: filetype=zsh
|
||||
source "$DOTFILES/scripts/shared.sh"
|
||||
|
||||
export LC_ALL=fi_FI.utf8
|
||||
export LC_ALL=fi_FI.UTF-8
|
||||
|
||||
# Bash completion file location
|
||||
export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_completion"
|
||||
|
||||
@@ -89,7 +89,6 @@ x-default-antigen-bundles()
|
||||
antigen bundle command-not-found
|
||||
antigen bundle ssh-agent
|
||||
antigen bundle MichaelAquilina/zsh-you-should-use
|
||||
antigen bundle Sparragus/zsh-auto-nvm-use
|
||||
antigen bundle jreese/zsh-titles
|
||||
antigen bundle unixorn/autoupdate-antigen.zshplugin
|
||||
antigen bundle zsh-users/zsh-completions
|
||||
@@ -101,6 +100,7 @@ x-default-antigen-bundles()
|
||||
have docker-compose && antigen bundle sroze/docker-compose-zsh-plugin
|
||||
have jq && antigen bundle reegnz/jq-zsh-plugin
|
||||
have nvm && antigen bundle nvm
|
||||
have nvm && antigen bundle $DOTFILES/config/zsh/plugins/nvm-auto-use
|
||||
have php && antigen bundle php
|
||||
have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
|
||||
have rvm && antigen bundle unixorn/rvm-plugin
|
||||
|
||||
@@ -1089,7 +1089,7 @@
|
||||
<key>Send Code When Idle</key>
|
||||
<false/>
|
||||
<key>Set Local Environment Vars</key>
|
||||
<false/>
|
||||
<true/>
|
||||
<key>Shortcut</key>
|
||||
<string>T</string>
|
||||
<key>Show Status Bar</key>
|
||||
|
||||
Submodule config/nvim updated: b17ca3c324...f10b473017
@@ -4,6 +4,23 @@
|
||||
# - https://tmuxguide.readthedocs.io/en/latest/tmux/tmux.html
|
||||
# - https://github.com/dreamsofcode-io/tmux/blob/main/tmux.conf
|
||||
|
||||
## Install plugins, starting with plugin manager
|
||||
set -g @tpm_plugins ' \
|
||||
tmux-plugins/tpm \
|
||||
b0o/tmux-autoreload \
|
||||
catppuccin/tmux \
|
||||
ChanderG/tmux-notify \
|
||||
christoomey/vim-tmux-navigator \
|
||||
yardnsm/tmux-1password \
|
||||
jaclu/tmux-menus \
|
||||
sainnhe/tmux-fzf \
|
||||
tmux-plugins/tmux-continuum \
|
||||
tmux-plugins/tmux-resurrect \
|
||||
tmux-plugins/tmux-sensible \
|
||||
tmux-plugins/tmux-sessionist \
|
||||
tmux-plugins/tmux-yank \
|
||||
'
|
||||
|
||||
set-option -sa terminal-overrides ",xterm*:Tc"
|
||||
|
||||
# Mouse support
|
||||
@@ -44,7 +61,7 @@ bind -n M-H previous-window
|
||||
bind -n M-L next-window
|
||||
|
||||
# Reload tmux config with <prefix> + r
|
||||
bind r source-file ~/.dotfiles/config/tmux/tmux.conf \; display "tmux cfg reloaded!"
|
||||
bind r source-file ~/.config/tmux/tmux.conf \; display "tmux cfg reloaded!"
|
||||
|
||||
# Open a new window with <prefix> + N
|
||||
bind N new-window
|
||||
@@ -54,6 +71,9 @@ bind N new-window
|
||||
## https://github.com/jaclu/tmux-menus
|
||||
set -g @menus_trigger 'm'
|
||||
|
||||
## https://github.com/jaclu/tmux-1password
|
||||
set -g @1password-key 'x'
|
||||
|
||||
## https://github.com/catppuccin/tmux
|
||||
set -g @catppuccin_flavour 'mocha' # latte/frappe/macchiato/mocha
|
||||
set -g @catppuccin_window_tabs_enabled on # or off to disable window_tabs
|
||||
@@ -66,20 +86,14 @@ set -g @continuum-boot-options 'iterm'
|
||||
## https://github.com/tmux-plugins/tmux-resurrect
|
||||
set -g @resurrect-strategy-nvim 'session'
|
||||
|
||||
## https://github.com/b0o/tmux-autoreload
|
||||
set-option -g @tmux-autoreload-configs '~/.config/tmux/tmux.conf'
|
||||
|
||||
## https://github.com/sainnhe/tmux-fzf
|
||||
TMUX_FZF_LAUNCH_KEY="l"
|
||||
|
||||
## Install plugins, starting with plugin manager
|
||||
set -g @plugin 'tmux-plugins/tpm'
|
||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||
set -g @plugin 'jaclu/tmux-menus'
|
||||
set -g @plugin 'christoomey/vim-tmux-navigator'
|
||||
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||
set -g @plugin 'catppuccin/tmux'
|
||||
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||
set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||
set -g @plugin 'tmux-plugins/tmux-sessionist'
|
||||
set -g @plugin 'sainnhe/tmux-fzf'
|
||||
## https://github.com/ChanderG/tmux-notify
|
||||
set -g @tnotify-verbose 'on'
|
||||
|
||||
# set vi-mode
|
||||
set-window-option -g mode-keys vi
|
||||
@@ -108,4 +122,3 @@ bind p paste-buffer
|
||||
|
||||
# Finally run the tmux plugin manager
|
||||
run '~/.config/tmux/plugins/tpm/tpm'
|
||||
|
||||
|
||||
27
config/zsh/plugins/nvm-auto-use/nvm-auto-use.plugin.zsh
Normal file
27
config/zsh/plugins/nvm-auto-use/nvm-auto-use.plugin.zsh
Normal file
@@ -0,0 +1,27 @@
|
||||
# shellcheck shell=zsh
|
||||
# Source: https://github.com/nvm-sh/nvm#zsh
|
||||
# place this after nvm initialization!
|
||||
autoload -U add-zsh-hook
|
||||
|
||||
load-nvmrc() {
|
||||
local nvmrc_path
|
||||
nvmrc_path="$(nvm_find_nvmrc)"
|
||||
|
||||
if [ -n "$nvmrc_path" ]; then
|
||||
local nvmrc_node_version
|
||||
nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
|
||||
|
||||
if [ "$nvmrc_node_version" = "N/A" ]; then
|
||||
nvm install
|
||||
elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
|
||||
nvm use
|
||||
fi
|
||||
elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
|
||||
echo "Reverting to nvm default version"
|
||||
nvm use default
|
||||
fi
|
||||
}
|
||||
|
||||
add-zsh-hook chpwd load-nvmrc
|
||||
load-nvmrc
|
||||
|
||||
316
docs/tmux-keybindings.md
Normal file
316
docs/tmux-keybindings.md
Normal file
@@ -0,0 +1,316 @@
|
||||
# tmux keybindings
|
||||
|
||||
|
||||
Leader: `<ctrl><space>`
|
||||
|
||||
|
||||
```
|
||||
bind-key -T copy-mode C-Space send-keys -X begin-selection
|
||||
bind-key -T copy-mode C-a send-keys -X start-of-line
|
||||
bind-key -T copy-mode C-b send-keys -X cursor-left
|
||||
bind-key -T copy-mode C-c send-keys -X cancel
|
||||
bind-key -T copy-mode C-e send-keys -X end-of-line
|
||||
bind-key -T copy-mode C-f send-keys -X cursor-right
|
||||
bind-key -T copy-mode C-g send-keys -X clear-selection
|
||||
bind-key -T copy-mode C-k send-keys -X copy-pipe-end-of-line-and-cancel
|
||||
bind-key -T copy-mode C-n send-keys -X cursor-down
|
||||
bind-key -T copy-mode C-p send-keys -X cursor-up
|
||||
bind-key -T copy-mode C-r command-prompt -i -I "#{pane_search_string}" -T search -p "(search up)" { send-keys -X search-backward-incremental "%%" }
|
||||
bind-key -T copy-mode C-s command-prompt -i -I "#{pane_search_string}" -T search -p "(search down)" { send-keys -X search-forward-incremental "%%" }
|
||||
bind-key -T copy-mode C-v send-keys -X page-down
|
||||
bind-key -T copy-mode C-w send-keys -X copy-pipe-and-cancel
|
||||
bind-key -T copy-mode Escape send-keys -X cancel
|
||||
bind-key -T copy-mode Space send-keys -X page-down
|
||||
bind-key -T copy-mode ! send-keys -X copy-pipe-and-cancel "tr -d '
|
||||
' | pbcopy"
|
||||
bind-key -T copy-mode , send-keys -X jump-reverse
|
||||
bind-key -T copy-mode \; send-keys -X jump-again
|
||||
bind-key -T copy-mode F command-prompt -1 -p "(jump backward)" { send-keys -X jump-backward "%%" }
|
||||
bind-key -T copy-mode N send-keys -X search-reverse
|
||||
bind-key -T copy-mode P send-keys -X toggle-position
|
||||
bind-key -T copy-mode R send-keys -X rectangle-toggle
|
||||
bind-key -T copy-mode T command-prompt -1 -p "(jump to backward)" { send-keys -X jump-to-backward "%%" }
|
||||
bind-key -T copy-mode X send-keys -X set-mark
|
||||
bind-key -T copy-mode Y send-keys -X copy-pipe-and-cancel "tmux paste-buffer"
|
||||
bind-key -T copy-mode f command-prompt -1 -p "(jump forward)" { send-keys -X jump-forward "%%" }
|
||||
bind-key -T copy-mode g command-prompt -p "(goto line)" { send-keys -X goto-line "%%" }
|
||||
bind-key -T copy-mode n send-keys -X search-again
|
||||
bind-key -T copy-mode q send-keys -X cancel
|
||||
bind-key -T copy-mode r send-keys -X refresh-from-pane
|
||||
bind-key -T copy-mode t command-prompt -1 -p "(jump to forward)" { send-keys -X jump-to-forward "%%" }
|
||||
bind-key -T copy-mode y send-keys -X copy-pipe-and-cancel pbcopy
|
||||
bind-key -T copy-mode MouseDown1Pane select-pane
|
||||
bind-key -T copy-mode MouseDrag1Pane select-pane \; send-keys -X begin-selection
|
||||
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel pbcopy
|
||||
bind-key -T copy-mode WheelUpPane select-pane \; send-keys -X -N 5 scroll-up
|
||||
bind-key -T copy-mode WheelDownPane select-pane \; send-keys -X -N 5 scroll-down
|
||||
bind-key -T copy-mode DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel
|
||||
bind-key -T copy-mode TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel
|
||||
bind-key -T copy-mode Home send-keys -X start-of-line
|
||||
bind-key -T copy-mode End send-keys -X end-of-line
|
||||
bind-key -T copy-mode NPage send-keys -X page-down
|
||||
bind-key -T copy-mode PPage send-keys -X page-up
|
||||
bind-key -T copy-mode Up send-keys -X cursor-up
|
||||
bind-key -T copy-mode Down send-keys -X cursor-down
|
||||
bind-key -T copy-mode Left send-keys -X cursor-left
|
||||
bind-key -T copy-mode Right send-keys -X cursor-right
|
||||
bind-key -T copy-mode M-C-b send-keys -X previous-matching-bracket
|
||||
bind-key -T copy-mode M-C-f send-keys -X next-matching-bracket
|
||||
bind-key -T copy-mode M-1 command-prompt -N -I 1 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode M-2 command-prompt -N -I 2 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode M-3 command-prompt -N -I 3 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode M-4 command-prompt -N -I 4 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode M-5 command-prompt -N -I 5 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode M-6 command-prompt -N -I 6 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode M-7 command-prompt -N -I 7 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode M-8 command-prompt -N -I 8 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode M-9 command-prompt -N -I 9 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode M-< send-keys -X history-top
|
||||
bind-key -T copy-mode M-> send-keys -X history-bottom
|
||||
bind-key -T copy-mode M-R send-keys -X top-line
|
||||
bind-key -T copy-mode M-b send-keys -X previous-word
|
||||
bind-key -T copy-mode M-f send-keys -X next-word-end
|
||||
bind-key -T copy-mode M-m send-keys -X back-to-indentation
|
||||
bind-key -T copy-mode M-r send-keys -X middle-line
|
||||
bind-key -T copy-mode M-v send-keys -X page-up
|
||||
bind-key -T copy-mode M-w send-keys -X copy-pipe-and-cancel
|
||||
bind-key -T copy-mode M-x send-keys -X jump-to-mark
|
||||
bind-key -T copy-mode M-y send-keys -X copy-pipe-and-cancel "pbcopy; tmux paste-buffer"
|
||||
bind-key -T copy-mode "M-{" send-keys -X previous-paragraph
|
||||
bind-key -T copy-mode "M-}" send-keys -X next-paragraph
|
||||
bind-key -T copy-mode M-Up send-keys -X halfpage-up
|
||||
bind-key -T copy-mode M-Down send-keys -X halfpage-down
|
||||
bind-key -T copy-mode C-Up send-keys -X scroll-up
|
||||
bind-key -T copy-mode C-Down send-keys -X scroll-down
|
||||
bind-key -T copy-mode-vi C-b send-keys -X page-up
|
||||
bind-key -T copy-mode-vi C-c send-keys -X cancel
|
||||
bind-key -T copy-mode-vi C-d send-keys -X halfpage-down
|
||||
bind-key -T copy-mode-vi C-e send-keys -X scroll-down
|
||||
bind-key -T copy-mode-vi C-f send-keys -X page-down
|
||||
bind-key -T copy-mode-vi C-h select-pane -L
|
||||
bind-key -T copy-mode-vi C-j select-pane -D
|
||||
bind-key -T copy-mode-vi C-k select-pane -U
|
||||
bind-key -T copy-mode-vi C-l select-pane -R
|
||||
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel
|
||||
bind-key -T copy-mode-vi C-u send-keys -X halfpage-up
|
||||
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
||||
bind-key -T copy-mode-vi C-y send-keys -X scroll-up
|
||||
bind-key -T copy-mode-vi Escape send-keys -X clear-selection
|
||||
bind-key -T copy-mode-vi C-\ select-pane -l
|
||||
bind-key -T copy-mode-vi Space send-keys -X begin-selection
|
||||
bind-key -T copy-mode-vi ! send-keys -X copy-pipe-and-cancel "tr -d '
|
||||
' | pbcopy"
|
||||
bind-key -T copy-mode-vi \# send-keys -FX search-backward "#{copy_cursor_word}"
|
||||
bind-key -T copy-mode-vi \$ send-keys -X end-of-line
|
||||
bind-key -T copy-mode-vi \% send-keys -X next-matching-bracket
|
||||
bind-key -T copy-mode-vi * send-keys -FX search-forward "#{copy_cursor_word}"
|
||||
bind-key -T copy-mode-vi , send-keys -X jump-reverse
|
||||
bind-key -T copy-mode-vi / command-prompt -T search -p "(search down)" { send-keys -X search-forward "%%" }
|
||||
bind-key -T copy-mode-vi 0 send-keys -X start-of-line
|
||||
bind-key -T copy-mode-vi 1 command-prompt -N -I 1 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode-vi 2 command-prompt -N -I 2 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode-vi 3 command-prompt -N -I 3 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode-vi 4 command-prompt -N -I 4 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode-vi 5 command-prompt -N -I 5 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode-vi 6 command-prompt -N -I 6 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode-vi 7 command-prompt -N -I 7 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode-vi 8 command-prompt -N -I 8 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode-vi 9 command-prompt -N -I 9 -p (repeat) { send-keys -N "%%" }
|
||||
bind-key -T copy-mode-vi : command-prompt -p "(goto line)" { send-keys -X goto-line "%%" }
|
||||
bind-key -T copy-mode-vi \; send-keys -X jump-again
|
||||
bind-key -T copy-mode-vi ? command-prompt -T search -p "(search up)" { send-keys -X search-backward "%%" }
|
||||
bind-key -T copy-mode-vi A send-keys -X append-selection-and-cancel
|
||||
bind-key -T copy-mode-vi B send-keys -X previous-space
|
||||
bind-key -T copy-mode-vi D send-keys -X copy-pipe-end-of-line-and-cancel
|
||||
bind-key -T copy-mode-vi E send-keys -X next-space-end
|
||||
bind-key -T copy-mode-vi F command-prompt -1 -p "(jump backward)" { send-keys -X jump-backward "%%" }
|
||||
bind-key -T copy-mode-vi G send-keys -X history-bottom
|
||||
bind-key -T copy-mode-vi H send-keys -X top-line
|
||||
bind-key -T copy-mode-vi J send-keys -X scroll-down
|
||||
bind-key -T copy-mode-vi K send-keys -X scroll-up
|
||||
bind-key -T copy-mode-vi L send-keys -X bottom-line
|
||||
bind-key -T copy-mode-vi M send-keys -X middle-line
|
||||
bind-key -T copy-mode-vi N send-keys -X search-reverse
|
||||
bind-key -T copy-mode-vi P send-keys -X toggle-position
|
||||
bind-key -T copy-mode-vi T command-prompt -1 -p "(jump to backward)" { send-keys -X jump-to-backward "%%" }
|
||||
bind-key -T copy-mode-vi V send-keys -X select-line
|
||||
bind-key -T copy-mode-vi W send-keys -X next-space
|
||||
bind-key -T copy-mode-vi X send-keys -X set-mark
|
||||
bind-key -T copy-mode-vi Y send-keys -X copy-pipe-and-cancel "tmux paste-buffer"
|
||||
bind-key -T copy-mode-vi ^ send-keys -X back-to-indentation
|
||||
bind-key -T copy-mode-vi b send-keys -X previous-word
|
||||
bind-key -T copy-mode-vi e send-keys -X next-word-end
|
||||
bind-key -T copy-mode-vi f command-prompt -1 -p "(jump forward)" { send-keys -X jump-forward "%%" }
|
||||
bind-key -T copy-mode-vi g send-keys -X history-top
|
||||
bind-key -T copy-mode-vi h send-keys -X cursor-left
|
||||
bind-key -T copy-mode-vi j send-keys -X cursor-down
|
||||
bind-key -T copy-mode-vi k send-keys -X cursor-up
|
||||
bind-key -T copy-mode-vi l send-keys -X cursor-right
|
||||
bind-key -T copy-mode-vi n send-keys -X search-again
|
||||
bind-key -T copy-mode-vi o send-keys -X other-end
|
||||
bind-key -T copy-mode-vi q send-keys -X cancel
|
||||
bind-key -T copy-mode-vi r send-keys -X refresh-from-pane
|
||||
bind-key -T copy-mode-vi t command-prompt -1 -p "(jump to forward)" { send-keys -X jump-to-forward "%%" }
|
||||
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
||||
bind-key -T copy-mode-vi w send-keys -X next-word
|
||||
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel pbcopy
|
||||
bind-key -T copy-mode-vi \{ send-keys -X previous-paragraph
|
||||
bind-key -T copy-mode-vi \} send-keys -X next-paragraph
|
||||
bind-key -T copy-mode-vi MouseDown1Pane select-pane
|
||||
bind-key -T copy-mode-vi MouseDrag1Pane select-pane \; send-keys -X begin-selection
|
||||
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel pbcopy
|
||||
bind-key -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 5 scroll-up
|
||||
bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 5 scroll-down
|
||||
bind-key -T copy-mode-vi DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel
|
||||
bind-key -T copy-mode-vi TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel
|
||||
bind-key -T copy-mode-vi BSpace send-keys -X cursor-left
|
||||
bind-key -T copy-mode-vi NPage send-keys -X page-down
|
||||
bind-key -T copy-mode-vi PPage send-keys -X page-up
|
||||
bind-key -T copy-mode-vi Up send-keys -X cursor-up
|
||||
bind-key -T copy-mode-vi Down send-keys -X cursor-down
|
||||
bind-key -T copy-mode-vi Left send-keys -X cursor-left
|
||||
bind-key -T copy-mode-vi Right send-keys -X cursor-right
|
||||
bind-key -T copy-mode-vi M-x send-keys -X jump-to-mark
|
||||
bind-key -T copy-mode-vi M-y send-keys -X copy-pipe-and-cancel "pbcopy; tmux paste-buffer"
|
||||
bind-key -T copy-mode-vi C-Up send-keys -X scroll-up
|
||||
bind-key -T copy-mode-vi C-Down send-keys -X scroll-down
|
||||
bind-key -T join-pane \" run-shell "'/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/join_pane.sh' 'join-pane' '-b' '-v'"
|
||||
bind-key -T join-pane \% run-shell "'/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/join_pane.sh' 'join-pane' '-b' '-h'"
|
||||
bind-key -T join-pane - run-shell "'/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/join_pane.sh' 'join-pane' '-b' '-v'"
|
||||
bind-key -T join-pane @ run-shell "'/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/join_pane.sh' 'join-pane' '-b' '-b'"
|
||||
bind-key -T join-pane f run-shell "'/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/join_pane.sh' 'join-pane' '-b' '-b'"
|
||||
bind-key -T join-pane h run-shell "'/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/join_pane.sh' 'join-pane' '-b' '-h'"
|
||||
bind-key -T join-pane v run-shell "'/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/join_pane.sh' 'join-pane' '-b' '-v'"
|
||||
bind-key -T join-pane | run-shell "'/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/join_pane.sh' 'join-pane' '-b' '-h'"
|
||||
bind-key -T prefix C-Space run-shell "/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/promote_window.sh '#{session_name}' '#{window_id}' '#{window_name}' '#{pane_current_path}'"
|
||||
bind-key -T prefix C-n next-window
|
||||
bind-key -T prefix C-o rotate-window
|
||||
bind-key -T prefix C-p previous-window
|
||||
bind-key -T prefix C-r run-shell /Users/ivuorinen/.config/tmux/plugins/tmux-resurrect/scripts/restore.sh
|
||||
bind-key -T prefix C-s run-shell /Users/ivuorinen/.config/tmux/plugins/tmux-resurrect/scripts/save.sh
|
||||
bind-key -T prefix C-z suspend-client
|
||||
bind-key -T prefix Escape copy-mode
|
||||
bind-key -T prefix Space next-layout
|
||||
bind-key -T prefix ! break-pane
|
||||
bind-key -T prefix \" split-window -v -c "#{pane_current_path}"
|
||||
bind-key -T prefix \# list-buffers
|
||||
bind-key -T prefix \$ command-prompt -I "#S" { rename-session "%%" }
|
||||
bind-key -T prefix \% split-window -h -c "#{pane_current_path}"
|
||||
bind-key -T prefix & confirm-before -p "kill-window #W? (y/n)" kill-window
|
||||
bind-key -T prefix \' command-prompt -T window-target -p index { select-window -t ":%%" }
|
||||
bind-key -T prefix ( switch-client -p
|
||||
bind-key -T prefix ) switch-client -n
|
||||
bind-key -T prefix , command-prompt -I "#W" { rename-window "%%" }
|
||||
bind-key -T prefix - delete-buffer
|
||||
bind-key -T prefix . command-prompt -T target { move-window -t "%%" }
|
||||
bind-key -T prefix / command-prompt -k -p key { list-keys -1N "%%" }
|
||||
bind-key -T prefix 0 select-window -t :=0
|
||||
bind-key -T prefix 1 select-window -t :=1
|
||||
bind-key -T prefix 2 select-window -t :=2
|
||||
bind-key -T prefix 3 select-window -t :=3
|
||||
bind-key -T prefix 4 select-window -t :=4
|
||||
bind-key -T prefix 5 select-window -t :=5
|
||||
bind-key -T prefix 6 select-window -t :=6
|
||||
bind-key -T prefix 7 select-window -t :=7
|
||||
bind-key -T prefix 8 select-window -t :=8
|
||||
bind-key -T prefix 9 select-window -t :=9
|
||||
bind-key -T prefix : command-prompt
|
||||
bind-key -T prefix \; last-pane
|
||||
bind-key -T prefix < display-menu -T "#[align=centre]#{window_index}:#{window_name}" -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l { swap-window -t :-1 } "#{?#{>:#{session_windows},1},,-}Swap Right" r { swap-window -t :+1 } "#{?pane_marked_set,,-}Swap Marked" s { swap-window } '' Kill X { kill-window } Respawn R { respawn-window -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } Rename n { command-prompt -F -I "#W" { rename-window -t "#{window_id}" "%%" } } '' "New After" w { new-window -a } "New At End" W { new-window }
|
||||
bind-key -T prefix = choose-buffer -Z
|
||||
bind-key -T prefix > display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -x P -y P "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < { send-keys -X history-top } "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > { send-keys -X history-bottom } '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r { if-shell -F "#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}" "copy-mode -t=" ; send-keys -X -t = search-backward "#{q:mouse_word}" } "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y { copy-mode -q ; send-keys -l "#{q:mouse_word}" } "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c { copy-mode -q ; set-buffer "#{q:mouse_word}" } "#{?mouse_line,Copy Line,}" l { copy-mode -q ; set-buffer "#{q:mouse_line}" } '' "Horizontal Split" h { split-window -h } "Vertical Split" v { split-window -v } '' "#{?#{>:#{window_panes},1},,-}Swap Up" u { swap-pane -U } "#{?#{>:#{window_panes},1},,-}Swap Down" d { swap-pane -D } "#{?pane_marked_set,,-}Swap Marked" s { swap-pane } '' Kill X { kill-pane } Respawn R { respawn-pane -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z { resize-pane -Z }
|
||||
bind-key -T prefix ? list-keys -N
|
||||
bind-key -T prefix @ run-shell "/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/promote_pane.sh '#{session_name}' '#{pane_id}' '#{pane_current_path}'"
|
||||
bind-key -T prefix C run-shell /Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/new_session_prompt.sh
|
||||
bind-key -T prefix D choose-client -Z
|
||||
bind-key -T prefix E select-layout -E
|
||||
bind-key -T prefix I run-shell /Users/ivuorinen/.config/tmux/plugins/tpm/bindings/install_plugins
|
||||
bind-key -T prefix L switch-client -l
|
||||
bind-key -T prefix M select-pane -M
|
||||
bind-key -T prefix N new-window
|
||||
bind-key -T prefix R run-shell " tmux source-file /Users/ivuorinen/.config/tmux/tmux.conf > /dev/null; tmux display-message 'Sourced /Users/ivuorinen/.config/tmux/tmux.conf!'"
|
||||
bind-key -T prefix S switch-client -l
|
||||
bind-key -T prefix U run-shell /Users/ivuorinen/.config/tmux/plugins/tpm/bindings/update_plugins
|
||||
bind-key -T prefix X run-shell "/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/kill_session_prompt.sh '#{session_name}' '#{session_id}'"
|
||||
bind-key -T prefix Y run-shell -b /Users/ivuorinen/.config/tmux/plugins/tmux-yank/scripts/copy_pane_pwd.sh
|
||||
bind-key -T prefix ] paste-buffer -p
|
||||
bind-key -T prefix c new-window
|
||||
bind-key -T prefix d detach-client
|
||||
bind-key -T prefix f command-prompt { find-window -Z "%%" }
|
||||
bind-key -T prefix g run-shell /Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/goto_session.sh
|
||||
bind-key -T prefix h select-pane -L
|
||||
bind-key -T prefix i display-message
|
||||
bind-key -T prefix j select-pane -D
|
||||
bind-key -T prefix k select-pane -U
|
||||
bind-key -T prefix l run-shell -b /Users/ivuorinen/.config/tmux/plugins/tmux-fzf/main.sh
|
||||
bind-key -T prefix m run-shell /Users/ivuorinen/.config/tmux/plugins/tmux-menus/items/main.sh
|
||||
bind-key -T prefix n next-window
|
||||
bind-key -T prefix o select-pane -t :.+
|
||||
bind-key -T prefix p paste-buffer
|
||||
bind-key -T prefix q display-panes
|
||||
bind-key -T prefix r source-file /Users/ivuorinen/.dotfiles/config/tmux/tmux.conf \; display-message "tmux cfg reloaded!"
|
||||
bind-key -T prefix s choose-tree -Zs
|
||||
bind-key -T prefix t run-shell "/Users/ivuorinen/.config/tmux/plugins/tmux-sessionist/scripts/join_pane.sh 'join-pane' '-b'"
|
||||
bind-key -T prefix w choose-tree -Zw
|
||||
bind-key -T prefix x confirm-before -p "kill-pane #P? (y/n)" kill-pane
|
||||
bind-key -T prefix y run-shell -b /Users/ivuorinen/.config/tmux/plugins/tmux-yank/scripts/copy_line.sh
|
||||
bind-key -T prefix z resize-pane -Z
|
||||
bind-key -T prefix \{ swap-pane -U
|
||||
bind-key -T prefix \} swap-pane -D
|
||||
bind-key -T prefix \~ show-messages
|
||||
bind-key -r -T prefix DC refresh-client -c
|
||||
bind-key -T prefix PPage copy-mode -u
|
||||
bind-key -r -T prefix Up select-pane -U
|
||||
bind-key -r -T prefix Down select-pane -D
|
||||
bind-key -r -T prefix Left select-pane -L
|
||||
bind-key -r -T prefix Right select-pane -R
|
||||
bind-key -T prefix M-1 select-layout even-horizontal
|
||||
bind-key -T prefix M-2 select-layout even-vertical
|
||||
bind-key -T prefix M-3 select-layout main-horizontal
|
||||
bind-key -T prefix M-4 select-layout main-vertical
|
||||
bind-key -T prefix M-5 select-layout tiled
|
||||
bind-key -T prefix M-n next-window -a
|
||||
bind-key -T prefix M-o rotate-window -D
|
||||
bind-key -T prefix M-p previous-window -a
|
||||
bind-key -T prefix M-u run-shell /Users/ivuorinen/.config/tmux/plugins/tpm/bindings/clean_plugins
|
||||
bind-key -r -T prefix M-Up resize-pane -U 5
|
||||
bind-key -r -T prefix M-Down resize-pane -D 5
|
||||
bind-key -r -T prefix M-Left resize-pane -L 5
|
||||
bind-key -r -T prefix M-Right resize-pane -R 5
|
||||
bind-key -r -T prefix C-Up resize-pane -U
|
||||
bind-key -r -T prefix C-Down resize-pane -D
|
||||
bind-key -r -T prefix C-Left resize-pane -L
|
||||
bind-key -r -T prefix C-Right resize-pane -R
|
||||
bind-key -r -T prefix S-Up refresh-client -U 10
|
||||
bind-key -r -T prefix S-Down refresh-client -D 10
|
||||
bind-key -r -T prefix S-Left refresh-client -L 10
|
||||
bind-key -r -T prefix S-Right refresh-client -R 10
|
||||
bind-key -T root C-h if-shell "ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\S+\/)?g?(view|l?n?vim?x?)(diff)?$'" "send-keys C-h" "select-pane -L"
|
||||
bind-key -T root C-j if-shell "ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\S+\/)?g?(view|l?n?vim?x?)(diff)?$'" "send-keys C-j" "select-pane -D"
|
||||
bind-key -T root C-k if-shell "ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\S+\/)?g?(view|l?n?vim?x?)(diff)?$'" "send-keys C-k" "select-pane -U"
|
||||
bind-key -T root C-l if-shell "ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\S+\/)?g?(view|l?n?vim?x?)(diff)?$'" "send-keys C-l" "select-pane -R"
|
||||
bind-key -T root C-\ if-shell "ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(S+/)?g?(view|l?n?vim?x?)(diff)?$'" "send-keys C-\\" "select-pane -l"
|
||||
bind-key -T root MouseDown1Pane select-pane -t = \; send-keys -M
|
||||
bind-key -T root MouseDown1Status select-window -t =
|
||||
bind-key -T root MouseDown2Pane select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { paste-buffer -p }
|
||||
bind-key -T root MouseDown3Pane if-shell -F -t = "#{||:#{mouse_any_flag},#{&&:#{pane_in_mode},#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}}}" { select-pane -t = ; send-keys -M } { display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -t = -x M -y M "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < { send-keys -X history-top } "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > { send-keys -X history-bottom } '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r { if-shell -F "#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}" "copy-mode -t=" ; send-keys -X -t = search-backward "#{q:mouse_word}" } "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y { copy-mode -q ; send-keys -l "#{q:mouse_word}" } "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c { copy-mode -q ; set-buffer "#{q:mouse_word}" } "#{?mouse_line,Copy Line,}" l { copy-mode -q ; set-buffer "#{q:mouse_line}" } '' "Horizontal Split" h { split-window -h } "Vertical Split" v { split-window -v } '' "#{?#{>:#{window_panes},1},,-}Swap Up" u { swap-pane -U } "#{?#{>:#{window_panes},1},,-}Swap Down" d { swap-pane -D } "#{?pane_marked_set,,-}Swap Marked" s { swap-pane } '' Kill X { kill-pane } Respawn R { respawn-pane -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z { resize-pane -Z } }
|
||||
bind-key -T root MouseDown3Status display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l { swap-window -t :-1 } "#{?#{>:#{session_windows},1},,-}Swap Right" r { swap-window -t :+1 } "#{?pane_marked_set,,-}Swap Marked" s { swap-window } '' Kill X { kill-window } Respawn R { respawn-window -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } Rename n { command-prompt -F -I "#W" { rename-window -t "#{window_id}" "%%" } } '' "New After" w { new-window -a } "New At End" W { new-window }
|
||||
bind-key -T root MouseDown3StatusLeft display-menu -T "#[align=centre]#{session_name}" -t = -x M -y W Next n { switch-client -n } Previous p { switch-client -p } '' Renumber N { move-window -r } Rename n { command-prompt -I "#S" { rename-session "%%" } } '' "New Session" s { new-session } "New Window" w { new-window }
|
||||
bind-key -T root MouseDrag1Pane if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -M }
|
||||
bind-key -T root MouseDrag1Border resize-pane -M
|
||||
bind-key -T root WheelUpPane if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -e }
|
||||
bind-key -T root WheelUpStatus previous-window
|
||||
bind-key -T root WheelDownStatus next-window
|
||||
bind-key -T root DoubleClick1Pane select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -H ; send-keys -X select-word ; run-shell -d 0.3 ; send-keys -X copy-pipe-and-cancel }
|
||||
bind-key -T root TripleClick1Pane select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -H ; send-keys -X select-line ; run-shell -d 0.3 ; send-keys -X copy-pipe-and-cancel }
|
||||
bind-key -T root M-H previous-window
|
||||
bind-key -T root M-L next-window
|
||||
bind-key -T root M-MouseDown3Pane display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -t = -x M -y M "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < { send-keys -X history-top } "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > { send-keys -X history-bottom } '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r { if-shell -F "#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}" "copy-mode -t=" ; send-keys -X -t = search-backward "#{q:mouse_word}" } "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y { copy-mode -q ; send-keys -l "#{q:mouse_word}" } "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c { copy-mode -q ; set-buffer "#{q:mouse_word}" } "#{?mouse_line,Copy Line,}" l { copy-mode -q ; set-buffer "#{q:mouse_line}" } '' "Horizontal Split" h { split-window -h } "Vertical Split" v { split-window -v } '' "#{?#{>:#{window_panes},1},,-}Swap Up" u { swap-pane -U } "#{?#{>:#{window_panes},1},,-}Swap Down" d { swap-pane -D } "#{?pane_marked_set,,-}Swap Marked" s { swap-pane } '' Kill X { kill-pane } Respawn R { respawn-pane -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z { resize-pane -Z }
|
||||
bind-key -T root M-Up select-pane -U
|
||||
bind-key -T root M-Down select-pane -D
|
||||
bind-key -T root M-Left select-pane -L
|
||||
bind-key -T root M-Right select-pane -R
|
||||
bind-key -T root S-Left previous-window
|
||||
bind-key -T root S-Right next-window
|
||||
```
|
||||
|
||||
1
install
1
install
@@ -33,4 +33,3 @@ if [ "${DOTBOT_HOST}" != "" ]; then
|
||||
-c "$DOTBOT_HOST_CONFIG" \
|
||||
"${@}"
|
||||
fi
|
||||
|
||||
|
||||
@@ -131,9 +131,7 @@ function section_install
|
||||
bash "$DOTFILES/scripts/install-z.sh" \
|
||||
&& msg_yay "z has been installed!"
|
||||
;;
|
||||
*)
|
||||
menu_usage "$USAGE_PREFIX" "${MENU[@]}"
|
||||
;;
|
||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -177,6 +175,20 @@ function section_brew
|
||||
! have brew && menu_section "$USAGE_PREFIX" "brew not available on this system"
|
||||
}
|
||||
|
||||
function section_docs
|
||||
{
|
||||
USAGE_PREFIX="$SCRIPT docs <command>"
|
||||
|
||||
MENU=(
|
||||
"tmux:Update tmux keybindings documentation"
|
||||
)
|
||||
|
||||
case "$1" in
|
||||
tmux) bash "$DOTFILES/local/bin/x-dfm-docs-xterm-keybindings" ;;
|
||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
function section_dotfiles
|
||||
{
|
||||
USAGE_PREFIX="$SCRIPT dotfiles <command>"
|
||||
@@ -238,9 +250,7 @@ function section_dotfiles
|
||||
--binary-next-line {} \;
|
||||
msg_yay "dotfiles have been shfmt formatted!"
|
||||
;;
|
||||
*)
|
||||
menu_usage "$USAGE_PREFIX" "${MENU[@]}"
|
||||
;;
|
||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -264,9 +274,7 @@ function section_check
|
||||
[[ "$2" = "" ]] && echo "$X_HOSTNAME" && exit 0
|
||||
[[ $X_HOSTNAME = "$2" ]] && exit 0 || exit 1
|
||||
;;
|
||||
*)
|
||||
menu_usage "$USAGE_PREFIX" "${MENU[@]}"
|
||||
;;
|
||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -296,9 +304,7 @@ function section_tests
|
||||
msg_yay "msg_yay"
|
||||
msg_yay_done "msg_yay_done"
|
||||
;;
|
||||
*)
|
||||
menu_usage "$USAGE_PREFIX" "${MENU[@]}"
|
||||
;;
|
||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -315,6 +321,8 @@ function usage
|
||||
section_check
|
||||
echo ""
|
||||
section_dotfiles
|
||||
echo ""
|
||||
section_docs
|
||||
}
|
||||
|
||||
# The main loop. first keyword after $0 triggers section, or help.
|
||||
@@ -323,6 +331,7 @@ case "$1" in
|
||||
brew) section_brew "$2" ;;
|
||||
check) section_check "$2" ;;
|
||||
dotfiles) section_dotfiles "$2" ;;
|
||||
docs) section_docs "$2" ;;
|
||||
tests) section_tests "$2" ;;
|
||||
*) usage && exit 0 ;;
|
||||
esac
|
||||
|
||||
22
local/bin/x-dfm-docs-xterm-keybindings
Executable file
22
local/bin/x-dfm-docs-xterm-keybindings
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# x-xterm-update-keybindings
|
||||
# Updates $HOME/.dotfiles/docs/tmux.md with my keybindings.
|
||||
|
||||
# shellcheck source=./../../scripts/shared.sh
|
||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||
|
||||
have tmux || {
|
||||
msg_err "tmux not found" && exit 0
|
||||
}
|
||||
|
||||
TMUX_KEYBINDINGS_DOCS="$DOTFILES/docs/tmux-keybindings.md"
|
||||
|
||||
CB="\n\`\`\`\n"
|
||||
KB=$(tmux list-keys)
|
||||
H="# tmux keybindings\n"
|
||||
L="\n\nLeader: \`<ctrl><space>\`\n\n"
|
||||
|
||||
msg "Outputting tmux keybindings to $TMUX_KEYBINDINGS_DOCS"
|
||||
echo -e "${H}${L}${CB}${KB}${CB}" > "$TMUX_KEYBINDINGS_DOCS"
|
||||
msg_done "Done!"
|
||||
@@ -4,7 +4,7 @@
|
||||
# shellcheck source="shared.sh"
|
||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||
|
||||
! have php && msg_err "PHP Not Available, cannot install composer" && exit 0;
|
||||
! have php && msg_err "PHP Not Available, cannot install composer" && exit 0
|
||||
|
||||
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||
@@ -21,4 +21,3 @@ RESULT=$?
|
||||
rm composer-setup.php
|
||||
mv composer.phar ~/.local/bin/composer
|
||||
exit $RESULT
|
||||
|
||||
|
||||
@@ -14,4 +14,3 @@ if [ ! -d "$FZF_PATH" ]; then
|
||||
else
|
||||
msg_done "fzf ($FZF_PATH/) already installed"
|
||||
fi
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ source "$HOME/.dotfiles/scripts/shared.sh"
|
||||
|
||||
! have gh \
|
||||
&& msg_err "gh (GitHub Client) could not be found, please install it first" \
|
||||
&& exit 0;
|
||||
&& exit 0
|
||||
|
||||
extensions=(
|
||||
# GitHub CLI extension for generating a report on repository dependencies.
|
||||
@@ -42,4 +42,3 @@ for ext in "${extensions[@]}"; do
|
||||
done
|
||||
|
||||
msg_ok "Done"
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# shellcheck source=shared.sh
|
||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||
|
||||
! have go && msg "go hasn't been installed yet." && exit 0;
|
||||
! have go && msg "go hasn't been installed yet." && exit 0
|
||||
|
||||
packages=(
|
||||
# sysadmin/scripting utilities, distributed as a single binary
|
||||
@@ -37,4 +37,3 @@ for pkg in "${packages[@]}"; do
|
||||
done
|
||||
|
||||
msg_ok "Done"
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||
set -e
|
||||
|
||||
have ntfy && msg "ntfy already installed" && exit 0;
|
||||
have ntfy && msg "ntfy already installed" && exit 0
|
||||
|
||||
case $(dfm check arch) in
|
||||
Linux)
|
||||
@@ -33,4 +33,3 @@ if [ ! -f "$HOME/.config/ntfy/client.yml" ]; then
|
||||
fi
|
||||
|
||||
rm -rf "${NTFY_DEST}" "${NTFY_DEST}.tar.gz"
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
ivuorinen@users.noreply.github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLyOvkr1nRqMVv3UAizmk6C+q40H4khvw7qIXXXyOyFmzjwYx/Cuxoi4uZVjX+q4qFYJ+c312uu6YXiEtfyoCao3wub8r1cLBQ3eIvuyWp2K8Ixcd9JmFmLmoeiENpJxqyr0WPZLDkrCWUZCsQQh8zzGFnfciUdUdTiZ7s21AEhhmFRSdFlVfQSlGMFxU321psg1YilcP80bDwFd1FsL4TssSkwlbgP/twqnpZ4436TTo7kp0UnH/RZkfRdDWScKHaWgncBG0CZeQxGWnRp8fvZn/7gDnthcZhvnDALVBE7QFuZ90GxqVw3IGpHryV0mFO6EGQ9Ke9YX7pKVZPUXZjeCN4SVKsqFdVJ6AjaSJ9K7nL98rYK7qNzndT3cKqPNgPteyXWRulH68A51ecQqHrjTttZcdN9hKt9uBHpzuXsby2QObT+VB4MNjZapa+YYF/WgwJCml4lzn2xMFg1vYZD78pfoJ9e5f2cL1MMlUSDb0TNxmEXfDQ77H/pRpKDz0=
|
||||
ismo.vuorinen@vincit.fi ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLyOvkr1nRqMVv3UAizmk6C+q40H4khvw7qIXXXyOyFmzjwYx/Cuxoi4uZVjX+q4qFYJ+c312uu6YXiEtfyoCao3wub8r1cLBQ3eIvuyWp2K8Ixcd9JmFmLmoeiENpJxqyr0WPZLDkrCWUZCsQQh8zzGFnfciUdUdTiZ7s21AEhhmFRSdFlVfQSlGMFxU321psg1YilcP80bDwFd1FsL4TssSkwlbgP/twqnpZ4436TTo7kp0UnH/RZkfRdDWScKHaWgncBG0CZeQxGWnRp8fvZn/7gDnthcZhvnDALVBE7QFuZ90GxqVw3IGpHryV0mFO6EGQ9Ke9YX7pKVZPUXZjeCN4SVKsqFdVJ6AjaSJ9K7nL98rYK7qNzndT3cKqPNgPteyXWRulH68A51ecQqHrjTttZcdN9hKt9uBHpzuXsby2QObT+VB4MNjZapa+YYF/WgwJCml4lzn2xMFg1vYZD78pfoJ9e5f2cL1MMlUSDb0TNxmEXfDQ77H/pRpKDz0=
|
||||
|
||||
Reference in New Issue
Block a user