mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-27 21:45:41 +00:00
Compare commits
130 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ed7263dfee | |||
| 4cda063305 | |||
| d251ea9cdc | |||
| bc4e906ff6 | |||
| 75c36bacf9 | |||
| e7cda5ac0c | |||
| 41024b1eb5 | |||
| 74afeb61c8 | |||
| 104bc369bc | |||
| 57e63847ce | |||
| 2dc08e5e51 | |||
| 989b5b5111 | |||
| 24a5dd1ff6 | |||
| 5826e35853 | |||
| e329868568 | |||
| dc76fa8914 | |||
| 3413365d41 | |||
| 37299f4893 | |||
| 71a78c6e0c | |||
| 3f8a4deb05 | |||
| ffe288aba3 | |||
| 28a1fc2831 | |||
| 28aae89f70 | |||
| e8fe5c570b | |||
| 26f6024292 | |||
| 4e4692321b | |||
| 3ea221ccf9 | |||
| e7774c4ab1 | |||
| 1f2ca90ca5 | |||
| adecceda7a | |||
| 8a3b2e703c | |||
| 1ee726e30c | |||
| 9857c8eb00 | |||
| a919d9544e | |||
| 7bc7921a17 | |||
| 735807f245 | |||
| 6d531e2d40 | |||
| 77f89c0f48 | |||
| 7f3c7b7e1c | |||
| fc16b8231e | |||
| 64a626d5c4 | |||
| 54816c2ce9 | |||
| 3acaea5611 | |||
| e4a313abe7 | |||
| 0b1c75cbdd | |||
| cab0f4da49 | |||
| cef15eddce | |||
| f8987818b8 | |||
|
|
15d1f6a59a | ||
| ba586fca7d | |||
|
|
d93bc7aae3 | ||
| 77b0428cec | |||
| 387432b27b | |||
| 88fa706b75 | |||
| 96ce9fec0c | |||
| 66d5fbc8ac | |||
| cc3ceb4176 | |||
| 0f9c69bb65 | |||
| c754746b9f | |||
| df5cab6a88 | |||
| b9ddba4666 | |||
| 77e92ef15e | |||
| 383bc2b052 | |||
| 0e109c3da3 | |||
| 50abd5aa30 | |||
| 082e27fb0a | |||
| e05e68f5d1 | |||
| 074c169e3c | |||
| 636ea749ac | |||
| da2a2e0f81 | |||
| 0ef12b61ac | |||
| c6fc3db52f | |||
| 1bde81a673 | |||
| d60248f356 | |||
| 40e8b9443b | |||
| 8a032a2804 | |||
| 367be373c4 | |||
| cf2f98d5c0 | |||
| a3704f7db9 | |||
| 7c359ffea0 | |||
| 9542624323 | |||
|
|
b0d74bad1a | ||
| fcade15933 | |||
| 6860909d39 | |||
| 493ad17c15 | |||
|
|
0495ac1ea8 | ||
| 9b5d372a74 | |||
| 9d04343a26 | |||
|
|
4aa0fba682 | ||
| ad6482b34a | |||
| 113e27734a | |||
| 378abfe896 | |||
| eadf1e5c84 | |||
| ea4d185fb4 | |||
| 22bd8ca870 | |||
| 7ee81b005c | |||
| 3faf8224e8 | |||
| d028f37c00 | |||
| 1df05ac0ba | |||
| e54e202281 | |||
| c226943aa9 | |||
| dda4b65458 | |||
| 7d564d0b4d | |||
| bc30e5f7a6 | |||
| 9e2f7e8f1b | |||
| 7b47e49804 | |||
| 1be7649122 | |||
| 453d54bc7f | |||
| 7ede7b9ac1 | |||
| a90743a09c | |||
| 185d28e587 | |||
|
|
37f023351d | ||
| 39523e9234 | |||
|
|
1f8fc0d289 | ||
| c083d2a20a | |||
| 75c6a0bccd | |||
| 5ce86b3229 | |||
| 885189e4ff | |||
| 8f3f4d7ed9 | |||
| 03a1b5fb85 | |||
| 7b83f6e943 | |||
| 261ff41e28 | |||
| 36ad2a2ad9 | |||
|
|
a4d5b87272 | ||
| f953bff183 | |||
| aba33a20a4 | |||
| a20e1e1419 | |||
| 8328f4cd19 | |||
| 4383b130a9 | |||
| 8143999f2a |
@@ -1 +1 @@
|
||||
extends @ivuorinen/browserslist-config
|
||||
extends @ivuorinen/browserslist-config
|
||||
|
||||
@@ -27,3 +27,9 @@ space_redirects = true
|
||||
keep_padding = false
|
||||
function_next_line = true # --func-next-line
|
||||
|
||||
# Ignore the entire "third_party" directory when calling shfmt on directories,
|
||||
# such as "shfmt -l -w .". When formatting files directly,
|
||||
# like "shfmt -w third_party/foo.sh" or "shfmt --filename=third_party/foo.sh",
|
||||
# the ignore logic is applied only when the --apply-ignore flag is given.
|
||||
[{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**}]
|
||||
ignore = true
|
||||
|
||||
64
.github/README.md
vendored
64
.github/README.md
vendored
@@ -8,6 +8,9 @@ this repository will live accordingly.
|
||||
Please for the love of everything good do not use these 1:1 as your own dotfiles,
|
||||
fork or download the repo as a zip and go from there with your own configs.
|
||||
|
||||
It would be nice if you'd add an issue linking to your fork or repo so I can
|
||||
see what interesing stuff you've done with it. Sharing is caring.
|
||||
|
||||
## Setup
|
||||
|
||||
### First time setup
|
||||
@@ -23,7 +26,11 @@ fork or download the repo as a zip and go from there with your own configs.
|
||||
|
||||
## The looks
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Interesting files and locations
|
||||
|
||||
@@ -31,7 +38,7 @@ fork or download the repo as a zip and go from there with your own configs.
|
||||
|
||||
| Path | Description |
|
||||
| ------------------- | -------------------------------------------- |
|
||||
| `.github` | GitHub Repository configuration files. |
|
||||
| `.github` | GitHub Repository configuration files, meta. |
|
||||
| `hosts/{hostname}/` | Configs that should apply to that host only. |
|
||||
| `local/bin` | Helper scripts that I've collected or wrote. |
|
||||
| `scripts` | Setup scripts. |
|
||||
@@ -47,7 +54,9 @@ fork or download the repo as a zip and go from there with your own configs.
|
||||
|
||||
### dfm - the dotfiles manager
|
||||
|
||||
`.local/bin/dfm` is a shell script that has some tools that help with dotfiles management.
|
||||
[`.local/bin/dfm`][dfm] is a shell script that has some tools that help with dotfiles management.
|
||||
|
||||
Running `dfm` gives you a list of available commands.
|
||||
|
||||
## Configuration
|
||||
|
||||
@@ -62,51 +71,8 @@ The folder structure follows [XDG Base Directory Specification][xdg] where possi
|
||||
| `$XDG_DATA_HOME` | `$HOME/.local/share` | User-specific data files |
|
||||
| `$XDG_STATE_HOME` | `$HOME/.local/state` | App state that should persist between restarts |
|
||||
|
||||
#### XDG_BIN_HOME (`$HOME/.local/bin`)
|
||||
|
||||
`$XDG_BIN_HOME` defines directory that contains local binaries.
|
||||
|
||||
User-specific executable files may be stored in `$HOME/.local/bin`.
|
||||
Distributions should ensure this directory shows up in the UNIX `$PATH`
|
||||
environment variable, at an appropriate place.
|
||||
|
||||
#### XDG_DATA_HOME (`$HOME/.local/share`)
|
||||
|
||||
`$XDG_DATA_HOME` defines the base directory relative to which
|
||||
user-specific _data files_ should be stored.
|
||||
|
||||
If `$XDG_DATA_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.local/share` should be used.
|
||||
|
||||
#### XDG_CONFIG_HOME (`$HOME/.config`)
|
||||
|
||||
`$XDG_CONFIG_HOME` defines the base directory relative to which
|
||||
user-specific _configuration files_ should be stored.
|
||||
|
||||
If `$XDG_CONFIG_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.config` should be used.
|
||||
|
||||
#### XDG_STATE_HOME (`$HOME/.local/state`)
|
||||
|
||||
`$XDG_STATE_HOME` defines the base directory relative to which
|
||||
user-specific _state files_ should be stored.
|
||||
|
||||
If `$XDG_STATE_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.local/state` should be used.
|
||||
|
||||
The `$XDG_STATE_HOME` contains _state data_ that should
|
||||
_persist between (application) restarts_, but that is not important or
|
||||
portable enough to the user that it should be stored in `$XDG_DATA_HOME`.
|
||||
|
||||
- It may contain:
|
||||
- actions history (logs, history, recently used files, …)
|
||||
- current state of the application that can be reused
|
||||
on a restart (view, layout, open files, undo history, …)
|
||||
|
||||
#### XDG_DATA_DIRS
|
||||
|
||||
`$XDG_DATA_DIRS` defines the preference-ordered set of base directories
|
||||
to search for data files in addition to the `$XDG_DATA_HOME` base directory.
|
||||
The directories in `$XDG_DATA_DIRS` should be seperated with a colon ':'.
|
||||
Please see [docs/folders.md][docs-folders] for more information.
|
||||
|
||||
[dfm]: https://github.com/ivuorinen/dotfiles/blob/main/local/bin/dfm
|
||||
[docs-folders]: https://github.com/ivuorinen/dotfiles/blob/main/docs/folders.md
|
||||
[xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
|
||||
2
.github/renovate.json
vendored
2
.github/renovate.json
vendored
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": ["local>ivuorinen/.github:renovate-config"]
|
||||
"extends": ["local>ivuorinen/renovate-config"]
|
||||
}
|
||||
|
||||
BIN
.github/screenshots/oh-my-posh.png
vendored
BIN
.github/screenshots/oh-my-posh.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 45 KiB |
BIN
.github/screenshots/tmux-nvim-kickstart-dark.png
vendored
Normal file
BIN
.github/screenshots/tmux-nvim-kickstart-dark.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 85 KiB |
BIN
.github/screenshots/tmux-nvim-kickstart-light.png
vendored
Normal file
BIN
.github/screenshots/tmux-nvim-kickstart-light.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 87 KiB |
18
.github/workflows/semantic-pr.yml
vendored
Normal file
18
.github/workflows/semantic-pr.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
name: Semantic PR
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- edited
|
||||
- synchronize
|
||||
|
||||
jobs:
|
||||
semantic-pr:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@v5.5.3
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
validateSingleCommit: true
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -10,6 +10,7 @@ config/cheat/cheatsheets/tldr/*
|
||||
config/git/credentials
|
||||
config/npm/npmrc
|
||||
config/zsh/.zcompdump
|
||||
config/alacritty/theme-active.toml
|
||||
ssh/local.d/*
|
||||
!ssh/local.d/.gitkeep
|
||||
!.gitkeep
|
||||
@@ -21,4 +22,7 @@ node_modules
|
||||
iTermServer-*
|
||||
lock
|
||||
config/iterm2/AppSupport
|
||||
config/gnupg/S.*
|
||||
config/gnupg/s
|
||||
config/gnupg/private-keys-v1.d
|
||||
|
||||
|
||||
11
.gitmodules
vendored
11
.gitmodules
vendored
@@ -41,7 +41,7 @@
|
||||
ignore = dirty
|
||||
[submodule "tmux/tmux-window-name"]
|
||||
path = config/tmux/plugins/tmux-window-name
|
||||
url = https://github.com/ofirgall/tmux-window-name.git
|
||||
url = https://github.com/ivuorinen/tmux-window-name.git
|
||||
ignore = dirty
|
||||
[submodule "dotbot-pip"]
|
||||
path = tools/dotbot-pip
|
||||
@@ -58,3 +58,12 @@
|
||||
[submodule "cheat-tldr"]
|
||||
path = config/cheat/cheatsheets/tldr
|
||||
url = https://github.com/ivuorinen/cheatsheet-tldr.git
|
||||
[submodule "nvim-kickstart"]
|
||||
path = config/nvim-kickstart
|
||||
url = https://github.com/ivuorinen/kickstart.nvim
|
||||
[submodule "tmux/tmux-dark-notify"]
|
||||
path = config/tmux/plugins/tmux-dark-notify
|
||||
url = https://github.com/erikw/tmux-dark-notify.git
|
||||
[submodule "asdf"]
|
||||
path = local/bin/asdf
|
||||
url = https://github.com/asdf-vm/asdf.git
|
||||
|
||||
5
.luarc.json
Normal file
5
.luarc.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"diagnostics.globals": [
|
||||
"vim"
|
||||
]
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
.mypy_cache/*
|
||||
tools/dotbot*
|
||||
local/bin/antigen.zsh
|
||||
config/cheat/cheatsheets/community
|
||||
config/tmux/plugins/*
|
||||
lazy-lock.json
|
||||
Brewfile.lock.json
|
||||
|
||||
config/cheat/cheatsheets/community
|
||||
config/cheat/cheatsheets/tldr
|
||||
config/fzf/*
|
||||
config/nvim-kickstart/*
|
||||
config/tmux/plugins/*
|
||||
config/zsh/*
|
||||
lazy-lock.json
|
||||
local/bin/antigen.zsh
|
||||
local/bin/asdf
|
||||
tools/dotbot*
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
module.exports = {
|
||||
plugins: ['prettier-plugin-sh'],
|
||||
...require('@ivuorinen/prettier-config'),
|
||||
trailingComma: 'all',
|
||||
// Add custom options below:
|
||||
|
||||
@@ -10,11 +10,16 @@ git submodule add --name dotbot-include \
|
||||
git submodule add --name dotbot-pip \
|
||||
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
|
||||
|
||||
git submodule add --name nvim-kickstart \
|
||||
-f https://github.com/ivuorinen/kickstart.nvim config/nvim-kickstart
|
||||
|
||||
# other repos
|
||||
git submodule add --name cheat-community \
|
||||
-f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
|
||||
git submodule add --name cheat-tldr \
|
||||
-f https://github.com/ivuorinen/cheatsheet-tldr.git config/cheat/cheatsheets/tldr
|
||||
git submodule add --name asdf \
|
||||
-f https://github.com/asdf-vm/asdf.git local/bin/asdf
|
||||
|
||||
# tmux plugin manager and plugins
|
||||
git submodule add --name tmux/tmux-continuum \
|
||||
@@ -30,11 +35,13 @@ git submodule add --name tmux/tmux-sessionist \
|
||||
git submodule add --name tmux/tmux-suspend \
|
||||
-f https://github.com/MunifTanjim/tmux-suspend.git config/tmux/plugins/tmux-suspend
|
||||
git submodule add --name tmux/tmux-window-name \
|
||||
-f https://github.com/ofirgall/tmux-window-name.git config/tmux/plugins/tmux-window-name
|
||||
-f https://github.com/ivuorinen/tmux-window-name.git config/tmux/plugins/tmux-window-name
|
||||
git submodule add --name tmux/tmux-yank \
|
||||
-f https://github.com/tmux-plugins/tmux-yank.git config/tmux/plugins/tmux-yank
|
||||
git submodule add --name tmux/tmux-current-pane-hostname \
|
||||
-f https://github.com/soyuka/tmux-current-pane-hostname.git config/tmux/plugins/tmux-current-pane-hostname
|
||||
git submodule add --name tmux/tmux-dark-notify \
|
||||
-f https://github.com/erikw/tmux-dark-notify.git config/tmux/plugins/tmux-dark-notify
|
||||
|
||||
# Takes submodules and sets them to ignore all changes
|
||||
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
||||
|
||||
35
base/bashrc
35
base/bashrc
@@ -1,27 +1,11 @@
|
||||
# this is my bashrc config. there are many like it, but this one is mine.
|
||||
# shellcheck shell=bash
|
||||
|
||||
# Defaults
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$PATH"
|
||||
export SHARED_SCRIPTS_SOURCED=0
|
||||
|
||||
# Explicitly set XDG folders
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_STATE_HOME="$HOME/.local/state"
|
||||
|
||||
# custom variables
|
||||
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
|
||||
# Paths
|
||||
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$HOME/.local/go/bin:$XDG_DATA_HOME/cargo/bin:$PATH"
|
||||
|
||||
source "$DOTFILES/config/exports"
|
||||
source "$DOTFILES/config/functions"
|
||||
source "$DOTFILES/config/alias"
|
||||
x-load-configs
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
# shellcheck source=../config/fzf/fzf.bash
|
||||
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
|
||||
@@ -30,12 +14,13 @@ x-load-configs
|
||||
# Import ssh keys in keychain
|
||||
ssh-add -A 2>/dev/null
|
||||
|
||||
x-have rbenv && {
|
||||
eval "$(rbenv init - bash)"
|
||||
x-have oh-my-posh && {
|
||||
eval "$(oh-my-posh init bash --config "$DOTFILES/config/omp/own.toml")"
|
||||
}
|
||||
|
||||
# eval "$(starship init bash)"
|
||||
x-have oh-my-posh && {
|
||||
eval "$(oh-my-posh init bash --config $XDG_CONFIG_HOME/oh-my-posh.omp.json)"
|
||||
. "$XDG_BIN_HOME/asdf/asdf.sh"
|
||||
. "$XDG_BIN_HOME/asdf/completions/asdf.bash"
|
||||
|
||||
x-have antidot && {
|
||||
eval "$(antidot init)"
|
||||
}
|
||||
source "$DOTFILES/config/alias"
|
||||
|
||||
1
base/envrc
Normal file
1
base/envrc
Normal file
@@ -0,0 +1 @@
|
||||
use asdf
|
||||
@@ -1,6 +1,4 @@
|
||||
#!/bin/env bash
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
|
||||
[ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.config/nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
|
||||
29
base/tool-versions
Normal file
29
base/tool-versions
Normal file
@@ -0,0 +1,29 @@
|
||||
1password-cli 2.30.0
|
||||
age 1.2.0
|
||||
asdf-plugin-manager 1.3.1
|
||||
bottom 0.10.2
|
||||
direnv 2.34.0
|
||||
dotenv-linter 3.3.0
|
||||
editorconfig-checker 2.8.0
|
||||
eza 0.19.0
|
||||
fd 10.1.0
|
||||
github-cli 2.54.0
|
||||
golang 1.22.6
|
||||
hadolint 2.12.0
|
||||
kubectl 1.30.3
|
||||
lazygit 0.43.1
|
||||
nodejs 22.6.0
|
||||
pipx 1.6.0
|
||||
pre-commit 3.8.0
|
||||
ripgrep 14.1.0
|
||||
ruby 3.3.4
|
||||
rust 1.80.1
|
||||
semgrep system
|
||||
shellcheck 0.10.0
|
||||
shfmt 3.8.0
|
||||
terraform-lsp 0.0.12
|
||||
terragrunt 0.66.3
|
||||
tf-summarize 0.3.10
|
||||
vault 1.17.3
|
||||
yamllint 1.35.1
|
||||
yq 4.44.3
|
||||
19
base/zshenv
19
base/zshenv
@@ -1,19 +0,0 @@
|
||||
# shellcheck shell=bash
|
||||
# vim: filetype=zsh
|
||||
|
||||
export PATH="$HOME/.local/bin:$HOME/.dotfiles/local/bin:$HOME/.local/go/bin:$PATH"
|
||||
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
|
||||
# Explicitly set XDG folders
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_STATE_HOME="$HOME/.local/state"
|
||||
|
||||
# custom variables
|
||||
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
|
||||
source "$DOTFILES/config/exports"
|
||||
189
base/zshrc
189
base/zshrc
@@ -1,106 +1,127 @@
|
||||
# this is my zsh config. there are many like it, but this one is mine.
|
||||
# shellcheck shell=bash
|
||||
|
||||
# export VERBOSE=1
|
||||
# export DEBUG=1
|
||||
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$HOME/.local/share/bob/nvim-bin:$HOME/.local/share/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
export SHARED_SCRIPTS_SOURCED=0
|
||||
|
||||
# Explicitly set XDG folders
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_STATE_HOME="$HOME/.local/state"
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
# custom variables
|
||||
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
eval "$(oh-my-posh init zsh --config "$DOTFILES/config/omp/own.toml")"
|
||||
|
||||
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$HOME/.local/go/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
|
||||
x-load-configs
|
||||
|
||||
export COMPLETION_WAITING_DOTS=true
|
||||
|
||||
if type brew &> /dev/null; then
|
||||
eval "$(brew shellenv)"
|
||||
FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
|
||||
# Load asdf
|
||||
export ASDF_DIR="$XDG_BIN_HOME/asdf"
|
||||
if [[ -d $ASDF_DIR ]]; then
|
||||
[[ -d $ASDF_DIR/bin ]] && x-path-prepend "$ASDF_DIR/bin"
|
||||
[[ -d $ASDF_DIR/shims ]] && x-path-prepend "$ASDF_DIR/shims"
|
||||
[[ -d $ASDF_DIR/completions ]] && fpath=("$ASDF_DIR/completions" $fpath)
|
||||
[[ -d $ASDF_DIR/plugins ]] && fpath=("$ASDF_DIR/plugins" $fpath)
|
||||
source "$ASDF_DIR/asdf.sh"
|
||||
fi
|
||||
|
||||
export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
|
||||
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
|
||||
# Function to load antigen if available
|
||||
load_antigen()
|
||||
{
|
||||
local antigen_zsh_path="$XDG_BIN_HOME/antigen.zsh"
|
||||
# shellcheck source=../../.local/bin/antigen.zsh
|
||||
if [[ -f "$antigen_zsh_path" ]]; then
|
||||
source "$antigen_zsh_path"
|
||||
|
||||
# Add completion scripts to zsh path
|
||||
FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
|
||||
antigen use oh-my-zsh
|
||||
|
||||
# Try to load antigen, if present
|
||||
ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh"
|
||||
# shellcheck source=../../.local/bin/antigen.zsh
|
||||
[[ -f "$ANTIGEN_ZSH_PATH" ]] && source "$ANTIGEN_ZSH_PATH"
|
||||
export ZSH_TMUX_AUTOSTART=false
|
||||
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
|
||||
export ZSH_TMUX_UNICODE=true
|
||||
export ZSH_TMUX_AUTOQUIT=false
|
||||
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
||||
|
||||
# antigen is present
|
||||
antigen use oh-my-zsh
|
||||
zstyle :omz:plugins:ssh-agent quiet yes
|
||||
zstyle :omz:plugins:ssh-agent lazy yes
|
||||
|
||||
export ZSH_TMUX_AUTOSTART=true
|
||||
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
|
||||
export ZSH_TMUX_UNICODE=true
|
||||
export ZSH_TMUX_AUTOQUIT=false
|
||||
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
||||
# z, the zsh version
|
||||
export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
antigen bundle z
|
||||
|
||||
export NVM_DIR="$XDG_CONFIG_HOME/nvm"
|
||||
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
|
||||
x-have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
|
||||
|
||||
# z, the zsh version
|
||||
export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
antigen bundle z
|
||||
# these should be always available
|
||||
antigen bundle gpg-agent
|
||||
antigen bundle brew
|
||||
antigen bundle tmux
|
||||
antigen bundle colored-man-pages
|
||||
# antigen bundle ssh-agent
|
||||
antigen bundle jreese/zsh-titles
|
||||
antigen bundle zsh-users/zsh-completions
|
||||
|
||||
# these should be always available
|
||||
antigen bundle tmux
|
||||
antigen bundle colored-man-pages
|
||||
antigen bundle command-not-found
|
||||
antigen bundle ssh-agent
|
||||
antigen bundle jreese/zsh-titles
|
||||
antigen bundle zsh-users/zsh-completions
|
||||
|
||||
# these should be available if there's need
|
||||
# x-have brew && antigen bundle brew
|
||||
# x-have php && antigen bundle php
|
||||
x-have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
|
||||
|
||||
# nvm is a strange beast
|
||||
zstyle ':omz:plugins:nvm' autoload yes
|
||||
antigen bundle nvm
|
||||
# antigen bundle "$DOTFILES/config/zsh/plugins/nvm-auto-use"
|
||||
|
||||
# nice to have stuff
|
||||
# antigen bundle gcloud
|
||||
|
||||
# this needs to be the last item
|
||||
antigen bundle zsh-users/zsh-syntax-highlighting
|
||||
antigen apply
|
||||
|
||||
# shellcheck source=../config/fzf/fzf.zsh
|
||||
[ -f "${DOTFILES}/config/fzf/fzf.zsh" ] \
|
||||
&& source "${DOTFILES}/config/fzf/fzf.zsh"
|
||||
|
||||
x-have rbenv && {
|
||||
eval "$(rbenv init - zsh)"
|
||||
# this needs to be the last item
|
||||
antigen bundle zsh-users/zsh-syntax-highlighting
|
||||
antigen apply
|
||||
fi
|
||||
}
|
||||
|
||||
# Run only if tmux is active
|
||||
[[ -n "$TMUX" ]] && {
|
||||
# Autoupdate tmux window name
|
||||
TMUX_WINDOW_NAME_PLUGIN="$DOTFILES/config/tmux/plugins/tmux-window-name/scripts/rename_session_windows.py"
|
||||
[ -f "$TMUX_WINDOW_NAME_PLUGIN" ] && {
|
||||
tmux-window-name()
|
||||
{
|
||||
($TMUX_WINDOW_NAME_PLUGIN &)
|
||||
}
|
||||
add-zsh-hook chpwd tmux-window-name
|
||||
tmux-window-name
|
||||
}
|
||||
# Function to source FZF configuration
|
||||
source_fzf_config()
|
||||
{
|
||||
local fzf_config="${DOTFILES}/config/fzf/fzf.zsh"
|
||||
if [[ -f "$fzf_config" ]]; then
|
||||
# shellcheck source=config/fzf/fzf.zsh
|
||||
source "$fzf_config"
|
||||
fi
|
||||
}
|
||||
|
||||
# eval "$(starship init zsh)"
|
||||
x-have oh-my-posh && {
|
||||
eval "$(oh-my-posh init zsh --config $XDG_CONFIG_HOME/oh-my-posh.omp.json)"
|
||||
# Function to initialize pyenv if available
|
||||
initialize_pyenv()
|
||||
{
|
||||
if x-have pyenv; then
|
||||
[[ -d $PYENV_ROOT/bin ]] && x-path-append "$PYENV_ROOT/bin"
|
||||
[[ -d $PYENV_ROOT/shims ]] && x-path-append "$PYENV_ROOT/shims"
|
||||
eval "$(pyenv init -)"
|
||||
eval "$(pyenv virtualenv-init -)"
|
||||
fi
|
||||
}
|
||||
source "$DOTFILES/config/alias"
|
||||
|
||||
# Function to set up tmux window name plugin if tmux is active
|
||||
setup_tmux_window_name_plugin()
|
||||
{
|
||||
if [[ -n "$TMUX" ]]; then
|
||||
local tmux_window_name_plugin="$DOTFILES/config/tmux/plugins/tmux-window-name/scripts/rename_session_windows.py"
|
||||
if [[ -f "$tmux_window_name_plugin" ]]; then
|
||||
tmux_window_name()
|
||||
{
|
||||
($tmux_window_name_plugin &)
|
||||
}
|
||||
add-zsh-hook chpwd tmux_window_name
|
||||
tmux_window_name
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to initialize antidot if available
|
||||
initialize_antidot()
|
||||
{
|
||||
if x-have antidot; then
|
||||
eval "$(antidot init)"
|
||||
fi
|
||||
}
|
||||
|
||||
initialize_direnv()
|
||||
{
|
||||
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
load_antigen
|
||||
source_fzf_config
|
||||
initialize_pyenv
|
||||
setup_tmux_window_name_plugin
|
||||
initialize_antidot
|
||||
initialize_direnv
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
|
||||
@@ -1,344 +1,51 @@
|
||||
[colors]
|
||||
draw_bold_text_with_bright_colors = true
|
||||
|
||||
[colors.bright]
|
||||
black = "0x414868"
|
||||
blue = "0x7aa2f7"
|
||||
cyan = "0x7dcfff"
|
||||
green = "0x9ece6a"
|
||||
magenta = "0xbb9af7"
|
||||
red = "0xf7768e"
|
||||
white = "0xc0caf5"
|
||||
yellow = "0xe0af68"
|
||||
|
||||
[colors.normal]
|
||||
black = "0x1d202f"
|
||||
blue = "0x7aa2f7"
|
||||
cyan = "0x7dcfff"
|
||||
green = "0x9ece6a"
|
||||
magenta = "0xbb9af7"
|
||||
red = "0xf7768e"
|
||||
white = "0xa9b1d6"
|
||||
yellow = "0xe0af68"
|
||||
|
||||
[colors.primary]
|
||||
background = "0x24283b"
|
||||
foreground = "0xc0caf5"
|
||||
import = [
|
||||
# Default to night if the copied one doesn't exist.
|
||||
"~/.dotfiles/config/alacritty/theme-night.toml",
|
||||
"~/.config/alacritty/theme-active.toml"
|
||||
]
|
||||
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
|
||||
[colors]
|
||||
draw_bold_text_with_bright_colors = true
|
||||
|
||||
[font]
|
||||
size = 14.0
|
||||
|
||||
[font.bold]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "Bold"
|
||||
|
||||
[font.glyph_offset]
|
||||
x = 0
|
||||
y = 0
|
||||
|
||||
[font.normal]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "ExtraLight"
|
||||
|
||||
[font.italic]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "Italic"
|
||||
|
||||
[font.normal]
|
||||
[font.bold]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "ExtraLight"
|
||||
style = "Bold"
|
||||
|
||||
[font.offset]
|
||||
x = 0
|
||||
y = 0
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "Paste"
|
||||
key = "V"
|
||||
mods = "Command"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "Copy"
|
||||
key = "C"
|
||||
mods = "Command"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "Quit"
|
||||
key = "Q"
|
||||
mods = "Command"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "Quit"
|
||||
key = "W"
|
||||
mods = "Command"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "SpawnNewInstance"
|
||||
key = "N"
|
||||
mods = "Command"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOH"
|
||||
key = "Home"
|
||||
mode = "AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1~"
|
||||
key = "Home"
|
||||
mode = "~AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOF"
|
||||
key = "End"
|
||||
mode = "AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[4~"
|
||||
key = "End"
|
||||
mode = "~AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[5;2~"
|
||||
key = "PageUp"
|
||||
mods = "Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[5;5~"
|
||||
key = "PageUp"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[5~"
|
||||
key = "PageUp"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[6;2~"
|
||||
key = "PageDown"
|
||||
mods = "Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[6;5~"
|
||||
key = "PageDown"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[6~"
|
||||
key = "PageDown"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;2D"
|
||||
key = "Left"
|
||||
mods = "Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;5D"
|
||||
key = "Left"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;3D"
|
||||
key = "Left"
|
||||
mods = "Alt"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[D"
|
||||
key = "Left"
|
||||
mode = "~AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOD"
|
||||
key = "Left"
|
||||
mode = "AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;2C"
|
||||
key = "Right"
|
||||
mods = "Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;5C"
|
||||
key = "Right"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;3C"
|
||||
key = "Right"
|
||||
mods = "Alt"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[C"
|
||||
key = "Right"
|
||||
mode = "~AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOC"
|
||||
key = "Right"
|
||||
mode = "AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;2A"
|
||||
key = "Up"
|
||||
mods = "Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;5A"
|
||||
key = "Up"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;3A"
|
||||
key = "Up"
|
||||
mods = "Alt"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[A"
|
||||
key = "Up"
|
||||
mode = "~AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOA"
|
||||
key = "Up"
|
||||
mode = "AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;2B"
|
||||
key = "Down"
|
||||
mods = "Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;5B"
|
||||
key = "Down"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[1;3B"
|
||||
key = "Down"
|
||||
mods = "Alt"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[B"
|
||||
key = "Down"
|
||||
mode = "~AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOB"
|
||||
key = "Down"
|
||||
mode = "AppCursor"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[Z"
|
||||
key = "Tab"
|
||||
mods = "Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOP"
|
||||
key = "F1"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOQ"
|
||||
key = "F2"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOR"
|
||||
key = "F3"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001BOS"
|
||||
key = "F4"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[15~"
|
||||
key = "F5"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[17~"
|
||||
key = "F6"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[18~"
|
||||
key = "F7"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[19~"
|
||||
key = "F8"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[20~"
|
||||
key = "F9"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[21~"
|
||||
key = "F10"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[23~"
|
||||
key = "F11"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[24~"
|
||||
key = "F12"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "Back"
|
||||
action = "ReceiveChar"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[2~"
|
||||
key = "Insert"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u001B[3~"
|
||||
key = "Delete"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u0002&"
|
||||
key = "W"
|
||||
mods = "Command"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u0002c"
|
||||
key = "T"
|
||||
mods = "Command"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u0002n"
|
||||
key = "RBracket"
|
||||
mods = "Command|Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u0002p"
|
||||
key = "LBracket"
|
||||
mods = "Command|Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u0002o"
|
||||
key = "RBracket"
|
||||
mods = "Command"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u0002;"
|
||||
key = "LBracket"
|
||||
mods = "Command"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\u0002/"
|
||||
key = "F"
|
||||
mods = "Command"
|
||||
|
||||
[[mouse.bindings]]
|
||||
action = "PasteSelection"
|
||||
mouse = "Middle"
|
||||
|
||||
[selection]
|
||||
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
|
||||
save_to_clipboard = true
|
||||
|
||||
[window]
|
||||
decorations = "none"
|
||||
decorations = "Full"
|
||||
dynamic_title = true
|
||||
opacity = 0.98
|
||||
blur = true
|
||||
|
||||
[window.dimensions]
|
||||
columns = 200
|
||||
lines = 100
|
||||
lines = 75
|
||||
|
||||
[window.padding]
|
||||
x = 5
|
||||
|
||||
40
config/alacritty/theme-day.toml
Normal file
40
config/alacritty/theme-day.toml
Normal file
@@ -0,0 +1,40 @@
|
||||
# TokyoNight Alacritty Colors: Day
|
||||
# Default colors
|
||||
[colors.primary]
|
||||
background = '#e1e2e7'
|
||||
foreground = '#3760bf'
|
||||
|
||||
#[colors.cursor]
|
||||
#cursor = '#3760bf'
|
||||
#text = '#e1e2e7'
|
||||
|
||||
# Normal colors
|
||||
[colors.normal]
|
||||
black = '#e9e9ed'
|
||||
red = '#f52a65'
|
||||
green = '#587539'
|
||||
yellow = '#8c6c3e'
|
||||
blue = '#2e7de9'
|
||||
magenta = '#9854f1'
|
||||
cyan = '#007197'
|
||||
white = '#6172b0'
|
||||
|
||||
# Bright colors
|
||||
[colors.bright]
|
||||
black = '#a1a6c5'
|
||||
red = '#f52a65'
|
||||
green = '#587539'
|
||||
yellow = '#8c6c3e'
|
||||
blue = '#2e7de9'
|
||||
magenta = '#9854f1'
|
||||
cyan = '#007197'
|
||||
white = '#3760bf'
|
||||
|
||||
# Indexed Colors
|
||||
[[colors.indexed_colors]]
|
||||
index = 16
|
||||
color = '#b15c00'
|
||||
|
||||
[[colors.indexed_colors]]
|
||||
index = 17
|
||||
color = '#c64343'
|
||||
40
config/alacritty/theme-night.toml
Normal file
40
config/alacritty/theme-night.toml
Normal file
@@ -0,0 +1,40 @@
|
||||
# TokyoNight Alacritty Colors: Storm
|
||||
# Default colors
|
||||
[colors.primary]
|
||||
background = '#24283b'
|
||||
foreground = '#c0caf5'
|
||||
|
||||
#[colors.cursor]
|
||||
#cursor = '#c0caf5'
|
||||
#text = '#24283b'
|
||||
|
||||
# Normal colors
|
||||
[colors.normal]
|
||||
black = '#1d202f'
|
||||
red = '#f7768e'
|
||||
green = '#9ece6a'
|
||||
yellow = '#e0af68'
|
||||
blue = '#7aa2f7'
|
||||
magenta = '#bb9af7'
|
||||
cyan = '#7dcfff'
|
||||
white = '#a9b1d6'
|
||||
|
||||
# Bright colors
|
||||
[colors.bright]
|
||||
black = '#414868'
|
||||
red = '#f7768e'
|
||||
green = '#9ece6a'
|
||||
yellow = '#e0af68'
|
||||
blue = '#7aa2f7'
|
||||
magenta = '#bb9af7'
|
||||
cyan = '#7dcfff'
|
||||
white = '#c0caf5'
|
||||
|
||||
# Indexed Colors
|
||||
[[colors.indexed_colors]]
|
||||
index = 16
|
||||
color = '#ff9e64'
|
||||
|
||||
[[colors.indexed_colors]]
|
||||
index = 17
|
||||
color = '#db4b4b'
|
||||
77
config/alias
77
config/alias
@@ -1,6 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck source="../scripts/shared.sh"
|
||||
# shellcheck disable=1091,2139
|
||||
|
||||
# Color the grep output
|
||||
alias grep="grep --color"
|
||||
@@ -17,6 +15,14 @@ alias ....="cd ../../.."
|
||||
# cd to git root directory
|
||||
alias cdgr='cd "$(git root)"'
|
||||
|
||||
# interesting folders, and shortcuts
|
||||
alias .="cd $HOME"
|
||||
alias .b="cd $XDG_BIN_HOME"
|
||||
alias .c="cd $HOME/Code"
|
||||
alias .d="cd $DOTFILES"
|
||||
alias .dx="cd $DOTFILES;ks"
|
||||
alias .l="cd $HOME/.local"
|
||||
|
||||
# Shortcuts for listing
|
||||
alias ll="ls -la"
|
||||
alias l="ls -a"
|
||||
@@ -51,6 +57,10 @@ alias tmux='tmux new-session -A -s main'
|
||||
# tmux: attach or create new session
|
||||
alias ta='tmux attach || tmux'
|
||||
|
||||
# nvim
|
||||
alias nvim-ks='NVIM_APPNAME="nvim-kickstart" nvim'
|
||||
alias ks='NVIM_APPNAME="nvim-kickstart" nvim'
|
||||
|
||||
# watch with: differences, precise, beep and color
|
||||
alias watchx='watch -dpbc'
|
||||
# delete .DS_Store files
|
||||
@@ -99,65 +109,6 @@ if [[ $(uname) == 'Darwin' ]]; then
|
||||
# Also, clear Apple's System Logs to improve shell startup speed
|
||||
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
|
||||
|
||||
x-set-php-aliases
|
||||
# Using herd for php now, so this is not needed anymore
|
||||
# x-set-php-aliases
|
||||
fi
|
||||
|
||||
# Alacritty preexec hook to update dynamic title
|
||||
preexec()
|
||||
{
|
||||
print -Pn "\e]0;$1%~\a"
|
||||
}
|
||||
|
||||
# Update dotfiles
|
||||
dfu()
|
||||
{
|
||||
(
|
||||
cd "$DOTFILES" && git pull --ff-only && ./install -q
|
||||
)
|
||||
}
|
||||
|
||||
# Weather in Tampere, or other city
|
||||
weather()
|
||||
{
|
||||
# https://github.com/chubin/wttr.in#usage
|
||||
local city="${1:-Tampere}"
|
||||
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
|
||||
}
|
||||
|
||||
# Docker
|
||||
ssh-docker()
|
||||
{
|
||||
docker exec -it "$@" bash
|
||||
}
|
||||
|
||||
# Rector project to php version 8.2 by default.
|
||||
rector()
|
||||
{
|
||||
local php="${1:-82}"
|
||||
docker run -v "$(pwd)":/project rector/rector:latest process \
|
||||
"/project/$1" \
|
||||
--set "php${php}" \
|
||||
--autoload-file /project/vendor/autoload.php
|
||||
}
|
||||
|
||||
# Commit everything
|
||||
commit()
|
||||
{
|
||||
commitMessage="$*"
|
||||
|
||||
if [ "$commitMessage" = "" ]; then
|
||||
commitMessage="Automated commit"
|
||||
fi
|
||||
|
||||
git add .
|
||||
eval "git commit -a -m '${commitMessage}'"
|
||||
}
|
||||
|
||||
scheduler()
|
||||
{
|
||||
while :; do
|
||||
php artisan schedule:run
|
||||
echo "Sleeping 60 seconds..."
|
||||
sleep 60
|
||||
done
|
||||
}
|
||||
|
||||
5
config/asdf/asdfrc
Normal file
5
config/asdf/asdfrc
Normal file
@@ -0,0 +1,5 @@
|
||||
# See the docs for explanations: https://asdf-vm.com/manage/configuration.html
|
||||
|
||||
legacy_version_file=yes
|
||||
use_release_candidates=no
|
||||
concurrency=auto
|
||||
21
config/asdf/cargo-packages
Normal file
21
config/asdf/cargo-packages
Normal file
@@ -0,0 +1,21 @@
|
||||
// A cargo subcommand for checking and applying
|
||||
// updates to installed executables
|
||||
cargo-update
|
||||
// Cargo cache management utility
|
||||
cargo-cache
|
||||
// An incremental parsing system for programming tools
|
||||
tree-sitter-cli
|
||||
// a subprocess caching utility
|
||||
bkt
|
||||
// a structural diff that understands syntax
|
||||
difftastic
|
||||
// A simple, fast and user-friendly alternative to 'find'
|
||||
fd-find
|
||||
// recursively searches directories for a
|
||||
// regex pattern while respecting your gitignore
|
||||
ripgrep
|
||||
// A version manager for neovim
|
||||
bob-nvim
|
||||
// bottom, btm - A cross-platform graphical process/system monitor with
|
||||
// a customizable interface and a multitude of features.
|
||||
bottom
|
||||
1
config/asdf/gem-packages
Normal file
1
config/asdf/gem-packages
Normal file
@@ -0,0 +1 @@
|
||||
bundler
|
||||
21
config/asdf/golang-packages
Normal file
21
config/asdf/golang-packages
Normal file
@@ -0,0 +1,21 @@
|
||||
// These are golang packages I use,
|
||||
// so they should be available with all versions
|
||||
|
||||
// sysadmin/scripting utilities, distributed as a single binary
|
||||
github.com/skx/sysbox@release-0.18.0
|
||||
// Git Profile allows you to switch between user profiles in git repos
|
||||
github.com/dotzero/git-profile@v1.4.0
|
||||
// An extensible command line tool or library to format yaml files.
|
||||
github.com/google/yamlfmt/cmd/yamlfmt@v0.13.0
|
||||
// Parsing HTML at the command line
|
||||
github.com/ericchiang/pup@v0.4.0
|
||||
// HTML to Markdown converter
|
||||
github.com/suntong/html2md@v1.5.0
|
||||
// cheat allows you to create and view interactive cheatsheets on the cli.
|
||||
github.com/cheat/cheat/cmd/cheat@4.4.2
|
||||
// Render markdown on the CLI, with pizzazz! 💅
|
||||
github.com/charmbracelet/glow@v1.5.1
|
||||
// Static checker for GitHub Actions workflow files
|
||||
github.com/rhysd/actionlint/cmd/actionlint@v1.7.1
|
||||
// Cleans up your $HOME from those pesky dotfiles
|
||||
github.com/doron-cohen/antidot@v0.6.3
|
||||
7
config/asdf/npm-packages
Normal file
7
config/asdf/npm-packages
Normal file
@@ -0,0 +1,7 @@
|
||||
blade-formatter
|
||||
corepack
|
||||
editorconfig-checker
|
||||
github-release-notes
|
||||
neovim
|
||||
npm
|
||||
stylelint-lsp
|
||||
28
config/asdf/plugin-versions
Normal file
28
config/asdf/plugin-versions
Normal file
@@ -0,0 +1,28 @@
|
||||
1password-cli https://github.com/NeoHsu/asdf-1password-cli.git f5d5aab
|
||||
age https://github.com/threkk/asdf-age.git 4df80a0
|
||||
asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git 50d2735
|
||||
bottom https://github.com/carbonteq/asdf-btm.git fd8a55a
|
||||
dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
|
||||
editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
|
||||
eza https://github.com/lwiechec/asdf-eza.git 08c1b65
|
||||
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
|
||||
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
|
||||
hadolint https://github.com/devlincashman/asdf-hadolint.git 335e230
|
||||
kubectl https://github.com/asdf-community/asdf-kubectl.git cbe6df4
|
||||
lazygit https://github.com/nklmilojevic/asdf-lazygit.git 78e04f1
|
||||
neovim https://github.com/richin13/asdf-neovim d6118ad
|
||||
nodejs https://github.com/asdf-vm/asdf-nodejs.git c5b7c40
|
||||
pipx https://github.com/yozachar/asdf-pipx.git 31db618
|
||||
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
|
||||
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
|
||||
rust https://github.com/code-lever/asdf-rust.git 95acf4f
|
||||
semgrep https://github.com/brentjanderson/asdf-semgrep.git 13ff78b
|
||||
shellcheck https://github.com/luizm/asdf-shellcheck.git 780d78d
|
||||
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
|
||||
terraform-ls https://github.com/asdf-community/asdf-hashicorp.git f1602b6
|
||||
terraform-lsp https://github.com/bartlomiejdanek/asdf-terraform-lsp.git bba7106
|
||||
terragrunt https://github.com/ohmer/asdf-terragrunt 4a6651a
|
||||
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
|
||||
vault https://github.com/asdf-community/asdf-hashicorp.git f1602b6
|
||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git d5c3161
|
||||
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
||||
Submodule config/cheat/cheatsheets/tldr updated: 2c475fa62d...a60bdfc18c
@@ -3,11 +3,11 @@
|
||||
# editor: $EDITOR
|
||||
|
||||
# Should 'cheat' always colorize output?
|
||||
colorize: true
|
||||
colorize: false
|
||||
# Which 'chroma' colorscheme should be applied to the output?
|
||||
# Options are available here:
|
||||
# https://github.com/alecthomas/chroma/tree/master/styles
|
||||
style: 'catppuccin'
|
||||
style: 'tokyonight'
|
||||
# Which 'chroma' "formatter" should be applied?
|
||||
# One of: "terminal", "terminal256", "terminal16m"
|
||||
formatter: terminal256
|
||||
|
||||
445
config/exports
445
config/exports
@@ -2,14 +2,37 @@
|
||||
# shellcheck shell=bash
|
||||
# vim: filetype=zsh
|
||||
|
||||
# Set XDG directories if not already set
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
[ -z "$XDG_CONFIG_HOME" ] && export XDG_CONFIG_HOME="$HOME/.config"
|
||||
[ -z "$XDG_DATA_HOME" ] && export XDG_DATA_HOME="$HOME/.local/share"
|
||||
[ -z "$XDG_CACHE_HOME" ] && export XDG_CACHE_HOME="$HOME/.cache"
|
||||
[ -z "$XDG_STATE_HOME" ] && export XDG_STATE_HOME="$HOME/.local/state"
|
||||
[ -z "$XDG_BIN_HOME" ] && export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
|
||||
# if DOTFILES is not set, set it to the default location
|
||||
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
|
||||
|
||||
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
|
||||
if ! command -v msg &> /dev/null; then
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "-> $1"
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
|
||||
# Cache commands using bkt if installed
|
||||
if command -v bkt >&/dev/null; then
|
||||
if command -v bkt &> /dev/null; then
|
||||
bkt()
|
||||
{
|
||||
command bkt --cache-dir="$XDG_CACHE_HOME/bkt" "$@"
|
||||
}
|
||||
else
|
||||
# If bkt isn't installed skip its arguments and just execute directly.
|
||||
# If bkt isn't installed, skip its arguments and just execute directly.
|
||||
# Optionally write a msg to stderr suggesting users install bkt.
|
||||
bkt()
|
||||
{
|
||||
@@ -18,32 +41,55 @@ else
|
||||
}
|
||||
fi
|
||||
|
||||
# shorthand for checking if the system has the bin in path,
|
||||
# this version does not use caching
|
||||
# usage: have_command php && php -v
|
||||
# Shorthand for checking if the system has the bin in path,
|
||||
# this version does not use caching.
|
||||
# Usage: have_command php && php -v
|
||||
have_command()
|
||||
{
|
||||
command -v "$1" >&/dev/null
|
||||
[ -z "$1" ] && {
|
||||
echo "Usage: have_command <command>"
|
||||
return 1
|
||||
}
|
||||
|
||||
command -v "$1" &> /dev/null
|
||||
}
|
||||
|
||||
# shorthand for checking if the system has the bin in path,
|
||||
# this version uses caching
|
||||
# usage: have php && php -v
|
||||
# Shorthand for checking if the system has the bin in path,
|
||||
# this version uses caching.
|
||||
# Usage: have php && php -v
|
||||
have()
|
||||
{
|
||||
bkt -- which "$1" >&/dev/null
|
||||
bkt -- which "$1" &> /dev/null
|
||||
}
|
||||
|
||||
# Function to run dark-notify and change alacritty theme
|
||||
# It uses flock to prevent running multiple instances.
|
||||
# Install flock with `brew install flock` on macOS.
|
||||
darknotify_alacritty()
|
||||
{
|
||||
x-have flock && [[ -f /tmp/dark-notify-alacritty.lock ]] && return
|
||||
x-have dark-notify && {
|
||||
# subprocess is used to prevent the command from showing it was backgrounded
|
||||
(
|
||||
flock /tmp/dark-notify-alacritty.lock dark-notify \
|
||||
-c "$HOME/.dotfiles/local/bin/x-change-alacritty-theme" &
|
||||
) &> /dev/null
|
||||
}
|
||||
return 0
|
||||
}
|
||||
darknotify_alacritty
|
||||
|
||||
# Function to list installed Homebrew packages using bkt caching
|
||||
brew_installed()
|
||||
{
|
||||
bkt -- brew list
|
||||
}
|
||||
|
||||
# shorthand for checking if brew package is installed
|
||||
# usage: have_brew php && php -v
|
||||
# Shorthand for checking if a Homebrew package is installed
|
||||
# Usage: have_brew php && php -v
|
||||
have_brew()
|
||||
{
|
||||
! x-have brew && return 125
|
||||
! have brew && return 125
|
||||
|
||||
if bkt -- brew list "$1" &> /dev/null; then
|
||||
return 0
|
||||
@@ -52,5 +98,374 @@ have_brew()
|
||||
fi
|
||||
}
|
||||
|
||||
source "$DOTFILES/config/exports-shell"
|
||||
source "$DOTFILES/config/exports-apps"
|
||||
# Alacritty preexec hook to update dynamic title
|
||||
preexec()
|
||||
{
|
||||
print -n -P "\e]0;$1%~\a"
|
||||
}
|
||||
|
||||
# Update dotfiles
|
||||
dfu()
|
||||
{
|
||||
(
|
||||
cd "$DOTFILES" && git pull --ff-only && ./install
|
||||
)
|
||||
}
|
||||
|
||||
# Weather in Tampere, or other city
|
||||
weather()
|
||||
{
|
||||
# https://github.com/chubin/wttr.in#usage
|
||||
local city="${1:-Tampere}"
|
||||
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
|
||||
}
|
||||
|
||||
# Docker
|
||||
ssh_docker()
|
||||
{
|
||||
docker exec -it "$@" bash
|
||||
}
|
||||
|
||||
# Rector project to php version 8.2 by default.
|
||||
rector()
|
||||
{
|
||||
local php="${1:-82}"
|
||||
docker run -v "$(pwd)":/project rector/rector:latest process \
|
||||
"/project/$1" \
|
||||
--set "php${php}" \
|
||||
--autoload-file /project/vendor/autoload.php
|
||||
}
|
||||
|
||||
# Commit everything
|
||||
commit()
|
||||
{
|
||||
local commitMessage="$*"
|
||||
|
||||
if [ -z "$commitMessage" ]; then
|
||||
commitMessage="Automated commit"
|
||||
fi
|
||||
|
||||
git add .
|
||||
git commit -a -m "$commitMessage"
|
||||
}
|
||||
|
||||
scheduler()
|
||||
{
|
||||
while :; do
|
||||
php artisan schedule:run
|
||||
echo "Sleeping 60 seconds..."
|
||||
sleep 60
|
||||
done
|
||||
}
|
||||
|
||||
# Run command silently
|
||||
# Usage: silent uptime
|
||||
silent()
|
||||
{
|
||||
"$@" >&/dev/null
|
||||
}
|
||||
|
||||
# Check if a file contains non-ascii characters
|
||||
nonascii()
|
||||
{
|
||||
LC_ALL=C grep -n '[^[:print:][:space:]]' "${@}"
|
||||
}
|
||||
|
||||
# Remove non-ascii characters from string
|
||||
# Usage: strip_nonascii "string"
|
||||
strip_nonascii()
|
||||
{
|
||||
echo "$1" | LC_ALL=C sed 's/[^[:print:][:space:]]//g'
|
||||
}
|
||||
|
||||
# Slugify a string
|
||||
# Usage: slugify "string"
|
||||
slugify()
|
||||
{
|
||||
echo "$1" | iconv -t ascii//TRANSLIT | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr A-Z a-z
|
||||
}
|
||||
|
||||
# https://stackoverflow.com/a/85932
|
||||
fn_exists()
|
||||
{
|
||||
declare -f -F "$1" > /dev/null
|
||||
return $?
|
||||
}
|
||||
|
||||
# Creates a random string
|
||||
rnd()
|
||||
{
|
||||
echo $RANDOM | md5sum | head -c 20
|
||||
}
|
||||
|
||||
# return sha256sum for file
|
||||
# $1 - filename (string)
|
||||
get_sha256sum()
|
||||
{
|
||||
sha256sum "$1" | head -c 64
|
||||
}
|
||||
|
||||
# Replaceable file
|
||||
#
|
||||
# $1 - filename (string)
|
||||
# $2 - filename (string)
|
||||
#
|
||||
# Returns 1 when replaceable, 0 when not replaceable.
|
||||
replacable()
|
||||
{
|
||||
FILE1="$1"
|
||||
FILE2="$2"
|
||||
|
||||
[[ ! -r "$FILE1" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "File 1 ($FILE1) does not exist"
|
||||
return 0
|
||||
}
|
||||
[[ ! -r "$FILE2" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "File 2 ($FILE2) does not exist, replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
FILE1_HASH=$(get_sha256sum "$FILE1")
|
||||
FILE2_HASH=$(get_sha256sum "$FILE2")
|
||||
|
||||
[[ $FILE1_HASH = "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "Could not get hash for file 1 ($FILE1)"
|
||||
return 0
|
||||
}
|
||||
[[ $FILE2_HASH = "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "Could not get hash for file 2 ($FILE2), replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
[[ "$FILE1_HASH" == "$FILE2_HASH" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_ok "Files match, not replaceable: $FILE1"
|
||||
return 0
|
||||
}
|
||||
|
||||
[[ $VERBOSE -eq 1 ]] && msg_warn "Files do not match ($FILE1_HASH != $FILE2_HASH), replaceable"
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
export COMPLETION_WAITING_DOTS=true
|
||||
|
||||
# Bash completion file location
|
||||
export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_completion"
|
||||
|
||||
# History env variables
|
||||
export HIST_STAMPS="yyyy-mm-dd"
|
||||
# Larger bash history (allow 32³ entries; default is 500)
|
||||
export HISTSIZE=32768
|
||||
export HISTFILESIZE=$HISTSIZE
|
||||
# don't put duplicate lines or lines starting with space in the history.
|
||||
# See bash(1) for more options
|
||||
export HISTCONTROL=ignoreboth
|
||||
# Make some commands not show up in history
|
||||
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
|
||||
# And include the parameter for ZSH
|
||||
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
|
||||
|
||||
# Less history location
|
||||
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
|
||||
|
||||
# Highlight section titles in manual pages
|
||||
# export LESS_TERMCAP_md="$ORANGE"
|
||||
|
||||
# zsh autoloaded terminfo
|
||||
export TERMINFO="${XDG_DATA_HOME}/terminfo"
|
||||
export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
|
||||
|
||||
# Don't clear the screen after quitting a manual page
|
||||
export MANPAGER="less -X"
|
||||
|
||||
# Always enable colored `grep` output
|
||||
export GREP_OPTIONS="--color=auto"
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
hash shopt 2> /dev/null && shopt -s checkwinsize
|
||||
|
||||
# Antigen configuration
|
||||
# https://github.com/zsh-users/antigen/wiki/Configuration
|
||||
msg "Setting up Antigen configuration"
|
||||
export ADOTDIR="$XDG_DATA_HOME/antigen"
|
||||
export ANTIGEN_CACHE="$XDG_CACHE_HOME/antigen"
|
||||
export ANTIGEN_SYSTEM_RECEIPT_F=".local/share/antigen/antigen_system_lastupdate"
|
||||
export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
|
||||
|
||||
# Ansible configuration
|
||||
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
||||
msg "Setting up Ansible configuration"
|
||||
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
|
||||
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
|
||||
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||
x-dc "$ANSIBLE_HOME"
|
||||
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
||||
|
||||
# asdf
|
||||
# https://github.com/asdf-vm/asdf
|
||||
msg "Setting up asdf configuration"
|
||||
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
||||
export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc"
|
||||
export ASDF_DATA_DIR="${ASDF_DIR}"
|
||||
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
|
||||
export ASDF_LOG_FILE="${XDG_CACHE_HOME}/asdf/asdf.log"
|
||||
export ASDF_NODEJS_LEGACY_FILE_DYNAMIC_STRATEGY="latest_available"
|
||||
export ASDF_NPM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/npm-packages"
|
||||
export ASDF_GOLANG_MOD_VERSION_ENABLED=true
|
||||
export ASDF_GOLANG_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/golang-packages"
|
||||
export ASDF_CRATE_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/cargo-packages"
|
||||
export ASDF_GEM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/gem-packages"
|
||||
export ASDF_DIRENV_IGNORE_MISSING_PLUGINS=1
|
||||
export PATH="${ASDF_DIR}/bin:${PATH}"
|
||||
|
||||
# bob manages nvim versions
|
||||
msg "Setting up bob configuration"
|
||||
x-path-prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
|
||||
# bkt (shell command caching tool) configuration
|
||||
msg "Setting up bkt configuration"
|
||||
export BKT_TTL=1m
|
||||
|
||||
# brew, https://docs.brew.sh/Manpage
|
||||
msg "Setting up Homebrew configuration"
|
||||
export HOMEBREW_NO_ANALYTICS=true
|
||||
export HOMEBREW_NO_ENV_HINTS=true
|
||||
export HOMEBREW_BUNDLE_MAS_SKIP=true
|
||||
export HOMEBREW_BUNDLE_FILE="$XDG_CONFIG_HOME/homebrew/Brewfile"
|
||||
x-have brew && {
|
||||
eval "$(brew shellenv)"
|
||||
}
|
||||
|
||||
# composer, https://getcomposer.org/
|
||||
msg "Setting up Composer configuration"
|
||||
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
|
||||
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
|
||||
export PATH="$COMPOSER_BIN:$PATH"
|
||||
|
||||
# direnv, https://direnv.net/
|
||||
# https://direnv.net/docs/hook.html
|
||||
# Set the hook to show the direnv message in a different color
|
||||
export DIRENV_LOG_FORMAT=$'\033[2mdirenv: %s\033[0m'
|
||||
|
||||
# docker, https://docs.docker.com/engine/reference/commandline/cli/
|
||||
msg "Setting up Docker configuration"
|
||||
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
|
||||
x-dc "$DOCKER_CONFIG"
|
||||
# Docker: Disable snyk ad
|
||||
export DOCKER_SCAN_SUGGEST=false
|
||||
|
||||
# ffmpeg
|
||||
# https://ffmpeg.org/ffmpeg.html
|
||||
msg "Setting up FFmpeg configuration"
|
||||
export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg"
|
||||
x-have ffmpeg && x-dc "$FFMPEG_DATADIR"
|
||||
|
||||
# GnuPG
|
||||
# https://gnupg.org/documentation/manuals/gnupg/Invoking-GPG.html
|
||||
msg "Setting up GnuPG configuration"
|
||||
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||
|
||||
# Go
|
||||
# https://golang.org/doc/code.html
|
||||
msg "Setting up Go configuration"
|
||||
export GOPATH="$XDG_DATA_HOME/go"
|
||||
export GOBIN="$XDG_BIN_HOME"
|
||||
|
||||
# nb, https://xwmx.github.io/nb/
|
||||
msg "Setting up nb configuration"
|
||||
export NBRC_PATH="$XDG_CONFIG_HOME/nbrc"
|
||||
export NB_DIR="$XDG_STATE_HOME/nb"
|
||||
|
||||
# NPM: Add npm packages to path
|
||||
msg "Setting up NPM configuration"
|
||||
x-have node && {
|
||||
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
|
||||
export PATH="$NVM_NODE_BIN_DIR:$PATH"
|
||||
}
|
||||
|
||||
# oh-my-posh (omp) configuration
|
||||
msg "Setting up oh-my-posh configuration"
|
||||
export OHMYPOSH_CFG="$DOTFILES/config/omp/own.toml"
|
||||
|
||||
# op (1Password cli) is present
|
||||
msg "Setting up 1Password CLI configuration"
|
||||
export OP_CACHE="$XDG_STATE_HOME/1password"
|
||||
|
||||
# Python
|
||||
#
|
||||
# pyenv, python environments
|
||||
msg "Setting up Python configuration"
|
||||
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
|
||||
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
|
||||
export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"
|
||||
x-have pyenv && {
|
||||
eval "$(pyenv init -)"
|
||||
}
|
||||
|
||||
# Ruby
|
||||
#
|
||||
# including: bundler, rbenv
|
||||
msg "Setting up Ruby configuration"
|
||||
export GEM_HOME="${XDG_DATA_HOME}"/gem
|
||||
export GEM_SPEC_CACHE="${XDG_CACHE_HOME}"/gem
|
||||
export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
|
||||
export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
|
||||
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
|
||||
export RBENV_ROOT="$XDG_STATE_HOME/rbenv"
|
||||
x-dc "$RBENV_ROOT"
|
||||
x-have gem && export PATH="${GEM_HOME}/bin:$PATH"
|
||||
|
||||
# Rust / cargo
|
||||
msg "Setting up Rust/Cargo configuration"
|
||||
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
|
||||
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||
export PATH="$CARGO_HOME/bin:$PATH"
|
||||
|
||||
# screen
|
||||
# https://www.gnu.org/software/screen/manual/screen.html
|
||||
msg "Setting up screen configuration"
|
||||
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
|
||||
|
||||
# sonarlint
|
||||
# https://www.sonarlint.org/
|
||||
msg "Setting up Sonarlint configuration"
|
||||
export SONARLINT_USER_HOME="$XDG_DATA_HOME/sonarlint"
|
||||
|
||||
# terraform
|
||||
# https://www.terraform.io/docs/cli/config/config-file.html
|
||||
# https://www.terraform.io/docs/cli/config/environment-variables.html
|
||||
msg "Setting up Terraform configuration"
|
||||
export TF_DATA_DIR="$XDG_STATE_HOME/terraform"
|
||||
export TF_CLI_CONFIG_FILE="$XDG_CONFIG_HOME/terraform/terraformrc"
|
||||
export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
|
||||
# tldr / tealdeer
|
||||
msg "Setting up tldr configuration"
|
||||
export TEALDEER_CONFIG_DIR="$XDG_CONFIG_HOME/tealdeer/"
|
||||
|
||||
# tmux
|
||||
# https://tmux.github.io/
|
||||
msg "Setting up tmux configuration"
|
||||
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||
|
||||
# wakatime, https://github.com/wakatime/wakatime-cli
|
||||
msg "Setting up Wakatime configuration"
|
||||
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
|
||||
x-dc "$WAKATIME_HOME"
|
||||
|
||||
# Misc
|
||||
msg "Setting up miscellaneous configuration"
|
||||
export CHEAT_USE_FZF=true
|
||||
export SQLITE_HISTORY="${XDG_CACHE_HOME}/sqlite_history"
|
||||
|
||||
X_EXPORTS_FILES=(
|
||||
"$HOME/.config/exports-secret"
|
||||
"$HOME/.config/exports-$(hostname)"
|
||||
"$HOME/.config/exports-$(hostname)-secret"
|
||||
)
|
||||
for exportFile in "${X_EXPORTS_FILES[@]}"; do
|
||||
[ -f "$exportFile" ] && source "$exportFile" && msg "Sourced $exportFile"
|
||||
done
|
||||
unset X_EXPORTS_FILES
|
||||
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck shell=bash
|
||||
# shellcheck enable=external-sources
|
||||
# shellcheck disable=1091,2139
|
||||
# vim: filetype=bash
|
||||
|
||||
# Antigen configuration
|
||||
# https://github.com/zsh-users/antigen/wiki/Configuration
|
||||
export ADOTDIR="$XDG_DATA_HOME/antigen"
|
||||
export ANTIGEN_CACHE="$XDG_CACHE_HOME/antigen"
|
||||
export ANTIGEN_SYSTEM_RECEIPT_F=".local/share/antigen/antigen_system_lastupdate"
|
||||
export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
|
||||
|
||||
# Ansible configuration
|
||||
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
||||
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
|
||||
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
|
||||
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||
x-dc "$ANSIBLE_HOME"
|
||||
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
||||
|
||||
export ANDROID_HOME="$XDG_DATA_HOME/android"
|
||||
|
||||
# bob manages nvim versions
|
||||
export PATH="$XDG_DATA_HOME/bob/nvim-bin:$PATH"
|
||||
|
||||
# bkt (shell command caching tool) configuration
|
||||
export BKT_TTL=1m
|
||||
|
||||
# brew, https://docs.brew.sh/Manpage
|
||||
export HOMEBREW_NO_ENV_HINTS=true
|
||||
|
||||
# composer, https://getcomposer.org/
|
||||
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
|
||||
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
|
||||
export PATH="$COMPOSER_BIN:$PATH"
|
||||
|
||||
# docker, https://docs.docker.com/engine/reference/commandline/cli/
|
||||
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
|
||||
x-dc "$DOCKER_CONFIG"
|
||||
# Docker: Disable snyk ad
|
||||
export DOCKER_SCAN_SUGGEST=false
|
||||
|
||||
# ffmpeg
|
||||
export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg"
|
||||
x-have ffmpeg && x-dc "$FFMPEG_DATADIR"
|
||||
|
||||
# GnuPG
|
||||
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||
|
||||
# Go
|
||||
export GOPATH="$XDG_DATA_HOME/go"
|
||||
export GOBIN="$XDG_BIN_HOME"
|
||||
|
||||
# nb, https://xwmx.github.io/nb/
|
||||
export NBRC_PATH="$XDG_CONFIG_HOME/nbrc"
|
||||
export NB_DIR="$XDG_STATE_HOME/nb"
|
||||
|
||||
# NPM: Add npm packages to path
|
||||
x-have node && {
|
||||
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
|
||||
export PATH="$NVM_NODE_BIN_DIR:$PATH"
|
||||
}
|
||||
|
||||
# op (1Password cli) is present
|
||||
export OP_CACHE="$XDG_STATE_HOME/1password"
|
||||
|
||||
# Python
|
||||
#
|
||||
# pyenv, python environments
|
||||
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
|
||||
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
|
||||
x-have pyenv && {
|
||||
export PATH="$PYENV_ROOT/shims:$PATH"
|
||||
eval "$(pyenv init -)"
|
||||
}
|
||||
|
||||
# Ruby
|
||||
#
|
||||
# including: bundler, rbenv
|
||||
export GEM_HOME="${XDG_DATA_HOME}"/gem
|
||||
export GEM_SPEC_CACHE="${XDG_CACHE_HOME}"/gem
|
||||
export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
|
||||
export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
|
||||
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
|
||||
export RBENV_ROOT="$XDG_STATE_HOME/rbenv"
|
||||
x-dc "$RBENV_ROOT"
|
||||
x-have gem && export PATH="${GEM_HOME}/bin:$PATH"
|
||||
|
||||
# Rust / cargo
|
||||
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
|
||||
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||
export PATH="$CARGO_HOME/bin:$PATH"
|
||||
|
||||
# screen
|
||||
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
|
||||
|
||||
# sonarlint
|
||||
export SONARLINT_USER_HOME="$XDG_DATA_HOME/sonarlint"
|
||||
|
||||
# terraform
|
||||
# https://www.terraform.io/docs/cli/config/config-file.html
|
||||
# https://www.terraform.io/docs/cli/config/environment-variables.html
|
||||
export TF_DATA_DIR="$XDG_STATE_HOME/terraform"
|
||||
export TF_CLI_CONFIG_FILE="$XDG_CONFIG_HOME/terraform/terraformrc"
|
||||
export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
|
||||
# tldr / tealdeer
|
||||
export TEALDEER_CONFIG_DIR="$XDG_CONFIG_HOME/tealdeer/"
|
||||
|
||||
# tmux
|
||||
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||
|
||||
# wakatime, https://github.com/wakatime/wakatime-cli
|
||||
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
|
||||
x-dc "$WAKATIME_HOME"
|
||||
|
||||
# Misc
|
||||
export BAT_THEME="ansi"
|
||||
export CHEAT_USE_FZF=true
|
||||
export SQLITE_HISTORY="$XDG_CACHE_HOME"/sqlite_history
|
||||
@@ -1,19 +1,25 @@
|
||||
# lakka exports
|
||||
|
||||
## LUA
|
||||
x-have luarocks && $(luarocks path --bin)
|
||||
if command -v luarocks &> /dev/null; then
|
||||
eval "$(luarocks path --bin)"
|
||||
fi
|
||||
|
||||
export PATH="$HOME/.local/go/bin:$PATH"
|
||||
|
||||
alias logrotate='/usr/sbin/logrotate -s $HOME/logs/state'
|
||||
alias logrotate='/usr/sbin/logrotate -s "$HOME/logs/state"'
|
||||
alias nano='nano -wS -$'
|
||||
alias gpg=gpg2
|
||||
|
||||
ACME_PATH="$HOME/.acme.sh"
|
||||
# shellcheck source=$HOME/.acme.sh/acme.sh.env
|
||||
[[ -s "$ACME_PATH/acme.sh.env" ]] && . "$ACME_PATH/acme.sh.env"
|
||||
if [[ -s "$ACME_PATH/acme.sh.env" ]]; then
|
||||
source "$ACME_PATH/acme.sh.env"
|
||||
fi
|
||||
|
||||
export RVM_PATH="$HOME/.rvm"
|
||||
export PATH="$RVM_PATH/bin:$PATH"
|
||||
# shellcheck source=$HOME/.rvm/scripts/rvm
|
||||
[[ -s "$RVM_PATH/scripts/rvm" ]] && source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function*
|
||||
if [[ -s "$RVM_PATH/scripts/rvm" ]]; then
|
||||
source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function*
|
||||
fi
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck shell=bash
|
||||
# shellcheck disable=1091,2046
|
||||
# vim: filetype=bash
|
||||
|
||||
# Bash completion file location
|
||||
export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_completion"
|
||||
|
||||
# History env variables
|
||||
export HIST_STAMPS="yyyy-mm-dd"
|
||||
# Larger bash history (allow 32³ entries; default is 500)
|
||||
export HISTSIZE=32768
|
||||
export HISTFILESIZE=$HISTSIZE
|
||||
# don't put duplicate lines or lines starting with space in the history.
|
||||
# See bash(1) for more options
|
||||
export HISTCONTROL=ignoreboth
|
||||
# Make some commands not show up in history
|
||||
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
|
||||
# And include the parameter for ZSH
|
||||
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
|
||||
|
||||
# Less history location
|
||||
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
|
||||
|
||||
# Highlight section titles in manual pages
|
||||
# export LESS_TERMCAP_md="$ORANGE"
|
||||
|
||||
# zsh autoloaded terminfo
|
||||
export TERMINFO="${XDG_DATA_HOME}/terminfo"
|
||||
export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
|
||||
|
||||
# Don't clear the screen after quitting a manual page
|
||||
export MANPAGER="less -X"
|
||||
|
||||
# Always enable colored `grep` output
|
||||
export GREP_OPTIONS="--color=auto"
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
hash shopt 2> /dev/null && shopt -s checkwinsize
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# shell functions
|
||||
2
config/gnupg/dirmngr.conf
Normal file
2
config/gnupg/dirmngr.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
disable-ipv6
|
||||
enable-ssh-support
|
||||
2
config/gnupg/gpg-agent.conf
Normal file
2
config/gnupg/gpg-agent.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
disable-ipv6
|
||||
enable-ssh-support
|
||||
@@ -1,26 +1,37 @@
|
||||
tap "1password/tap"
|
||||
tap "anchore/grype"
|
||||
tap "cormacrelf/tap"
|
||||
tap "ddosify/tap"
|
||||
tap "dm3ch/tap"
|
||||
tap "doron-cohen/tap"
|
||||
tap "gesquive/tap"
|
||||
tap "github/gh"
|
||||
tap "homebrew/autoupdate"
|
||||
tap "homebrew/bundle"
|
||||
tap "homebrew/cask-fonts"
|
||||
tap "homebrew/services"
|
||||
tap "jesseduffield/lazygit"
|
||||
tap "k8sgpt-ai/k8sgpt"
|
||||
tap "keith/formulae"
|
||||
tap "mongodb/brew"
|
||||
tap "reviewdog/tap"
|
||||
tap "shivammathur/extensions"
|
||||
tap "shivammathur/php"
|
||||
tap "teamookla/speedtest"
|
||||
tap "xwmx/taps"
|
||||
# Run your GitHub Actions locally
|
||||
brew "act"
|
||||
# Simple, modern, secure file encryption
|
||||
brew "age"
|
||||
# Mozilla CA certificate store
|
||||
brew "ca-certificates"
|
||||
# Mozilla CA bundle for Python
|
||||
brew "certifi"
|
||||
# Cryptographic recipes and primitives for Python
|
||||
brew "cryptography"
|
||||
# YAML Parser
|
||||
brew "libyaml"
|
||||
# Automate deployment, configuration, and upgrading
|
||||
brew "ansible"
|
||||
# Checks ansible playbooks for practices and behaviour
|
||||
brew "ansible-lint"
|
||||
# Generic-purpose lossless compression algorithm by Google
|
||||
@@ -45,10 +56,10 @@ brew "apr"
|
||||
brew "apr-util"
|
||||
# Password hashing library and CLI utility
|
||||
brew "argon2"
|
||||
# Open Source Kubernetes Marketplace
|
||||
brew "arkade"
|
||||
# Automatic configure script builder
|
||||
brew "autoconf"
|
||||
# Tool for generating GNU Standards-compliant Makefiles
|
||||
brew "automake"
|
||||
# GNU multiple precision arithmetic library
|
||||
brew "gmp"
|
||||
# GNU File, Shell, and Text utilities
|
||||
@@ -57,20 +68,16 @@ brew "coreutils"
|
||||
brew "asdf"
|
||||
# Spell checker with better logic than ispell
|
||||
brew "aspell"
|
||||
# Interpreted, interactive, object-oriented programming language
|
||||
brew "python@3.11"
|
||||
# Official Amazon AWS command-line interface
|
||||
brew "awscli"
|
||||
# Collection of over 500 reusable autoconf macros
|
||||
brew "autoconf-archive"
|
||||
# Manage compile and link flags for libraries
|
||||
brew "pkg-config"
|
||||
# Automated text file generator
|
||||
brew "autogen"
|
||||
# Bourne-Again SHell, a UNIX command interpreter
|
||||
brew "bash"
|
||||
# Clone of cat(1) with syntax highlighting and Git integration
|
||||
brew "bat"
|
||||
# C/C++ and Java libraries for Unicode and globalization
|
||||
brew "icu4c"
|
||||
# Yet another cross-platform graphical process/system monitor
|
||||
brew "bottom"
|
||||
# Switch Apache / Valet / CLI configs between PHP versions
|
||||
brew "brew-php-switcher"
|
||||
# Software library to render fonts
|
||||
brew "freetype"
|
||||
# XML-based font configuration API for X Windows
|
||||
@@ -79,46 +86,22 @@ brew "fontconfig"
|
||||
brew "gettext"
|
||||
# Core application library for C
|
||||
brew "glib"
|
||||
# Manage compile and link flags for libraries
|
||||
brew "pkg-config"
|
||||
# Human-friendly and fast alternative to cut and (sometimes) awk
|
||||
brew "choose-rust"
|
||||
# Cross-platform make
|
||||
brew "cmake"
|
||||
# Get, unpack, build, and install modules from CPAN
|
||||
brew "cpanminus"
|
||||
# Open source suite of directory software
|
||||
brew "openldap"
|
||||
# Get a file from an HTTP, HTTPS or FTP server
|
||||
brew "curl"
|
||||
# Diff that understands syntax
|
||||
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
|
||||
brew "dotenv-linter"
|
||||
# Tool to verify that your files are in harmony with your .editorconfig
|
||||
brew "editorconfig-checker", link: false
|
||||
# Useful examples at the command-line
|
||||
brew "eg-examples"
|
||||
# OpenType text shaping engine
|
||||
brew "harfbuzz"
|
||||
# Development kit for the Java programming language
|
||||
brew "openjdk"
|
||||
# Spellchecker wrapping library
|
||||
brew "enchant"
|
||||
# Run arbitrary commands when files change
|
||||
brew "entr"
|
||||
# Perl lib for reading and writing EXIF metadata
|
||||
brew "exiftool"
|
||||
# Simple, fast and user-friendly alternative to find
|
||||
brew "fd"
|
||||
# Banner-like program prints strings as ASCII art
|
||||
brew "figlet"
|
||||
# Lock file during command
|
||||
brew "flock"
|
||||
# Libraries to talk to Microsoft SQL Server and Sybase databases
|
||||
brew "freetds"
|
||||
# Monitor a directory for changes and run a shell command
|
||||
@@ -128,9 +111,7 @@ 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
|
||||
brew "gh"
|
||||
brew "gdu"
|
||||
# Distributed revision control system
|
||||
brew "git"
|
||||
# Enable transparent encryption/decryption of files in a git repo
|
||||
@@ -139,8 +120,6 @@ brew "git-crypt"
|
||||
brew "git-extras"
|
||||
# See your latest local git branches, formatted real fancy
|
||||
brew "git-recent"
|
||||
# Open-source GitLab command-line tool
|
||||
brew "glab"
|
||||
# Render markdown on the CLI
|
||||
brew "glow"
|
||||
# GNU implementation of the famous stream editor
|
||||
@@ -151,14 +130,18 @@ brew "unbound"
|
||||
brew "gnutls"
|
||||
# GNU Pretty Good Privacy (PGP) package
|
||||
brew "gnupg"
|
||||
# Open source programming language to build simple/reliable/efficient software
|
||||
brew "go"
|
||||
# Library access to GnuPG
|
||||
brew "gpgme"
|
||||
# Open source suite of directory software
|
||||
brew "openldap"
|
||||
# Manage your GnuPG keys with ease!
|
||||
brew "gpg-tui"
|
||||
# Image manipulation
|
||||
brew "netpbm"
|
||||
# C/C++ and Java libraries for Unicode and globalization
|
||||
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
|
||||
@@ -169,14 +152,10 @@ brew "graphviz"
|
||||
brew "grep"
|
||||
# Popular GNU data compression program
|
||||
brew "gzip"
|
||||
# Smarter Dockerfile linter to validate best practices
|
||||
brew "hadolint"
|
||||
# Improved top (interactive process viewer)
|
||||
brew "htop"
|
||||
# Website copier/offline browser
|
||||
brew "httrack"
|
||||
# Configurable static site generator
|
||||
brew "hugo"
|
||||
# Portable abstraction of the hierarchical topology of modern architectures
|
||||
brew "hwloc"
|
||||
# ISO/IEC 23008-12:2017 HEIF file format decoder and encoder
|
||||
brew "libheif"
|
||||
# Tools and libraries to manipulate images in many formats
|
||||
@@ -185,50 +164,38 @@ brew "imagemagick"
|
||||
brew "irssi"
|
||||
# Lightweight and flexible command-line JSON processor
|
||||
brew "jq"
|
||||
# Network authentication protocol
|
||||
brew "krb5"
|
||||
# Lazier way to manage everything docker
|
||||
brew "lazydocker"
|
||||
# JSON parser for C
|
||||
brew "json-c"
|
||||
# Scanning your k8s clusters, diagnosing, and triaging issues in simple English
|
||||
brew "k8sgpt"
|
||||
# Tool to detect/remediate misconfig and security risks of GitHub/GitLab assets
|
||||
brew "legitify"
|
||||
# Secure hashing function
|
||||
brew "libb2"
|
||||
# Postgres C API library
|
||||
brew "libpq"
|
||||
# Linguistic software and Finnish dictionary
|
||||
brew "libvoikko"
|
||||
# Rainbows and unicorns in your console!
|
||||
brew "lolcat"
|
||||
# Multi-platform support library with a focus on asynchronous I/O
|
||||
brew "libuv"
|
||||
# Package manager for the Lua programming language
|
||||
brew "luarocks"
|
||||
# LZMA-based compression program similar to gzip or bzip2
|
||||
brew "lzip"
|
||||
# Swiss Army Knife for macOS
|
||||
brew "m-cli"
|
||||
# Mac App Store command-line interface
|
||||
brew "mas"
|
||||
# Collection of tools that nobody wrote when UNIX was young
|
||||
brew "moreutils"
|
||||
# Mongrel of mail user agents (part elm, pine, mush, mh, etc.)
|
||||
brew "mutt"
|
||||
# NCurses Disk Usage
|
||||
brew "ncdu"
|
||||
# Ambitious Vim-fork focused on extensibility and agility
|
||||
brew "neovim"
|
||||
# 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@11"
|
||||
# Generate clients, server & docs from an OpenAPI spec (v2, v3)
|
||||
brew "openapi-generator"
|
||||
# Swiss-army knife of markup format conversion
|
||||
brew "pandoc"
|
||||
# Highly capable, feature-rich programming language
|
||||
brew "perl"
|
||||
# General-purpose scripting language
|
||||
brew "php@8.1"
|
||||
# ISO-C API and CLI for generating UUIDs
|
||||
brew "ossp-uuid"
|
||||
# Coreutils progress viewer
|
||||
brew "progress"
|
||||
# Simple Python style checker in one Python file
|
||||
brew "pycodestyle"
|
||||
# Python version management
|
||||
brew "pyenv"
|
||||
# Migrate pip packages from one Python version to another
|
||||
@@ -236,35 +203,17 @@ brew "pyenv-pip-migrate"
|
||||
# Pyenv plugin to manage virtualenv
|
||||
brew "pyenv-virtualenv"
|
||||
# Interpreted, interactive, object-oriented programming language
|
||||
brew "python@3.10"
|
||||
# Interpreted, interactive, object-oriented programming language
|
||||
brew "python@3.8"
|
||||
brew "python@3.11"
|
||||
# Install various Ruby versions and implementations
|
||||
brew "ruby-build"
|
||||
# Ruby version manager
|
||||
brew "rbenv"
|
||||
# RC file (dotfile) management
|
||||
brew "rcm"
|
||||
# Search tool like grep and The Silver Searcher
|
||||
brew "ripgrep"
|
||||
# Static analysis and lint tool, for (ba)sh scripts
|
||||
brew "shellcheck"
|
||||
# Autoformat shell script source code
|
||||
brew "shfmt"
|
||||
# Support CI generation of SBOMs via golang tooling
|
||||
brew "spdx-sbom-generator"
|
||||
# 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"
|
||||
# Very fast implementation of tldr in Rust
|
||||
brew "tealdeer"
|
||||
# Send macOS User Notifications from the command-line
|
||||
brew "terminal-notifier"
|
||||
# Thin wrapper for Terraform e.g. for locking state
|
||||
brew "terragrunt"
|
||||
# Tool which checks for the support of TLS/SSL ciphers and flaws
|
||||
brew "testssl"
|
||||
# Terraform version manager inspired by rbenv
|
||||
@@ -273,111 +222,60 @@ brew "tfenv"
|
||||
brew "tflint"
|
||||
# Static analysis security scanner for your terraform code
|
||||
brew "tfsec"
|
||||
# Programmatically correct mistyped console commands
|
||||
brew "thefuck"
|
||||
# Terminal multiplexer
|
||||
brew "tmux"
|
||||
# Display directories as trees (with optional color/HTML output)
|
||||
brew "tree"
|
||||
# Vulnerability scanner for container images, file systems, and Git repos
|
||||
brew "trivy"
|
||||
# Modern watch command
|
||||
brew "viddy"
|
||||
# Tool for creating isolated virtual python environments
|
||||
brew "virtualenv"
|
||||
# Command-line interface to the WakaTime api
|
||||
brew "wakatime-cli"
|
||||
# Executes a program periodically, showing output fullscreen
|
||||
brew "watch"
|
||||
# Watch files and take action when they change
|
||||
brew "watchman"
|
||||
# Internet file retriever
|
||||
brew "wget"
|
||||
# Personal information dashboard for your terminal
|
||||
brew "wtfutil"
|
||||
# Check your $HOME for unwanted files and directories
|
||||
brew "xdg-ninja", args: ["HEAD"]
|
||||
# Hackable, minimal, fast TUI file explorer
|
||||
brew "xplr"
|
||||
# JavaScript package manager
|
||||
brew "yarn"
|
||||
# A vulnerability scanner for container images and filesystems
|
||||
brew "anchore/grype/grype"
|
||||
# High-performance load testing tool, written in Golang.
|
||||
brew "ddosify/tap/ddosify"
|
||||
# Watcher for macOS 10.14+ light/dark mode changes
|
||||
brew "cormacrelf/tap/dark-notify"
|
||||
# Cleans up your $HOME from those pesky dotfiles
|
||||
brew "doron-cohen/tap/antidot"
|
||||
# lets you quickly switch between multiple git user profiles
|
||||
brew "gesquive/tap/git-user"
|
||||
# A simple terminal UI for git commands, written in Go
|
||||
brew "jesseduffield/lazygit/lazygit"
|
||||
brew "keith/formulae/reminders-cli"
|
||||
# High-performance, schema-free, document-oriented database
|
||||
brew "mongodb/brew/mongodb-community"
|
||||
# Imagick PHP extension
|
||||
brew "shivammathur/extensions/imagick@8.2"
|
||||
# Automated code review tool integrated with any code analysis tools regardless of programming language.
|
||||
brew "reviewdog/tap/reviewdog"
|
||||
# Imagick PHP extension
|
||||
brew "shivammathur/extensions/imagick@8.3"
|
||||
# Mcrypt PHP extension
|
||||
brew "shivammathur/extensions/mcrypt@8.3"
|
||||
# Msgpack PHP extension
|
||||
brew "shivammathur/extensions/msgpack@8.3"
|
||||
# PCOV PHP extension
|
||||
brew "shivammathur/extensions/pcov@8.3"
|
||||
# Redis PHP extension
|
||||
brew "shivammathur/extensions/redis@8.3"
|
||||
# Uuid PHP extension
|
||||
brew "shivammathur/extensions/uuid@8.3"
|
||||
# Xdebug PHP extension
|
||||
brew "shivammathur/extensions/xdebug@7.4"
|
||||
# Xdebug PHP extension
|
||||
brew "shivammathur/extensions/xdebug@8.0"
|
||||
# Xdebug PHP extension
|
||||
brew "shivammathur/extensions/xdebug@8.1"
|
||||
# Yaml PHP extension
|
||||
brew "shivammathur/extensions/yaml@8.3"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php@7.4"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php@8.0"
|
||||
# Ookla Speedtest
|
||||
brew "teamookla/speedtest/speedtest"
|
||||
brew "shivammathur/php/php-debug"
|
||||
# Command-line interface for 1Password
|
||||
cask "1password-cli"
|
||||
# GPU-accelerated terminal emulator
|
||||
cask "alacritty"
|
||||
# Automatic tiling window manager similar to xmonad
|
||||
cask "amethyst"
|
||||
# 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
|
||||
# App to build and share containerised applications and microservices
|
||||
cask "docker"
|
||||
# UI toolkit for building applications for mobile, web and desktop
|
||||
cask "flutter"
|
||||
# Unofficial overcast.fm podcast app
|
||||
cask "fog"
|
||||
# Typeface made for developers
|
||||
cask "font-jetbrains-mono"
|
||||
# Developer targeted fonts with a high number of glyphs
|
||||
cask "font-jetbrains-mono-nerd-font"
|
||||
cask "font-lato"
|
||||
cask "font-open-sans"
|
||||
# Font with a mechanical skeleton and the forms are largely geometric
|
||||
cask "font-roboto"
|
||||
cask "font-source-code-pro"
|
||||
cask "font-source-code-pro-for-powerline"
|
||||
cask "font-source-sans-pro"
|
||||
cask "font-source-serif-pro"
|
||||
# Open Source Webfont Converter
|
||||
cask "fontplop"
|
||||
# GIT client
|
||||
cask "fork"
|
||||
# Set of tools to manage resources and applications hosted on Google Cloud
|
||||
cask "google-cloud-sdk"
|
||||
# HTTP and GraphQL Client
|
||||
cask "insomnia"
|
||||
# JetBrains tools manager
|
||||
@@ -394,7 +292,7 @@ cask "ngrok"
|
||||
cask "notunes"
|
||||
# Knowledge base that works on top of a local folder of plain text Markdown files
|
||||
cask "obsidian"
|
||||
# Scheduling application focusing on organization
|
||||
# Scheduling application focusing on organisation
|
||||
cask "omnifocus"
|
||||
# Collaboration platform for API development
|
||||
cask "postman"
|
||||
@@ -412,12 +310,6 @@ cask "quicklookase"
|
||||
cask "quitter"
|
||||
# Control your tools with a few keystrokes
|
||||
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"
|
||||
# Plugin for AWS CLI to start and end sessions that connect to managed instances
|
||||
@@ -432,11 +324,17 @@ cask "soundsource"
|
||||
cask "suspicious-package"
|
||||
# Quicklook extension for source files
|
||||
cask "syntax-highlight"
|
||||
# Python IDE for beginners
|
||||
cask "thonny"
|
||||
# Configuration application for the Ultimate Hacking Keyboard
|
||||
cask "uhk-agent"
|
||||
# Open-source code editor
|
||||
cask "visual-studio-code"
|
||||
# Multimedia player
|
||||
cask "vlc"
|
||||
# Spell-checking service for Finnish
|
||||
cask "voikkospellservice"
|
||||
# Rust-based terminal
|
||||
cask "warp"
|
||||
# Application for generating TOTP and HOTP codes
|
||||
cask "yubico-authenticator"
|
||||
# Multiplayer code editor
|
||||
cask "zed"
|
||||
|
||||
1
config/nvim-kickstart
Submodule
1
config/nvim-kickstart
Submodule
Submodule config/nvim-kickstart added at f5aa89acb8
@@ -3,27 +3,33 @@
|
||||
"lazyvim.plugins.extras.coding.copilot",
|
||||
"lazyvim.plugins.extras.coding.yanky",
|
||||
"lazyvim.plugins.extras.editor.aerial",
|
||||
"lazyvim.plugins.extras.editor.aerial",
|
||||
"lazyvim.plugins.extras.editor.harpoon2",
|
||||
"lazyvim.plugins.extras.editor.leap",
|
||||
"lazyvim.plugins.extras.editor.symbols-outline",
|
||||
"lazyvim.plugins.extras.editor.outline",
|
||||
"lazyvim.plugins.extras.editor.refactoring",
|
||||
"lazyvim.plugins.extras.formatting.black",
|
||||
"lazyvim.plugins.extras.formatting.prettier",
|
||||
"lazyvim.plugins.extras.lang.ansible",
|
||||
"lazyvim.plugins.extras.lang.docker",
|
||||
"lazyvim.plugins.extras.lang.go",
|
||||
"lazyvim.plugins.extras.lang.json",
|
||||
"lazyvim.plugins.extras.lang.markdown",
|
||||
"lazyvim.plugins.extras.lang.php",
|
||||
"lazyvim.plugins.extras.lang.python",
|
||||
"lazyvim.plugins.extras.lang.tailwind",
|
||||
"lazyvim.plugins.extras.lang.terraform",
|
||||
"lazyvim.plugins.extras.lang.typescript",
|
||||
"lazyvim.plugins.extras.lang.vue",
|
||||
"lazyvim.plugins.extras.lang.yaml",
|
||||
"lazyvim.plugins.extras.linting.eslint",
|
||||
"lazyvim.plugins.extras.ui.edgy",
|
||||
"lazyvim.plugins.extras.ui.mini-animate",
|
||||
"lazyvim.plugins.extras.util.dot",
|
||||
"lazyvim.plugins.extras.vscode"
|
||||
"lazyvim.plugins.extras.util.mini-hipatterns"
|
||||
],
|
||||
"news": {
|
||||
"NEWS.md": "2123"
|
||||
"NEWS.md": "6077"
|
||||
},
|
||||
"version": 2
|
||||
}
|
||||
"version": 6
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ return {
|
||||
opts = function(_, opts)
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"phpactor",
|
||||
"intelephense",
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
-- luacheck: globals vim
|
||||
return {
|
||||
-- Neotree configuration
|
||||
{
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
opts = {
|
||||
filesystem = {
|
||||
filtered_items = {
|
||||
always_show = {
|
||||
".github",
|
||||
".gitignore",
|
||||
".editorconfig",
|
||||
".python-version",
|
||||
".nvmrc",
|
||||
".env",
|
||||
".env.example",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
-- Cloak allows you to overlay *'s over defined patterns in defined files.
|
||||
-- https://github.com/laytan/cloak.nvim
|
||||
{ "laytan/cloak.nvim" },
|
||||
@@ -36,7 +55,7 @@ return {
|
||||
end,
|
||||
opts = {
|
||||
open_fold_hl_timeout = 150,
|
||||
close_fold_kinds = { "imports", "comment" },
|
||||
close_fold_kinds_for_ft = { "imports", "comment" },
|
||||
preview = {
|
||||
win_config = {
|
||||
border = { "", "─", "", "", "", "─", "", "" },
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
column_width = 120
|
||||
column_width = 120
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||
"final_space": true,
|
||||
"shell_integration": true,
|
||||
"console_title_template": "{{.UserName}}@{{.HostName}} {{.Shell}} in {{.PWD}}",
|
||||
"blocks": [
|
||||
{
|
||||
@@ -130,21 +129,5 @@
|
||||
"foreground_templates": ["{{ if gt .Code 0 }}red{{ end }}"],
|
||||
"template": "\u279c "
|
||||
},
|
||||
"tooltips": [
|
||||
{
|
||||
"type": "git",
|
||||
"tips": ["git", "g"],
|
||||
"style": "diamond",
|
||||
"foreground": "#193549",
|
||||
"background": "#fffb38",
|
||||
"leading_diamond": "",
|
||||
"trailing_diamond": "",
|
||||
"template": "{{ .HEAD }}{{ if .Staging.Changed }} {{ .Staging.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}",
|
||||
"properties": {
|
||||
"fetch_status": true,
|
||||
"fetch_upstream_icon": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"version": 2
|
||||
}
|
||||
119
config/omp/own.toml
Normal file
119
config/omp/own.toml
Normal file
@@ -0,0 +1,119 @@
|
||||
"$schema" = "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json"
|
||||
final_space = true
|
||||
console_title_template = "{{.UserName}}@{{.HostName}} {{.Shell}} in {{.PWD}}"
|
||||
version = 2
|
||||
|
||||
[[blocks]]
|
||||
alignment = "left"
|
||||
type = "prompt"
|
||||
|
||||
[[blocks.segments]]
|
||||
foreground = "cyan"
|
||||
style = "powerline"
|
||||
template = "{{ .Icon }}"
|
||||
type = "os"
|
||||
|
||||
[[blocks.segments]]
|
||||
type = "session"
|
||||
style = "plain"
|
||||
template = " {{ if .SSHSession }} {{ .UserName }}@{{ end }}{{ .HostName }}"
|
||||
|
||||
[[blocks.segments]]
|
||||
foreground = "cyan"
|
||||
style = "plain"
|
||||
template = " {{ .Path }} "
|
||||
type = "path"
|
||||
|
||||
[blocks.segments.properties]
|
||||
style = "mixed"
|
||||
|
||||
[blocks.segments.mapped_locations]
|
||||
"~/Code/*" = ""
|
||||
|
||||
[[blocks.segments]]
|
||||
type = "git"
|
||||
style = "plain"
|
||||
foreground = "lightGreen"
|
||||
template = "{{ .UpstreamIcon }}{{ if or (.Staging.Changed) (.Working.Changed) }}({{if .Behind }}\u2193 {{ .Behind }} {{ end }}{{if .Staging.Changed }}\uF046 {{ .Staging.String }} {{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }}| {{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}){{ end }}"
|
||||
|
||||
[blocks.segments.properties]
|
||||
fetch_status = true
|
||||
fetch_upstream_icon = true
|
||||
|
||||
[blocks.segments.properties.untracked_modes]
|
||||
"~/Code/oh-my-posh/" = "no"
|
||||
|
||||
[[blocks.segments]]
|
||||
type = "terraform"
|
||||
style = "plain"
|
||||
foreground = "#000000"
|
||||
background = "#ebcc34"
|
||||
template = "{{.WorkspaceName}}"
|
||||
|
||||
[[blocks]]
|
||||
alignment = "left"
|
||||
type = "prompt"
|
||||
|
||||
[[blocks.segments]]
|
||||
foreground = "#68a063"
|
||||
style = "plain"
|
||||
template = " {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }}"
|
||||
type = "node"
|
||||
|
||||
[blocks.segments.properties]
|
||||
display_mode = "files"
|
||||
fetch_package_manager = true
|
||||
fetch_version = true
|
||||
|
||||
[[blocks.segments]]
|
||||
foreground = "#4063D8"
|
||||
style = "plain"
|
||||
template = " {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}"
|
||||
type = "crystal"
|
||||
|
||||
[blocks.segments.properties]
|
||||
display_mode = "files"
|
||||
fetch_version = true
|
||||
|
||||
[[blocks.segments]]
|
||||
foreground = "#DE3F24"
|
||||
style = "plain"
|
||||
template = " {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}"
|
||||
type = "ruby"
|
||||
|
||||
[blocks.segments.properties]
|
||||
display_mode = "files"
|
||||
fetch_version = true
|
||||
|
||||
[[blocks.segments]]
|
||||
foreground = "#FED142"
|
||||
style = "plain"
|
||||
template = " {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}"
|
||||
type = "python"
|
||||
|
||||
[blocks.segments.properties]
|
||||
display_mode = "context"
|
||||
fetch_virtual_env = false
|
||||
|
||||
[[blocks]]
|
||||
alignment = "left"
|
||||
newline = true
|
||||
type = "prompt"
|
||||
|
||||
[[blocks.segments]]
|
||||
background = "transparent"
|
||||
foreground = "lightGreen"
|
||||
foreground_templates = [ "{{ if gt .Code 0 }}red{{ end }}" ]
|
||||
style = "plain"
|
||||
template = "➜"
|
||||
type = "status"
|
||||
|
||||
[blocks.segments.properties]
|
||||
always_enabled = true
|
||||
|
||||
[transient_prompt]
|
||||
background = "transparent"
|
||||
foreground = "lightGreen"
|
||||
foreground_templates = [ "{{ if gt .Code 0 }}red{{ end }}" ]
|
||||
template = "➜ "
|
||||
|
||||
74
config/omp/zen.toml
Normal file
74
config/omp/zen.toml
Normal file
@@ -0,0 +1,74 @@
|
||||
#:schema https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json
|
||||
|
||||
version = 2
|
||||
final_space = true
|
||||
console_title_template = '{{ .Shell }} in {{ .Folder }}'
|
||||
|
||||
[[blocks]]
|
||||
type = 'prompt'
|
||||
alignment = 'left'
|
||||
newline = true
|
||||
|
||||
[[blocks.segments]]
|
||||
type = 'path'
|
||||
style = 'plain'
|
||||
background = 'transparent'
|
||||
foreground = 'blue'
|
||||
template = '{{ .Path }}'
|
||||
|
||||
[blocks.segments.properties]
|
||||
style = 'full'
|
||||
|
||||
[[blocks.segments]]
|
||||
type = 'git'
|
||||
style = 'plain'
|
||||
foreground = 'p:grey'
|
||||
background = 'transparent'
|
||||
template = ' {{ .HEAD }}{{ if or (.Working.Changed) (.Staging.Changed) }}*{{ end }} <cyan>{{ if gt .Behind 0 }}⇣{{ end }}{{ if gt .Ahead 0 }}⇡{{ end }}</>'
|
||||
|
||||
[blocks.segments.properties]
|
||||
branch_icon = ''
|
||||
commit_icon = '@'
|
||||
fetch_status = true
|
||||
|
||||
[[blocks]]
|
||||
type = 'rprompt'
|
||||
overflow = 'hidden'
|
||||
|
||||
[[blocks.segments]]
|
||||
type = 'executiontime'
|
||||
style = 'plain'
|
||||
foreground = 'yellow'
|
||||
background = 'transparent'
|
||||
template = '{{ .FormattedMs }}'
|
||||
|
||||
[blocks.segments.properties]
|
||||
threshold = 5000
|
||||
|
||||
[[blocks]]
|
||||
type = 'prompt'
|
||||
alignment = 'left'
|
||||
newline = true
|
||||
|
||||
[[blocks.segments]]
|
||||
type = 'text'
|
||||
style = 'plain'
|
||||
foreground_templates = [
|
||||
"{{if gt .Code 0}}red{{end}}",
|
||||
"{{if eq .Code 0}}magenta{{end}}",
|
||||
]
|
||||
background = 'transparent'
|
||||
template = '❯'
|
||||
|
||||
[transient_prompt]
|
||||
foreground_templates = [
|
||||
"{{if gt .Code 0}}red{{end}}",
|
||||
"{{if eq .Code 0}}magenta{{end}}",
|
||||
]
|
||||
background = 'transparent'
|
||||
template = '❯ '
|
||||
|
||||
[secondary_prompt]
|
||||
foreground = 'magenta'
|
||||
background = 'transparent'
|
||||
template = '❯❯ '
|
||||
96
config/shared.sh
Executable file
96
config/shared.sh
Executable file
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Shared configuration
|
||||
#
|
||||
# shellcheck shell=bash
|
||||
|
||||
# Defaults
|
||||
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
|
||||
export DOTFILES_CURRENT_SHELL=$(basename "$SHELL")
|
||||
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
# Enable debugging with DEBUG=1
|
||||
DEBUG="${DEBUG:-0}"
|
||||
|
||||
# Enable debugging with DEBUG=1
|
||||
[ "${DEBUG:-0}" -eq 1 ] && set -x
|
||||
|
||||
# Explicitly set XDG folders, if not already set
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
[ -z "$XDG_CONFIG_HOME" ] && export XDG_CONFIG_HOME="$HOME/.config"
|
||||
[ -z "$XDG_DATA_HOME" ] && export XDG_DATA_HOME="$HOME/.local/share"
|
||||
[ -z "$XDG_CACHE_HOME" ] && export XDG_CACHE_HOME="$HOME/.cache"
|
||||
[ -z "$XDG_STATE_HOME" ] && export XDG_STATE_HOME="$HOME/.local/state"
|
||||
[ -z "$XDG_BIN_HOME" ] && export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
|
||||
# Paths
|
||||
x-path-prepend "/usr/local/bin"
|
||||
x-path-prepend "/opt/homebrew/bin"
|
||||
x-path-prepend "$XDG_DATA_HOME/cargo/bin"
|
||||
x-path-prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
x-path-prepend "$DOTFILES/local/bin"
|
||||
x-path-prepend "$XDG_BIN_HOME"
|
||||
|
||||
# Custom completion paths
|
||||
[ -z "$ZSH_CUSTOM_COMPLETION_PATH" ] && export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
|
||||
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
|
||||
export FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
|
||||
|
||||
if ! declare -f msg > /dev/null; then
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[ "$VERBOSE" -eq 1 ] && echo "$1"
|
||||
return 0
|
||||
}
|
||||
msg "msg was not defined, defined it now"
|
||||
fi
|
||||
|
||||
if ! declare -f msg_err > /dev/null; then
|
||||
msg "msg_err was not defined, defined it now"
|
||||
# Function to print error messages and exit
|
||||
# $1 - error message (string)
|
||||
msg_err()
|
||||
{
|
||||
echo "(!) ERROR: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
if ! declare -f msg_done > /dev/null; then
|
||||
msg "msg_done was not defined, defined it now"
|
||||
# Function to print done message
|
||||
# $1 - message (string)
|
||||
msg_done()
|
||||
{
|
||||
echo "✓ $1"
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
|
||||
if ! declare -f msg_run > /dev/null; then
|
||||
msg "msg_run was not defined, defined it now"
|
||||
# Function to print running message
|
||||
# $1 - message (string)
|
||||
msg_run()
|
||||
{
|
||||
echo "→ $1"
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
|
||||
if ! declare -f msg_ok > /dev/null; then
|
||||
msg "msg_ok was not defined, defined it now"
|
||||
# Function to print ok message
|
||||
# $1 - message (string)
|
||||
msg_ok()
|
||||
{
|
||||
echo "✓ $1"
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
|
||||
source "$DOTFILES/config/exports"
|
||||
source "$DOTFILES/config/alias"
|
||||
1
config/tmux/plugins/tmux-dark-notify
Submodule
1
config/tmux/plugins/tmux-dark-notify
Submodule
Submodule config/tmux/plugins/tmux-dark-notify added at dfa2b45b3e
Submodule config/tmux/plugins/tmux-window-name updated: f89e9c9d71...0772aa2033
7
config/tmux/theme-dark.conf
Normal file
7
config/tmux/theme-dark.conf
Normal file
@@ -0,0 +1,7 @@
|
||||
set-option -g status-style 'fg=#cad3f5,bg=default'
|
||||
set-window-option -g window-status-style 'fg=#cad3f5,bg=default dim'
|
||||
set-window-option -g window-status-current-style 'fg=#04a5e5,bg=default'
|
||||
set-window-option -g window-status-activity-style 'fg=#cad3f5,bg=default nodim'
|
||||
set-window-option -g window-status-bell-style 'fg=#cad3f5,bg=default'
|
||||
set -g message-style 'fg=#c6a0f6 bg=#24273a bold'
|
||||
|
||||
7
config/tmux/theme-light.conf
Normal file
7
config/tmux/theme-light.conf
Normal file
@@ -0,0 +1,7 @@
|
||||
set-option -g status-style 'fg=#4c4f69,bg=#eff1f5'
|
||||
set-window-option -g window-status-style 'fg=#4c4f69,bg=#eff1f5 dim'
|
||||
set-window-option -g window-status-current-style 'fg=#8839ef,bg=#eff1f5'
|
||||
set-window-option -g window-status-activity-style 'fg=#4c4f69,bg=#eff1f5 nodim'
|
||||
set-window-option -g window-status-bell-style 'fg=#4c4f69,bg=#eff1f5'
|
||||
set -g message-style 'fg=#8839ef bg=#e6e9ef bold' # fg magenta, bg black
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# ~/.config/tmux/tmux.conf, or .dotfiles/config/tmux/tmux.conf
|
||||
#
|
||||
# Contains configuration from the follwing sources:
|
||||
# Contains configuration from the following sources:
|
||||
# - https://tmuxguide.readthedocs.io/en/latest/tmux/tmux.html
|
||||
# - https://github.com/dreamsofcode-io/tmux/blob/main/tmux.conf
|
||||
|
||||
@@ -25,10 +25,6 @@ bind -n M-Right select-pane -R
|
||||
bind -n M-Up select-pane -U
|
||||
bind -n M-Down select-pane -D
|
||||
|
||||
# Control-Tab & Control-Shift-Tab to switch windows
|
||||
bind -n C-Tab previous-window
|
||||
bind -n C-S-Tab next-window
|
||||
|
||||
# Reload tmux config with <prefix> + r
|
||||
bind r source-file ~/.dotfiles/config/tmux/tmux.conf \; display "tmux cfg reloaded!"
|
||||
|
||||
@@ -47,6 +43,7 @@ bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
||||
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
||||
bind '"' split-window -v -c "#{pane_current_path}"
|
||||
bind '!' split-window -h -c "#{pane_current_path}"
|
||||
bind '^' switch-client -t'{marked}'
|
||||
|
||||
# synchronize all panes in a window
|
||||
bind y setw synchronize-panes
|
||||
@@ -56,9 +53,6 @@ bind y setw synchronize-panes
|
||||
unbind [
|
||||
bind Escape copy-mode
|
||||
|
||||
# start selection with 'space' and copy using 'y'
|
||||
#bind -t vi-copy 'y' copy-selection
|
||||
|
||||
# paste using 'p'
|
||||
unbind p
|
||||
bind p paste-buffer
|
||||
@@ -67,12 +61,29 @@ bind p paste-buffer
|
||||
# │ Settings │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||
|
||||
# Setting status on
|
||||
set -g status "on"
|
||||
|
||||
# Hide clock
|
||||
set -g display-time 0
|
||||
|
||||
# Activity Monitoring (for when something happens in another pain)
|
||||
set -g monitor-activity on
|
||||
set -g visual-activity off
|
||||
set -g visual-bell off
|
||||
|
||||
# Expose window title
|
||||
set-option -g set-titles on
|
||||
|
||||
# Set bigger history limit
|
||||
set -g history-limit 20000
|
||||
|
||||
# Keep Tmux alive when the initial command is finished
|
||||
set -g remain-on-exit off
|
||||
|
||||
# Mouse support
|
||||
set -g mouse on
|
||||
|
||||
@@ -92,21 +103,23 @@ set-window-option -g mode-keys vi
|
||||
# │ Theme │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
|
||||
# Make sure status sides are long enough and centered is in the middle
|
||||
set -g status-left-length "30"
|
||||
set -g status-left-length "0"
|
||||
set -g status-right-length "30"
|
||||
|
||||
set-option -g status-position "bottom"
|
||||
set-option -g status-style 'bg=default,fg=#ffffff'
|
||||
set-option -g status-justify centre
|
||||
set-option -g status-left '#h '
|
||||
set-window-option -g window-status-style 'fg=#ffffff,bg=default'
|
||||
set-option -g status-justify left
|
||||
set-option -g status-left ''
|
||||
set-option -g window-status-format ' #I:#W '
|
||||
set-window-option -g window-status-current-style 'fg=#111111,bg=#7aa2f7'
|
||||
set-option -g window-status-current-format ' #I:#W#{?window_zoomed_flag, , } '
|
||||
set-option -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
||||
|
||||
set-option -g status-left "#{hostname_short}/#S"
|
||||
set-option -g status-right "%H:%M #{tmux_mode_indicator}"
|
||||
set-option -g status-right "#{hostname_short}/#S #{tmux_mode_indicator}"
|
||||
|
||||
set -g pane-border-style "fg=#3b4261"
|
||||
set -g pane-active-border-style "fg=#7aa2f7"
|
||||
|
||||
# https://github.com/erikw/tmux-dark-notify
|
||||
set -g @dark-notify-theme-path-light '~/.dotfiles/config/tmux/theme-light.conf'
|
||||
set -g @dark-notify-theme-path-dark '~/.dotfiles/config/tmux/theme-dark.conf'
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Plugins related configurations │
|
||||
@@ -123,16 +136,17 @@ set -g @suspend_key 'F12'
|
||||
set -g @tmux_window_name_max_name_len "20"
|
||||
### Replace $HOME with ~ in window names
|
||||
set -g @tmux_window_name_use_tilde "True"
|
||||
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh']"
|
||||
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh', 'oh-my-posh']"
|
||||
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'x-set-php-aliases']" # Default is []
|
||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'x-set-php-aliases', 'oh-my-posh', 'antidot']" # Default is []
|
||||
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local')]"
|
||||
|
||||
## https://github.com/tmux-plugins/tmux-continuum
|
||||
set -g @continuum-restore 'on'
|
||||
|
||||
## https://github.com/tmux-plugins/tmux-resurrect
|
||||
set -g @resurrect-strategy-nvim 'session'
|
||||
set -g @resurrect-dir '$HOME/.local/state/tmux/tmux-resurrect'
|
||||
set -g @resurrect-dir '~/.local/state/tmux/tmux-resurrect'
|
||||
|
||||
## https://github.com/MunifTanjim/tmux-mode-indicator
|
||||
set -g @mode_indicator_prefix_mode_style 'bg=default,fg=#7aa2f7'
|
||||
@@ -153,4 +167,8 @@ run-shell ~/.dotfiles/config/tmux/plugins/tmux-mode-indicator/mode_indicator.tmu
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-suspend/suspend.tmux
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-yank/yank.tmux
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-current-pane-hostname/current_pane_hostname.tmux
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-dark-notify/main.tmux
|
||||
|
||||
if-shell "test -e $HOME/.local/state/tmux/tmux-dark-notify-theme.conf" \
|
||||
"source-file $HOME/.local/state/tmux/tmux-dark-notify-theme.conf"
|
||||
|
||||
|
||||
37
config/wezterm/wezterm.lua
Normal file
37
config/wezterm/wezterm.lua
Normal file
@@ -0,0 +1,37 @@
|
||||
local wezterm = require("wezterm")
|
||||
local config = wezterm.config_builder()
|
||||
|
||||
-- Font and font size
|
||||
config.font_size = 14.0
|
||||
config.font = wezterm.font("JetBrainsMonoNL Nerd Font Mono")
|
||||
|
||||
-- Make the window a bit transparent
|
||||
config.window_background_opacity = 0.97
|
||||
|
||||
-- Don't show tab bar
|
||||
config.enable_tab_bar = false
|
||||
|
||||
config.send_composed_key_when_left_alt_is_pressed = true
|
||||
|
||||
-- Function to detect the theme based on appearance
|
||||
function Scheme_for_appearance(appearance)
|
||||
if appearance:find("Dark") then
|
||||
return "Tokyo Night Storm"
|
||||
else
|
||||
return "Tokyo Night Day"
|
||||
end
|
||||
end
|
||||
|
||||
-- Set the color scheme based on appearance
|
||||
---@diagnostic disable-next-line: unused-local
|
||||
wezterm.on("window-config-reloaded", function(window, pane)
|
||||
local overrides = window:get_config_overrides() or {}
|
||||
local appearance = window:get_appearance()
|
||||
local scheme = Scheme_for_appearance(appearance)
|
||||
if overrides.color_scheme ~= scheme then
|
||||
overrides.color_scheme = scheme
|
||||
window:set_config_overrides(overrides)
|
||||
end
|
||||
end)
|
||||
|
||||
return config
|
||||
53
docs/folders.md
Normal file
53
docs/folders.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Interesting folders
|
||||
|
||||
## XDG
|
||||
|
||||
XDG is a set of specifications that provide a standard for the organization
|
||||
of user-specific files and directories. It is based on the _XDG Base Directory Specification_.
|
||||
|
||||
### XDG_BIN_HOME (`$HOME/.local/bin`)
|
||||
|
||||
`$XDG_BIN_HOME` defines directory that contains local binaries.
|
||||
|
||||
User-specific executable files may be stored in `$HOME/.local/bin`.
|
||||
Distributions should ensure this directory shows up in the UNIX `$PATH`
|
||||
environment variable, at an appropriate place.
|
||||
|
||||
### XDG_DATA_HOME (`$HOME/.local/share`)
|
||||
|
||||
`$XDG_DATA_HOME` defines the base directory relative to which
|
||||
user-specific _data files_ should be stored.
|
||||
|
||||
If `$XDG_DATA_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.local/share` should be used.
|
||||
|
||||
### XDG_CONFIG_HOME (`$HOME/.config`)
|
||||
|
||||
`$XDG_CONFIG_HOME` defines the base directory relative to which
|
||||
user-specific _configuration files_ should be stored.
|
||||
|
||||
If `$XDG_CONFIG_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.config` should be used.
|
||||
|
||||
### XDG_STATE_HOME (`$HOME/.local/state`)
|
||||
|
||||
`$XDG_STATE_HOME` defines the base directory relative to which
|
||||
user-specific _state files_ should be stored.
|
||||
|
||||
If `$XDG_STATE_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.local/state` should be used.
|
||||
|
||||
The `$XDG_STATE_HOME` contains _state data_ that should
|
||||
_persist between (application) restarts_, but that is not important or
|
||||
portable enough to the user that it should be stored in `$XDG_DATA_HOME`.
|
||||
|
||||
- It may contain:
|
||||
- actions history (logs, history, recently used files, …)
|
||||
- current state of the application that can be reused
|
||||
on a restart (view, layout, open files, undo history, …)
|
||||
|
||||
### XDG_DATA_DIRS
|
||||
|
||||
`$XDG_DATA_DIRS` defines the preference-ordered set of base directories
|
||||
to search for data files in addition to the `$XDG_DATA_HOME` base directory.
|
||||
The directories in `$XDG_DATA_DIRS` should be separated with a colon ':'.
|
||||
@@ -1,220 +1,207 @@
|
||||
# nvim keybindings
|
||||
|
||||
```txt
|
||||
|
||||
n <Esc> * <Cmd>nohlsearch<CR>
|
||||
n <Space>zg * :Rg<CR>
|
||||
FZF: search with rg (aka live grep).
|
||||
n <Space>zm * :Maps<CR>
|
||||
FZF: search mappings.
|
||||
n <Space>zh * :History<CR>
|
||||
FZF: search history of opened files
|
||||
n <Space>zb * :Buffers<CR>
|
||||
FZF: search open buffers.
|
||||
n <Space>zt * :Windows<CR>
|
||||
FZF: search open tabs.
|
||||
n <Space>zc * :Commands<CR>
|
||||
FZF: search commands.
|
||||
n <Space>zf * :FZF<Space>
|
||||
FZF: search for files in given path.
|
||||
n <Space>tc * <Cmd>CloakToggle<CR>
|
||||
[tc] Toggle Cloak
|
||||
n <Space>4 * <Lua 84: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
harpoon to file 4
|
||||
n <Space>3 * <Lua 83: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
harpoon to file 3
|
||||
n <Space>2 * <Lua 82: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
harpoon to file 2
|
||||
n <Space>1 * <Lua 81: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
harpoon to file 1
|
||||
n <Space>xn * <Lua 80: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
harpoon to next file
|
||||
n <Space>xa * <Lua 79: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
harpoon quick menu
|
||||
n <Space>xN * <Lua 78: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
harpoon to previous file
|
||||
n <Space>xA * <Lua 77: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
harpoon file
|
||||
n <Space>5 * <Lua 76: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
harpoon to file 5
|
||||
n <Space>tz * <Lua 51: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
[tz] Toggle ZenMode
|
||||
n <Space>e * <Lua 47: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
<Space>f * <Lua 40: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
[f] Format buffer
|
||||
n <Space>qq * <Cmd>wq!<CR>
|
||||
Quickly Quit
|
||||
n <Space>bq * <Lua 28: ~/.local/share/bob/v0.10.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/diagnostic.lua:1984>
|
||||
Open diagnostic [Q]uickfix list
|
||||
n <Space>be * <Lua 27: ~/.local/share/bob/v0.10.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/diagnostic.lua:1694>
|
||||
Show diagnostic [E]rror messages
|
||||
x # * <Lua 7: vim/_defaults.lua:0>
|
||||
:help v_#-default
|
||||
o % <Plug>(MatchitOperationForward)
|
||||
x % <Plug>(MatchitVisualForward)
|
||||
n % <Plug>(MatchitNormalForward)
|
||||
n & * :&&<CR>
|
||||
:help &-default
|
||||
x * * <Lua 3: vim/_defaults.lua:0>
|
||||
:help v_star-default
|
||||
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
||||
:help v_@-default
|
||||
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
||||
:help v_Q-default
|
||||
n Y * y$
|
||||
:help Y-default
|
||||
o [% <Plug>(MatchitOperationMultiBackward)
|
||||
x [% <Plug>(MatchitVisualMultiBackward)
|
||||
n [% <Plug>(MatchitNormalMultiBackward)
|
||||
n [d * <Lua 15: vim/_defaults.lua:0>
|
||||
Jump to the previous diagnostic
|
||||
o ]% <Plug>(MatchitOperationMultiForward)
|
||||
x ]% <Plug>(MatchitVisualMultiForward)
|
||||
n ]% <Plug>(MatchitNormalMultiForward)
|
||||
n ]d * <Lua 14: vim/_defaults.lua:0>
|
||||
Jump to the next diagnostic
|
||||
x a% <Plug>(MatchitVisualTextObject)
|
||||
o al <Lua 247: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Around last textobject
|
||||
o an <Lua 246: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Around next textobject
|
||||
x al <Lua 243: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Around last textobject
|
||||
x an <Lua 242: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Around next textobject
|
||||
o a <Lua 240: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Around textobject
|
||||
x a <Lua 238: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Around textobject
|
||||
n dj * <Lua 26: ~/.local/share/bob/v0.10.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/diagnostic.lua:1222>
|
||||
Go to next [D]iagnostic message
|
||||
n dk * <Lua 25: ~/.local/share/bob/v0.10.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/diagnostic.lua:1145>
|
||||
Go to previous [D]iagnostic message
|
||||
o g% <Plug>(MatchitOperationBackward)
|
||||
x g% <Plug>(MatchitVisualBackward)
|
||||
n g% <Plug>(MatchitNormalBackward)
|
||||
n gR * :RegexplainerToggle<CR>
|
||||
Toggle Regexplainer
|
||||
o g] <Lua 237: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1169>
|
||||
Move to right "around"
|
||||
x g] <Lua 236: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1169>
|
||||
Move to right "around"
|
||||
n g] <Lua 235: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1169>
|
||||
Move to right "around"
|
||||
o g[ <Lua 234: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1168>
|
||||
Move to left "around"
|
||||
x g[ <Lua 233: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1168>
|
||||
Move to left "around"
|
||||
n g[ <Lua 232: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1168>
|
||||
Move to left "around"
|
||||
o gc * <Lua 13: vim/_defaults.lua:0>
|
||||
Comment textobject
|
||||
n gcc * <Lua 12: vim/_defaults.lua:0>
|
||||
Toggle comment line
|
||||
x gc * <Lua 11: vim/_defaults.lua:0>
|
||||
Toggle comment
|
||||
n gc * <Lua 10: vim/_defaults.lua:0>
|
||||
Toggle comment
|
||||
x gx * <Lua 9: vim/_defaults.lua:0>
|
||||
Opens filepath or URI under cursor with the system handler (file explorer, web browser, …)
|
||||
n gx * <Lua 8: vim/_defaults.lua:0>
|
||||
Opens filepath or URI under cursor with the system handler (file explorer, web browser, …)
|
||||
o il <Lua 249: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside last textobject
|
||||
o in <Lua 248: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside next textobject
|
||||
x il <Lua 245: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside last textobject
|
||||
x in <Lua 244: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside next textobject
|
||||
o i <Lua 241: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside textobject
|
||||
x i <Lua 239: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside textobject
|
||||
n shn * <Lua 266: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Highlight next surrounding
|
||||
n sFn * <Lua 265: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find next left surrounding
|
||||
n sfn * <Lua 264: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find next right surrounding
|
||||
n srn * <Lua 263: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Replace next surrounding
|
||||
n sdn * <Lua 262: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Delete next surrounding
|
||||
n shl * <Lua 261: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Highlight previous surrounding
|
||||
n sFl * <Lua 260: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find previous left surrounding
|
||||
n sfl * <Lua 259: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find previous right surrounding
|
||||
n srl * <Lua 258: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Replace previous surrounding
|
||||
n sdl * <Lua 257: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Delete previous surrounding
|
||||
x sa * :<C-U>lua MiniSurround.add('visual')<CR>
|
||||
Add surrounding to selection
|
||||
n sn * <Lua 256: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:892>
|
||||
Update `MiniSurround.config.n_lines`
|
||||
n sh * <Lua 255: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Highlight surrounding
|
||||
n sF * <Lua 254: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find left surrounding
|
||||
n sf * <Lua 253: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find right surrounding
|
||||
n sr * <Lua 252: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Replace surrounding
|
||||
n sd * <Lua 251: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Delete surrounding
|
||||
n sa * <Lua 250: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Add surrounding
|
||||
x <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
|
||||
o <Plug>(MatchitOperationMultiForward) * :<C-U>call matchit#MultiMatch("W", "o")<CR>
|
||||
o <Plug>(MatchitOperationMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "o")<CR>
|
||||
x <Plug>(MatchitVisualMultiForward) * :<C-U>call matchit#MultiMatch("W", "n")<CR>m'gv``
|
||||
x <Plug>(MatchitVisualMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
|
||||
n <Plug>(MatchitNormalMultiForward) * :<C-U>call matchit#MultiMatch("W", "n")<CR>
|
||||
n <Plug>(MatchitNormalMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "n")<CR>
|
||||
o <Plug>(MatchitOperationBackward) * :<C-U>call matchit#Match_wrapper('',0,'o')<CR>
|
||||
o <Plug>(MatchitOperationForward) * :<C-U>call matchit#Match_wrapper('',1,'o')<CR>
|
||||
x <Plug>(MatchitVisualBackward) * :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv``
|
||||
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv``
|
||||
n <Plug>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
|
||||
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
|
||||
n <C-P> * :Files<CR>
|
||||
FZF: search for files starting at current directory.
|
||||
o <Plug>(fzf-maps-o) * <C-C>:<C-U>call fzf#vim#maps('o', 0)<CR>
|
||||
x <Plug>(fzf-maps-x) * :<C-U>call fzf#vim#maps('x', 0)<CR>
|
||||
n <Plug>(fzf-maps-n) * :<C-U>call fzf#vim#maps('n', 0)<CR>
|
||||
n <Plug>(fzf-normal) * <Nop>
|
||||
n <Plug>(fzf-insert) * i
|
||||
n <C-Bslash> * <Lua 60: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n <C-S> * <Cmd>w<CR>
|
||||
Save file
|
||||
n <C-K> * <Lua 57: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n <C-J> * <Lua 56: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n <C-H> * <Lua 58: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n <Down> * <Cmd>echo "Use j to move!!"<CR>
|
||||
n <Up> * <Cmd>echo "Use k to move!!"<CR>
|
||||
n <Right> * <Cmd>echo "Use l to move!!"<CR>
|
||||
n <Left> * <Cmd>echo "Use h to move!!"<CR>
|
||||
n <C-W><C-D> <C-W>d
|
||||
Show diagnostics under the cursor
|
||||
n <C-W>d * <Lua 16: vim/_defaults.lua:0>
|
||||
Show diagnostics under the cursor
|
||||
n <C-L> * <Lua 59: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
```
|
||||
n ! * <Cmd>lua require("which-key").show("!", {mode = "n", auto = true})<CR>
|
||||
n ' * <Cmd>lua require("which-key").show("'", {mode = "n", auto = true})<CR>
|
||||
n " * <Cmd>lua require("which-key").show("\"", {mode = "n", auto = true})<CR>
|
||||
n [ * <Cmd>lua require("which-key").show("[", {mode = "n", auto = true})<CR>
|
||||
n [b * <Lua 246: ~/.config/nvim/lua/astronvim/mappings.lua:54> Previous buffer
|
||||
n [g * <Lua 277: ~/.config/nvim/lua/astronvim/mappings.lua:150> Previous Git hunk
|
||||
n [t * <Lua 281: ~/.config/nvim/lua/astronvim/mappings.lua:120> Previous tab
|
||||
n ] * <Cmd>lua require("which-key").show("]", {mode = "n", auto = true})<CR>
|
||||
n ]b * <Lua 250: ~/.config/nvim/lua/astronvim/mappings.lua:52> Next buffer
|
||||
n ]g * <Lua 278: ~/.config/nvim/lua/astronvim/mappings.lua:149> Next Git hunk
|
||||
n ]t * <Lua 282: ~/.config/nvim/lua/astronvim/mappings.lua:119> Next tab
|
||||
n @ * <Cmd>lua require("which-key").show("@", {mode = "n", auto = true})<CR>
|
||||
n \ * <Cmd>split<CR> Horizontal Split
|
||||
n & * :&&<CR> Nvim builtin
|
||||
n `* <Cmd>lua require("which-key").show("`", {mode = "n", auto = true})<CR>
|
||||
n < * <Cmd>lua require("which-key").show("<", {mode = "n", auto = true})<CR>
|
||||
n <b * <Lua 297: ~/.config/nvim/lua/astronvim/mappings.lua:62> Move buffer tab left
|
||||
n <C-'> * <Cmd>ToggleTerm<CR> Toggle terminal
|
||||
n <C-Down> * <Lua 263: ~/.config/nvim/lua/astronvim/mappings.lua:213> Resize split down
|
||||
n <C-H> * <Lua 266: ~/.config/nvim/lua/astronvim/mappings.lua:208> Move to left split
|
||||
n <C-J> * <Lua 283: ~/.config/nvim/lua/astronvim/mappings.lua:209> Move to below split
|
||||
n <C-K> * <Lua 327: ~/.config/nvim/lua/astronvim/mappings.lua:210> Move to above split
|
||||
n <C-L> * <Lua 265: ~/.config/nvim/lua/astronvim/mappings.lua:211> Move to right split
|
||||
n <C-Left> * <Lua 262: ~/.config/nvim/lua/astronvim/mappings.lua:214> Resize split left
|
||||
n <C-N> * <Lua 79: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Goto next mark
|
||||
n <C-P> * <Lua 80: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Goto previous mark
|
||||
n <C-Q> * <Cmd>q!<CR> Force quit
|
||||
n <C-Right> * <Lua 261: ~/.config/nvim/lua/astronvim/mappings.lua:215> Resize split right
|
||||
n <C-S> * <Cmd>w!<CR> Force write
|
||||
n <C-Up> * <Lua 264: ~/.config/nvim/lua/astronvim/mappings.lua:212> Resize split up
|
||||
n <C-W> * <Cmd>lua require("which-key").show("\23", {mode = "n", auto = true})<CR>
|
||||
n <CR> *@<Lua 391: ~/.local/share/nvim/lazy/alpha-nvim/lua/alpha.lua:705>
|
||||
n <F10> * <Lua 348: ~/.config/nvim/lua/astronvim/mappings.lua:353> Debugger: Step Over
|
||||
n <F11> * <Lua 333: ~/.config/nvim/lua/astronvim/mappings.lua:354> Debugger: Step Into
|
||||
n <F17> * <Lua 344: ~/.config/nvim/lua/astronvim/mappings.lua:341> Debugger: Stop
|
||||
n <F21> * <Lua 342: ~/.config/nvim/lua/astronvim/mappings.lua:343> Debugger: Conditional Breakpoint
|
||||
n <F23> * <Lua 331: ~/.config/nvim/lua/astronvim/mappings.lua:355> Debugger: Step Out
|
||||
n <F29> * <Lua 334: ~/.config/nvim/lua/astronvim/mappings.lua:350> Debugger: Restart
|
||||
n <F5> * <Lua 341: ~/.config/nvim/lua/astronvim/mappings.lua:340> Debugger: Start
|
||||
n <F6> * <Lua 339: ~/.config/nvim/lua/astronvim/mappings.lua:351> Debugger: Pause
|
||||
n <F7> * <Cmd>ToggleTerm<CR> Toggle terminal
|
||||
n <F9> * <Lua 337: ~/.config/nvim/lua/astronvim/mappings.lua:352> Debugger: Toggle Breakpoint
|
||||
n <M-CR> *@<Lua 394: ~/.local/share/nvim/lazy/alpha-nvim/lua/alpha.lua:708>
|
||||
n <Plug>PlenaryTestFile *:lua require('plenary.test_harness').test_directory(vim.fn.expand("%:p"))<CR>
|
||||
n <Space> * <Cmd>lua require("which-key").show(" ", {mode = "n", auto = true})<CR>
|
||||
n <Space>/ * <Lua 279: ~/.config/nvim/lua/astronvim/mappings.lua:139> Comment line
|
||||
n <Space><Space> * <Lua 49: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Harpoon
|
||||
n <Space><Space>a * <Lua 81: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Add file
|
||||
n <Space><Space>e * <Lua 82: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Toggle quick menu
|
||||
n <Space><Space>j * <Lua 48: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Goto to TMUX tmux window
|
||||
n <Space><Space>m * <Lua 83: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Show marks in Telescope
|
||||
n <Space><Space>t * <Lua 84: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Goto to terminal window
|
||||
n <Space>a * <Lua 102: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Annotation
|
||||
n <Space>a<CR> * <Lua 103: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Current
|
||||
n <Space>ac * <Lua 104: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Class
|
||||
n <Space>af * <Lua 105: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Function
|
||||
n <Space>aF * <Lua 96: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> File
|
||||
n <Space>at * <Lua 86: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Type
|
||||
n <Space>b\ * <Lua 285: ~/.config/nvim/lua/astronvim/mappings.lua:100> Horizontal split buffer from tabline
|
||||
n <Space>b| * <Lua 284: ~/.config/nvim/lua/astronvim/mappings.lua:109> Vertical split buffer from tabline
|
||||
n <Space>bb * <Lua 294: ~/.config/nvim/lua/astronvim/mappings.lua:71> Select buffer from tabline
|
||||
n <Space>bC * <Lua 295: ~/.config/nvim/lua/astronvim/mappings.lua:69> Close all buffers
|
||||
n <Space>bc * <Lua 296: ~/.config/nvim/lua/astronvim/mappings.lua:68> Close all buffers except current
|
||||
n <Space>bd * <Lua 293: ~/.config/nvim/lua/astronvim/mappings.lua:77> Delete buffer from tabline
|
||||
n <Space>bD * <Lua 320: ~/.config/astronvim/lua/user/mappings.lua:13> Pick to close
|
||||
n <Space>bl * <Lua 292: ~/.config/nvim/lua/astronvim/mappings.lua:85> Close all buffers to the left
|
||||
n <Space>bn * <Cmd>tabnew<CR> New tab
|
||||
n <Space>br * <Lua 291: ~/.config/nvim/lua/astronvim/mappings.lua:87> Close all buffers to the right
|
||||
n <Space>bse * <Lua 290: ~/.config/nvim/lua/astronvim/mappings.lua:90> Sort by extension (buffers)
|
||||
n <Space>bsi * <Lua 287: ~/.config/nvim/lua/astronvim/mappings.lua:96> Sort by buffer number (buffers)
|
||||
n <Space>bsm * <Lua 286: ~/.config/nvim/lua/astronvim/mappings.lua:98> Sort by modification (buffers)
|
||||
n <Space>bsp * <Lua 288: ~/.config/nvim/lua/astronvim/mappings.lua:94> Sort by full path (buffers)
|
||||
n <Space>bsr * <Lua 289: ~/.config/nvim/lua/astronvim/mappings.lua:92> Sort by relative path (buffers)
|
||||
n <Space>C * <Lua 299: ~/.config/nvim/lua/astronvim/mappings.lua:50> Force close buffer
|
||||
n <Space>c * <Lua 300: ~/.config/nvim/lua/astronvim/mappings.lua:49> Close buffer
|
||||
n <Space>dB * <Lua 328: ~/.config/nvim/lua/astronvim/mappings.lua:357> Clear Breakpoints
|
||||
n <Space>db * <Lua 329: ~/.config/nvim/lua/astronvim/mappings.lua:356> Toggle Breakpoint (F9)
|
||||
n <Space>dC * <Lua 324: ~/.config/nvim/lua/astronvim/mappings.lua:360> Conditional Breakpoint (S-F9)
|
||||
n <Space>dc * <Lua 326: ~/.config/nvim/lua/astronvim/mappings.lua:358> Start/Continue (F5)
|
||||
n <Space>dE * <Lua 308: ~/.config/nvim/lua/astronvim/mappings.lua:379> Evaluate Input
|
||||
n <Space>dh * <Lua 305: ~/.config/nvim/lua/astronvim/mappings.lua:388> Debugger Hover
|
||||
n <Space>di * <Lua 323: ~/.config/nvim/lua/astronvim/mappings.lua:367> Step Into (F11)
|
||||
n <Space>dO * <Lua 321: ~/.config/nvim/lua/astronvim/mappings.lua:369> Step Out (S-F11)
|
||||
n <Space>do * <Lua 322: ~/.config/nvim/lua/astronvim/mappings.lua:368> Step Over (F10)
|
||||
n <Space>dp * <Lua 316: ~/.config/nvim/lua/astronvim/mappings.lua:372> Pause (F6)
|
||||
n <Space>dQ * <Lua 318: ~/.config/nvim/lua/astronvim/mappings.lua:371> Terminate Session (S-F5)
|
||||
n <Space>dq * <Lua 319: ~/.config/nvim/lua/astronvim/mappings.lua:370> Close Session
|
||||
n <Space>dR * <Lua 312: ~/.config/nvim/lua/astronvim/mappings.lua:374> Toggle REPL
|
||||
n <Space>dr * <Lua 314: ~/.config/nvim/lua/astronvim/mappings.lua:373> Restart (C-F5)
|
||||
n <Space>ds * <Lua 310: ~/.config/nvim/lua/astronvim/mappings.lua:375> Run To Cursor
|
||||
n <Space>du * <Lua 315: ~/.config/nvim/lua/astronvim/mappings.lua:387> Toggle Debugger UI
|
||||
n <Space>e * <Cmd>Neotree toggle<CR> Toggle Explorer
|
||||
n <Space>f' * <Lua 255: ~/.config/nvim/lua/astronvim/mappings.lua:241> Find marks
|
||||
n <Space>f<CR> * <Lua 256: ~/.config/nvim/lua/astronvim/mappings.lua:240> Resume previous search
|
||||
n <Space>fa * <Lua 254: ~/.config/nvim/lua/astronvim/mappings.lua:243> Find AstroNvim config files
|
||||
n <Space>fb * <Lua 253: ~/.config/nvim/lua/astronvim/mappings.lua:263> Find buffers
|
||||
n <Space>fC * <Lua 251: ~/.config/nvim/lua/astronvim/mappings.lua:266> Find commands
|
||||
n <Space>fc * <Lua 252: ~/.config/nvim/lua/astronvim/mappings.lua:265> Find for word under cursor
|
||||
n <Space>fF * <Lua 248: ~/.config/nvim/lua/astronvim/mappings.lua:269> Find all files
|
||||
n <Space>ff * <Lua 249: ~/.config/nvim/lua/astronvim/mappings.lua:267> Find files
|
||||
n <Space>fh * <Lua 247: ~/.config/nvim/lua/astronvim/mappings.lua:272> Find help
|
||||
n <Space>fk * <Lua 245: ~/.config/nvim/lua/astronvim/mappings.lua:273> Find keymaps
|
||||
n <Space>fm * <Lua 309: ~/.config/nvim/lua/astronvim/mappings.lua:274> Find man
|
||||
n <Space>fn * <Lua 242: ~/.config/nvim/lua/astronvim/mappings.lua:277> Find notifications
|
||||
n <Space>fo * <Lua 240: ~/.config/nvim/lua/astronvim/mappings.lua:279> Find history
|
||||
n <Space>fr * <Lua 239: ~/.config/nvim/lua/astronvim/mappings.lua:280> Find registers
|
||||
n <Space>ft * <Lua 238: ~/.config/nvim/lua/astronvim/mappings.lua:282> Find themes
|
||||
n <Space>fW * <Lua 236: ~/.config/nvim/lua/astronvim/mappings.lua:285> Find words in all files
|
||||
n <Space>fw * <Lua 237: ~/.config/nvim/lua/astronvim/mappings.lua:283> Find words
|
||||
n <Space>gb * <Lua 259: ~/.config/nvim/lua/astronvim/mappings.lua:237> Git branches
|
||||
n <Space>gc * <Lua 258: ~/.config/nvim/lua/astronvim/mappings.lua:238> Git commits
|
||||
n <Space>gd * <Lua 268: ~/.config/nvim/lua/astronvim/mappings.lua:159> View Git diff
|
||||
n <Space>gg * <Lua 304: ~/.config/nvim/lua/astronvim/mappings.lua:312> ToggleTerm lazygit
|
||||
n <Space>gh * <Lua 273: ~/.config/nvim/lua/astronvim/mappings.lua:154> Reset Git hunk
|
||||
n <Space>gL * <Lua 275: ~/.config/nvim/lua/astronvim/mappings.lua:152> View full Git blame
|
||||
n <Space>gl * <Lua 276: ~/.config/nvim/lua/astronvim/mappings.lua:151> View Git blame
|
||||
n <Space>gp * <Lua 274: ~/.config/nvim/lua/astronvim/mappings.lua:153> Preview Git hunk
|
||||
n <Space>gr * <Lua 272: ~/.config/nvim/lua/astronvim/mappings.lua:155> Reset Git buffer
|
||||
n <Space>gS * <Lua 270: ~/.config/nvim/lua/astronvim/mappings.lua:157> Stage Git buffer
|
||||
n <Space>gs * <Lua 271: ~/.config/nvim/lua/astronvim/mappings.lua:156> Stage Git hunk
|
||||
n <Space>gt * <Lua 257: ~/.config/nvim/lua/astronvim/mappings.lua:239> Git status
|
||||
n <Space>gu * <Lua 269: ~/.config/nvim/lua/astronvim/mappings.lua:158> Unstage Git hunk
|
||||
n <Space>h * <Lua 280: ~/.config/nvim/lua/astronvim/mappings.lua:125> Home Screen
|
||||
n <Space>lD * <Lua 313: ~/.config/nvim/lua/astronvim/mappings.lua:293> Search diagnostics
|
||||
n <Space>ls * <Lua 235: ~/.config/nvim/lua/astronvim/mappings.lua:295> Search symbols
|
||||
n <Space>lS * <Lua 260: ~/.config/nvim/lua/astronvim/mappings.lua:230> Symbols outline
|
||||
n <Space>n * <Cmd>enew<CR> New File
|
||||
n <Space>o * <Lua 267: ~/.config/nvim/lua/astronvim/mappings.lua:166> Toggle Explorer Focus
|
||||
n <Space>p * <Cmd>lua require("which-key").show(" p", {mode = "n", auto = true})<CR>
|
||||
n <Space>pA * <Cmd>AstroUpdate<CR> AstroNvim Update
|
||||
n <Space>pa * <Cmd>AstroUpdatePackages<CR> Update Plugins and Mason
|
||||
n <Space>pi * <Lua 307: ~/.config/nvim/lua/astronvim/mappings.lua:36> Plugins Install
|
||||
n <Space>pl * <Cmd>AstroChangelog<CR> AstroNvim Changelog
|
||||
n <Space>pm * <Cmd>Mason<CR> Mason Installer
|
||||
n <Space>pM * <Cmd>MasonUpdateAll<CR> Mason Update
|
||||
n <Space>pS * <Lua 233: ~/.config/nvim/lua/astronvim/mappings.lua:38> Plugins Sync
|
||||
n <Space>ps * <Lua 234: ~/.config/nvim/lua/astronvim/mappings.lua:37> Plugins Status
|
||||
n <Space>pU * <Lua 229: ~/.config/nvim/lua/astronvim/mappings.lua:40> Plugins Update
|
||||
n <Space>pu * <Lua 231: ~/.config/nvim/lua/astronvim/mappings.lua:39> Plugins Check Updates
|
||||
n <Space>pv * <Cmd>AstroVersion<CR> AstroNvim Version
|
||||
n <Space>q * <Cmd>confirm q<CR> Quit
|
||||
n <Space>s * <Lua 45: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Search / Replace
|
||||
n <Space>S. * <Cmd>SessionManager! load_current_dir_session<CR> Load current directory session
|
||||
n <Space>Sd * <Cmd>SessionManager! delete_session<CR> Delete session
|
||||
n <Space>Sf * <Cmd>SessionManager! load_session<CR> Search sessions
|
||||
n <Space>sf * <Lua 36: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Spectre (current file)
|
||||
n <Space>Sl * <Cmd>SessionManager! load_last_session<CR> Load last session
|
||||
n <Space>Ss * <Cmd>SessionManager! save_current_session<CR> Save this session
|
||||
n <Space>ss * <Lua 35: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Spectre
|
||||
n <Space>tf * <Cmd>ToggleTerm direction=float<CR> ToggleTerm float
|
||||
n <Space>th * <Cmd>ToggleTerm size=10 direction=horizontal<CR> ToggleTerm horizontal split
|
||||
n <Space>tl * <Lua 232: ~/.config/nvim/lua/astronvim/mappings.lua:313> ToggleTerm lazygit
|
||||
n <Space>tn * <Lua 230: ~/.config/nvim/lua/astronvim/mappings.lua:316> ToggleTerm node
|
||||
n <Space>tp * <Lua 311: ~/.config/nvim/lua/astronvim/mappings.lua:325> ToggleTerm python
|
||||
n <Space>tt * <Lua 306: ~/.config/nvim/lua/astronvim/mappings.lua:322> ToggleTerm btm
|
||||
n <Space>tu * <Lua 355: ~/.config/nvim/lua/astronvim/mappings.lua:319> ToggleTerm gdu
|
||||
n <Space>tv * <Cmd>ToggleTerm size=80 direction=vertical<CR> ToggleTerm vertical split
|
||||
n <Space>ua * <Lua 350: ~/.config/nvim/lua/astronvim/utils/ui.lua:27> Toggle autopairs
|
||||
n <Space>ub * <Lua 303: ~/.config/nvim/lua/astronvim/utils/ui.lua:58> Toggle background
|
||||
n <Space>uC * <Cmd>ColorizerToggle<CR> Toggle color highlight
|
||||
n <Space>uc * <Lua 354: ~/.config/nvim/lua/astronvim/utils/ui.lua:64> Toggle autocompletion
|
||||
n <Space>ud * <Lua 353: ~/.config/nvim/lua/astronvim/utils/ui.lua:43> Toggle diagnostics
|
||||
n <Space>ug * <Lua 301: ~/.config/nvim/lua/astronvim/utils/ui.lua:134> Toggle signcolumn
|
||||
n <Space>uh * <Lua 352: ~/.config/nvim/lua/astronvim/utils/ui.lua:215> Toggle foldcolumn
|
||||
n <Space>ui * <Lua 325: ~/.config/nvim/lua/astronvim/utils/ui.lua:146> Change indent setting
|
||||
n <Space>ul * <Lua 330: ~/.config/nvim/lua/astronvim/utils/ui.lua:117> Toggle statusline
|
||||
n <Space>uL * <Lua 345: ~/.config/nvim/lua/astronvim/utils/ui.lua:98> Toggle CodeLens
|
||||
n <Space>uN * <Lua 340: ~/.config/nvim/lua/astronvim/utils/ui.lua:21> Toggle UI notifications
|
||||
n <Space>un * <Lua 343: ~/.config/nvim/lua/astronvim/utils/ui.lua:161> Change line numbering
|
||||
n <Space>up * <Lua 338: ~/.config/nvim/lua/astronvim/utils/ui.lua:183> Toggle paste mode
|
||||
n <Space>uS * <Lua 332: ~/.config/nvim/lua/astronvim/utils/ui.lua:111> Toggle conceal
|
||||
n <Space>us * <Lua 335: ~/.config/nvim/lua/astronvim/utils/ui.lua:177> Toggle spellcheck
|
||||
n <Space>uT * <Cmd>TransparentToggle<CR> Toggle transparency
|
||||
n <Space>ut * <Lua 302: ~/.config/nvim/lua/astronvim/utils/ui.lua:105> Toggle tabline
|
||||
n <Space>uu * <Lua 351: ~/.config/nvim/lua/astronvim/utils/ui.lua:208> Toggle URL highlight
|
||||
n <Space>uw * <Lua 349: ~/.config/nvim/lua/astronvim/utils/ui.lua:189> Toggle wrap
|
||||
n <Space>uy * <Lua 346: ~/.config/nvim/lua/astronvim/utils/ui.lua:195> Toggle syntax highlight
|
||||
n <Space>w * <Cmd>w<CR> Save
|
||||
n <Space>x * <Lua 126: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Trouble
|
||||
n <Space>xl * <Lua 171: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Location List (Trouble)
|
||||
n <Space>xq * <Lua 172: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Quickfix List (Trouble)
|
||||
n <Space>xX * <Lua 132: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Workspace Diagnostics (Trouble)
|
||||
n <Space>xx * <Lua 170: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Document Diagnostics (Trouble)
|
||||
n > * <Cmd>lua require("which-key").show(">", {mode = "n", auto = true})<CR>
|
||||
n >b * <Lua 298: ~/.config/nvim/lua/astronvim/mappings.lua:58> Move buffer tab right
|
||||
n | * <Cmd>vsplit<CR> Vertical Split
|
||||
n c * <Cmd>lua require("which-key").show("c", {mode = "n", auto = true})<CR>
|
||||
n d * <Cmd>lua require("which-key").show("d", {mode = "n", auto = true})<CR>
|
||||
n g * <Cmd>lua require("which-key").show("g", {mode = "n", auto = true})<CR>
|
||||
n gb * <Lua 123: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Comment toggle blockwise
|
||||
n gc * <Lua 107: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Comment toggle linewise
|
||||
n gx * <Lua 241: ~/.config/nvim/lua/astronvim/utils/init.lua:134> Open the file under cursor with system app
|
||||
n j * v:count == 0 ? 'gj' : 'j' Move cursor down
|
||||
n k * v:count == 0 ? 'gk' : 'k' Move cursor up
|
||||
n v * <Cmd>lua require("which-key").show("v", {mode = "n", auto = true})<CR>
|
||||
n y * <Cmd>lua require("which-key").show("y", {mode = "n", auto = true})<CR>
|
||||
n Y * y$ Nvim builtin
|
||||
n z * <Cmd>lua require("which-key").show("z", {mode = "n", auto = true})<CR>
|
||||
n zM * <Lua 244: ~/.config/nvim/lua/astronvim/mappings.lua:395> Close all folds
|
||||
n zm * <Lua 317: ~/.config/nvim/lua/astronvim/mappings.lua:397> Fold more
|
||||
n zp * <Lua 347: ~/.config/nvim/lua/astronvim/mappings.lua:398> Peek fold
|
||||
n zr * <Lua 243: ~/.config/nvim/lua/astronvim/mappings.lua:396> Fold less
|
||||
n zR * <Lua 336: ~/.config/nvim/lua/astronvim/mappings.lua:394> Open all folds
|
||||
v <Tab> * >gv indent line
|
||||
v <S-Tab> * <gv unindent line
|
||||
v <Space>/ * <Esc><Cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR> Toggle comment line
|
||||
v <Space>dE * <Lua 228: ~/.config/nvim/lua/astronvim/mappings.lua:386> Evaluate Input
|
||||
v gb * <Lua 124: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Comment toggle blockwise
|
||||
v gc * <Lua 114: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Comment toggle linewise
|
||||
x " * <Cmd>lua require("which-key").show("\"", {mode = "v", auto = true})<CR>
|
||||
x ** y/\V<C-R>"<CR> Nvim builtin
|
||||
x # * y?\V<C-R>"<CR> Nvim builtin
|
||||
x <Space> * <Cmd>lua require("which-key").show(" ", {mode = "v", auto = true})<CR>
|
||||
x <Space>s * <Lua 46: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Search / Replace
|
||||
x <Space>sw * <Lua 47: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:67> Spectre (current word)
|
||||
x g * <Cmd>lua require("which-key").show("g", {mode = "v", auto = true})<CR>
|
||||
```
|
||||
|
||||
- Generated on Sat 10 Aug 2024 13:01:59 EEST
|
||||
|
||||
@@ -31,7 +31,7 @@ Leader: `<ctrl><space>`
|
||||
; Move to the previously active pane
|
||||
= Choose a paste buffer from a list
|
||||
? List key bindings
|
||||
D Choose a client from a list
|
||||
D Choose and detach a client from a list
|
||||
E Spread panes out evenly
|
||||
L Switch to the last client
|
||||
M Clear the marked pane
|
||||
|
||||
280
docs/wezterm-keybindings.md
Normal file
280
docs/wezterm-keybindings.md
Normal file
@@ -0,0 +1,280 @@
|
||||
# wezterm keybindings
|
||||
|
||||
```txt
|
||||
Default key table
|
||||
-----------------
|
||||
|
||||
CTRL Tab -> ActivateTabRelative(1)
|
||||
SHIFT | CTRL Tab -> ActivateTabRelative(-1)
|
||||
ALT Enter -> ToggleFullScreen
|
||||
CTRL ! -> ActivateTab(0)
|
||||
SHIFT | CTRL ! -> ActivateTab(0)
|
||||
ALT | CTRL " -> SplitVertical(SpawnCommand domain=CurrentPaneDomain)
|
||||
SHIFT | ALT | CTRL " -> SplitVertical(SpawnCommand domain=CurrentPaneDomain)
|
||||
CTRL # -> ActivateTab(2)
|
||||
SHIFT | CTRL # -> ActivateTab(2)
|
||||
CTRL $ -> ActivateTab(3)
|
||||
SHIFT | CTRL $ -> ActivateTab(3)
|
||||
CTRL % -> ActivateTab(4)
|
||||
SHIFT | CTRL % -> ActivateTab(4)
|
||||
ALT | CTRL % -> SplitHorizontal(SpawnCommand domain=CurrentPaneDomain)
|
||||
SHIFT | ALT | CTRL % -> SplitHorizontal(SpawnCommand domain=CurrentPaneDomain)
|
||||
CTRL & -> ActivateTab(6)
|
||||
SHIFT | CTRL & -> ActivateTab(6)
|
||||
SHIFT | ALT | CTRL ' -> SplitVertical(SpawnCommand domain=CurrentPaneDomain)
|
||||
CTRL ( -> ActivateTab(-1)
|
||||
SHIFT | CTRL ( -> ActivateTab(-1)
|
||||
CTRL ) -> ResetFontSize
|
||||
SHIFT | CTRL ) -> ResetFontSize
|
||||
CTRL * -> ActivateTab(7)
|
||||
SHIFT | CTRL * -> ActivateTab(7)
|
||||
CTRL + -> IncreaseFontSize
|
||||
SHIFT | CTRL + -> IncreaseFontSize
|
||||
CTRL - -> DecreaseFontSize
|
||||
SHIFT | CTRL - -> DecreaseFontSize
|
||||
SUPER - -> DecreaseFontSize
|
||||
CTRL 0 -> ResetFontSize
|
||||
SHIFT | CTRL 0 -> ResetFontSize
|
||||
SUPER 0 -> ResetFontSize
|
||||
SHIFT | CTRL 1 -> ActivateTab(0)
|
||||
SUPER 1 -> ActivateTab(0)
|
||||
SHIFT | CTRL 2 -> ActivateTab(1)
|
||||
SUPER 2 -> ActivateTab(1)
|
||||
SHIFT | CTRL 3 -> ActivateTab(2)
|
||||
SUPER 3 -> ActivateTab(2)
|
||||
SHIFT | CTRL 4 -> ActivateTab(3)
|
||||
SUPER 4 -> ActivateTab(3)
|
||||
SHIFT | CTRL 5 -> ActivateTab(4)
|
||||
SHIFT | ALT | CTRL 5 -> SplitHorizontal(SpawnCommand domain=CurrentPaneDomain)
|
||||
SUPER 5 -> ActivateTab(4)
|
||||
SHIFT | CTRL 6 -> ActivateTab(5)
|
||||
SUPER 6 -> ActivateTab(5)
|
||||
SHIFT | CTRL 7 -> ActivateTab(6)
|
||||
SUPER 7 -> ActivateTab(6)
|
||||
SHIFT | CTRL 8 -> ActivateTab(7)
|
||||
SUPER 8 -> ActivateTab(7)
|
||||
SHIFT | CTRL 9 -> ActivateTab(-1)
|
||||
SUPER 9 -> ActivateTab(-1)
|
||||
CTRL = -> IncreaseFontSize
|
||||
SHIFT | CTRL = -> IncreaseFontSize
|
||||
SUPER = -> IncreaseFontSize
|
||||
CTRL @ -> ActivateTab(1)
|
||||
SHIFT | CTRL @ -> ActivateTab(1)
|
||||
CTRL C -> CopyTo(Clipboard)
|
||||
SHIFT | CTRL C -> CopyTo(Clipboard)
|
||||
CTRL F -> Search(CurrentSelectionOrEmptyString)
|
||||
SHIFT | CTRL F -> Search(CurrentSelectionOrEmptyString)
|
||||
CTRL H -> HideApplication
|
||||
SHIFT | CTRL H -> HideApplication
|
||||
CTRL K -> ClearScrollback(ScrollbackOnly)
|
||||
SHIFT | CTRL K -> ClearScrollback(ScrollbackOnly)
|
||||
CTRL L -> ShowDebugOverlay
|
||||
SHIFT | CTRL L -> ShowDebugOverlay
|
||||
CTRL M -> Hide
|
||||
SHIFT | CTRL M -> Hide
|
||||
CTRL N -> SpawnWindow
|
||||
SHIFT | CTRL N -> SpawnWindow
|
||||
CTRL P -> ActivateCommandPalette
|
||||
SHIFT | CTRL P -> ActivateCommandPalette
|
||||
CTRL Q -> QuitApplication
|
||||
SHIFT | CTRL Q -> QuitApplication
|
||||
CTRL R -> ReloadConfiguration
|
||||
SHIFT | CTRL R -> ReloadConfiguration
|
||||
CTRL T -> SpawnTab(CurrentPaneDomain)
|
||||
SHIFT | CTRL T -> SpawnTab(CurrentPaneDomain)
|
||||
CTRL U -> CharSelect(CharSelectArguments { group: None, copy_on_select: true, copy_to: ClipboardAndPrimarySelection })
|
||||
SHIFT | CTRL U -> CharSelect(CharSelectArguments { group: None, copy_on_select: true, copy_to: ClipboardAndPrimarySelection })
|
||||
CTRL V -> PasteFrom(Clipboard)
|
||||
SHIFT | CTRL V -> PasteFrom(Clipboard)
|
||||
CTRL W -> CloseCurrentTab { confirm: true }
|
||||
SHIFT | CTRL W -> CloseCurrentTab { confirm: true }
|
||||
CTRL X -> ActivateCopyMode
|
||||
SHIFT | CTRL X -> ActivateCopyMode
|
||||
CTRL Z -> TogglePaneZoomState
|
||||
SHIFT | CTRL Z -> TogglePaneZoomState
|
||||
SHIFT | SUPER [ -> ActivateTabRelative(-1)
|
||||
SHIFT | SUPER ] -> ActivateTabRelative(1)
|
||||
CTRL ^ -> ActivateTab(5)
|
||||
SHIFT | CTRL ^ -> ActivateTab(5)
|
||||
CTRL _ -> DecreaseFontSize
|
||||
SHIFT | CTRL _ -> DecreaseFontSize
|
||||
SHIFT | CTRL c -> CopyTo(Clipboard)
|
||||
SUPER c -> CopyTo(Clipboard)
|
||||
SHIFT | CTRL f -> Search(CurrentSelectionOrEmptyString)
|
||||
SUPER f -> Search(CurrentSelectionOrEmptyString)
|
||||
SHIFT | CTRL h -> HideApplication
|
||||
SUPER h -> HideApplication
|
||||
SHIFT | CTRL k -> ClearScrollback(ScrollbackOnly)
|
||||
SUPER k -> ClearScrollback(ScrollbackOnly)
|
||||
SHIFT | CTRL l -> ShowDebugOverlay
|
||||
SHIFT | CTRL m -> Hide
|
||||
SUPER m -> Hide
|
||||
SHIFT | CTRL n -> SpawnWindow
|
||||
SUPER n -> SpawnWindow
|
||||
SHIFT | CTRL p -> ActivateCommandPalette
|
||||
SHIFT | CTRL q -> QuitApplication
|
||||
SUPER q -> QuitApplication
|
||||
SHIFT | CTRL r -> ReloadConfiguration
|
||||
SUPER r -> ReloadConfiguration
|
||||
SHIFT | CTRL t -> SpawnTab(CurrentPaneDomain)
|
||||
SUPER t -> SpawnTab(CurrentPaneDomain)
|
||||
SHIFT | CTRL u -> CharSelect(CharSelectArguments { group: None, copy_on_select: true, copy_to: ClipboardAndPrimarySelection })
|
||||
SHIFT | CTRL v -> PasteFrom(Clipboard)
|
||||
SUPER v -> PasteFrom(Clipboard)
|
||||
SHIFT | CTRL w -> CloseCurrentTab { confirm: true }
|
||||
SUPER w -> CloseCurrentTab { confirm: true }
|
||||
SHIFT | CTRL x -> ActivateCopyMode
|
||||
SHIFT | CTRL z -> TogglePaneZoomState
|
||||
SUPER { -> ActivateTabRelative(-1)
|
||||
SHIFT | SUPER { -> ActivateTabRelative(-1)
|
||||
SUPER } -> ActivateTabRelative(1)
|
||||
SHIFT | SUPER } -> ActivateTabRelative(1)
|
||||
SHIFT | CTRL Space (Physical) -> QuickSelect
|
||||
SHIFT PageUp -> ScrollByPage(NotNan(-1.0))
|
||||
CTRL PageUp -> ActivateTabRelative(-1)
|
||||
SHIFT | CTRL PageUp -> MoveTabRelative(-1)
|
||||
SHIFT PageDown -> ScrollByPage(NotNan(1.0))
|
||||
CTRL PageDown -> ActivateTabRelative(1)
|
||||
SHIFT | CTRL PageDown -> MoveTabRelative(1)
|
||||
SHIFT | CTRL LeftArrow -> ActivatePaneDirection(Left)
|
||||
SHIFT | ALT | CTRL LeftArrow -> AdjustPaneSize(Left, 1)
|
||||
SHIFT | CTRL RightArrow -> ActivatePaneDirection(Right)
|
||||
SHIFT | ALT | CTRL RightArrow -> AdjustPaneSize(Right, 1)
|
||||
SHIFT | CTRL UpArrow -> ActivatePaneDirection(Up)
|
||||
SHIFT | ALT | CTRL UpArrow -> AdjustPaneSize(Up, 1)
|
||||
SHIFT | CTRL DownArrow -> ActivatePaneDirection(Down)
|
||||
SHIFT | ALT | CTRL DownArrow -> AdjustPaneSize(Down, 1)
|
||||
Copy -> CopyTo(Clipboard)
|
||||
Paste -> PasteFrom(Clipboard)
|
||||
|
||||
Key Table: copy_mode
|
||||
--------------------
|
||||
|
||||
Tab -> CopyMode(MoveForwardWord)
|
||||
SHIFT Tab -> CopyMode(MoveBackwardWord)
|
||||
Enter -> CopyMode(MoveToStartOfNextLine)
|
||||
Escape -> CopyMode(Close)
|
||||
Space -> CopyMode(SetSelectionMode(Some(Cell)))
|
||||
$ -> CopyMode(MoveToEndOfLineContent)
|
||||
SHIFT $ -> CopyMode(MoveToEndOfLineContent)
|
||||
, -> CopyMode(JumpReverse)
|
||||
0 -> CopyMode(MoveToStartOfLine)
|
||||
; -> CopyMode(JumpAgain)
|
||||
F -> CopyMode(JumpBackward { prev_char: false })
|
||||
SHIFT F -> CopyMode(JumpBackward { prev_char: false })
|
||||
G -> CopyMode(MoveToScrollbackBottom)
|
||||
SHIFT G -> CopyMode(MoveToScrollbackBottom)
|
||||
H -> CopyMode(MoveToViewportTop)
|
||||
SHIFT H -> CopyMode(MoveToViewportTop)
|
||||
L -> CopyMode(MoveToViewportBottom)
|
||||
SHIFT L -> CopyMode(MoveToViewportBottom)
|
||||
M -> CopyMode(MoveToViewportMiddle)
|
||||
SHIFT M -> CopyMode(MoveToViewportMiddle)
|
||||
O -> CopyMode(MoveToSelectionOtherEndHoriz)
|
||||
SHIFT O -> CopyMode(MoveToSelectionOtherEndHoriz)
|
||||
T -> CopyMode(JumpBackward { prev_char: true })
|
||||
SHIFT T -> CopyMode(JumpBackward { prev_char: true })
|
||||
V -> CopyMode(SetSelectionMode(Some(Line)))
|
||||
SHIFT V -> CopyMode(SetSelectionMode(Some(Line)))
|
||||
^ -> CopyMode(MoveToStartOfLineContent)
|
||||
SHIFT ^ -> CopyMode(MoveToStartOfLineContent)
|
||||
b -> CopyMode(MoveBackwardWord)
|
||||
ALT b -> CopyMode(MoveBackwardWord)
|
||||
CTRL b -> CopyMode(PageUp)
|
||||
CTRL c -> CopyMode(Close)
|
||||
CTRL d -> CopyMode(MoveByPage(NotNan(0.5)))
|
||||
e -> CopyMode(MoveForwardWordEnd)
|
||||
f -> CopyMode(JumpForward { prev_char: false })
|
||||
ALT f -> CopyMode(MoveForwardWord)
|
||||
CTRL f -> CopyMode(PageDown)
|
||||
g -> CopyMode(MoveToScrollbackTop)
|
||||
CTRL g -> CopyMode(Close)
|
||||
h -> CopyMode(MoveLeft)
|
||||
j -> CopyMode(MoveDown)
|
||||
k -> CopyMode(MoveUp)
|
||||
l -> CopyMode(MoveRight)
|
||||
ALT m -> CopyMode(MoveToStartOfLineContent)
|
||||
o -> CopyMode(MoveToSelectionOtherEnd)
|
||||
q -> CopyMode(Close)
|
||||
t -> CopyMode(JumpForward { prev_char: true })
|
||||
CTRL u -> CopyMode(MoveByPage(NotNan(-0.5)))
|
||||
v -> CopyMode(SetSelectionMode(Some(Cell)))
|
||||
CTRL v -> CopyMode(SetSelectionMode(Some(Block)))
|
||||
w -> CopyMode(MoveForwardWord)
|
||||
y -> Multiple([CopyTo(ClipboardAndPrimarySelection), CopyMode(Close)])
|
||||
PageUp -> CopyMode(PageUp)
|
||||
PageDown -> CopyMode(PageDown)
|
||||
End -> CopyMode(MoveToEndOfLineContent)
|
||||
Home -> CopyMode(MoveToStartOfLine)
|
||||
LeftArrow -> CopyMode(MoveLeft)
|
||||
ALT LeftArrow -> CopyMode(MoveBackwardWord)
|
||||
RightArrow -> CopyMode(MoveRight)
|
||||
ALT RightArrow -> CopyMode(MoveForwardWord)
|
||||
UpArrow -> CopyMode(MoveUp)
|
||||
DownArrow -> CopyMode(MoveDown)
|
||||
|
||||
Key Table: search_mode
|
||||
----------------------
|
||||
|
||||
Enter -> CopyMode(PriorMatch)
|
||||
Escape -> CopyMode(Close)
|
||||
CTRL n -> CopyMode(NextMatch)
|
||||
CTRL p -> CopyMode(PriorMatch)
|
||||
CTRL r -> CopyMode(CycleMatchType)
|
||||
CTRL u -> CopyMode(ClearPattern)
|
||||
PageUp -> CopyMode(PriorMatchPage)
|
||||
PageDown -> CopyMode(NextMatchPage)
|
||||
UpArrow -> CopyMode(PriorMatch)
|
||||
DownArrow -> CopyMode(NextMatch)
|
||||
|
||||
Mouse
|
||||
-----
|
||||
|
||||
Down { streak: 1, button: Left } -> SelectTextAtMouseCursor(Cell)
|
||||
SHIFT Down { streak: 1, button: Left } -> ExtendSelectionToMouseCursor(Cell)
|
||||
ALT Down { streak: 1, button: Left } -> SelectTextAtMouseCursor(Block)
|
||||
SHIFT | ALT Down { streak: 1, button: Left } -> ExtendSelectionToMouseCursor(Block)
|
||||
Down { streak: 1, button: Middle } -> PasteFrom(PrimarySelection)
|
||||
Down { streak: 1, button: WheelUp(1) } -> ScrollByCurrentEventWheelDelta
|
||||
Down { streak: 1, button: WheelDown(1) } -> ScrollByCurrentEventWheelDelta
|
||||
Down { streak: 2, button: Left } -> SelectTextAtMouseCursor(Word)
|
||||
Down { streak: 3, button: Left } -> SelectTextAtMouseCursor(Line)
|
||||
Drag { streak: 1, button: Left } -> ExtendSelectionToMouseCursor(Cell)
|
||||
ALT Drag { streak: 1, button: Left } -> ExtendSelectionToMouseCursor(Block)
|
||||
SHIFT | CTRL Drag { streak: 1, button: Left } -> StartWindowDrag
|
||||
SUPER Drag { streak: 1, button: Left } -> StartWindowDrag
|
||||
Drag { streak: 2, button: Left } -> ExtendSelectionToMouseCursor(Word)
|
||||
Drag { streak: 3, button: Left } -> ExtendSelectionToMouseCursor(Line)
|
||||
Up { streak: 1, button: Left } -> CompleteSelectionOrOpenLinkAtMouseCursor(ClipboardAndPrimarySelection)
|
||||
SHIFT Up { streak: 1, button: Left } -> CompleteSelectionOrOpenLinkAtMouseCursor(ClipboardAndPrimarySelection)
|
||||
ALT Up { streak: 1, button: Left } -> CompleteSelection(ClipboardAndPrimarySelection)
|
||||
SHIFT | ALT Up { streak: 1, button: Left } -> CompleteSelectionOrOpenLinkAtMouseCursor(PrimarySelection)
|
||||
Up { streak: 2, button: Left } -> CompleteSelection(ClipboardAndPrimarySelection)
|
||||
Up { streak: 3, button: Left } -> CompleteSelection(ClipboardAndPrimarySelection)
|
||||
|
||||
Mouse: alt_screen
|
||||
-----------------
|
||||
|
||||
Down { streak: 1, button: Left } -> SelectTextAtMouseCursor(Cell)
|
||||
SHIFT Down { streak: 1, button: Left } -> ExtendSelectionToMouseCursor(Cell)
|
||||
ALT Down { streak: 1, button: Left } -> SelectTextAtMouseCursor(Block)
|
||||
SHIFT | ALT Down { streak: 1, button: Left } -> ExtendSelectionToMouseCursor(Block)
|
||||
Down { streak: 1, button: Middle } -> PasteFrom(PrimarySelection)
|
||||
Down { streak: 2, button: Left } -> SelectTextAtMouseCursor(Word)
|
||||
Down { streak: 3, button: Left } -> SelectTextAtMouseCursor(Line)
|
||||
Drag { streak: 1, button: Left } -> ExtendSelectionToMouseCursor(Cell)
|
||||
ALT Drag { streak: 1, button: Left } -> ExtendSelectionToMouseCursor(Block)
|
||||
SHIFT | CTRL Drag { streak: 1, button: Left } -> StartWindowDrag
|
||||
SUPER Drag { streak: 1, button: Left } -> StartWindowDrag
|
||||
Drag { streak: 2, button: Left } -> ExtendSelectionToMouseCursor(Word)
|
||||
Drag { streak: 3, button: Left } -> ExtendSelectionToMouseCursor(Line)
|
||||
Up { streak: 1, button: Left } -> CompleteSelectionOrOpenLinkAtMouseCursor(ClipboardAndPrimarySelection)
|
||||
SHIFT Up { streak: 1, button: Left } -> CompleteSelectionOrOpenLinkAtMouseCursor(ClipboardAndPrimarySelection)
|
||||
ALT Up { streak: 1, button: Left } -> CompleteSelection(ClipboardAndPrimarySelection)
|
||||
SHIFT | ALT Up { streak: 1, button: Left } -> CompleteSelectionOrOpenLinkAtMouseCursor(PrimarySelection)
|
||||
Up { streak: 2, button: Left } -> CompleteSelection(ClipboardAndPrimarySelection)
|
||||
Up { streak: 3, button: Left } -> CompleteSelection(ClipboardAndPrimarySelection)
|
||||
|
||||
```
|
||||
|
||||
- Generated on Sat 10 Aug 2024 13:01:59 EEST
|
||||
BIN
hosts/air/config/wallpaper.jpg
Normal file
BIN
hosts/air/config/wallpaper.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
@@ -16,6 +16,8 @@
|
||||
~/.local/bin:
|
||||
~/.local/run:
|
||||
~/.local/share:
|
||||
~/.local/share/gnupg:
|
||||
mode: 0700
|
||||
~/.local/state:
|
||||
~/.ssh:
|
||||
mode: 0700
|
||||
|
||||
1
local/bin/asdf
Submodule
1
local/bin/asdf
Submodule
Submodule local/bin/asdf added at ccdd47df9b
155
local/bin/dfm
155
local/bin/dfm
@@ -14,19 +14,92 @@
|
||||
|
||||
SCRIPT=$(basename "$0")
|
||||
|
||||
if ! declare -f msg > /dev/null; then
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[ "$VERBOSE" -eq 1 ] && echo "$1"
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
|
||||
if ! declare -f msg_err > /dev/null; then
|
||||
# Function to print error messages and exit
|
||||
# $1 - error message (string)
|
||||
msg_err()
|
||||
{
|
||||
echo "(!) ERROR: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
if ! declare -f msg_done > /dev/null; then
|
||||
# Function to print done message
|
||||
# $1 - message (string)
|
||||
msg_done()
|
||||
{
|
||||
echo "✓ $1"
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
|
||||
VERSION_NVM="v0.39.5"
|
||||
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
# shellcheck source=./../../scripts/shared.sh
|
||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||
source "$DOTFILES/config/exports"
|
||||
source "$DOTFILES/config/alias"
|
||||
source "$DOTFILES/config/functions"
|
||||
|
||||
# Loads configs for better installation experience
|
||||
x-load-configs
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
function section_install
|
||||
source "${DOTFILES}/local/bin/msgr"
|
||||
|
||||
# -- Menu builder -- #
|
||||
menu_section()
|
||||
{
|
||||
LINE=$(printf '%-18s [ %-15s ]\n' "$1" "$2")
|
||||
echo -e " $(__log_marker) $LINE"
|
||||
}
|
||||
menu_item()
|
||||
{
|
||||
LINE=$(printf '%-15s %-30s\n' "$1" "$2")
|
||||
echo -e "$(__log_indent)$(__log_marker) $LINE"
|
||||
}
|
||||
|
||||
# Takes a bash array ("cow:moo", "dinosaur:roar") and loops
|
||||
# through the keys to build menu section listing.
|
||||
menu_usage_header()
|
||||
{
|
||||
MENU_CMD="$1"
|
||||
shift
|
||||
MENU_ARRAY=("$@")
|
||||
|
||||
KEYS=""
|
||||
for item in "${MENU_ARRAY[@]}"; do
|
||||
CMD=$(echo "${item}" | awk -F ":" '{print $1}')
|
||||
KEYS+="${CMD} | "
|
||||
done
|
||||
|
||||
# "???" removes 3 last characters, being " | " from the end
|
||||
menu_section "$MENU_CMD" "${KEYS%???}"
|
||||
}
|
||||
|
||||
# Takes the usage command "$0 dotfiles" and a
|
||||
# bash array ("cow:moo" "dinosaur:roar") and loops
|
||||
# through in building a menu for dfm command usage listing.
|
||||
menu_usage()
|
||||
{
|
||||
MENU_CMD="$1"
|
||||
shift
|
||||
MENU_ARRAY=("$@")
|
||||
|
||||
msg "$MENU_CMD"
|
||||
|
||||
for item in "${MENU_ARRAY[@]}"; do
|
||||
CMD=$(echo "${item}" | awk -F ":" '{print $1}')
|
||||
DESC=$(echo "${item}" | awk -F ":" '{print $2}')
|
||||
menu_item "$CMD" "$DESC"
|
||||
done
|
||||
}
|
||||
|
||||
section_install()
|
||||
{
|
||||
USAGE_PREFIX="$SCRIPT install <command>"
|
||||
|
||||
@@ -56,29 +129,29 @@ function section_install
|
||||
case "$1" in
|
||||
all)
|
||||
msgr msg "Starting to install all and reloading configurations..."
|
||||
x-load-configs
|
||||
$0 install macos
|
||||
$0 install fonts
|
||||
$0 install antigen
|
||||
$0 brew install
|
||||
$0 install ohmyposh
|
||||
$0 install ohmybash
|
||||
$0 install pip
|
||||
$0 install cargo
|
||||
$0 install asdf
|
||||
# $0 install ohmybash
|
||||
# $0 install pip
|
||||
# $0 install cargo
|
||||
$0 install composer
|
||||
$0 install dotenv
|
||||
# $0 install dotenv
|
||||
$0 install fzf
|
||||
$0 install gh
|
||||
$0 install go
|
||||
# $0 install gh
|
||||
# $0 install go
|
||||
$0 install cheat-databases
|
||||
$0 install imagick
|
||||
$0 install neofetch
|
||||
$0 install nvm
|
||||
$0 install npm
|
||||
# $0 install neofetch
|
||||
# $0 install nvm
|
||||
# $0 install npm
|
||||
$0 install ntfy
|
||||
$0 install z
|
||||
msgr msg "Reloading configurations again..."
|
||||
x-load-configs
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
msgr yay "All done!"
|
||||
;;
|
||||
antigen)
|
||||
@@ -86,6 +159,11 @@ function section_install
|
||||
curl -sSfL git.io/antigen -o "$DOTFILES/local/bin/antigen.zsh" \
|
||||
&& msg_yay "New antigen installed!"
|
||||
;;
|
||||
asdf)
|
||||
msg "Installing asdf..."
|
||||
bash "$DOTFILES/scripts/install-asdf.sh" \
|
||||
&& msg_yay "asdf installed!"
|
||||
;;
|
||||
cargo)
|
||||
msg "Installing cargo packages..."
|
||||
bash "$DOTFILES/scripts/install-cargo-packages.sh" \
|
||||
@@ -204,7 +282,7 @@ function section_install
|
||||
esac
|
||||
}
|
||||
|
||||
function section_brew
|
||||
section_brew()
|
||||
{
|
||||
USAGE_PREFIX="$SCRIPT brew <command>"
|
||||
|
||||
@@ -213,6 +291,8 @@ function section_brew
|
||||
"update:Updates and upgrades brew packages"
|
||||
"updatebundle:Updates Brewfile with descriptions"
|
||||
"autoupdate:Setups brew auto-update and runs it immediately"
|
||||
"leaves:List brew leaves (installed on request)"
|
||||
"clean:Clean up brew packages"
|
||||
)
|
||||
|
||||
x-have brew && {
|
||||
@@ -225,12 +305,18 @@ function section_brew
|
||||
msg_yay "Done!"
|
||||
;;
|
||||
updatebundle)
|
||||
# Updates .dotfiles/Brewfile with descriptions
|
||||
# Updates .dotfiles/homebrew/Brewfile with descriptions
|
||||
brew bundle dump \
|
||||
--force \
|
||||
--file="$BREWFILE" \
|
||||
--describe && msg_yay "Done!"
|
||||
;;
|
||||
leaves)
|
||||
brew leaves --installed-on-request
|
||||
;;
|
||||
clean)
|
||||
brew bundle cleanup --file="$BREWFILE" && msg_yay "Done!"
|
||||
;;
|
||||
autoupdate)
|
||||
brew autoupdate delete
|
||||
brew autoupdate start 43200 --upgrade --cleanup --immediate
|
||||
@@ -244,7 +330,7 @@ function section_brew
|
||||
! x-have brew && menu_section "$USAGE_PREFIX" "brew not available on this system"
|
||||
}
|
||||
|
||||
function section_helpers
|
||||
section_helpers()
|
||||
{
|
||||
USAGE_PREFIX="$SCRIPT helpers <command>"
|
||||
MENU=(
|
||||
@@ -260,21 +346,31 @@ function section_helpers
|
||||
esac
|
||||
}
|
||||
|
||||
function section_docs
|
||||
section_docs()
|
||||
{
|
||||
USAGE_PREFIX="$SCRIPT docs <command>"
|
||||
|
||||
MENU=(
|
||||
"all:Update all keybindings documentations"
|
||||
"tmux:Update tmux keybindings documentation"
|
||||
"nvim:Update nvim keybindings documentation"
|
||||
"wezterm:Update wezterm keybindings documentation"
|
||||
)
|
||||
|
||||
case "$1" in
|
||||
all)
|
||||
$0 docs tmux
|
||||
$0 docs nvim
|
||||
$0 docs wezterm
|
||||
;;
|
||||
tmux) bash "$DOTFILES/local/bin/x-dfm-docs-xterm-keybindings" ;;
|
||||
nvim) bash "$DOTFILES/scripts/create-nvim-keymaps.sh" ;;
|
||||
wezterm) bash "$DOTFILES/scripts/create-wezterm-keymaps.sh" ;;
|
||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
function section_dotfiles
|
||||
section_dotfiles()
|
||||
{
|
||||
USAGE_PREFIX="$SCRIPT dotfiles <command>"
|
||||
|
||||
@@ -316,6 +412,9 @@ function section_dotfiles
|
||||
! x-have yamlfmt && msg_err "yamlfmt not found"
|
||||
;;
|
||||
shfmt)
|
||||
# If system doesn't have fd or shfmt installed, exit
|
||||
! x-have fd && msg_err "fd not found, install with asdf"
|
||||
! x-have shfmt && msg_err "shfmt not found, install with asdf"
|
||||
# Format shell scripts according to following rules.
|
||||
fd --full-path "$DOTFILES" -tx \
|
||||
-E '*.pl' -E '*.php' -E '*.py' -E '*.zsh' -E 'plugins' -E 'fzf' -E 'dotbot' \
|
||||
@@ -330,7 +429,7 @@ function section_dotfiles
|
||||
esac
|
||||
}
|
||||
|
||||
function section_check
|
||||
section_check()
|
||||
{
|
||||
USAGE_PREFIX="$SCRIPT check <command>"
|
||||
X_HOSTNAME=$(hostname)
|
||||
@@ -355,7 +454,7 @@ function section_check
|
||||
}
|
||||
|
||||
# Secret menu for visual tests
|
||||
function section_tests
|
||||
section_tests()
|
||||
{
|
||||
USAGE_PREFIX="$SCRIPT tests <command>"
|
||||
|
||||
@@ -384,7 +483,7 @@ function section_tests
|
||||
esac
|
||||
}
|
||||
|
||||
function usage
|
||||
usage()
|
||||
{
|
||||
echo ""
|
||||
msg_prompt "Usage: $SCRIPT <section> <command>"
|
||||
|
||||
@@ -19,20 +19,28 @@
|
||||
# Default dir to check, can be overridden in env (.bashrc, .zshrc, ...)
|
||||
: "${GIT_DIRTY_DIR:=$HOME/Code}"
|
||||
|
||||
# If user has provided folder as a first argument, use it.
|
||||
if [ "$1" != "" ]; then
|
||||
GIT_DIRTY_DIR="$1"
|
||||
fi
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# UTF-8 ftw
|
||||
GITDIRTY="❌ "
|
||||
GITCLEAN="✅ "
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[ "$VERBOSE" -eq 1 ] && echo "$1"
|
||||
}
|
||||
|
||||
# Function to handle errors
|
||||
catch()
|
||||
{
|
||||
echo "Error $1 occurred on $2"
|
||||
}
|
||||
|
||||
# Function to check the git status of a directory
|
||||
# $1 - directory (string)
|
||||
gitdirty()
|
||||
{
|
||||
local d="$1"
|
||||
@@ -40,13 +48,13 @@ gitdirty()
|
||||
|
||||
if [[ -d "$d" ]]; then
|
||||
if [[ -e "$d/.ignore" ]]; then
|
||||
echo -e ""
|
||||
msg "Skipping ignored directory: $d"
|
||||
else
|
||||
# Check that $d is not '--', 'vendor', or 'node_modules'
|
||||
if [[ "${d:0:2}" == "--" ]] || [[ "$d" == "vendor" ]] || [[ "$d" == "node_modules" ]]; then
|
||||
echo ""
|
||||
msg "Skipping excluded directory: $d"
|
||||
else
|
||||
cd "$d"
|
||||
cd "$d" || exit
|
||||
|
||||
# If we have `.git` folder, check it.
|
||||
if [[ -d ".git" ]]; then
|
||||
@@ -60,12 +68,14 @@ gitdirty()
|
||||
# If it wasn't git repository, check subdirectories.
|
||||
gitdirtyrepos ./*
|
||||
fi
|
||||
cd - > /dev/null || exit
|
||||
fi
|
||||
cd .. > /dev/null
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to check git status for multiple directories
|
||||
# $@ - directories
|
||||
gitdirtyrepos()
|
||||
{
|
||||
for x in "$@"; do
|
||||
@@ -73,10 +83,20 @@ gitdirtyrepos()
|
||||
done
|
||||
}
|
||||
|
||||
set -e
|
||||
trap 'case $? in
|
||||
139) echo "segfault occurred";;
|
||||
11) echo "ssegfault occurred";;
|
||||
esac' EXIT
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
# If user has provided folder as a first argument, use it.
|
||||
if [ "${1:-}" != "" ]; then
|
||||
GIT_DIRTY_DIR="$1"
|
||||
fi
|
||||
|
||||
gitdirtyrepos "$GIT_DIRTY_DIR"
|
||||
trap 'case $? in
|
||||
139) echo "segfault occurred";;
|
||||
11) echo "segfault occurred";;
|
||||
esac' EXIT
|
||||
|
||||
gitdirtyrepos "$GIT_DIRTY_DIR"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -6,18 +6,46 @@
|
||||
# Copyright 2023 Ismo Vuorinen. All Rights Reserved.
|
||||
# License: MIT <https://opensource.org/license/mit/>
|
||||
|
||||
STARTING_PATH=${1:-$(pwd)}
|
||||
set -euo pipefail
|
||||
|
||||
DIRS=$(find "$STARTING_PATH" -mindepth 1 -maxdepth 1 -type d)
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
for DIR in $DIRS; do
|
||||
echo "-> Processing dir: $DIR"
|
||||
cd "$DIR" || exit 1
|
||||
if [ -d "$DIR/.git" ]; then
|
||||
git fsck --no-dangling --full --no-progress
|
||||
echo ""
|
||||
fi
|
||||
done
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[ "$VERBOSE" -eq 1 ] && echo "$1"
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo "Done."
|
||||
# Function to perform git fsck on a repository
|
||||
# $1 - directory (string)
|
||||
fsck_repo()
|
||||
{
|
||||
local dir=$1
|
||||
msg "Processing dir: $dir"
|
||||
(
|
||||
cd "$dir" || exit 1
|
||||
if [ -d ".git" ]; then
|
||||
git fsck --no-dangling --full --no-progress
|
||||
echo ""
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
local starting_path=${1:-$(pwd)}
|
||||
local dirs
|
||||
dirs=$(find "$starting_path" -mindepth 1 -maxdepth 1 -type d)
|
||||
|
||||
for dir in $dirs; do
|
||||
fsck_repo "$dir"
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "Done."
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -8,7 +8,39 @@
|
||||
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
|
||||
# License: MIT <https://opensource.org/license/mit/>
|
||||
|
||||
for f in */; do (cd "$f" && echo "-> $f" && git pull --rebase --autostash --prune); done
|
||||
set -euo pipefail
|
||||
|
||||
echo "Done."
|
||||
echo ""
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[ "$VERBOSE" -eq 1 ] && echo "$1"
|
||||
}
|
||||
|
||||
# Function to update a git repository
|
||||
# $1 - directory (string)
|
||||
update_repo()
|
||||
{
|
||||
local dir=$1
|
||||
(
|
||||
cd "$dir" || exit
|
||||
msg "Updating $dir"
|
||||
git pull --rebase --autostash --prune
|
||||
)
|
||||
}
|
||||
|
||||
# Main function to update all subfolder git repositories
|
||||
main()
|
||||
{
|
||||
for dir in */; do
|
||||
update_repo "$dir"
|
||||
done
|
||||
|
||||
echo "Done."
|
||||
echo ""
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# msgr / Messanger helper
|
||||
# msgr / Messenger helper
|
||||
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
|
||||
# MIT License, https://opensource.org/license/mit/
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# work around https://github.com/Microsoft/vscode/issues/3941
|
||||
# and anyone else who expects to see a 'python' executable
|
||||
|
||||
exec python3 "$@"
|
||||
@@ -3,33 +3,84 @@
|
||||
# Backup a folder with a timestamp
|
||||
# Usage: x-backup-folder folder_to_backup [filename]
|
||||
# If filename is not provided, folder_to_backup will be used
|
||||
#
|
||||
# Example: x-backup-folder ~/Documents/MyFolder
|
||||
#
|
||||
# Copyright (c) 2022 Ismo Vuorinen. All Rights Reserved.
|
||||
# Licensed under the MIT license.
|
||||
|
||||
DIRECTORY=$1
|
||||
FILENAME=$2
|
||||
set -euo pipefail
|
||||
|
||||
if [ -z "${DIRECTORY}" ]; then
|
||||
echo "DIRECTORY (first argument) is missing"
|
||||
echo "Usage: $0 folder_to_backup"
|
||||
exit
|
||||
fi
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
if [ -z "${FILENAME}" ]; then
|
||||
FILENAME=$DIRECTORY
|
||||
fi
|
||||
# Function to print usage information
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 folder_to_backup [filename]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
FILENAME=$(
|
||||
${FILENAME} \
|
||||
| tr '/' _ \
|
||||
| iconv -t ascii//TRANSLIT \
|
||||
| sed -r s/[^a-zA-Z0-9]+/_/g \
|
||||
| sed -r s/^_+\|-+$//g
|
||||
)
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
}
|
||||
|
||||
TIMESTAMP=$(date "+%Y%m%d_%H%M%S")
|
||||
FILENAME_TIMESTAMP="${FILENAME}_${TIMESTAMP}"
|
||||
# Function to print error messages and exit
|
||||
# $1 - error message (string)
|
||||
msg_err()
|
||||
{
|
||||
echo "(!) ERROR: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
tar cvzf "${FILENAME_TIMESTAMP}.tar.gz" "${DIRECTORY}/"
|
||||
# Function to sanitize the filename
|
||||
# $1 - filename (string)
|
||||
sanitize_filename()
|
||||
{
|
||||
local filename=$1
|
||||
echo "$filename" | tr '/' '_' | iconv -t ascii//TRANSLIT | sed -r 's/[^a-zA-Z0-9]+/_/g' | sed -r 's/^_+|_+$//g'
|
||||
}
|
||||
|
||||
# Function to backup the directory
|
||||
# $1 - directory to backup (string)
|
||||
# $2 - filename prefix (string)
|
||||
backup_directory()
|
||||
{
|
||||
local directory=$1
|
||||
local filename=$2
|
||||
|
||||
local sanitized_filename
|
||||
sanitized_filename=$(sanitize_filename "$filename")
|
||||
|
||||
local timestamp
|
||||
timestamp=$(date "+%Y%m%d_%H%M%S")
|
||||
local filename_timestamp="${sanitized_filename}_${timestamp}"
|
||||
|
||||
msg "Backing up directory '$directory' to '${filename_timestamp}.tar.gz'"
|
||||
|
||||
tar cvzf "${filename_timestamp}.tar.gz" "${directory}/"
|
||||
|
||||
msg "Backup completed and saved to '${filename_timestamp}.tar.gz'"
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
local directory=$1
|
||||
local filename=${2:-$directory}
|
||||
|
||||
if [ -z "$directory" ]; then
|
||||
msg_err "DIRECTORY (first argument) is missing"
|
||||
fi
|
||||
|
||||
backup_directory "$directory" "$filename"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -1,43 +1,91 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Backup local MySQL Database tables with certain prefix.
|
||||
# Backup local MySQL Database tables with a certain prefix.
|
||||
# Ismo Vuorinen <https://github.com/ivuorinen> 2018
|
||||
# License: MIT
|
||||
|
||||
SCRIPT=$(basename "$0")
|
||||
PREFIX=$1
|
||||
FILENAME=$2
|
||||
DATABASE=$3
|
||||
set -euo pipefail
|
||||
|
||||
: "${VERBOSE:=0}"
|
||||
: "${DEFAULT_DATABASE:="wordpress"}"
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
# Default database
|
||||
DEFAULT_DATABASE="wordpress"
|
||||
|
||||
if [ -z "${PREFIX}" ]; then
|
||||
echo "(!) TABLE_PREFIX (first argument) is missing"
|
||||
# Function to print usage information
|
||||
usage()
|
||||
{
|
||||
echo "(>) Usage: $SCRIPT <TABLE_PREFIX> <FILENAME_PREFIX> [<DATABASE>]"
|
||||
echo " * <TABLE_PREFIX> = database table prefix, e.g. 'wp_'"
|
||||
echo " * <FILENAME_PREFIX> = FILENAME prefix, defaults to table prefix. Use something descriptive e.g. 'wordpress'"
|
||||
echo " * <DATABASE> = [optional] Third argument DATABASE, defaults to '$DEFAULT_DATABASE'."
|
||||
exit 0
|
||||
fi
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ -z "${FILENAME}" ]; then
|
||||
# echo "FILENAME (second argument) is missing, using PREFIX ($PREFIX)"
|
||||
FILENAME=$PREFIX
|
||||
fi
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
}
|
||||
|
||||
if [ -z "${DATABASE}" ]; then
|
||||
# echo "DATABASE (third argument) is missing, using default ($DEFAULT_DATABASE)"
|
||||
DATABASE=$DEFAULT_DATABASE
|
||||
fi
|
||||
# Function to print error messages and exit
|
||||
# $1 - error message (string)
|
||||
msg_err()
|
||||
{
|
||||
echo "(!) ERROR: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
TIMESTAMP=$(date "+%Y%m%d_%H%M%S")
|
||||
FILENAME_TIMESTAMP="${DATABASE}_${FILENAME}_${TIMESTAMP}.sql"
|
||||
# Function to backup MySQL tables with a certain prefix
|
||||
# $1 - table prefix (string)
|
||||
# $2 - filename prefix (string)
|
||||
# $3 - database name (string)
|
||||
backup_mysql_tables()
|
||||
{
|
||||
local prefix=$1
|
||||
local filename=$2
|
||||
local database=$3
|
||||
|
||||
mysqldump \
|
||||
"${DATABASE}" \
|
||||
"$(
|
||||
echo "show tables like '${PREFIX}%';" \
|
||||
| mysql "${DATABASE}" \
|
||||
| sed '/Tables_in/d'
|
||||
)" > "${FILENAME_TIMESTAMP}"
|
||||
local timestamp
|
||||
timestamp=$(date "+%Y%m%d_%H%M%S")
|
||||
local filename_timestamp="${database}_${filename}_${timestamp}.sql"
|
||||
|
||||
msg "Backing up tables with prefix '$prefix' from database '$database' to file '$filename_timestamp'"
|
||||
|
||||
mysqldump \
|
||||
"${database}" \
|
||||
"$(
|
||||
echo "show tables like '${prefix}%';" \
|
||||
| mysql "${database}" \
|
||||
| sed '/Tables_in/d'
|
||||
)" > "${filename_timestamp}"
|
||||
|
||||
msg "Backup completed and saved to '$filename_timestamp'"
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
local prefix=$1
|
||||
local filename=$2
|
||||
local database=${3:-$DEFAULT_DATABASE}
|
||||
|
||||
if [ -z "$prefix" ]; then
|
||||
msg_err "TABLE_PREFIX (first argument) is missing"
|
||||
fi
|
||||
|
||||
if [ -z "$filename" ]; then
|
||||
filename=$prefix
|
||||
fi
|
||||
|
||||
backup_mysql_tables "$prefix" "$filename" "$database"
|
||||
}
|
||||
|
||||
# Script name for usage information
|
||||
SCRIPT=$(basename "$0")
|
||||
|
||||
main "$@"
|
||||
|
||||
71
local/bin/x-change-alacritty-theme
Executable file
71
local/bin/x-change-alacritty-theme
Executable file
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Adapted from https://gist.github.com/xqm32/17777d035930d622d0ff7530bfab61fd
|
||||
#
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
A_DIR="$HOME/.config/alacritty"
|
||||
|
||||
# Function to print usage information
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 <theme>"
|
||||
echo "Available themes: (dark|night) to turn dark mode on, (day|light) to turn off"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to set the alacritty theme
|
||||
# $1 - theme (string)
|
||||
set_alacritty_theme()
|
||||
{
|
||||
local theme=$1
|
||||
local theme_file="$A_DIR/theme-$theme.toml"
|
||||
msg "Setting alacritty theme to $theme ($theme_file)"
|
||||
cp -f "$theme_file" "$A_DIR/theme-active.toml"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to notify alacritty about the changes
|
||||
notify_alacritty()
|
||||
{
|
||||
msg "Notifying alacritty about the changes"
|
||||
touch "$A_DIR/alacritty.toml"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
if [ "$#" -ne 1 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
local alacritty_theme=$1
|
||||
|
||||
case "$alacritty_theme" in
|
||||
day | light)
|
||||
set_alacritty_theme "day"
|
||||
;;
|
||||
*)
|
||||
set_alacritty_theme "night"
|
||||
;;
|
||||
esac
|
||||
|
||||
notify_alacritty
|
||||
msg "Theme set successfully!"
|
||||
exit 0
|
||||
}
|
||||
|
||||
main "$@"
|
||||
@@ -1,19 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Check git repo's files .gitattributes and are all of them mapped.
|
||||
# Check git repo's files .gitattributes and ensure all of them are mapped.
|
||||
# Ismo Vuorinen <https://github.com/ivuorinen> 2022
|
||||
#
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
|
||||
if ! command -v git &> /dev/null; then
|
||||
echo "git could not be found, please install it first"
|
||||
exit 1
|
||||
fi
|
||||
set -euo pipefail
|
||||
|
||||
missing_attributes=$(git ls-files | git check-attr -a --stdin | grep "text: auto")
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
if [[ "$missing_attributes" ]]; then
|
||||
echo ".gitattributes rule missing for the following files:"
|
||||
echo "$missing_attributes"
|
||||
else
|
||||
echo "All files have a corresponding rule in .gitattributes"
|
||||
fi
|
||||
# Function to check if git is installed
|
||||
check_git_installed()
|
||||
{
|
||||
if ! command -v git &> /dev/null; then
|
||||
msg_err "git could not be found, please install it first"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to check for missing .gitattributes
|
||||
check_gitattributes()
|
||||
{
|
||||
local missing_attributes
|
||||
missing_attributes=$(git ls-files | git check-attr -a --stdin | grep "text: auto" || true)
|
||||
|
||||
if [[ -n "$missing_attributes" ]]; then
|
||||
echo ".gitattributes rule missing for the following files:"
|
||||
echo "$missing_attributes"
|
||||
else
|
||||
echo "All files have a corresponding rule in .gitattributes"
|
||||
fi
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
check_git_installed
|
||||
check_gitattributes
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -4,13 +4,49 @@
|
||||
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
|
||||
# Licensed under MIT License. http://www.opensource.org/licenses/mit-license.
|
||||
|
||||
dir="$1"
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
[ $# -eq 0 ] && {
|
||||
# Function to print usage information
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 full/path/to/dir/to/create"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ ! -d "$dir" ]; then
|
||||
mkdir -p "$dir" && exit 0
|
||||
fi
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to create a directory if it doesn't exist
|
||||
# $1 - directory to create (string)
|
||||
create_directory()
|
||||
{
|
||||
local dir=$1
|
||||
|
||||
if [ ! -d "$dir" ]; then
|
||||
msg "Creating directory: $dir"
|
||||
mkdir -p "$dir"
|
||||
msg "Directory created: $dir"
|
||||
else
|
||||
msg "Directory already exists: $dir"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
if [ "$#" -ne 1 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
create_directory "$1"
|
||||
exit 0
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -2,24 +2,48 @@
|
||||
#
|
||||
# x-xterm-update-keybindings
|
||||
# Updates $HOME/.dotfiles/docs/tmux.md with my keybindings.
|
||||
# Usage: x-xterm-update-keybindings
|
||||
# Author: Ismo Vuorinen <https://github.com/ivuorinen> 2024
|
||||
# shellcheck source=./../../config/shared.sh
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
|
||||
# shellcheck source=./../../scripts/shared.sh
|
||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
x-have tmux || {
|
||||
msg_err "tmux not found" && exit 0
|
||||
# Check if tmux is installed
|
||||
check_tmux_installed()
|
||||
{
|
||||
if ! x-have tmux; then
|
||||
msg_err "tmux not found"
|
||||
fi
|
||||
}
|
||||
|
||||
TMUX_KEYBINDINGS_DOCS="$DOTFILES/docs/tmux-keybindings.md"
|
||||
# Generate tmux keybindings documentation
|
||||
generate_tmux_keybindings()
|
||||
{
|
||||
local tmux_keybindings_docs="$1"
|
||||
|
||||
CB="\n\`\`\`\n"
|
||||
KB=$(tmux lsk -Tprefix -N | sed -e 's/^/ /;')
|
||||
H="# tmux keybindings\n"
|
||||
L="\nLeader: \`<ctrl><space>\`\n"
|
||||
local cb="\n\`\`\`\n"
|
||||
local kb
|
||||
kb=$(tmux lsk -Tprefix -N | sed -e 's/^/ /;')
|
||||
local h="# tmux keybindings\n"
|
||||
local l="\nLeader: \`<ctrl><space>\`\n"
|
||||
|
||||
# Generalize expanded $HOME to "$HOME"
|
||||
KB="${KB//$HOME/\$HOME}"
|
||||
# Generalize expanded $HOME to "$HOME"
|
||||
kb="${kb//$HOME/\$HOME}"
|
||||
|
||||
msg "Outputting tmux keybindings to $TMUX_KEYBINDINGS_DOCS"
|
||||
echo -e "${H}${L}${CB}${KB}${CB}" > "$TMUX_KEYBINDINGS_DOCS"
|
||||
msg_done "Done!"
|
||||
msg "Outputting tmux keybindings to $tmux_keybindings_docs"
|
||||
echo -e "${h}${l}${cb}${kb}${cb}" > "$tmux_keybindings_docs"
|
||||
msg "Done!"
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
check_tmux_installed
|
||||
|
||||
local tmux_keybindings_docs="$DOTFILES/docs/tmux-keybindings.md"
|
||||
generate_tmux_keybindings "$tmux_keybindings_docs"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
102
local/bin/x-gh-get-latest-release-targz
Executable file
102
local/bin/x-gh-get-latest-release-targz
Executable file
@@ -0,0 +1,102 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Fetch the latest release version of a GitHub repository in tar.gz format (e.g. v1.0.0.tar.gz)
|
||||
# Usage: x-gh-get-latest-release-targ <repo> [--get]
|
||||
# Author: Ismo Vuorinen <https://github.com/ivuorinen> 2024
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# Function to print usage information
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 <github repo> [--get] (e.g. ivuorinen/dotfiles)"
|
||||
echo " --get: Download and extract the tarball"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to fetch the tarball URL of the latest release from GitHub
|
||||
# $1 - GitHub repository (string)
|
||||
get_latest_tarball_url()
|
||||
{
|
||||
local repo=$1
|
||||
|
||||
local tarball_url
|
||||
tarball_url=$(curl -s "https://api.github.com/repos/${repo}/releases/latest" \
|
||||
| sed -Ene '/^[[:blank:]]+"tarball_url":[[:blank:]]"(https:[^"]+)",/s//\1/p')
|
||||
|
||||
if [ -z "$tarball_url" ]; then
|
||||
echo "(!) Failed to fetch the tarball URL for repository: $repo"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$tarball_url"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to download and extract the tarball
|
||||
# $1 - tarball URL (string)
|
||||
download_and_extract()
|
||||
{
|
||||
local url="$1"
|
||||
|
||||
msg "Downloading and extracting from: $url"
|
||||
curl --location --silent "$url" | tar --extract --gzip --file=- || {
|
||||
echo "(!) Failed to download or extract the tarball."
|
||||
exit 1
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
local repo=$1
|
||||
local get_tarball=false
|
||||
|
||||
if [ "$#" -eq 2 ]; then
|
||||
# Check if the first or second argument is --get
|
||||
if [ "$1" == "--get" ] || [ "$2" == "--get" ]; then
|
||||
get_tarball=true
|
||||
else
|
||||
usage
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if the first argument is --get
|
||||
if [ "$1" == "--get" ]; then
|
||||
repo="$2"
|
||||
fi
|
||||
|
||||
msg "Fetching the tarball URL for the latest release of repository: $repo"
|
||||
|
||||
local location
|
||||
location=$(get_latest_tarball_url "$repo")
|
||||
|
||||
if $get_tarball; then
|
||||
download_and_extract "$location"
|
||||
else
|
||||
echo "$location"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
# vim: set ts=2 sw=2 ft=sh et:
|
||||
68
local/bin/x-gh-get-latest-version
Executable file
68
local/bin/x-gh-get-latest-version
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Get latest release version from GitHub
|
||||
# Usage: x-gh-get-latest-version <repo>
|
||||
# Author: Ismo Vuorinen <https://github.com/ivuorinen> 2024
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# Function to print usage information
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 <repo> (e.g. ivuorinen/dotfiles)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to fetch the latest release version from GitHub
|
||||
# $1 - GitHub repository (string)
|
||||
get_latest_release()
|
||||
{
|
||||
local repo=$1
|
||||
|
||||
local version
|
||||
version=$(curl -s "https://api.github.com/repos/${repo}/releases/latest" \
|
||||
| grep "tag_name" \
|
||||
| awk -F '"' '{print $4}')
|
||||
|
||||
if [ -z "$version" ]; then
|
||||
msg "Failed to fetch the latest release version for repository: $repo"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$version"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
if [ "$#" -ne 1 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
local repo=$1
|
||||
|
||||
msg "Fetching the latest release version for repository: $repo"
|
||||
|
||||
local version
|
||||
version=$(get_latest_release "$repo")
|
||||
|
||||
echo "$version"
|
||||
return 0
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
# vim: set ts=2 sw=2 ft=sh et:
|
||||
@@ -1,9 +1,47 @@
|
||||
#!/usr/bin/env bash
|
||||
# Returns which status
|
||||
which "$1" >&/dev/null
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
exit 0
|
||||
else
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# Function to print usage information
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 <command>"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to check if a command exists
|
||||
# $1 - command to check (string)
|
||||
check_command()
|
||||
{
|
||||
local cmd=$1
|
||||
|
||||
if command -v "$cmd" > /dev/null 2>&1; then
|
||||
msg "(*) '$cmd' is available on the system."
|
||||
exit 0
|
||||
else
|
||||
msg "(!) '$cmd' is NOT available on the system."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
if [ "$#" -ne 1 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
check_command "$1"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -2,76 +2,96 @@
|
||||
# Load our configuration files
|
||||
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
|
||||
|
||||
set -euo pipefail
|
||||
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
|
||||
|
||||
# Set verbosity with VERBOSE=1 x-load-configs
|
||||
VERBOSE="${VERBOSE:=0}"
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
[ "$VERBOSE" = "1" ] && {
|
||||
set -x
|
||||
# Enable verbosity with VERBOSE=1 x-load-configs
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
# Enable debugging with DEBUG=1 x-load-configs
|
||||
DEBUG="${DEBUG:-0}"
|
||||
|
||||
# Get the hostname
|
||||
CONFIG_HOST="$(hostname -s)"
|
||||
|
||||
# Enable debugging if requested
|
||||
[ "$DEBUG" = "1" ] && set -x
|
||||
|
||||
CONFIG_PATH="${HOME}/.config"
|
||||
|
||||
[ -d "$DOTFILES" ] || {
|
||||
msg_err "Error: DOTFILES is not set or $DOTFILES does not exist"
|
||||
}
|
||||
|
||||
CONFIG_PATH="$DOTFILES/config"
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message type (string)
|
||||
# $2 - message content (string)
|
||||
config_msg()
|
||||
{
|
||||
# if $1 is empty, return
|
||||
[ -z "$1" ] && return
|
||||
[ -z "$2" ] && $2=""
|
||||
|
||||
# Load the shell dotfiles, and then some:
|
||||
HOST="$(hostname -s)"
|
||||
[ "$VERBOSE" = "1" ] && {
|
||||
echo "x-load-configs: VERBOSE=1"
|
||||
echo "x-load-configs: HOST: $HOST"
|
||||
local msg_type="$1"
|
||||
local msg_content="$2"
|
||||
[[ "$VERBOSE" -eq 1 ]] && printf 'x-load-configs: %s %s\n' "$msg_type" "$msg_content"
|
||||
return 0
|
||||
}
|
||||
|
||||
configFile()
|
||||
# Function to get the full path of a config file
|
||||
# $1 - filename (string)
|
||||
config_file_path()
|
||||
{
|
||||
echo "$CONFIG_PATH/$1"
|
||||
}
|
||||
|
||||
configMsg()
|
||||
# Function to source configuration files
|
||||
source_config()
|
||||
{
|
||||
printf 'x-load-configs: %s %s\n' "$1" "$2"
|
||||
local config_file=$1
|
||||
if [ -f "$config_file" ]; then
|
||||
eval "$config_file"
|
||||
config_msg "Sourced" "$config_file"
|
||||
else
|
||||
msg "Config file $config_file not found"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
loadConfigFiles()
|
||||
# Function to load a configuration file
|
||||
# $1 - base config file name (string)
|
||||
load_config_files()
|
||||
{
|
||||
CONFIG_FILE=$1
|
||||
SECRET_FILE=$CONFIG_FILE-secret
|
||||
HOST_FILE=$CONFIG_FILE-$HOST
|
||||
SECRET_HOST=$HOST_FILE-secret
|
||||
local config_file="$1"
|
||||
local secret_file="${config_file}-secret"
|
||||
local host_file="${config_file}-${CONFIG_HOST}"
|
||||
local secret_host_file="${host_file}-secret"
|
||||
|
||||
[ "$VERBOSE" = "1" ] && configMsg "?" "$CONFIG_FILE"
|
||||
|
||||
# global (exports|alias|functions) FILENAME for all hosts
|
||||
# shellcheck source=../config/exports
|
||||
[ -r "$CONFIG_FILE" ] && {
|
||||
source "$CONFIG_FILE" && [ "$VERBOSE" = "1" ] && configMsg "Found" "$CONFIG_FILE"
|
||||
config_msg "Looking for" "$config_file"
|
||||
[ -r "$config_file" ] && {
|
||||
source_config "$config_file"
|
||||
}
|
||||
|
||||
# global secret FILENAME, git ignored
|
||||
# shellcheck source=../config/exports-secret
|
||||
[ "$VERBOSE" = "1" ] && configMsg "?" "$SECRET_FILE"
|
||||
[ -r "$SECRET_FILE" ] && {
|
||||
source "$SECRET_FILE" && [ "$VERBOSE" = "1" ] && configMsg "Found" "$SECRET_FILE"
|
||||
config_msg "Looking for" "$secret_file"
|
||||
[ -r "$secret_file" ] && {
|
||||
source_config "$secret_file"
|
||||
}
|
||||
# host specific (exports|alias|functions) FILENAME
|
||||
# shellcheck source=../config/exports
|
||||
[ "$VERBOSE" = "1" ] && configMsg "?" "$HOST_FILE"
|
||||
[ -r "$HOST_FILE" ] && {
|
||||
source "$HOST_FILE" && [ "$VERBOSE" = "1" ] && configMsg "Found" "$HOST_FILE"
|
||||
|
||||
config_msg "Looking for" "$host_file"
|
||||
[ -r "$host_file" ] && {
|
||||
source_config "$host_file"
|
||||
}
|
||||
# host specific (exports|alias|functions) FILENAME, git ignored
|
||||
# shellcheck source=../config/exports
|
||||
[ "$VERBOSE" = "1" ] && configMsg "?" "$SECRET_HOST"
|
||||
[ -r "$SECRET_HOST" ] && {
|
||||
source "$SECRET_HOST" \
|
||||
&& [ "$VERBOSE" = "1" ] && configMsg "Found" "$SECRET_HOST"
|
||||
|
||||
config_msg "Looking for" "$secret_host_file"
|
||||
[ -r "$secret_host_file" ] && {
|
||||
source_config "$secret_host_file"
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
FILE_EXPORTS=$(configFile "exports")
|
||||
FILE_FUNCTIONS=$(configFile "functions")
|
||||
FILE_ALIAS=$(configFile "alias")
|
||||
|
||||
loadConfigFiles "$FILE_EXPORTS"
|
||||
loadConfigFiles "$FILE_FUNCTIONS"
|
||||
loadConfigFiles "$FILE_ALIAS"
|
||||
config_msg "VERBOSE=1" "Verbose mode enabled"
|
||||
config_msg "HOST" "$CONFIG_HOST"
|
||||
|
||||
load_config_files "$(config_file_path "exports")"
|
||||
load_config_files "$(config_file_path "alias")"
|
||||
exit 0
|
||||
|
||||
@@ -1,4 +1,50 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Create a directory and cd into it
|
||||
# Usage: mkcd <dir>
|
||||
|
||||
mkdir -p "$@" && cd "$@" || exit
|
||||
set -euo pipefail
|
||||
|
||||
# Set verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# Function to print usage information
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 <dir>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
}
|
||||
|
||||
# Function to create a directory and cd into it
|
||||
# $1 - directory to create and cd into (string)
|
||||
mkcd()
|
||||
{
|
||||
local dir=$1
|
||||
|
||||
mkdir -p "$dir" && msg "Directory $dir created"
|
||||
|
||||
cd "$dir" || {
|
||||
msg "Failed to cd into $dir"
|
||||
exit 1
|
||||
}
|
||||
msg "Changed directory to $dir"
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
if [ "$#" -ne 1 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
mkcd "$1"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -6,16 +6,34 @@
|
||||
# Modified by: Ismo Vuorinen <https://github.com/ivuorinen> 2020
|
||||
# Originally from: https://www.commandlinefu.com/commands/view/8951
|
||||
# Original author: https://www.commandlinefu.com/commands/by/wickedcpj
|
||||
#
|
||||
echo 'User: Command: PID: Port:'
|
||||
echo '========================================================='
|
||||
|
||||
lsof -i 4 -P -n +c 0 \
|
||||
| grep -i 'listen' \
|
||||
| awk '{print $3, $1, $2, $9}' \
|
||||
| sed 's/ [a-z0-9\.\*]*:/ /' \
|
||||
| sort -k 3 -n \
|
||||
| xargs printf '%-15s %-25s %-8s %-5s\n' \
|
||||
| uniq
|
||||
set -euo pipefail
|
||||
|
||||
echo ""
|
||||
# Function to print the header
|
||||
print_header()
|
||||
{
|
||||
echo 'User: Command: PID: Port:'
|
||||
echo '========================================================='
|
||||
}
|
||||
|
||||
# Function to list open ports
|
||||
list_open_ports()
|
||||
{
|
||||
lsof -i 4 -P -n +c 0 \
|
||||
| grep -i 'listen' \
|
||||
| awk '{print $3, $1, $2, $9}' \
|
||||
| sed 's/ [a-z0-9\.\*]*:/ /' \
|
||||
| sort -k 3 -n \
|
||||
| xargs printf '%-15s %-25s %-8s %-5s\n' \
|
||||
| uniq
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
print_header
|
||||
list_open_ports
|
||||
echo ""
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -3,5 +3,38 @@
|
||||
# Add a directory to the beginning of the PATH if it's not already there.
|
||||
# Usage: x-path-append <dir>
|
||||
|
||||
x-path-remove "$1"
|
||||
export PATH="${PATH:+"$PATH:"}$1"
|
||||
# Set verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
}
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: $0 <dir>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dir="$1"
|
||||
|
||||
if echo "$PATH" | grep -qE "(^|:)$dir($|:)"; then
|
||||
export PATH=$(echo -n "$PATH" | awk -v RS=: -v ORS=: "\$0 != \"$dir\"" | sed 's/:$//')
|
||||
msg "Directory $dir has been removed from PATH"
|
||||
else
|
||||
msg "Directory $dir is not in PATH"
|
||||
fi
|
||||
|
||||
if [ ! -d "$dir" ]; then
|
||||
msg "(?) Directory $dir does not exist"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if echo "$PATH" | grep -qE "(^|:)$dir($|:)"; then
|
||||
msg "(!) Directory $dir is already in PATH"
|
||||
else
|
||||
export PATH="${PATH:+"$PATH:"}$dir"
|
||||
msg "(!) Directory $dir has been added to the end of PATH"
|
||||
fi
|
||||
|
||||
@@ -3,4 +3,31 @@
|
||||
# Add a directory to the front of the PATH if it exists and is not already there
|
||||
# Usage: x-path-prepend <dir>
|
||||
|
||||
export PATH="$1${PATH:+":$PATH"}"
|
||||
# Set verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
}
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: $0 <dir>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dir="$1"
|
||||
|
||||
if [ ! -d "$dir" ]; then
|
||||
msg "(?) Directory $dir does not exist"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if echo "$PATH" | grep -qE "(^|:)$dir($|:)"; then
|
||||
msg "(!) Directory $dir is already in PATH"
|
||||
else
|
||||
export PATH="$dir${PATH:+":$PATH"}"
|
||||
msg "(!) Directory $dir has been added to the front of PATH"
|
||||
fi
|
||||
|
||||
@@ -3,4 +3,27 @@
|
||||
# Remove a directory from the PATH
|
||||
# Usage: x-path-remove <dir>
|
||||
|
||||
export PATH=$(echo -n "$PATH" | awk -v RS=: -v ORS=: "\$0 != \"$1\"" | sed 's/:$//')
|
||||
# Set verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
}
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: $0 <dir>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dir="$1"
|
||||
|
||||
if ! echo "$PATH" | grep -qE "(^|:)$dir($|:)"; then
|
||||
msg "(?) Directory $dir is not in PATH"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
export PATH=$(echo -n "$PATH" | awk -v RS=: -v ORS=: "\$0 != \"$dir\"" | sed 's/:$//')
|
||||
msg "(!) Directory $dir has been removed from PATH"
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
* Quota usage
|
||||
* Show quota usage
|
||||
*
|
||||
* @package x-quota-usage
|
||||
* @version 1.0.0
|
||||
* @link https://github.com/ivuorinen/dotfiles/blob/main/local/bin/x-quota-usage.php
|
||||
* @license MIT
|
||||
* @author Ismo Vuorinen <https://github.com/ivuorinen>
|
||||
*/
|
||||
error_reporting(E_ALL);
|
||||
|
||||
$debug = false;
|
||||
|
||||
@@ -14,168 +14,119 @@
|
||||
# pkill (coreutils)
|
||||
#
|
||||
# 2021-2022 : João F. © BeyondMagic <koetemagie@gmail.com>
|
||||
# 2024- : Ismo Vuorinen <https://github.com/ivuorinen>
|
||||
|
||||
# 1. Variables.
|
||||
# Enable verbosity with VERBOSE=1
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
# Variables
|
||||
frame_rate=30
|
||||
name='camera'
|
||||
path_recordings="$HOME/.cache/recording"
|
||||
replace_id="$HOME/.cache/recording.id"
|
||||
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
# A. Indepedent of variables.
|
||||
frame_rate=30
|
||||
time=10
|
||||
name='カメラ'
|
||||
|
||||
# B. Depedent of variables.
|
||||
path_recordings="$HOME/.cache/recording"
|
||||
icons="$HOME/.local/share/icons"
|
||||
replace_id="$HOME/.cache/recording.id"
|
||||
[ "$VERBOSE" -eq 1 ] && echo "$1"
|
||||
}
|
||||
|
||||
# 2. Functions to minise code.
|
||||
#{
|
||||
|
||||
# I.
|
||||
# Notify function
|
||||
notify()
|
||||
{
|
||||
|
||||
notify-call \
|
||||
--replace-file "$replace_id" \
|
||||
"$@"
|
||||
|
||||
notify-call --replace-file "$replace_id" "$@"
|
||||
}
|
||||
|
||||
# II.
|
||||
# Stop recording function
|
||||
stop()
|
||||
{
|
||||
|
||||
# A.
|
||||
#pkill -INT -f 'ffmpeg -f alsa -ac 1 -i pulse -f x11grab -r 30 -s '
|
||||
giph --stop
|
||||
|
||||
# C.
|
||||
eww update record_menu=false
|
||||
|
||||
}
|
||||
#}
|
||||
|
||||
# #. Kill previous giph process.
|
||||
if [ "$(pgrep -f 'bash.+giph')" ]; then
|
||||
|
||||
# A. Let the user decide.
|
||||
next=$(notify \
|
||||
-d 'echo yes' \
|
||||
"$name" \
|
||||
'Do you want to stop current recording?')
|
||||
|
||||
# A. End with previous giph session.
|
||||
[ "$next" = 'yes' ] && stop
|
||||
|
||||
# B. Just exit cleanly.
|
||||
exit 0
|
||||
|
||||
fi
|
||||
|
||||
# 2. To see if current fyletype is supported.
|
||||
{
|
||||
|
||||
case "$1" in
|
||||
|
||||
# A. Supported.
|
||||
'mkv' | 'gif' | 'webm' | 'mp4') ;;
|
||||
|
||||
# B. Not supported.
|
||||
*)
|
||||
|
||||
# I. Let the user decide.
|
||||
format=$(notify \
|
||||
-o 'echo mkv:MKV' \
|
||||
-o 'echo webm:WEBM' \
|
||||
-o 'echo mp4:MP4' \
|
||||
-o 'echo gif:GIF' \
|
||||
"$name" \
|
||||
'What is the filetype you want to record?')
|
||||
|
||||
# II. Execute itself.
|
||||
exec $0 $format $2
|
||||
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
}
|
||||
|
||||
# 3. Whether to choose fullscreen recording or sizeable one.
|
||||
# Function to check for required applications
|
||||
check_dependencies()
|
||||
{
|
||||
if [ "$2" = 'fullscreen' ]; then
|
||||
|
||||
# A. From <WxH+X+Y> monitor.
|
||||
geometry="$(xrandr | awk '/ primary/{print $4}')"
|
||||
|
||||
elif [ "$2" = 'set' ]; then
|
||||
|
||||
# A. To get size & position of the recording set.
|
||||
geometry="$(slop -f "%wx%h+%x+%y")"
|
||||
|
||||
else
|
||||
|
||||
# I. Let the user decide.
|
||||
next=$(notify \
|
||||
-o 'echo fullscreen:The whole_screen!' \
|
||||
-o 'echo set:Let me set.' \
|
||||
"$name" \
|
||||
'How exactly do you want to record?')
|
||||
|
||||
# II. Execute itself.
|
||||
exec $0 $1 $next
|
||||
for cmd in ffmpeg notify-send.sh pkill eww giph slop; do
|
||||
if ! command -v "$cmd" &> /dev/null; then
|
||||
echo "Required command '$cmd' not found. Please install it before running this script."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Function to kill previous giph process if running
|
||||
kill_previous_process()
|
||||
{
|
||||
if pgrep -f 'bash.+giph' > /dev/null; then
|
||||
next=$(notify -d 'echo yes' "$name" 'Do you want to stop current recording?')
|
||||
[ "$next" = 'yes' ] && stop
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
# 4. Start recording.
|
||||
# Function to check if the current file type is supported
|
||||
check_file_type()
|
||||
{
|
||||
case "$1" in
|
||||
'mkv' | 'gif' | 'webm' | 'mp4') ;;
|
||||
*)
|
||||
format=$(
|
||||
notify \
|
||||
-o 'echo mkv:MKV' \
|
||||
-o 'echo webm:WEBM' \
|
||||
-o 'echo mp4:MP4' \
|
||||
-o 'echo gif:GIF' \
|
||||
"$name" \
|
||||
'What is the filetype you want to record?'
|
||||
)
|
||||
exec "$0" "$format" "$2"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to determine recording scope
|
||||
determine_scope()
|
||||
{
|
||||
if [ "$2" = 'fullscreen' ]; then
|
||||
geometry=$(xrandr | awk '/ primary/{print $4}')
|
||||
elif [ "$2" = 'set' ]; then
|
||||
geometry=$(slop -f "%wx%h+%x+%y")
|
||||
else
|
||||
next=$(notify -o 'echo fullscreen:The whole_screen!' -o 'echo set:Let me set.' "$name" 'How exactly do you want to record?')
|
||||
exec "$0" "$1" "$next"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to start recording
|
||||
start_recording()
|
||||
{
|
||||
mkdir -p "$path_recordings"
|
||||
name_file="$path_recordings/$2-$(date +'%a_%b_%d_%H:%M:%S').$1"
|
||||
|
||||
# A. Timer.
|
||||
#for i in {1..$time}; do
|
||||
|
||||
# # I.
|
||||
# notify "Starting in $i seconds."
|
||||
|
||||
# # II. Wait for next second.
|
||||
# sleep ${i}s
|
||||
|
||||
#done
|
||||
|
||||
# B. Send a sign of recording to lemonbar so that you know it is being recorded.
|
||||
eww update record_menu=true
|
||||
|
||||
# C. Start recording.
|
||||
giph \
|
||||
-g "$geometry" \
|
||||
-f "$frame_rate" \
|
||||
"$name_file"
|
||||
giph -g "$geometry" -f "$frame_rate" "$name_file"
|
||||
|
||||
# D.
|
||||
stop
|
||||
|
||||
# E.
|
||||
responder="$(notify \
|
||||
-o 'echo open:See file?' \
|
||||
-o 'echo none:Hell no' \
|
||||
"$name" \
|
||||
'Recording has finished.')"
|
||||
responder=$(notify -o 'echo open:See file?' -o 'echo none:Hell no' "$name" 'Recording has finished.')
|
||||
|
||||
# F. For action-driven response.
|
||||
if [ "$responder" = 'open' ]; then
|
||||
|
||||
# I.
|
||||
nohup \
|
||||
gtk-launch \
|
||||
"$(xdg-mime query default inode/directory)" \
|
||||
"$path_recordings/" \
|
||||
> /dev/null 2>&1 &
|
||||
|
||||
nohup gtk-launch "$(xdg-mime query default inode/directory)" "$path_recordings/" > /dev/null 2>&1 &
|
||||
fi
|
||||
|
||||
rm -f "$replace_id"
|
||||
}
|
||||
|
||||
rm -f "$replace_id"
|
||||
main()
|
||||
{
|
||||
check_dependencies
|
||||
kill_previous_process "$@"
|
||||
check_file_type "$@"
|
||||
determine_scope "$@"
|
||||
start_recording "$@"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -1,50 +1,71 @@
|
||||
#!/usr/bin/env bash
|
||||
# Check which php versions are installed with brew, and create aliases for each installation.
|
||||
# Check which PHP versions are installed with brew, and create aliases for each installation.
|
||||
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Set verbosity with VERBOSE=1 x-load-configs
|
||||
VERBOSE="${VERBOSE:=0}"
|
||||
# Set verbosity with VERBOSE=1 x-set-php-aliases
|
||||
VERBOSE="${VERBOSE:-0}"
|
||||
|
||||
[ "$VERBOSE" = "2" ] && {
|
||||
set -x
|
||||
}
|
||||
# Enable debugging if verbosity is set to 2
|
||||
[ "$VERBOSE" = "2" ] && set -x
|
||||
|
||||
! x-have brew && {
|
||||
# Check if brew is installed, if not exit.
|
||||
if ! command -v brew &> /dev/null; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Function to read installed PHP versions using brew
|
||||
get_php_versions()
|
||||
{
|
||||
local versions=()
|
||||
while IFS="" read -r line; do
|
||||
versions+=("$line")
|
||||
done < <(bkt -- brew list | grep '^php')
|
||||
echo "${versions[@]}"
|
||||
}
|
||||
|
||||
# Get installed php versions from brew and setup aliases
|
||||
php_versions=()
|
||||
while IFS="" read -r line; do php_versions+=("$line"); done < <(bkt -- brew list | grep '^php')
|
||||
# Function to create aliases for each PHP version
|
||||
create_aliases()
|
||||
{
|
||||
local php_versions=("$@")
|
||||
local php_error_reporting='-d error_reporting=22527'
|
||||
|
||||
php_error_reporting='-d error_reporting=22527'
|
||||
for version in "${php_versions[@]}"; do
|
||||
[ "$VERBOSE" = "1" ] && echo "Setting aliases for $version"
|
||||
|
||||
for version in "${php_versions[@]}"; do
|
||||
[ "$VERBOSE" = "1" ] && echo "Setting aliases for $version"
|
||||
# drop the dot from version (8.0 -> 80)
|
||||
php_abbr="${version//\./}"
|
||||
# replace "php@" with "p" so "php@80" becomes "p80"
|
||||
php_alias="${php_abbr//php@/p}"
|
||||
# Drop the dot from version (e.g., 8.0 -> 80)
|
||||
local php_abbr="${version//\./}"
|
||||
# Replace "php@" with "p" so "php@80" becomes "p80"
|
||||
local php_alias="${php_abbr//php@/p}"
|
||||
|
||||
# Fetch the exec path once
|
||||
php_exec="$HOMEBREW_PREFIX/opt/$version/bin/php"
|
||||
# Fetch the exec path once
|
||||
local php_exec="$HOMEBREW_PREFIX/opt/$version/bin/php"
|
||||
|
||||
[ -f "$php_exec" ] && {
|
||||
[ "$VERBOSE" = "1" ] && echo "-> php_exec $php_exec"
|
||||
if [ -f "$php_exec" ]; then
|
||||
[ "$VERBOSE" = "1" ] && echo "-> php_exec $php_exec"
|
||||
|
||||
# Raw PHP without error_reporting flag.
|
||||
# shellcheck disable=SC2139
|
||||
alias "${php_alias}"r="$php_exec"
|
||||
# PHP with error_reporting flag.
|
||||
# shellcheck disable=SC2139,SC2140
|
||||
alias "$php_alias"="$php_exec $php_error_reporting"
|
||||
# Local PHP Server.
|
||||
# shellcheck disable=SC2139,SC2140
|
||||
alias "${php_alias}s"="$php_exec -S localhost:9000"
|
||||
# Use composer with specific PHP and error_reporting flag on.
|
||||
# shellcheck disable=SC2139,SC2140
|
||||
alias "${php_alias}c"="$php_exec $php_error_reporting $(which composer)"
|
||||
}
|
||||
done
|
||||
# Raw PHP without error_reporting flag.
|
||||
alias "${php_alias}r"="$php_exec"
|
||||
|
||||
# PHP with error_reporting flag.
|
||||
alias "$php_alias"="$php_exec $php_error_reporting"
|
||||
|
||||
# Local PHP Server.
|
||||
alias "${php_alias}s"="$php_exec -S localhost:9000"
|
||||
|
||||
# Use composer with specific PHP and error_reporting flag on.
|
||||
alias "${php_alias}c"="$php_exec $php_error_reporting $(which composer)"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
local php_versions
|
||||
php_versions=($(get_php_versions))
|
||||
create_aliases "${php_versions[@]}"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -6,47 +6,73 @@
|
||||
# Ismo Vuorinen <https://github.com/ivuorinen> 2023
|
||||
# MIT License
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ENV Variables
|
||||
: "${VERBOSE:=0}" # VERBOSE=1 x-sha256sum-matcher file1 file2
|
||||
|
||||
file_1="$1"
|
||||
file_2="$2"
|
||||
|
||||
# return sha256sum for file
|
||||
# Return sha256sum for file
|
||||
# $1 - filename (string)
|
||||
get_sha256sum()
|
||||
{
|
||||
sha256sum "$1" | head -c 64
|
||||
}
|
||||
|
||||
[ $# -eq 0 ] && {
|
||||
echo "Usage: $0 file1.sh file2.sh" && exit 1
|
||||
}
|
||||
|
||||
# Print message if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "$1"
|
||||
}
|
||||
|
||||
# Print error message and exit
|
||||
# $1 - error message (string)
|
||||
error()
|
||||
{
|
||||
msg "(!) ERROR: $1" && exit 1
|
||||
msg "(!) ERROR: $1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ ! -f "$file_1" ]; then
|
||||
error "File 1 does not exist: $file_1"
|
||||
fi
|
||||
# Validate input arguments
|
||||
validate_inputs()
|
||||
{
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "Usage: $0 file1 file2"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ ! -f "$file_2" ]; then
|
||||
error "File 2 does not exist: $file_2"
|
||||
fi
|
||||
# Check if file exists
|
||||
# $1 - filename (string)
|
||||
check_file_exists()
|
||||
{
|
||||
local filename=$1
|
||||
if [ ! -f "$filename" ]; then
|
||||
error "File does not exist: $filename"
|
||||
fi
|
||||
}
|
||||
|
||||
file_1_hash=$(get_sha256sum "$file_1")
|
||||
file_2_hash=$(get_sha256sum "$file_2")
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
local file_1=$1
|
||||
local file_2=$2
|
||||
|
||||
if [ "$file_1_hash" != "$file_2_hash" ]; then
|
||||
error "Files do not match"
|
||||
else
|
||||
msg "(*) Success: Files do match"
|
||||
exit 0
|
||||
fi
|
||||
validate_inputs "$file_1" "$file_2"
|
||||
check_file_exists "$file_1"
|
||||
check_file_exists "$file_2"
|
||||
|
||||
local file_1_hash
|
||||
local file_2_hash
|
||||
|
||||
file_1_hash=$(get_sha256sum "$file_1")
|
||||
file_2_hash=$(get_sha256sum "$file_2")
|
||||
|
||||
if [ "$file_1_hash" != "$file_2_hash" ]; then
|
||||
error "Files do not match"
|
||||
else
|
||||
msg "(*) Success: Files do match"
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -1,39 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
# Generate thumbnails using magick
|
||||
# Generate thumbnails using ImageMagick (magick)
|
||||
# https://imagemagick.org/script/download.php
|
||||
#
|
||||
# Defaults to current directory creating thumbs with 1000x1000
|
||||
# images with 200px white borders around the original image.
|
||||
# Defaults to current directory creating thumbnails with 1000x1000
|
||||
# dimensions and 200px white borders around the original image.
|
||||
#
|
||||
# Defaults can be overridden with ENV variables like this:
|
||||
# $ THMB_BACKGROUND=black x-thumbgen ~/images/
|
||||
#
|
||||
# Created by: Ismo Vuorinen <https://github.com/ivuorinen> 2015
|
||||
|
||||
: "${THMB_SOURCE:=$1}"
|
||||
set -euo pipefail
|
||||
|
||||
# Default values
|
||||
: "${THMB_SOURCE:=${1:-}}"
|
||||
: "${THMB_BACKGROUND:=white}"
|
||||
: "${THMB_RESIZE:=800x800}"
|
||||
: "${THMB_EXTENT:=1000x1000}"
|
||||
|
||||
[ $# -eq 0 ] && {
|
||||
# Print usage information
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 /full/path/to/image/folder"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$THMB_SOURCE" == "" ] || [ ! -d "$THMB_SOURCE" ]; then
|
||||
THMB_SOURCE=$(pwd)
|
||||
fi
|
||||
# Check if ImageMagick is installed
|
||||
check_magick_installed()
|
||||
{
|
||||
if ! command -v magick &> /dev/null; then
|
||||
echo "magick not found in PATH, https://imagemagick.org/script/download.php"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if command -v magick &> /dev/null; then
|
||||
# Generate thumbnails
|
||||
generate_thumbnails()
|
||||
{
|
||||
local source=$1
|
||||
|
||||
magick \
|
||||
"$THMB_SOURCE/*" \
|
||||
"${source}/*" \
|
||||
-resize "$THMB_RESIZE" \
|
||||
-background "$THMB_BACKGROUND" \
|
||||
-gravity center \
|
||||
-extent "$THMB_EXTENT" \
|
||||
-set filename:fname '%t_thumb.%e' +adjoin '%[filename:fname]'
|
||||
}
|
||||
|
||||
else
|
||||
echo "magick not found in PATH, https://imagemagick.org/script/download.php"
|
||||
fi
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
# Validate input
|
||||
if [ -z "$THMB_SOURCE" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
# Check if the source directory is valid
|
||||
if [ ! -d "$THMB_SOURCE" ]; then
|
||||
echo "Invalid directory: $THMB_SOURCE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
check_magick_installed
|
||||
generate_thumbnails "$THMB_SOURCE"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
##
|
||||
# This script contains helper for sha256 validating your downloads
|
||||
#
|
||||
# This script contains a helper for sha256 validating your downloads
|
||||
#
|
||||
# Source: https://gist.github.com/onnimonni/b49779ebc96216771a6be3de46449fa1
|
||||
# Author: Onni Hakala
|
||||
@@ -9,44 +9,60 @@
|
||||
# Updated by Ismo Vuorinen <https://github.com/ivuorinen> 2022
|
||||
##
|
||||
|
||||
if ! command -v sha256 &> /dev/null; then
|
||||
echo "git could not be found, please install it first"
|
||||
exit
|
||||
fi
|
||||
set -euo pipefail
|
||||
|
||||
# Stop program and give error message
|
||||
# $1 - error message (string)
|
||||
function error
|
||||
error()
|
||||
{
|
||||
echo "(!) ERROR: $1"
|
||||
echo "(!) ERROR: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# return sha256sum for file
|
||||
# Check for sha256sum command
|
||||
if ! command -v sha256sum &> /dev/null; then
|
||||
error "sha256sum could not be found, please install it first"
|
||||
fi
|
||||
|
||||
# Return sha256sum for file
|
||||
# $1 - filename (string)
|
||||
function get_sha256sum
|
||||
get_sha256sum()
|
||||
{
|
||||
sha256sum "$1" | head -c 64
|
||||
}
|
||||
|
||||
# Good variable names pls
|
||||
filename=$1
|
||||
file_hash=$2
|
||||
# Validate input arguments
|
||||
validate_inputs()
|
||||
{
|
||||
if [ -z "${filename:-}" ]; then
|
||||
error "You need to provide filename as the first parameter"
|
||||
fi
|
||||
|
||||
# Check input
|
||||
if [ -z "$filename" ]; then
|
||||
error "You need to provide filename in first parameter"
|
||||
fi
|
||||
if [ -z "${file_hash:-}" ]; then
|
||||
error "You need to provide sha256sum as the second parameter"
|
||||
fi
|
||||
}
|
||||
|
||||
if [ -z "$file_hash" ]; then
|
||||
error "You need to provide sha256sum in second parameter"
|
||||
fi
|
||||
# Main validation logic
|
||||
validate_file()
|
||||
{
|
||||
if [ ! -f "$filename" ]; then
|
||||
error "File $filename doesn't exist"
|
||||
elif [ "$(get_sha256sum "$filename")" = "$file_hash" ]; then
|
||||
echo "(*) Success: $filename matches provided sha256sum"
|
||||
else
|
||||
error "$filename doesn't match provided sha256sum"
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if the file is valid
|
||||
if [ ! -f "$filename" ]; then
|
||||
error "File $filename doesn't exist"
|
||||
elif [ "$(get_sha256sum "$filename")" = "$file_hash" ]; then
|
||||
echo "(*) Success: $filename matches provided sha256sum"
|
||||
else
|
||||
error "$filename doesn't match provided sha256sum"
|
||||
fi
|
||||
# Main function
|
||||
main()
|
||||
{
|
||||
filename=$1
|
||||
file_hash=$2
|
||||
|
||||
validate_inputs
|
||||
validate_file
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -10,23 +10,31 @@
|
||||
# ./when-down 1.2.3.4 ssh 1.2.3.4
|
||||
#
|
||||
|
||||
#
|
||||
# Ensure we received the correct number of arguments.
|
||||
#
|
||||
if [ $# -lt 2 ]; then
|
||||
# Ensure we received the correct number of arguments.
|
||||
if [ "$#" -lt 2 ]; then
|
||||
echo "Usage: $0 HOST COMMAND..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
HOST=$1
|
||||
wait_for_host_down()
|
||||
{
|
||||
local host=$1
|
||||
|
||||
echo "Waiting for $HOST to get down..."
|
||||
echo "Waiting for $host to go down..."
|
||||
|
||||
true
|
||||
while [ $? -ne 1 ]; do
|
||||
ping -c 1 -W 1 "$HOST" > /dev/null
|
||||
done
|
||||
while ping -c 1 -W 1 "$host" > /dev/null 2>&1; do
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
shift
|
||||
main()
|
||||
{
|
||||
local host=$1
|
||||
shift
|
||||
|
||||
"$@"
|
||||
wait_for_host_down "$host"
|
||||
|
||||
"$@"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -14,32 +14,46 @@
|
||||
# ./when-up ssh 1.2.3.4
|
||||
#
|
||||
|
||||
#
|
||||
# Ensure we received the correct number of arguments.
|
||||
#
|
||||
if [ $# -lt 2 ]; then
|
||||
# Ensure we received the correct number of arguments.
|
||||
if [ "$#" -lt 2 ]; then
|
||||
echo "Usage: $0 HOST COMMAND..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "ssh" ]; then
|
||||
HOST=$2
|
||||
else
|
||||
HOST=$1
|
||||
fi
|
||||
get_host()
|
||||
{
|
||||
if [ "$1" = "ssh" ]; then
|
||||
echo "$2"
|
||||
else
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
echo "Waiting for $HOST to come online..."
|
||||
wait_for_host()
|
||||
{
|
||||
local host=$1
|
||||
|
||||
ping -c 1 -W 1 "$HOST" > /dev/null
|
||||
while [ $? -ne 0 ]; do
|
||||
sleep 1
|
||||
ping -c 1 -W 1 "$HOST" > /dev/null
|
||||
done
|
||||
echo "Waiting for $host to come online..."
|
||||
|
||||
# By the time we reach here the ping-command has completed successfully
|
||||
# so we can launch the command we were given - along with any arguments.
|
||||
if [ "$1" != "ssh" ]; then
|
||||
shift
|
||||
fi
|
||||
while ! ping -c 1 -W 1 "$host" > /dev/null 2>&1; do
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
"$@"
|
||||
main()
|
||||
{
|
||||
local host
|
||||
|
||||
host=$(get_host "$@")
|
||||
wait_for_host "$host"
|
||||
|
||||
if [ "$1" = "ssh" ]; then
|
||||
shift 1
|
||||
else
|
||||
shift
|
||||
fi
|
||||
|
||||
"$@"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
},
|
||||
"homepage": "https://github.com/ivuorinen/dotfiles#readme",
|
||||
"devDependencies": {
|
||||
"@ivuorinen/base-configs": "^1.1.0"
|
||||
}
|
||||
"@ivuorinen/base-configs": "^1.1.0",
|
||||
"prettier-plugin-sh": "^0.14.0"
|
||||
},
|
||||
"packageManager": "yarn@1.22.22"
|
||||
}
|
||||
|
||||
28
scripts/create-nvim-keymaps.sh
Executable file
28
scripts/create-nvim-keymaps.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
# Create file containing key mappings for Neovim
|
||||
# Usage: ./create-nvim-keymaps.sh
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
DEST="$HOME/.dotfiles/docs/nvim-keybindings.md"
|
||||
|
||||
main()
|
||||
{
|
||||
msg "Generating Neovim keybindings documentation"
|
||||
|
||||
{
|
||||
printf "# nvim keybindings\n\n"
|
||||
printf "\`\`\`txt"
|
||||
} > "$DEST"
|
||||
|
||||
NVIM_APPNAME="nvim-kickstart" nvim -c "redir! >> $DEST" -c 'silent verbose map' -c 'redir END' -c 'q'
|
||||
|
||||
printf "\n\`\`\`\n\n- Generated on %s\n" "$(date)" >> "$DEST"
|
||||
|
||||
# Remove lines with "Last set from" from the file
|
||||
sed -e '/^ Last set from/d' "$DEST" > "${DEST}.tmp" && mv "${DEST}.tmp" "$DEST"
|
||||
|
||||
msg "Neovim keybindings documentation generated at $DEST"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
18
scripts/create-omp-screenshot.sh
Executable file
18
scripts/create-omp-screenshot.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Export oh-my-posh configuration as an image
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
|
||||
main()
|
||||
{
|
||||
cd "$DOTFILES" || msg_err "Failed to change directory to $DOTFILES"
|
||||
|
||||
oh-my-posh config export image \
|
||||
--config "$OHMYPOSH_CFG" \
|
||||
--output "$HOME/.dotfiles/.github/screenshots/oh-my-posh.png" \
|
||||
--author "Ismo Vuorinen"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
25
scripts/create-wezterm-keymaps.sh
Executable file
25
scripts/create-wezterm-keymaps.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
# Create file containing key mappings for wezterm
|
||||
# Usage: ./create-wezterm-keymaps.sh
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
DEST="$HOME/.dotfiles/docs/wezterm-keybindings.md"
|
||||
|
||||
main()
|
||||
{
|
||||
msg "Generating wezterm keybindings documentation"
|
||||
|
||||
{
|
||||
printf "# wezterm keybindings\n\n"
|
||||
printf "\`\`\`txt\n"
|
||||
} > "$DEST"
|
||||
|
||||
wezterm show-keys >> "$DEST"
|
||||
|
||||
printf "\`\`\`\n\n- Generated on %s\n" "$(date)" >> "$DEST"
|
||||
|
||||
msg "wezterm keybindings documentation generated at $DEST"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
78
scripts/install-asdf.sh
Executable file
78
scripts/install-asdf.sh
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Install asdf
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
|
||||
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
||||
export PATH="${ASDF_DIR}/bin:$PATH"
|
||||
|
||||
msg "Sourcing asdf in your shell"
|
||||
. "$ASDF_DIR/asdf.sh"
|
||||
|
||||
# Function to update asdf and plugins
|
||||
update_asdf()
|
||||
{
|
||||
asdf update
|
||||
|
||||
asdf plugin add asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git
|
||||
asdf install asdf-plugin-manager latest
|
||||
asdf global asdf-plugin-manager "$(asdf latest asdf-plugin-manager)"
|
||||
asdf-plugin-manager version
|
||||
asdf-plugin-manager add-all
|
||||
|
||||
asdf install
|
||||
}
|
||||
|
||||
ASDF_INSTALLABLES=(
|
||||
"1password-cli:github.com/NeoHsu/asdf-1password-cli.git"
|
||||
"age:github.com/threkk/asdf-age.git"
|
||||
"bottom:github.com/carbonteq/asdf-btm.git"
|
||||
"direnv:github.com/asdf-community/asdf-direnv.git"
|
||||
"dotenv-linter:github.com/wesleimp/asdf-dotenv-linter.git"
|
||||
"editorconfig-checker:github.com/gabitchov/asdf-editorconfig-checker.git"
|
||||
"eza:github.com/lwiechec/asdf-eza.git"
|
||||
"fd:gitlab.com/wt0f/asdf-fd.git"
|
||||
"github-cli:github.com/bartlomiejdanek/asdf-github-cli.git"
|
||||
"golang:github.com/asdf-community/asdf-golang.git"
|
||||
"hadolint:github.com/devlincashman/asdf-hadolint.git"
|
||||
"kubectl:github.com/asdf-community/asdf-kubectl.git"
|
||||
"lazygit:github.com/nklmilojevic/asdf-lazygit.git"
|
||||
"nodejs:github.com/asdf-vm/asdf-nodejs.git"
|
||||
"pipx:github.com/yozachar/asdf-pipx.git"
|
||||
"pre-commit:github.com/jonathanmorley/asdf-pre-commit.git"
|
||||
"ripgrep:gitlab.com/wt0f/asdf-ripgrep.git"
|
||||
"rust:github.com/code-lever/asdf-rust.git"
|
||||
"semgrep:github.com/brentjanderson/asdf-semgrep.git"
|
||||
"shellcheck:github.com/luizm/asdf-shellcheck.git"
|
||||
"shfmt:github.com/luizm/asdf-shfmt.git"
|
||||
"terraform-ls:github.com/asdf-community/asdf-hashicorp.git"
|
||||
"terraform-lsp:github.com/bartlomiejdanek/asdf-terraform-lsp.git"
|
||||
"terragrunt:github.com/ohmer/asdf-terragrunt.git"
|
||||
"tf-summarize:github.com/adamcrews/asdf-tf-summarize.git"
|
||||
"vault:github.com/asdf-community/asdf-hashicorp.git"
|
||||
"yamllint:github.com/ericcornelissen/asdf-yamllint.git"
|
||||
"yq:github.com/sudermanjr/asdf-yq.git"
|
||||
)
|
||||
|
||||
# Function to install asdf plugins
|
||||
install_asdf_plugins()
|
||||
{
|
||||
msg "Installing asdf plugins, if not already installed"
|
||||
for item in "${ASDF_INSTALLABLES[@]}"; do
|
||||
CMD=$(echo "${item}" | awk -F ":" '{print $1}')
|
||||
URL=$(echo "${item}" | awk -F ":" '{print $2}')
|
||||
asdf plugin add "${CMD}" "https://${URL}"
|
||||
asdf install "${CMD}" latest
|
||||
asdf global "${CMD}" "$(asdf latest "${CMD}")"
|
||||
done
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
update_asdf
|
||||
install_asdf_plugins
|
||||
msg "Reshim asdf"
|
||||
asdf reshim
|
||||
}
|
||||
|
||||
main "$@"
|
||||
@@ -2,31 +2,25 @@
|
||||
# Install cargo/rust packages.
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
source "$HOME/.dotfiles/config/exports"
|
||||
source "$HOME/.dotfiles/config/alias"
|
||||
source "$HOME/.dotfiles/config/functions"
|
||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||
eval "$HOME/.dotfiles/config/shared.sh"
|
||||
|
||||
msg "Starting to install rust/cargo packages"
|
||||
|
||||
! x-have cargo && {
|
||||
msg "cargo could not be found. installing cargo with rustup.rs"
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path -y
|
||||
}
|
||||
|
||||
source "$CARGO_HOME/env"
|
||||
|
||||
! x-have rustup && {
|
||||
msg_err "rustup could not be found. Aborting..."
|
||||
exit 1
|
||||
}
|
||||
|
||||
rustup default system
|
||||
# If we have cargo install-update, use it first
|
||||
if command -v cargo-install-update &> /dev/null; then
|
||||
msg_run "Updating cargo packages with cargo install-update"
|
||||
cargo install-update -a
|
||||
msg_done "Done with cargo install-update"
|
||||
fi
|
||||
|
||||
packages=(
|
||||
# A cargo subcommand for checking and applying
|
||||
# updates to installed executables
|
||||
"cargo-update"
|
||||
# Cargo cache management utility
|
||||
"cargo-cache"
|
||||
# starship.rs
|
||||
# "starship"
|
||||
# An incremental parsing system for programming tools
|
||||
"tree-sitter-cli"
|
||||
# a subprocess caching utility
|
||||
@@ -37,9 +31,6 @@ packages=(
|
||||
"eza"
|
||||
# A simple, fast and user-friendly alternative to 'find'
|
||||
"fd-find"
|
||||
# A cargo subcommand for checking and applying
|
||||
# updates to installed executables
|
||||
"cargo-update"
|
||||
# recursively searches directories for a
|
||||
# regex pattern while respecting your gitignore
|
||||
"ripgrep"
|
||||
@@ -48,26 +39,44 @@ packages=(
|
||||
"bottom"
|
||||
)
|
||||
|
||||
for pkg in "${packages[@]}"; do
|
||||
# Trim spaces
|
||||
pkg=${pkg// /}
|
||||
# Skip comments
|
||||
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
|
||||
# Number of jobs to run in parallel, this helps to keep the system responsive
|
||||
BUILD_JOBS=$(nproc --ignore=2)
|
||||
|
||||
msg_run "Installing cargo package $pkg"
|
||||
cargo install "$pkg"
|
||||
# Function to install cargo packages
|
||||
install_packages()
|
||||
{
|
||||
for pkg in "${packages[@]}"; do
|
||||
# Trim spaces
|
||||
pkg=${pkg// /}
|
||||
# Skip comments
|
||||
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
|
||||
|
||||
echo ""
|
||||
done
|
||||
|
||||
msg_done "Installed cargo packages!"
|
||||
|
||||
msg_run "Now doing the next steps for cargo packages"
|
||||
|
||||
# use bob to install nvim
|
||||
x-have bob && {
|
||||
bob use stable && x-path-append "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
msg_run "Installing cargo package $pkg"
|
||||
cargo install --jobs $BUILD_JOBS "$pkg"
|
||||
echo ""
|
||||
done
|
||||
}
|
||||
|
||||
msg_run "Removing cargo cache"
|
||||
cargo cache --autoclean
|
||||
# Function to perform additional steps for installed cargo packages
|
||||
post_install_steps()
|
||||
{
|
||||
msg_run "Now doing the next steps for cargo packages"
|
||||
|
||||
# use bob to install latest stable nvim
|
||||
if command -v bob &> /dev/null; then
|
||||
bob use stable && x-path-append "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
fi
|
||||
|
||||
msg_run "Removing cargo cache"
|
||||
cargo cache --autoclean
|
||||
msg_done "Done removing cargo cache"
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
install_packages
|
||||
msg_done "Installed cargo packages!"
|
||||
post_install_steps
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -1,58 +1,83 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2231,SC2034,SC2181,SC2068
|
||||
# shellcheck source=shared.sh
|
||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
|
||||
PBB_REQUIRED_TOOLS=(git cheat)
|
||||
for t in ${PBB_REQUIRED_TOOLS[@]}; do
|
||||
! x-have "$t" && echo "(!) $t is missing, can't continue..." && exit 1
|
||||
done
|
||||
|
||||
PBB_GIT="https://github.com/dylanaraps/pure-bash-bible.git"
|
||||
PBB_SOURCE="source: $PBB_GIT"
|
||||
PBB_SYNTAX="syntax: bash"
|
||||
PBB_TAGS="tags: [bash]"
|
||||
PBB_TEMP_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/cheat/pbb"
|
||||
|
||||
PBB_TEMP_PREFIX=$(basename "$0")
|
||||
PBB_TEMP_DIR="$XDG_CACHE_HOME/cheat/pbb"
|
||||
check_required_tools()
|
||||
{
|
||||
for t in "${PBB_REQUIRED_TOOLS[@]}"; do
|
||||
if ! x-have "$t"; then
|
||||
echo "(!) $t is missing, can't continue..."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# If there's no .git, clone the folder
|
||||
if [ ! -d "$PBB_TEMP_DIR/.git" ]; then
|
||||
msg_run "Starting to clone $PBB_GIT"
|
||||
git clone --depth 1 --single-branch -q "$PBB_GIT" "$PBB_TEMP_DIR" \
|
||||
&& msg_yay "Cloned $PBB_GIT"
|
||||
else
|
||||
# Update the repo
|
||||
msg_run "Starting to update $PBB_GIT"
|
||||
git -C "$PBB_TEMP_DIR" reset --hard origin/master
|
||||
git -C "$PBB_TEMP_DIR" pull -q \
|
||||
&& msg_yay "Updated $PBB_GIT"
|
||||
fi
|
||||
clone_or_update_repo()
|
||||
{
|
||||
if [ ! -d "$PBB_TEMP_DIR/.git" ]; then
|
||||
msg_run "Starting to clone $PBB_GIT"
|
||||
git clone --depth 1 --single-branch -q "$PBB_GIT" "$PBB_TEMP_DIR" \
|
||||
&& msg_yay "Cloned $PBB_GIT"
|
||||
else
|
||||
msg_run "Starting to update $PBB_GIT"
|
||||
git -C "$PBB_TEMP_DIR" reset --hard origin/master
|
||||
git -C "$PBB_TEMP_DIR" pull -q \
|
||||
&& msg_yay "Updated $PBB_GIT"
|
||||
fi
|
||||
}
|
||||
|
||||
PBB_CHAPTERS=$(ls -1v "$PBB_TEMP_DIR"/manuscript/chapter*)
|
||||
CHEAT_DEST="$(cheat -d | grep pure-bash-bible | head -1 | awk '{print $2}')"
|
||||
prepare_cheat_dest()
|
||||
{
|
||||
local cheat_dest
|
||||
cheat_dest="$(cheat -d | grep pure-bash-bible | head -1 | awk '{print $2}')"
|
||||
|
||||
if [ ! -d "$CHEAT_DEST" ]; then
|
||||
mkdir -p "$CHEAT_DEST"
|
||||
fi
|
||||
|
||||
for f in ${PBB_CHAPTERS[@]}; do
|
||||
# get all headers, take the first one, strip the # and return the first word in lowercase
|
||||
HEADER=$(grep -e '^[#] ' "$f" | head -1 | awk '{print tolower($2)}')
|
||||
CHEAT_FILE="$CHEAT_DEST/${HEADER}"
|
||||
|
||||
replacable "$f" "$CHEAT_FILE"
|
||||
override=$?
|
||||
if [ "$override" -ne 1 ]; then
|
||||
cp "$f" "$CHEAT_FILE" && msg_run "Updated: $CHEAT_FILE"
|
||||
if [ ! -d "$cheat_dest" ]; then
|
||||
mkdir -p "$cheat_dest"
|
||||
fi
|
||||
|
||||
LC_ALL=C perl -pi.bak -e 's/\<\!-- CHAPTER END --\>//' "$CHEAT_FILE"
|
||||
rm "$CHEAT_FILE.bak"
|
||||
echo "$cheat_dest"
|
||||
}
|
||||
|
||||
# add tags if the file doesn't have them
|
||||
if [ '---' != "$(head -1 < "$CHEAT_FILE")" ]; then
|
||||
T="$PBB_SYNTAX\n$PBB_TAGS\n$PBB_SOURCE\n"
|
||||
echo -e "---\n$T---\n$(cat "$CHEAT_FILE")" > "$CHEAT_FILE"
|
||||
fi
|
||||
done
|
||||
process_chapters()
|
||||
{
|
||||
local cheat_dest
|
||||
cheat_dest=$(prepare_cheat_dest)
|
||||
|
||||
mapfile -t PBB_CHAPTERS < <(ls -1v "$PBB_TEMP_DIR"/manuscript/chapter*)
|
||||
|
||||
for f in "${PBB_CHAPTERS[@]}"; do
|
||||
local header cheat_file
|
||||
header=$(grep -e '^[#] ' "$f" | head -1 | awk '{print tolower($2)}')
|
||||
cheat_file="$cheat_dest/$header"
|
||||
|
||||
if ! replacable "$f" "$cheat_file"; then
|
||||
cp "$f" "$cheat_file" && msg_run "Updated: $cheat_file"
|
||||
fi
|
||||
|
||||
LC_ALL=C perl -pi.bak -e 's/\<\!-- CHAPTER END --\>//' "$cheat_file"
|
||||
rm "$cheat_file.bak"
|
||||
|
||||
if [ '---' != "$(head -1 < "$cheat_file")" ]; then
|
||||
local metadata
|
||||
metadata="$PBB_SYNTAX\n$PBB_TAGS\n$PBB_SOURCE\n"
|
||||
echo -e "---\n$metadata---\n$(cat "$cheat_file")" > "$cheat_file"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
check_required_tools
|
||||
clone_or_update_repo
|
||||
process_chapters
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user