Compare commits

..

30 Commits

Author SHA1 Message Date
0b03acebd8 feat(config): tmux plugin tmux-fzf-url 2025-01-02 22:22:59 +02:00
d172b86cb8 chore(docs): update nvim, tmux, wezterm keymaps 2025-01-02 17:46:07 +02:00
f910dfb9ac chore(nvim): add lazy dev path, enable profiling 2025-01-02 17:36:53 +02:00
ee95d57ba0 chore(config): aerospace tweaks 2025-01-02 17:34:48 +02:00
f8a317f3c7 chore(dfm): install script cleanup 2025-01-02 15:18:48 +02:00
3762e10932 chore(config): aerospace docker desktop layout 2025-01-02 14:53:59 +02:00
afda96902b chore(config): ghostty tweaks 2025-01-02 14:53:20 +02:00
3060b6ad66 chore(nvim): mason tools, sessionopts 2025-01-02 14:15:06 +02:00
github-actions[bot]
4f154cf509 chore: update pre-commit hooks (#62)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-01-02 11:41:43 +02:00
863d803483 feat(config): zed config 2024-12-30 17:53:56 +02:00
07bb2b56d1 feat(config): glow config 2024-12-30 17:51:47 +02:00
84a753100e feat(config): ghostty config 2024-12-30 17:51:26 +02:00
c8b01f3fda chore(config): aerospace tweaks 2024-12-30 17:50:47 +02:00
8e6a110aac chore(ci): pre-commit - detect-aws-creds 2024-12-30 17:49:50 +02:00
a8baa1671f chore(config): fix terminfo, add ghostty inits 2024-12-30 17:27:45 +02:00
2ccdd042f6 chore: sort gitignore, echo submodule ignore status 2024-12-30 17:26:35 +02:00
github-actions[bot]
8cf43ed555 chore: update pre-commit hooks (#60)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-30 15:05:15 +02:00
e22094e0da fix(dfm): asdf plugin-install, docs translations 2024-12-30 11:26:54 +02:00
6186c5cba4 chore(config): tmux ignore md5 in window name 2024-12-28 19:02:55 +02:00
c453dcbf84 chore(nvim): statusline tweaks 2024-12-28 19:02:14 +02:00
4daaa62aed feat(dfm): scripts/install-* to autocomplete, docs 2024-12-28 19:01:45 +02:00
f56d5682d1 chore(nvim): shellscript formatting with shfmt 2024-12-28 18:59:59 +02:00
439638b686 chore(config): tweaks to aerospace config 2024-12-28 18:59:38 +02:00
a8a473a46d chore: shfmt, cleanup 2024-12-28 18:59:09 +02:00
eb91a43bbd feat(asdf): drop asdf-plugin-manager, use dotbot-asdf 2024-12-28 16:58:31 +02:00
github-actions[bot]
193fae662e chore: update pre-commit hooks (#58)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-27 05:18:32 +02:00
github-actions[bot]
117ca1a944 chore: update pre-commit hooks (#57)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-25 15:31:39 +02:00
1f1a6d42ad fix(ci): update-submodules cron syntax 2024-12-25 15:30:49 +02:00
cca265cd99 chore(ci): update update-submodules schedule 2024-12-25 15:15:53 +02:00
cc6abb53ba chore(ci): update pre-commit-autoupdate 2024-12-25 14:34:38 +02:00
60 changed files with 1134 additions and 903 deletions

View File

@@ -26,6 +26,8 @@ indent_size = 1
indent_style = tab indent_style = tab
[{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}] [{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}]
indent_size = 2
tab_width = 2
shell_variant = bash # --language-variant shell_variant = bash # --language-variant
binary_next_line = true binary_next_line = true
switch_case_indent = true # --case-indent switch_case_indent = true # --case-indent
@@ -37,5 +39,5 @@ function_next_line = true # --func-next-line
# such as "shfmt -l -w .". When formatting files directly, # such as "shfmt -l -w .". When formatting files directly,
# like "shfmt -w third_party/foo.sh" or "shfmt --filename=third_party/foo.sh", # 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. # the ignore logic is applied only when the --apply-ignore flag is given.
[{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**}] [{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**,config/tmux/plugins/**}]
ignore = true ignore = true

View File

@@ -2,7 +2,8 @@
name: Pre-commit autoupdate name: Pre-commit autoupdate
on: on:
schedule: schedule:
- cron: "0 0 * * *" # At 04:00 on Monday and Thursday.
- cron: "0 4 * * 1,4"
workflow_dispatch: workflow_dispatch:
jobs: jobs:
auto-update: auto-update:

View File

@@ -1,7 +1,9 @@
--- ---
name: Update submodules name: Update submodules
on: on:
schedule: [{ cron: 0 3 * * * }] schedule:
# At 04:00 on Monday and Thursday.
- cron: "0 4 * * 1,4"
workflow_dispatch: workflow_dispatch:
jobs: jobs:
update-submodules: update-submodules:

45
.gitignore vendored
View File

@@ -1,32 +1,35 @@
Brewfile.lock.json !.gitkeep
lazy-lock.json
config/nvim/lazy-lock.json
*.log
*-secret *-secret
*.bak
*.log
*.socket
*cache *cache
.env
.idea .idea
.nfs*
.vscode .vscode
Brewfile.lock.json
antidote_plugins.zsh
config/alacritty/theme-active.toml
config/cheat/cheatsheets/pure-bash-bible/* config/cheat/cheatsheets/pure-bash-bible/*
config/cheat/cheatsheets/tldr/* config/cheat/cheatsheets/tldr/*
config/git/credentials config/git/credentials
config/npm/npmrc
config/zsh/.zcompdump
config/alacritty/theme-active.toml
ssh/local.d/*
!ssh/local.d/.gitkeep
!.gitkeep
.env
local/share/fonts/*
node_modules
.nfs*
*.socket
iTermServer-*
lock
config/iterm2/AppSupport
config/gnupg/S.* config/gnupg/S.*
config/gnupg/s
config/gnupg/private-keys-v1.d config/gnupg/private-keys-v1.d
config/gnupg/s
config/iterm2/AppSupport
config/npm/npmrc
config/nvim/lazy-lock.json
config/nvim/spell/* config/nvim/spell/*
!config/nvim/spell/.gitkeep !config/nvim/spell/.gitkeep
antidote_plugins.zsh config/zed/*
!config/zed/settings.json
config/zsh/.zcompdump
iTermServer-*
lazy-lock.json
local/share/fonts/*
local/bin/asdf/plugins/*
lock
node_modules
ssh/local.d/*
!ssh/local.d/.gitkeep

3
.gitmodules vendored
View File

@@ -64,3 +64,6 @@
path = tools/antidote path = tools/antidote
url = https://github.com/mattmc3/antidote.git url = https://github.com/mattmc3/antidote.git
shallow = true shallow = true
[submodule "dotbot-asdf"]
path = tools/dotbot-asdf
url = https://github.com/sobolevn/dotbot-asdf

View File

@@ -3,6 +3,7 @@ repos:
rev: v5.0.0 rev: v5.0.0
hooks: hooks:
- id: requirements-txt-fixer - id: requirements-txt-fixer
- id: detect-aws-credentials
- id: detect-private-key - id: detect-private-key
- id: trailing-whitespace - id: trailing-whitespace
args: [--markdown-linebreak-ext=md] args: [--markdown-linebreak-ext=md]
@@ -25,7 +26,7 @@ repos:
rev: v0.43.0 rev: v0.43.0
hooks: hooks:
- id: markdownlint - id: markdownlint
args: [-c, .markdownlint.yaml, --fix] args: [-c, .markdownlint.json, --fix]
- repo: https://github.com/adrienverge/yamllint - repo: https://github.com/adrienverge/yamllint
rev: v1.35.1 rev: v1.35.1
@@ -43,12 +44,12 @@ repos:
- id: shfmt - id: shfmt
- repo: https://github.com/rhysd/actionlint - repo: https://github.com/rhysd/actionlint
rev: v1.7.4 rev: v1.7.5
hooks: hooks:
- id: actionlint - id: actionlint
- repo: https://github.com/renovatebot/pre-commit-hooks - repo: https://github.com/renovatebot/pre-commit-hooks
rev: 39.82.3 rev: 39.86.3
hooks: hooks:
- id: renovate-config-validator - id: renovate-config-validator

View File

@@ -24,3 +24,7 @@ disable=SC1091
# SC2174: When used with -p, -m only applies to the deepest directory. # SC2174: When used with -p, -m only applies to the deepest directory.
# https://github.com/koalaman/shellcheck/wiki/SC2174 # https://github.com/koalaman/shellcheck/wiki/SC2174
disable=SC2174 disable=SC2174
# SC2016: Expressions don't expand in single quotes, use double quotes for that.
# https://www.shellcheck.net/wiki/SC2016
disable=SC2016

View File

@@ -9,6 +9,8 @@ git submodule add --name dotbot-include \
-f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include -f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
git submodule add --name dotbot-pip \ git submodule add --name dotbot-pip \
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip -f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
git submodule add --name dotbot-asdf \
-f https://github.com/sobolevn/dotbot-asdf tools/dotbot-asdf
# other repos # other repos
git submodule add --name cheat-community \ git submodule add --name cheat-community \
@@ -19,8 +21,7 @@ git submodule add --name asdf \
-f https://github.com/asdf-vm/asdf.git local/bin/asdf -f https://github.com/asdf-vm/asdf.git local/bin/asdf
git submodule add --name antidote \ git submodule add --name antidote \
--depth 1 \ --depth 1 \
-f https://github.com/mattmc3/antidote.git tools/antidote \ -f https://github.com/mattmc3/antidote.git tools/antidote
# tmux plugin manager and plugins # tmux plugin manager and plugins
git submodule add --name tmux/tmux-continuum \ git submodule add --name tmux/tmux-continuum \
@@ -44,6 +45,7 @@ git submodule add --name tmux/tmux-dark-notify \
# Takes submodules and sets them to ignore all changes # Takes submodules and sets them to ignore all changes
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
echo "Ignoring submodule changes for submodule.${MODULE}..."
git config "submodule.${MODULE}.ignore" all git config "submodule.${MODULE}.ignore" all
done done

View File

@@ -7,6 +7,10 @@ export SHARED_SCRIPTS_SOURCED=0
source "$DOTFILES/config/shared.sh" source "$DOTFILES/config/shared.sh"
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
fi
# shellcheck source=../config/fzf/fzf.bash # shellcheck source=../config/fzf/fzf.bash
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] && [ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
source "${DOTFILES}/config/fzf/fzf.bash" source "${DOTFILES}/config/fzf/fzf.bash"

View File

@@ -1,11 +1,9 @@
asdf-plugin-manager 1.4.0
golang 1.23.4 golang 1.23.4
rust 1.82.0 rust 1.83.0
direnv 2.35.0 direnv 2.35.0
fd 10.2.0 fd 10.2.0
1password-cli 2.30.3 1password-cli 2.30.3
age 1.2.1 age 1.2.1
bottom 0.10.2
dotenv-linter 3.3.0 dotenv-linter 3.3.0
editorconfig-checker 2.8.0 editorconfig-checker 2.8.0
github-cli 2.64.0 github-cli 2.64.0
@@ -15,7 +13,7 @@ pre-commit 4.0.1
ripgrep 14.1.1 ripgrep 14.1.1
shellcheck 0.10.0 shellcheck 0.10.0
shfmt 3.10.0 shfmt 3.10.0
terragrunt 0.68.8 terragrunt 0.71.1
tf-summarize 0.3.14 tf-summarize 0.3.14
yamllint 1.35.1 yamllint 1.35.1
yq 4.44.6 yq 4.44.6

View File

@@ -45,6 +45,10 @@ setup_tmux_window_name_plugin()
fi fi
} }
if [[ -n $GHOSTTY_RESOURCES_DIR ]]; then
source "$GHOSTTY_RESOURCES_DIR"/shell-integration/zsh/ghostty-integration
fi
source_fzf_config source_fzf_config
setup_tmux_window_name_plugin setup_tmux_window_name_plugin
x-have antidot && eval "$(antidot init)" x-have antidot && eval "$(antidot init)"

View File

@@ -39,37 +39,53 @@ automatically-unhide-macos-hidden-apps = true
# check-further-callbacks = true # check-further-callbacks = true
# run = ['layout floating', 'move-node-to-workspace S'] # The callback itself # run = ['layout floating', 'move-node-to-workspace S'] # The callback itself
[[on-window-detected]]
if.app-name-regex-substring = 'settings' # All settings
run = ['layout floating']
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc. if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
run = ['layout floating'] run = ['layout floating']
[[on-window-detected]]
if.app-name-regex-substring = 'finder'
run = 'layout floating'
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'com.apple.finder' # Finder if.app-id = 'com.apple.finder' # Finder
run = 'layout floating' run = ['layout floating']
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'com.apple.mail' # Mail if.app-id = 'com.apple.mail' # Mail
run = 'layout floating' run = ['layout floating']
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'com.DanPristupov.Fork' # Fork if.app-id = 'com.DanPristupov.Fork' # Fork
run = 'layout floating' run = ['layout floating']
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'com.flexibits.fantastical2.mac' # Fantastical if.app-id = 'com.flexibits.fantastical2.mac' # Fantastical
run = 'layout floating' run = ['layout floating']
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'org.whispersystems.signal-desktop' # Signal if.app-id = 'org.whispersystems.signal-desktop' # Signal
run = 'layout floating' run = ['layout floating']
[[on-window-detected]] [[on-window-detected]]
if.app-id = 'com.tidal.desktop' if.app-id = 'com.tidal.desktop' # TIDAL
run = ['layout floating', 'move-node-to-workspace 2'] run = ['layout floating', 'move-node-to-workspace 2'] # Float and move to workspace 2
[[on-window-detected]]
if.app-id = 'com.apple.TV' # Apple TV app
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.setapp.DesktopClient' # Setapp
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.electron.dockerdesktop' # Docker Desktop
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.tinyspeck.slackmacgap' # Slack
run = ['layout floating']
# Possible values: (qwerty|dvorak) # Possible values: (qwerty|dvorak)
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping # See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
@@ -86,8 +102,7 @@ preset = 'qwerty'
[gaps] [gaps]
inner.horizontal = 5 inner.horizontal = 5
inner.vertical = 5 inner.vertical = 5
# outer.top = 0 outer.top = [{ monitor.'^built-in retina display$' = 0 }, 0]
outer.top = [{ monitor.'^built-in retina display$' = 20 }, 0]
outer.right = 0 outer.right = 0
outer.bottom = 0 outer.bottom = 0
outer.left = 0 outer.left = 0
@@ -122,13 +137,9 @@ outer.left = 0
# end tell' # end tell'
# ''' # '''
alt-cmd-shift-f = 'fullscreen' # alt-cmd-shift-f = 'fullscreen'
alt-cmd-f = 'layout floating' # alt-shift-f = 'layout floating'
# alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
alt-cmd-left = 'join-with left'
alt-cmd-down = 'join-with down'
alt-cmd-up = 'join-with up'
alt-cmd-right = 'join-with right'
# See: https://nikitabobko.github.io/AeroSpace/commands#focus # See: https://nikitabobko.github.io/AeroSpace/commands#focus
alt-h = 'focus left' alt-h = 'focus left'
@@ -136,48 +147,66 @@ alt-j = 'focus down'
alt-k = 'focus up' alt-k = 'focus up'
alt-l = 'focus right' alt-l = 'focus right'
# See: https://nikitabobko.github.io/AeroSpace/commands#move
alt-shift-h = 'move left'
alt-shift-j = 'move down'
alt-shift-k = 'move up'
alt-shift-l = 'move right'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace # See: https://nikitabobko.github.io/AeroSpace/commands#workspace
cmd-shift-1 = 'workspace 1' # Main alt-shift-1 = 'workspace 1' # Main
cmd-shift-2 = 'workspace 2' # Music alt-shift-2 = 'workspace 2' # Media
ctrl-shift-1 = 'move-node-to-workspace 1'
ctrl-shift-2 = 'move-node-to-workspace 2'
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace alt-shift-tab = 'workspace-back-and-forth'
alt-cmd-1 = 'move-node-to-workspace 1 --focus-follows-window' ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around prev'
alt-cmd-2 = 'move-node-to-workspace 2 --focus-follows-window'
shift-tab = 'workspace-back-and-forth'
# alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
# See: https://nikitabobko.github.io/AeroSpace/commands#mode # See: https://nikitabobko.github.io/AeroSpace/commands#mode
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes # See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
alt-a = 'mode apps' alt-a = 'mode apps'
alt-s = 'mode service' alt-s = 'mode service'
alt-d = 'mode resize' alt-m = 'mode move'
# ╭──────────────────────────────────────────────────────────╮
# │ alt-m │
# ╰──────────────────────────────────────────────────────────╯
[mode.move.binding]
esc = ['reload-config', 'mode main']
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
1 = ['move-node-to-workspace 1 --focus-follows-window']
2 = ['move-node-to-workspace 2 --focus-follows-window']
# See: https://nikitabobko.github.io/AeroSpace/commands#move
h = 'move left'
j = 'move down'
k = 'move up'
l = 'move right'
# See: https://nikitabobko.github.io/AeroSpace/commands#join-with
shift-h = 'join-with left'
shift-j = 'join-with down'
shift-k = 'join-with up'
shift-l = 'join-with right'
# https://nikitabobko.github.io/AeroSpace/commands#resize
ctrl-h = 'resize smart -70'
ctrl-l = 'resize smart +70'
shift-left = 'resize smart +70'
shift-right = 'resize smart -70'
# https://nikitabobko.github.io/AeroSpace/commands#flatten-workspace-tree
r = ['flatten-workspace-tree', 'mode main'] # reset layout
# ╭──────────────────────────────────────────────────────────╮
# │ alt-a │
# ╰──────────────────────────────────────────────────────────╯
[mode.apps.binding] [mode.apps.binding]
esc = ['reload-config', 'mode main'] esc = ['reload-config', 'mode main']
alt-b = ['exec-and-forget open -a /Applications/Brave Browser.app', 'mode main'] b = ['exec-and-forget open -a /Applications/Brave Browser.app', 'mode main'] # Browser
alt-c = ['exec-and-forget open -a /Applications/Ferdium.app', 'mode main'] c = ['exec-and-forget open -a /Applications/Ferdium.app', 'mode main'] # Chat
alt-o = ['exec-and-forget open -a /Applications/Obsidian.app', 'mode main'] g = ['exec-and-forget open -a /Applications/Ghostty.app', 'mode main'] # Ghostty
alt-s = ['exec-and-forget open -a /Applications/Slack.app', 'mode main'] o = ['exec-and-forget open -a /Applications/Obsidian.app', 'mode main'] # Obsidian
alt-t = ['exec-and-forget open -a /Applications/TIDAL.app', 'mode main'] s = ['exec-and-forget open -a /Applications/Slack.app', 'mode main'] # Slack
alt-w = ['exec-and-forget open -a /Applications/WezTerm.app', 'mode main'] t = ['exec-and-forget open -a /Applications/TIDAL.app', 'mode main'] # Tidal
w = ['exec-and-forget open -a /Applications/WezTerm.app', 'mode main'] # WezTerm
# ╭──────────────────────────────────────────────────────────╮
# │ alt-s │
# ╰──────────────────────────────────────────────────────────╯
[mode.service.binding] [mode.service.binding]
esc = ['reload-config', 'mode main'] esc = ['reload-config', 'mode main'] # reload config
r = ['flatten-workspace-tree', 'mode main'] # reset layout r = ['flatten-workspace-tree', 'mode main'] # reset layout
# See: https://nikitabobko.github.io/AeroSpace/commands#layout # See: https://nikitabobko.github.io/AeroSpace/commands#layout
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
backspace = ['close-all-windows-but-current', 'mode main'] backspace = ['close-all-windows-but-current', 'mode main']
[mode.resize.binding]
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
r = ['flatten-workspace-tree', 'mode main'] # reset layout
h = 'resize smart -70'
l = 'resize smart +70'
esc = ['reload-config', 'mode main']

View File

@@ -130,6 +130,6 @@ X_ALIAS_FILES=(
) )
for aliasFile in "${X_ALIAS_FILES[@]}"; do for aliasFile in "${X_ALIAS_FILES[@]}"; do
# shellcheck source=$HOME/.config/alias-secret # shellcheck source=$HOME/.config/alias-secret
[ -f "$aliasFile" ] && source "$aliasFile" && msg "Sourced $aliasFile" [ -f "$aliasFile" ] && source "$aliasFile" && msgr ok "Sourced $aliasFile"
done done
unset X_ALIAS_FILES unset X_ALIAS_FILES

View File

@@ -281,8 +281,8 @@ export LESSHISTFILE="$XDG_STATE_HOME"/less/history
# export LESS_TERMCAP_md="$ORANGE" # export LESS_TERMCAP_md="$ORANGE"
# zsh autoloaded terminfo # zsh autoloaded terminfo
export TERMINFO="${XDG_DATA_HOME}/terminfo" # export TERMINFO="${XDG_DATA_HOME}/terminfo"
export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo # export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
# Don't clear the screen after quitting a manual page # Don't clear the screen after quitting a manual page
export MANPAGER="less -X" export MANPAGER="less -X"

15
config/ghostty/config Normal file
View File

@@ -0,0 +1,15 @@
# vim: ft=ghostty
theme = "light:tokyonight-day,dark:tokyonight-storm"
font-family = "JetBrainsMono Nerd Font Mono"
background-blur-radius = 15
background-opacity = 0.95
clipboard-read = allow
clipboard-write = allow
cursor-style = bar
custom-shader-animation = true
gtk-single-instance = true
mouse-hide-while-typing = true
shell-integration-features = true
window-theme = system

6
config/glow/glow.yml Normal file
View File

@@ -0,0 +1,6 @@
# mouse support (TUI-mode only)
mouse: false
# use pager to display markdown
pager: true
# word-wrap at width
width: 80

View File

@@ -52,9 +52,15 @@ require('lazy').setup(
-- No need to notify about changes -- No need to notify about changes
notify = false, notify = false,
}, },
dev = {
path = '~/Code/nvim', -- Load wip plugins from this path
},
install = { install = {
colorscheme = { vim.g.colors_theme }, colorscheme = { vim.g.colors_theme },
}, },
profiling = {
loader = true,
},
} }
) )

View File

@@ -39,7 +39,7 @@ o.termguicolors = true -- Enable GUI colors
o.timeoutlen = 250 -- Decrease mapped sequence wait time o.timeoutlen = 250 -- Decrease mapped sequence wait time
o.updatetime = 250 -- 250 ms = 2,5 seconds o.updatetime = 250 -- 250 ms = 2,5 seconds
o.sessionoptions = o.sessionoptions =
'blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions' 'buffers,curdir,folds,tabpages,winsize,winpos,terminal,localoptions'
-- Enable the colorcolumn -- Enable the colorcolumn
vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' }) vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })

View File

@@ -196,12 +196,16 @@ return {
'goimports', 'goimports',
'gotests', 'gotests',
'phpcbf', 'phpcbf',
'phpmd',
'phpstan',
'pint', 'pint',
'prettierd', 'prettierd',
'semgrep',
'shellcheck', 'shellcheck',
'shfmt', 'shfmt',
'staticcheck', 'staticcheck',
'stylua', 'stylua',
'trivy',
'vint', 'vint',
'yamlfmt', 'yamlfmt',
}, },
@@ -284,6 +288,8 @@ return {
validate = { enable = true }, validate = { enable = true },
}, },
} }
-- end of junnplus/lsp-setup config
end, end,
}, },
@@ -317,6 +323,11 @@ return {
else else
lsp_format_opt = 'fallback' lsp_format_opt = 'fallback'
end end
-- Disable autoformat for files in a certain path
local bufname = vim.api.nvim_buf_get_name(bufnr)
if bufname:match '/node_modules/' then return end
return { return {
timeout_ms = 500, timeout_ms = 500,
lsp_format = lsp_format_opt, lsp_format = lsp_format_opt,
@@ -324,6 +335,9 @@ return {
end, end,
formatters_by_ft = { formatters_by_ft = {
lua = { 'stylua' }, lua = { 'stylua' },
sh = { 'shfmt' },
bash = { 'shfmt' },
php = { 'phpcbf' },
-- Conform can also run multiple formatters sequentially -- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" }, -- python = { "isort", "black" },
-- --
@@ -331,6 +345,10 @@ return {
-- javascript = { "prettierd", "prettier", stop_after_first = true }, -- javascript = { "prettierd", "prettier", stop_after_first = true },
}, },
}, },
init = function()
-- If you want the formatexpr, here is the place to set it
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end,
}, },
-- Automatically install formatters registered with conform.nvim via mason.nvim -- Automatically install formatters registered with conform.nvim via mason.nvim
-- https://github.com/zapling/mason-conform.nvim -- https://github.com/zapling/mason-conform.nvim

View File

@@ -224,8 +224,8 @@ return {
local mode, mode_hl = sl.section_mode { trunc_width = 120 } local mode, mode_hl = sl.section_mode { trunc_width = 120 }
local git = sl.section_git { trunc_width = 75 } local git = sl.section_git { trunc_width = 75 }
local diagnostics = sl.section_diagnostics { trunc_width = 75 } local diagnostics = sl.section_diagnostics { trunc_width = 75 }
local filename = sl.section_filename { trunc_width = 999 } local filename = sl.section_filename { trunc_width = 9999 }
-- local fileinfo = statusline.section_fileinfo({ trunc_width = 120 }) local fileinfo = sl.section_fileinfo { trunc_width = 120 }
local location = sl.section_location { trunc_width = 75 } local location = sl.section_location { trunc_width = 75 }
return sl.combine_groups { return sl.combine_groups {
{ hl = mode_hl, strings = { mode } }, { hl = mode_hl, strings = { mode } },
@@ -233,7 +233,7 @@ return {
'%<', -- Mark general truncate point '%<', -- Mark general truncate point
{ hl = 'statuslineFilename', strings = { filename } }, { hl = 'statuslineFilename', strings = { filename } },
'%=', -- End left alignment '%=', -- End left alignment
-- { hl = 'statuslineFileinfo', strings = { fileinfo } }, { hl = 'statuslineFileinfo', strings = { fileinfo } },
{ hl = mode_hl, strings = { location } }, { hl = mode_hl, strings = { location } },
} }
end, end,

View File

@@ -42,7 +42,7 @@ if ! declare -f msg > /dev/null; then
# $1 - message (string) # $1 - message (string)
msg() msg()
{ {
[ "$VERBOSE" -eq 1 ] && echo "$1" [ "$VERBOSE" -eq 1 ] && msgr msg "$1"
return 0 return 0
} }
msg "msg was not defined, defined it now" msg "msg was not defined, defined it now"
@@ -54,7 +54,7 @@ if ! declare -f msg_err > /dev/null; then
# $1 - error message (string) # $1 - error message (string)
msg_err() msg_err()
{ {
echo "(!) ERROR: $1" >&2 msgr err "$1" >&2
exit 1 exit 1
} }
fi fi
@@ -65,7 +65,7 @@ if ! declare -f msg_done > /dev/null; then
# $1 - message (string) # $1 - message (string)
msg_done() msg_done()
{ {
echo "$1" msgr done "$1"
return 0 return 0
} }
fi fi
@@ -76,7 +76,7 @@ if ! declare -f msg_run > /dev/null; then
# $1 - message (string) # $1 - message (string)
msg_run() msg_run()
{ {
echo "$1" msgr run "$1"
return 0 return 0
} }
fi fi
@@ -87,10 +87,29 @@ if ! declare -f msg_ok > /dev/null; then
# $1 - message (string) # $1 - message (string)
msg_ok() msg_ok()
{ {
echo "$1" msgr ok "$1"
return 0 return 0
} }
fi fi
if ! declare -f array_diff > /dev/null; then
# Function to compare two arrays and return the difference
# Example: array_diff DIFFERENCE ARRAY1 ARRAY2
# $1 - variable to store the difference
# $2 - first array
# $3 - second array
# Output to $1 the difference between $2 and $3
# Source: https://stackoverflow.com/a/42399479/594940
array_diff()
{
# shellcheck disable=SC1083,SC2086
eval local ARR1=\(\"\${$2[@]}\"\)
# shellcheck disable=SC1083,SC2086
eval local ARR2=\(\"\${$3[@]}\"\)
local IFS=$'\n'
mapfile -t "$1" < <(comm -23 <(echo "${ARR1[*]}" | sort) <(echo "${ARR2[*]}" | sort))
}
fi
source "$DOTFILES/config/exports" source "$DOTFILES/config/exports"
source "$DOTFILES/config/alias" source "$DOTFILES/config/alias"

View File

@@ -0,0 +1 @@
https://wfxr.mit-license.org/2018

View File

@@ -0,0 +1,64 @@
#!/usr/bin/env bash
#===============================================================================
# Author: Wenxuan
# Email: wenxuangm@gmail.com
# Created: 2018-04-06 12:12
#===============================================================================
get_fzf_options()
{
local fzf_options
local fzf_default_options='-w 100% -h 50% --multi -0 --no-preview'
fzf_options="$(tmux show -gqv '@fzf-url-fzf-options')"
[ -n "$fzf_options" ] && echo "$fzf_options" || echo "$fzf_default_options"
}
fzf_filter()
{
eval "fzf-tmux $(get_fzf_options)"
}
custom_open=$3
open_url()
{
if [[ -n $custom_open ]]; then
$custom_open "$@"
elif hash xdg-open &> /dev/null; then
nohup xdg-open "$@"
elif hash open &> /dev/null; then
nohup open "$@"
elif [[ -n $BROWSER ]]; then
nohup "$BROWSER" "$@"
fi
}
limit='screen'
[[ $# -ge 2 ]] && limit=$2
if [[ $limit == 'screen' ]]; then
content="$(tmux capture-pane -J -p -e | sed -r 's/\x1B\[[0-9;]*[mK]//g'))"
else
content="$(tmux capture-pane -J -p -e -S -"$limit" | sed -r 's/\x1B\[[0-9;]*[mK]//g'))"
fi
urls=$(echo "$content" | grep -oE '(https?|ftp|file):/?//[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]')
wwws=$(echo "$content" | grep -oE '(http?s://)?www\.[a-zA-Z](-?[a-zA-Z0-9])+\.[a-zA-Z]{2,}(/\S+)*' | grep -vE '^https?://' | sed 's/^\(.*\)$/http:\/\/\1/')
ips=$(echo "$content" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(:[0-9]{1,5})?(/\S+)*' | sed 's/^\(.*\)$/http:\/\/\1/')
gits=$(echo "$content" | grep -oE '(ssh://)?git@\S*' | sed 's/:/\//g' | sed 's/^\(ssh\/\/\/\)\{0,1\}git@\(.*\)$/https:\/\/\2/')
gh=$(echo "$content" | grep -oE "['\"]([_A-Za-z0-9-]*/[_.A-Za-z0-9-]*)['\"]" | sed "s/['\"]//g" | sed 's#.#https://github.com/&#')
if [[ $# -ge 1 && $1 != '' ]]; then
extras=$(echo "$content" | eval "$1")
fi
items=$(
printf '%s\n' "${urls[@]}" "${wwws[@]}" "${gh[@]}" "${ips[@]}" "${gits[@]}" "${extras[@]}" \
| grep -v '^$' \
| sort -u \
| nl -w3 -s ' '
)
[ -z "$items" ] && tmux display 'tmux-fzf-url: no URLs found' && exit
fzf_filter <<< "$items" | awk '{print $2}' \
| while read -r chosen; do
open_url "$chosen" &> "/tmp/tmux-$(id -u)-fzf-url.log"
done

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
#===============================================================================
# Author: Wenxuan
# Email: wenxuangm@gmail.com
# Created: 2018-04-06 09:30
#===============================================================================
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# $1: option
# $2: default value
tmux_get() {
local value
value="$(tmux show -gqv "$1")"
[ -n "$value" ] && echo "$value" || echo "$2"
}
key="$(tmux_get '@fzf-url-bind' 'u')"
history_limit="$(tmux_get '@fzf-url-history-limit' 'screen')"
extra_filter="$(tmux_get '@fzf-url-extra-filter' '')"
custom_open="$(tmux_get '@fzf-url-open' '')"
echo "$extra_filter" >/tmp/filter
tmux bind-key "$key" run -b "$SCRIPT_DIR/fzf-url.sh '$extra_filter' $history_limit '$custom_open'"

View File

@@ -147,7 +147,7 @@ set -g @tmux_window_name_max_name_len "20"
set -g @tmux_window_name_use_tilde "True" set -g @tmux_window_name_use_tilde "True"
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh', 'oh-my-posh']" 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_dir_programs "['nvim', 'vim', 'vi', 'git']"
set -g @tmux_window_name_ignored_programs "['sqlite3', 'oh-my-posh', 'antidot', 'antidote', 'direnv']" # Default is [] set -g @tmux_window_name_ignored_programs "['sqlite3', 'oh-my-posh', 'antidot', 'antidote', 'direnv', 'md5']" # Default is []
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]" set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]"
## https://github.com/tmux-plugins/tmux-continuum ## https://github.com/tmux-plugins/tmux-continuum
@@ -159,6 +159,10 @@ set -g @mode_indicator_copy_mode_style 'bg=default,fg=yellow'
set -g @mode_indicator_empty_mode_style 'bg=default,fg=#7aa2f7' set -g @mode_indicator_empty_mode_style 'bg=default,fg=#7aa2f7'
set -g @mode_indicator_sync_mode_style 'bg=default,fg=red' set -g @mode_indicator_sync_mode_style 'bg=default,fg=red'
# https://github.com/wfxr/tmux-fzf-url
set -g @fzf-url-bind 'u'
set -g @fzf-url-history-limit '2000'
# ╭──────────────────────────────────────────────────────────╮ # ╭──────────────────────────────────────────────────────────╮
# │ Plugins │ # │ Plugins │
# ╰──────────────────────────────────────────────────────────╯ # ╰──────────────────────────────────────────────────────────╯
@@ -172,7 +176,7 @@ 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-yank/yank.tmux
run-shell ~/.dotfiles/config/tmux/plugins/tmux-current-pane-hostname/current_pane_hostname.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 run-shell ~/.dotfiles/config/tmux/plugins/tmux-dark-notify/main.tmux
run-shell ~/.dotfiles/config/tmux/plugins/tmux-fzf-url/fzf-url.tmux
if-shell "test -e $HOME/.local/state/tmux/tmux-dark-notify-theme.conf" \ if-shell "test -e $HOME/.local/state/tmux/tmux-dark-notify-theme.conf" \
"source-file $HOME/.local/state/tmux/tmux-dark-notify-theme.conf" "source-file $HOME/.local/state/tmux/tmux-dark-notify-theme.conf"

57
config/zed/settings.json Normal file
View File

@@ -0,0 +1,57 @@
{
"formatter": {
"external": {
"command": "node_modules/.bin/prettier",
"arguments": [
"--stdin-filepath",
"{buffer_path}"
]
}
},
"languages": {
"Lua": {
"enable_language_server": true,
"tab_size": 2
}
},
"lsp": {
"gopls": {
"initialization_options": {
"hints": {
"assignVariableTypes": true,
"compositeLiteralFields": true,
"compositeLiteralTypes": true,
"constantValues": true,
"functionTypeParameters": true,
"parameterNames": true,
"rangeVariableTypes": true
}
}
}
},
"preferred_line_length": 100,
"format_on_save": "on",
"vim_mode": true,
"theme": {
"mode": "system",
"light": "Tokyo Night Light",
"dark": "Tokyo Night Storm"
},
"inlay_hints": {
"enabled": true,
"show_type_hints": true,
"show_parameter_hints": true,
"show_other_hints": true
},
"ui_font_size": 16,
"buffer_font_size": 16,
"buffer_font_fallbacks": [
"JetBrainsMono Nerd Font"
],
"inline_completions": {
"disabled_globs": [
".env"
]
},
"hour_format": "hour24"
}

170
config/zsh/completion/_dfm Normal file
View File

@@ -0,0 +1,170 @@
#compdef dfm
# Completion for dfm, the dotfiles manager
_dfm_get_script_description() {
local file="$1"
sed -n '/@description/s/.*@description *\(.*\)/\1/p' "$file" | head -1
}
_dfm_get_available_scripts() {
local scripts=()
local dotfiles="${HOME}/.dotfiles"
for script in "${dotfiles}/scripts/install-"*.sh; do
if [ -f "$script" ]; then
local name=$(basename "$script" .sh | sed 's/install-//')
local desc=$(_dfm_get_script_description "$script")
[ -z "$desc" ] && desc="No description available"
scripts+=("${name}:${desc}")
fi
done
echo ${(F)scripts}
}
_dfm()
{
local -a commands sections
sections=(
'install:Installation commands'
'asdf:ASDF version manager commands'
'brew:Homebrew package manager commands'
'check:System check commands'
'dotfiles:Dotfiles management commands'
'docs:Documentation commands'
'helpers:Helper utilities'
'scripts:Installation scripts'
'tests:Test commands'
)
_arguments -C \
"1: :->sections" \
"*::arg:->args"
case "$state" in
sections)
_describe 'sections' sections
;;
args)
case $line[1] in
install)
local -a install_cmds
install_cmds=(
'all:Install everything in correct order'
'cargo:Install rust/cargo packages'
'cheat-databases:Install cheat external cheatsheet databases'
'composer:Install composer'
'fonts:Install programming fonts'
'gh:Install GitHub CLI Extensions'
'go:Install Go Packages'
'imagick:Install ImageMagick CLI'
'macos:Setup nice macOS defaults'
'nvm:Install Node Version Manager'
'nvm-latest:Install latest LTS node'
'npm-packages:Install NPM Packages'
'ntfy:Install ntfy'
'z:Install z'
)
_describe 'install commands' install_cmds
;;
asdf)
local -a asdf_cmds
asdf_cmds=(
'current:Show current versions'
'global:Show global versions'
'installed:Show installed versions'
'plugins-update:Update all plugins'
'plugins-install:Install plugins from configuration'
'plugins-remove:Remove installed plugins'
'reset:Reset plugins'
'fix-tool-versions:Remove uninstalled plugins from .tool-versions'
'versions:Show versions'
'where:Show where'
'which:Show which'
)
_describe 'asdf commands' asdf_cmds
;;
brew)
local -a brew_cmds
brew_cmds=(
'install:Install items from Brewfile'
'update:Update and upgrade packages'
'updatebundle:Update Brewfile with descriptions'
'autoupdate:Setup brew auto-update'
'leaves:List brew leaves'
'clean:Clean up packages'
'untracked:List untracked packages'
)
_describe 'brew commands' brew_cmds
;;
check)
local -a check_cmds
check_cmds=(
'arch:Check architecture'
'host:Check hostname'
)
_describe 'check commands' check_cmds
;;
dotfiles)
local -a dotfiles_cmds
dotfiles_cmds=(
'fmt:Run all formatters'
'yamlfmt:Run yamlfmt'
'shfmt:Run shfmt'
'reset_all:Reset everything'
'reset_nvim:Reset neovim'
)
_describe 'dotfiles commands' dotfiles_cmds
;;
docs)
local -a docs_cmds
docs_cmds=(
'all:Update all documentation'
'tmux:Update tmux documentation'
'nvim:Update nvim documentation'
'wezterm:Update wezterm documentation'
)
_describe 'docs commands' docs_cmds
;;
helpers)
local -a helpers_cmds
helpers_cmds=(
'aliases:Show aliases'
'colors:Show colors'
'env:Show environment variables'
'functions:Show functions'
'nvim:Show nvim keybindings'
'path:Show PATH'
'tmux:Show tmux keybindings'
'wezterm:Show wezterm keybindings'
)
_describe 'helper commands' helpers_cmds
;;
scripts)
local -a script_cmds
script_cmds=("${(@f)$(_dfm_get_available_scripts)}")
_describe 'available scripts' script_cmds
;;
tests)
local -a test_cmds
test_cmds=(
'msg:List log functions'
'params:List parameters'
)
_describe 'test commands' test_cmds
;;
esac
;;
esac
}
_dfm "$@"

View File

@@ -2,62 +2,60 @@
```txt ```txt
x <Space> *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua x <Space> *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "<Space>" Query keys after "<Space>"
n <Space> *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua n <Space> *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "<Space>" Query keys after "<Space>"
x " *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua x " *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after """ Query keys after """
n " *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua n " *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after """ Query keys after """
x ' *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua x ' *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "'" Query keys after "'"
n ' *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua n ' *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "'" Query keys after "'"
x ` *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua x ` *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "`" Query keys after "`"
n ` *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua n ` *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "`" Query keys after "`"
x g *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua x g *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "g" Query keys after "g"
n g *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua n g *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "g" Query keys after "g"
x z *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua x z *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "z" Query keys after "z"
n z *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua n z *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "z" Query keys after "z"
n <C-W> *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua n <C-W> *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Query keys after "<C-W>" Query keys after "<C-W>"
n <Esc><Esc> * :nohlsearch<CR> n <Esc><Esc> * :nohlsearch<CR>
Clear Search Highlighting Clear Search Highlighting
n <Space>qQ * :q!<CR> n <Space>qQ * ~/.config/nvim/lua/keymaps.lua
Force quit without saving Force quit without saving
n <Space>qw * :wq<CR> n <Space>qw * :wq<CR>
Write and quit Write and quit
n <Space>qq * :wq!<CR> n <Space>qq * ~/.config/nvim/lua/keymaps.lua
Quit with force saving Quit with force saving
n <Space>qf * :q<CR> n <Space>qf * :q<CR>
Quicker close split Quicker close split
n <Space>tn * :Noice dismiss<CR> n <Space>tn * :Noice dismiss<CR>
Noice: Dismiss Notification Noice: Dismiss Notification
n <Space>tl * :lua vim.o.bg = vim.o.bg:get() == "light" and "dark" or "light"<CR> n <Space>tl * ~/.config/nvim/lua/utils.lua
Toggle Light/Dark Mode Toggle Light/Dark Mode
n <Space>te * :Neotree toggle<CR> n <Space>te * :Neotree toggle<CR>
Toggle Neotree Toggle Neotree
n <Space>tc * :CloakToggle<CR> n <Space>tc * :CloakToggle<CR>
Cloak: Toggle Cloak: Toggle
n <Space>o * ~/.config/nvim/lua/keymaps.lua
Open repo in browser
n <Space>xx * :Trouble diagnostics<CR> n <Space>xx * :Trouble diagnostics<CR>
Trouble: Diagnostic Diagnostic
n <Space>xw * :Trouble workspace_diagnostics<CR> n <Space>xw * :Trouble workspace_diagnostics<CR>
Trouble: Workspace Diagnostics Workspace Diagnostics
n <Space>xq * :Trouble quickfix<CR> n <Space>xq * :Trouble quickfix<CR>
Trouble: Quickfix Quickfix
n <Space>xl * :Trouble loclist<CR> n <Space>xl * :Trouble loclist<CR>
Trouble: Location List Location List
n <Space>xd * :Trouble document_diagnostics<CR> n <Space>xd * :Trouble document_diagnostics<CR>
Trouble: Document Diagnostics Document Diagnostics
n <Space>sx * :Telescope import<CR> n <Space>sx * :Telescope import<CR>
Telescope: Import Telescope: Import
n <Space>sw * :Telescope grep_string<CR> n <Space>sw * :Telescope grep_string<CR>
@@ -76,8 +74,8 @@ n <Space>sl * :Telescope luasnip<CR>
Search LuaSnip Search LuaSnip
n <Space>sk * :Telescope keymaps<CR> n <Space>sk * :Telescope keymaps<CR>
Search Keymaps Search Keymaps
n <Space>sh * :Telescope highlights<CR> n <Space>sh * :Telescope help_tags<CR>
List Highlights Help tags
n <Space>sg * :Telescope live_grep<CR> n <Space>sg * :Telescope live_grep<CR>
Search by Grep Search by Grep
n <Space>sd * :Telescope diagnostics<CR> n <Space>sd * :Telescope diagnostics<CR>
@@ -122,10 +120,8 @@ n <Space>cl * :Lspsaga show_cursor_diagnostics<CR>
Cursor Diagnostics Cursor Diagnostics
n <Space>ci * :Lspsaga implement<CR> n <Space>ci * :Lspsaga implement<CR>
Implementations Implementations
x <Space>cf * :lua vim.lsp.buf.format()<CR> n <Space>cg * :lua require("neogen").generate()<CR>
Format Generate annotations
n <Space>cf * :lua vim.lsp.buf.format()<CR>
Format
n <Space>cd * :Lspsaga show_line_diagnostics<CR> n <Space>cd * :Lspsaga show_line_diagnostics<CR>
Line Diagnostics Line Diagnostics
n <Space>cco * :Lspsaga outgoing_calls<CR> n <Space>cco * :Lspsaga outgoing_calls<CR>
@@ -134,8 +130,6 @@ n <Space>cci * :Lspsaga incoming_calls<CR>
Incoming Calls Incoming Calls
n <Space>ca * :Lspsaga code_action<CR> n <Space>ca * :Lspsaga code_action<CR>
Code Action Code Action
n <Space>cg * :lua require("neogen").generate()<CR>
Generate annotations
n <Space>bw * :lua MiniBufremove.wipeout()<CR> n <Space>bw * :lua MiniBufremove.wipeout()<CR>
Wipeout Wipeout
n <Space>bl * :bnext<CR> n <Space>bl * :bnext<CR>
@@ -148,6 +142,34 @@ n <Space>bh * :bprev<CR>
Prev Prev
n <Space>bd * :lua MiniBufremove.delete()<CR> n <Space>bd * :lua MiniBufremove.delete()<CR>
Delete Delete
n <Space>ba * :%bd|e#|bd#<CR>
Close all except current
n <Space>o * ~/.config/nvim/lua/keymaps.lua
Open repo in browser
n <Space>tmw * <Cmd>setlocal wrap! wrap?<CR>
Toggle 'wrap'
n <Space>tms * <Cmd>setlocal spell! spell?<CR>
Toggle 'spell'
n <Space>tmr * <Cmd>setlocal relativenumber! relativenumber?<CR>
Toggle 'relativenumber'
n <Space>tmn * <Cmd>setlocal number! number?<CR>
Toggle 'number'
n <Space>tml * <Cmd>setlocal list! list?<CR>
Toggle 'list'
n <Space>tmi * <Cmd>setlocal ignorecase! ignorecase?<CR>
Toggle 'ignorecase'
n <Space>tmh * <Cmd>let v:hlsearch = 1 - v:hlsearch | echo (v:hlsearch ? " " : "no") . "hlsearch"<CR>
Toggle search highlight
n <Space>tmd * <Cmd>lua print(MiniBasics.toggle_diagnostic())<CR>
Toggle diagnostic
n <Space>tmC * <Cmd>setlocal cursorcolumn! cursorcolumn?<CR>
Toggle 'cursorcolumn'
n <Space>tmc * <Cmd>setlocal cursorline! cursorline?<CR>
Toggle 'cursorline'
n <Space>tmb * <Cmd>lua vim.o.bg = vim.o.bg == "dark" and "light" or "dark"; print(vim.o.bg)<CR>
Toggle 'background'
<Space>cf * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
Format buffer
x # * vim/_defaults.lua x # * vim/_defaults.lua
:help v_#-default :help v_#-default
o % <Plug>(MatchitOperationForward) o % <Plug>(MatchitOperationForward)
@@ -157,7 +179,7 @@ n & * :&&<CR>
:help &-default :help &-default
x * * vim/_defaults.lua x * * vim/_defaults.lua
:help v_star-default :help v_star-default
o ; * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua o ; * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
Repeat jump Repeat jump
x ; * <Cmd>lua MiniJump.jump()<CR> x ; * <Cmd>lua MiniJump.jump()<CR>
Repeat jump Repeat jump
@@ -171,11 +193,11 @@ v > * >gv
Indent Right Indent Right
n > * >gv n > * >gv
Indent Right Indent Right
n @ * ~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua n @ * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Execute macro without 'mini.clue' triggers Execute macro without 'mini.clue' triggers
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@' x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
:help v_@-default :help v_@-default
o F * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua o F * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
Jump backward Jump backward
x F * <Cmd>lua MiniJump.smart_jump(true, false)<CR> x F * <Cmd>lua MiniJump.smart_jump(true, false)<CR>
Jump backward Jump backward
@@ -183,11 +205,11 @@ n F * <Cmd>lua MiniJump.smart_jump(true, false)<CR>
Jump backward Jump backward
n K * :Lspsaga hover_doc<CR> n K * :Lspsaga hover_doc<CR>
Hover Documentation Hover Documentation
n Q * ~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua n Q * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
Execute macro without 'mini.clue' triggers Execute macro without 'mini.clue' triggers
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q' x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
:help v_Q-default :help v_Q-default
o T * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua o T * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
Jump backward till Jump backward till
x T * <Cmd>lua MiniJump.smart_jump(true, true)<CR> x T * <Cmd>lua MiniJump.smart_jump(true, true)<CR>
Jump backward till Jump backward till
@@ -197,10 +219,10 @@ n Y * y$
:help Y-default :help Y-default
n Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua n Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
Flash Treesitter Flash Treesitter
x Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
Flash Treesitter
o Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua o Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
Flash Treesitter Flash Treesitter
x Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
Flash Treesitter
o [% <Plug>(MatchitOperationMultiBackward) o [% <Plug>(MatchitOperationMultiBackward)
x [% <Plug>(MatchitVisualMultiBackward) x [% <Plug>(MatchitVisualMultiBackward)
n [% <Plug>(MatchitNormalMultiBackward) n [% <Plug>(MatchitNormalMultiBackward)
@@ -252,7 +274,7 @@ o ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
Object scope with border Object scope with border
x ai * <Cmd>lua MiniIndentscope.textobject(true)<CR> x ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
Object scope with border Object scope with border
o f * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua o f * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
Jump forward Jump forward
x f * <Cmd>lua MiniJump.smart_jump(false, false)<CR> x f * <Cmd>lua MiniJump.smart_jump(false, false)<CR>
Jump forward Jump forward
@@ -263,16 +285,10 @@ n gR * :RegexplainerToggle<CR>
o g% <Plug>(MatchitOperationBackward) o g% <Plug>(MatchitOperationBackward)
x g% <Plug>(MatchitVisualBackward) x g% <Plug>(MatchitVisualBackward)
n g% <Plug>(MatchitNormalBackward) n g% <Plug>(MatchitNormalBackward)
o gh * <Cmd>lua MiniDiff.textobject()<CR> x gS * :<C-U>lua MiniSplitjoin.toggle({ region = MiniSplitjoin.get_visual_region() })<CR>
Hunk range textobject Toggle arguments
x gH * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua n gS * v:lua.MiniSplitjoin.operator("toggle") . " "
Reset hunks Toggle arguments
n gH * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
Reset hunks
x gh * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
Apply hunks
n gh * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
Apply hunks
x gs * <Cmd>lua MiniOperators.sort('visual')<CR> x gs * <Cmd>lua MiniOperators.sort('visual')<CR>
Sort selection Sort selection
n gss ^gsg_ n gss ^gsg_
@@ -299,17 +315,39 @@ n g== g=_
Evaluate line Evaluate line
n g= * v:lua.MiniOperators.evaluate() n g= * v:lua.MiniOperators.evaluate()
Evaluate operator Evaluate operator
x gS * :<C-U>lua MiniSplitjoin.toggle({ region = MiniSplitjoin.get_visual_region() })<CR> o gh * <Cmd>lua MiniDiff.textobject()<CR>
Toggle arguments Hunk range textobject
n gS * v:lua.MiniSplitjoin.operator("toggle") . " " x gH * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/diff.lua
Toggle arguments Reset hunks
n gH * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/diff.lua
Reset hunks
x gh * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/diff.lua
Apply hunks
n gh * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/diff.lua
Apply hunks
x g/ * <Esc>/\%V
Search inside visual selection
n gV * "`[" . strpart(getregtype(), 0, 1) . "`]"
Visually select changed text
x gp * "+P
Paste from system clipboard
n gp * "+p
Paste from system clipboard
x gy * "+y
Copy to system clipboard
n gy * "+y
Copy to system clipboard
n go * v:lua.MiniBasics.put_empty_line(v:false)
Put empty line below
n gO * v:lua.MiniBasics.put_empty_line(v:true)
Put empty line above
o gc * <Cmd>lua MiniComment.textobject()<CR> o gc * <Cmd>lua MiniComment.textobject()<CR>
Comment textobject Comment textobject
n gcc * ~/.local/share/nvim/lazy/mini.comment/lua/mini/comment.lua n gcc * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/comment.lua
Comment line Comment line
x gc * ~/.local/share/nvim/lazy/mini.comment/lua/mini/comment.lua x gc * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/comment.lua
Comment selection Comment selection
n gc * ~/.local/share/nvim/lazy/mini.comment/lua/mini/comment.lua n gc * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/comment.lua
Comment Comment
x gx * <Cmd>lua MiniOperators.exchange('visual')<CR> x gx * <Cmd>lua MiniOperators.exchange('visual')<CR>
Exchange selection Exchange selection
@@ -319,47 +357,49 @@ o ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
Object scope Object scope
x ii * <Cmd>lua MiniIndentscope.textobject(false)<CR> x ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
Object scope Object scope
x j * v:count == 0 ? 'gj' : 'j'
n j * v:count == 0 ? 'gj' : 'j' n j * v:count == 0 ? 'gj' : 'j'
Move down Move down
x k * v:count == 0 ? 'gk' : 'k'
n k * v:count == 0 ? 'gk' : 'k' n k * v:count == 0 ? 'gk' : 'k'
Move up Move up
n shn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n shn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Highlight next surrounding Highlight next surrounding
n sFn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sFn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Find next left surrounding Find next left surrounding
n sfn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sfn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Find next right surrounding Find next right surrounding
n srn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n srn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Replace next surrounding Replace next surrounding
n sdn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sdn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Delete next surrounding Delete next surrounding
n shl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n shl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Highlight previous surrounding Highlight previous surrounding
n sFl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sFl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Find previous left surrounding Find previous left surrounding
n sfl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sfl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Find previous right surrounding Find previous right surrounding
n srl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n srl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Replace previous surrounding Replace previous surrounding
n sdl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sdl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Delete previous surrounding Delete previous surrounding
x sa * :<C-U>lua MiniSurround.add('visual')<CR> x sa * :<C-U>lua MiniSurround.add('visual')<CR>
Add surrounding to selection Add surrounding to selection
n sn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Update `MiniSurround.config.n_lines` Update `MiniSurround.config.n_lines`
n sh * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sh * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Highlight surrounding Highlight surrounding
n sF * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sF * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Find left surrounding Find left surrounding
n sf * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sf * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Find right surrounding Find right surrounding
n sr * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sr * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Replace surrounding Replace surrounding
n sd * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sd * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Delete surrounding Delete surrounding
n sa * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua n sa * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
Add surrounding Add surrounding
o t * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua o t * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
Jump forward till Jump forward till
x t * <Cmd>lua MiniJump.smart_jump(false, true)<CR> x t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
Jump forward till Jump forward till
@@ -367,20 +407,10 @@ n t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
Jump forward till Jump forward till
x zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua x zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
Flash Flash
n zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
Flash
o zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua o zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
Flash Flash
n <C-W>= * <C-W>= n zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
Equal Size Splits Flash
n <C-W>+ * :resize +5<CR>
H Resize +
n <C-W>- * :resize -5<CR>
H Resize -
n <C-W>. * :vertical resize +10<CR>
V Resize +
n <C-W>, * :vertical resize -10<CR>
V Resize -
v <C-J> * :m '>+1<CR>gv=gv v <C-J> * :m '>+1<CR>gv=gv
Move Block Down Move Block Down
n <C-J> * :m '>+1<CR>gv=gv n <C-J> * :m '>+1<CR>gv=gv
@@ -389,12 +419,24 @@ v <C-K> * :m '<-2<CR>gv=gv
Move Block Up Move Block Up
n <C-K> * :m '<-2<CR>gv=gv n <C-K> * :m '<-2<CR>gv=gv
Move Block Up Move Block Up
n <C-S> * :w!<CR> n <C-W>= * <C-W>=
Save Equal Size Splits
n <C-W>+ * :resize +10<CR>
H Resize +
n <C-W>- * :resize -10<CR>
H Resize -
n <C-W>. * :vertical resize +10<CR>
V Resize +
n <C-W>, * :vertical resize -10<CR>
V Resize -
n <Down> * :echo "Use j to move!!"<CR> n <Down> * :echo "Use j to move!!"<CR>
?
n <Up> * :echo "Use k to move!!"<CR> n <Up> * :echo "Use k to move!!"<CR>
?
n <Right> * :echo "Use l to move!!"<CR> n <Right> * :echo "Use l to move!!"<CR>
?
n <Left> * :echo "Use h to move!!"<CR> n <Left> * :echo "Use h to move!!"<CR>
?
x <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward) x <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
o <Plug>(MatchitOperationMultiForward) * :<C-U>call matchit#MultiMatch("W", "o")<CR> o <Plug>(MatchitOperationMultiForward) * :<C-U>call matchit#MultiMatch("W", "o")<CR>
o <Plug>(MatchitOperationMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "o")<CR> o <Plug>(MatchitOperationMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "o")<CR>
@@ -408,6 +450,7 @@ x <Plug>(MatchitVisualBackward) * :<C-U>call matchit#Match_wrapper('',0,'v')<CR
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>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>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR> n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
n <M-k> * <Cmd>lua MiniMove.move_line('up')<CR> n <M-k> * <Cmd>lua MiniMove.move_line('up')<CR>
Move line up Move line up
n <M-j> * <Cmd>lua MiniMove.move_line('down')<CR> n <M-j> * <Cmd>lua MiniMove.move_line('down')<CR>
@@ -424,7 +467,10 @@ x <M-l> * <Cmd>lua MiniMove.move_selection('right')<CR>
Move right Move right
x <M-h> * <Cmd>lua MiniMove.move_selection('left')<CR> x <M-h> * <Cmd>lua MiniMove.move_selection('left')<CR>
Move left Move left
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR> x <C-S> * <Esc><Cmd>silent! update | redraw<CR>
Save and go to Normal mode
n <C-S> * :w!<CR>
Save
n <C-W><C-D> <C-W>d n <C-W><C-D> <C-W>d
Show diagnostics under the cursor Show diagnostics under the cursor
n <C-W>d * vim/_defaults.lua n <C-W>d * vim/_defaults.lua
@@ -433,4 +479,4 @@ n <C-L> * :lua vim.lsp.buf.signature_help()<CR>
Signature Signature
``` ```
- Generated on Mon 9 Dec 2024 10:05:25 EET - Generated on Thu 2 Jan 2025 17:41:13 EET

View File

@@ -2,17 +2,13 @@
Leader: `<ctrl><space>` Leader: `<ctrl><space>`
``` ```txt
C-o Rotate through the panes
C-z Suspend the current client
Space Select next layout Space Select next layout
# List all paste buffers # List all paste buffers
$ Rename current session $ Rename current session
% Split window horizontally % Split window horizontally
& Kill current window & Kill current window
' Prompt for window index to select ' Prompt for window index to select
( Switch to previous client
) Switch to next client
, Rename current window , Rename current window
- Delete the most recent paste buffer - Delete the most recent paste buffer
. Move the current window . Move the current window
@@ -63,6 +59,8 @@ Leader: `<ctrl><space>`
M-3 Set the main-horizontal layout M-3 Set the main-horizontal layout
M-4 Set the main-vertical layout M-4 Set the main-vertical layout
M-5 Select the tiled layout M-5 Select the tiled layout
M-6 Set the main-horizontal-mirrored layout
M-7 Set the main-vertical-mirrored layout
M-n Select the next window with an alert M-n Select the next window with an alert
M-o Rotate through the panes in reverse M-o Rotate through the panes in reverse
M-p Select the previous window with an alert M-p Select the previous window with an alert
@@ -70,6 +68,8 @@ Leader: `<ctrl><space>`
M-Down Resize the pane down by 5 M-Down Resize the pane down by 5
M-Left Resize the pane left by 5 M-Left Resize the pane left by 5
M-Right Resize the pane right by 5 M-Right Resize the pane right by 5
C-o Rotate through the panes
C-z Suspend the current client
C-Up Resize the pane up C-Up Resize the pane up
C-Down Resize the pane down C-Down Resize the pane down
C-Left Resize the pane left C-Left Resize the pane left

View File

@@ -277,4 +277,4 @@ Mouse: alt_screen
``` ```
- Generated on Sat 10 Aug 2024 13:01:59 EEST - Generated on Thu 2 Jan 2025 17:41:13 EET

View File

@@ -1,5 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
CONFIG="install.conf.yaml" CONFIG="install.conf.yaml"
@@ -16,6 +15,7 @@ git submodule update --init --recursive "${DOTBOT_DIR}"
"${DOTBOT_BIN_PATH}" \ "${DOTBOT_BIN_PATH}" \
-d "${BASEDIR}" \ -d "${BASEDIR}" \
--plugin-dir=tools/dotbot-asdf \
--plugin-dir=tools/dotbot-brew \ --plugin-dir=tools/dotbot-brew \
--plugin-dir=tools/dotbot-include \ --plugin-dir=tools/dotbot-include \
--plugin-dir=tools/dotbot-pip \ --plugin-dir=tools/dotbot-pip \
@@ -25,10 +25,11 @@ git submodule update --init --recursive "${DOTBOT_DIR}"
if [ "${DOTBOT_HOST}" != "" ]; then if [ "${DOTBOT_HOST}" != "" ]; then
DOTBOT_HOST_CONFIG="${BASEDIR}/hosts/${DOTBOT_HOST}/${CONFIG}" DOTBOT_HOST_CONFIG="${BASEDIR}/hosts/${DOTBOT_HOST}/${CONFIG}"
echo "-> Trying if host config can be found: ${DOTBOT_HOST_CONFIG}" echo "-> Trying if host config can be found: ${DOTBOT_HOST_CONFIG}"
[ -r "$DOTBOT_HOST_CONFIG" ] && [ -f "$DOTBOT_HOST_CONFIG" ] && [ -r "$DOTBOT_HOST_CONFIG" ] && [ -f "$DOTBOT_HOST_CONFIG" ] \
echo "(!) Found $DOTBOT_HOST_CONFIG" && && echo "(!) Found $DOTBOT_HOST_CONFIG" \
"$DOTBOT_BIN_PATH" \ && "$DOTBOT_BIN_PATH" \
-d "$BASEDIR" \ -d "$BASEDIR" \
--plugin-dir=tools/dotbot-asdf \
--plugin-dir=tools/dotbot-brew \ --plugin-dir=tools/dotbot-brew \
--plugin-dir=tools/dotbot-include \ --plugin-dir=tools/dotbot-include \
--plugin-dir=tools/dotbot-pip \ --plugin-dir=tools/dotbot-pip \

View File

@@ -1,5 +1,6 @@
--- ---
- include: 'tools/dotbot-defaults.yaml' - include: 'tools/dotbot-defaults.yaml'
- clean: - clean:
~/: ~/:
~/.config: ~/.config:
@@ -8,6 +9,7 @@
recursive: true recursive: true
~/.ssh: ~/.ssh:
recursive: true recursive: true
- create: - create:
~/.cache: ~/.cache:
~/.cache/git: ~/.cache/git:
@@ -25,6 +27,7 @@
~/.ssh/local.d: ~/.ssh/local.d:
mode: 0700 mode: 0700
~/Code: ~/Code:
- link: - link:
~/: ~/:
force: true force: true
@@ -53,10 +56,54 @@
glob: true glob: true
mode: 0600 mode: 0600
path: ssh/* path: ssh/*
- shell: - shell:
- bash add-submodules.sh || true - bash add-submodules.sh || true
- git submodule update --init --recursive --force - git submodule update --init --recursive --force
- asdf:
- plugin: 1password-cli
url: https://github.com/NeoHsu/asdf-1password-cli.git
- plugin: age
url: https://github.com/threkk/asdf-age.git
- plugin: direnv
url: https://github.com/asdf-community/asdf-direnv.git
- plugin: dotenv-linter
url: https://github.com/wesleimp/asdf-dotenv-linter.git
- plugin: editorconfig-checker
url: https://github.com/gabitchov/asdf-editorconfig-checker.git
- plugin: fd
url: https://gitlab.com/wt0f/asdf-fd.git
- plugin: github-cli
url: https://github.com/bartlomiejdanek/asdf-github-cli.git
- plugin: golang
url: https://github.com/asdf-community/asdf-golang.git
- plugin: hadolint
url: https://github.com/devlincashman/asdf-hadolint.git
- plugin: kubectl
url: https://github.com/asdf-community/asdf-kubectl.git
- plugin: pre-commit
url: https://github.com/jonathanmorley/asdf-pre-commit.git
- plugin: ripgrep
url: https://gitlab.com/wt0f/asdf-ripgrep.git
- plugin: rust
url: https://github.com/code-lever/asdf-rust.git
- plugin: shellcheck
url: https://github.com/luizm/asdf-shellcheck.git
- plugin: shfmt
url: https://github.com/luizm/asdf-shfmt.git
- plugin: terragrunt
url: https://github.com/ohmer/asdf-terragrunt.git
- plugin: tf-summarize
url: https://github.com/adamcrews/asdf-tf-summarize.git
- plugin: yamllint
url: https://github.com/ericcornelissen/asdf-yamllint.git
- plugin: yq
url: https://github.com/sudermanjr/asdf-yq.git
- shell:
- bash local/bin/dfm install all - bash local/bin/dfm install all
- pipx: - pipx:
file: tools/requirements-pipx.txt file: tools/requirements-pipx.txt
stdout: true stdout: true

View File

@@ -19,7 +19,8 @@ for arg in "$@"; do
done done
# Ensure log directory and file exist with correct permissions # Ensure log directory and file exist with correct permissions
prepare_log_file() { prepare_log_file()
{
local log_dir local log_dir
log_dir=$(dirname "$LOG_FILE") log_dir=$(dirname "$LOG_FILE")
@@ -40,7 +41,8 @@ prepare_log_file() {
prepare_log_file prepare_log_file
# Logging function # Logging function
log_message() { log_message()
{
local message="$1" local message="$1"
echo "$(date +'%Y-%m-%d %H:%M:%S') - $message" >> "$LOG_FILE" echo "$(date +'%Y-%m-%d %H:%M:%S') - $message" >> "$LOG_FILE"
@@ -51,8 +53,9 @@ log_message() {
} }
# Function to print usage # Function to print usage
print_help() { print_help()
cat <<EOF {
cat << EOF
Usage: a [command] [file_or_directory] [options] Usage: a [command] [file_or_directory] [options]
Commands: Commands:
@@ -88,13 +91,15 @@ EOF
} }
# Function to print version # Function to print version
print_version() { print_version()
{
echo "a version $VERSION" echo "a version $VERSION"
echo "Created by Ismo Vuorinen <https://github.com/ivuorinen>" echo "Created by Ismo Vuorinen <https://github.com/ivuorinen>"
} }
# Function to fetch keys if missing # Function to fetch keys if missing
fetch_keys_if_missing() { fetch_keys_if_missing()
{
if [[ ! -f "$KEYS_FILE" ]]; then if [[ ! -f "$KEYS_FILE" ]]; then
log_message "Keys file '$KEYS_FILE' not found. Attempting to fetch from $KEYS_SOURCE..." log_message "Keys file '$KEYS_FILE' not found. Attempting to fetch from $KEYS_SOURCE..."
mkdir -p "$(dirname "$KEYS_FILE")" mkdir -p "$(dirname "$KEYS_FILE")"
@@ -111,7 +116,8 @@ fetch_keys_if_missing() {
} }
# Function to encrypt files or directories # Function to encrypt files or directories
encrypt_file_or_directory() { encrypt_file_or_directory()
{
local file="$1" local file="$1"
if [[ -d "$file" ]]; then if [[ -d "$file" ]]; then
for f in "$file"/*; do for f in "$file"/*; do
@@ -120,7 +126,7 @@ encrypt_file_or_directory() {
elif [[ -f "$file" ]]; then elif [[ -f "$file" ]]; then
fetch_keys_if_missing fetch_keys_if_missing
local output_file="${file}.age" local output_file="${file}.age"
age -R "$KEYS_FILE" "$file" >"$output_file" age -R "$KEYS_FILE" "$file" > "$output_file"
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
log_message "File encrypted successfully: $output_file" log_message "File encrypted successfully: $output_file"
else else
@@ -131,7 +137,8 @@ encrypt_file_or_directory() {
} }
# Function to decrypt files or directories # Function to decrypt files or directories
decrypt_file_or_directory() { decrypt_file_or_directory()
{
local file="$1" local file="$1"
if [[ -d "$file" ]]; then if [[ -d "$file" ]]; then
for f in "$file"/*.age; do for f in "$file"/*.age; do
@@ -140,7 +147,7 @@ decrypt_file_or_directory() {
elif [[ -f "$file" ]]; then elif [[ -f "$file" ]]; then
fetch_keys_if_missing fetch_keys_if_missing
local output_file="${file%.age}" local output_file="${file%.age}"
age -d -i "$KEYS_FILE" "$file" >"$output_file" age -d -i "$KEYS_FILE" "$file" > "$output_file"
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
log_message "File decrypted successfully: $output_file" log_message "File decrypted successfully: $output_file"
else else
@@ -152,7 +159,7 @@ decrypt_file_or_directory() {
# Main logic # Main logic
case "$1" in case "$1" in
e|enc|encrypt) e | enc | encrypt)
if [[ $# -lt 2 ]]; then if [[ $# -lt 2 ]]; then
log_message "Error: No file or directory specified for encryption." log_message "Error: No file or directory specified for encryption."
print_help print_help
@@ -160,7 +167,7 @@ case "$1" in
fi fi
encrypt_file_or_directory "$2" encrypt_file_or_directory "$2"
;; ;;
d|dec|decrypt) d | dec | decrypt)
if [[ $# -lt 2 ]]; then if [[ $# -lt 2 ]]; then
log_message "Error: No file or directory specified for decryption." log_message "Error: No file or directory specified for decryption."
print_help print_help
@@ -168,10 +175,10 @@ case "$1" in
fi fi
decrypt_file_or_directory "$2" decrypt_file_or_directory "$2"
;; ;;
help|--help) help | --help)
print_help print_help
;; ;;
version|--version) version | --version)
print_version print_version
;; ;;
*) *)

View File

@@ -6,12 +6,12 @@ KEYS_FILE="${AGE_KEYSFILE:-$HOME/.ssh/keys.txt}"
KEYS_SOURCE="${AGE_KEYSSOURCE:-https://github.com/ivuorinen.keys}" KEYS_SOURCE="${AGE_KEYSSOURCE:-https://github.com/ivuorinen.keys}"
# Check for required commands # Check for required commands
if ! command -v age &>/dev/null; then if ! command -v age &> /dev/null; then
echo "Error: age is not installed. Please install it to continue." echo "Error: age is not installed. Please install it to continue."
exit 1 exit 1
fi fi
if ! command -v curl &>/dev/null; then if ! command -v curl &> /dev/null; then
echo "Error: curl is not installed. Please install it to continue." echo "Error: curl is not installed. Please install it to continue."
exit 1 exit 1
fi fi
@@ -28,7 +28,6 @@ if [[ ! -f "$FILE" ]]; then
exit 1 exit 1
fi fi
# Check if keys file exists, otherwise fetch it # Check if keys file exists, otherwise fetch it
if [[ ! -f "$KEYS_FILE" ]]; then if [[ ! -f "$KEYS_FILE" ]]; then
echo "Keys file '$KEYS_FILE' not found. Attempting to fetch from $KEYS_SOURCE..." echo "Keys file '$KEYS_FILE' not found. Attempting to fetch from $KEYS_SOURCE..."
@@ -51,7 +50,7 @@ fi
# Decrypt the file # Decrypt the file
OUTPUT_FILE="${FILE%.age}" OUTPUT_FILE="${FILE%.age}"
age -d -i "$KEYS_FILE" "$FILE" >"$OUTPUT_FILE" age -d -i "$KEYS_FILE" "$FILE" > "$OUTPUT_FILE"
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
echo "File decrypted successfully: $OUTPUT_FILE" echo "File decrypted successfully: $OUTPUT_FILE"
@@ -59,4 +58,3 @@ else
echo "Error: Failed to decrypt file." echo "Error: Failed to decrypt file."
exit 1 exit 1
fi fi

View File

@@ -6,17 +6,18 @@ KEYS_FILE="${AGE_KEYSFILE:-$HOME/.ssh/keys.txt}"
KEYS_SOURCE="${AGE_KEYSSOURCE:-https://github.com/ivuorinen.keys}" KEYS_SOURCE="${AGE_KEYSSOURCE:-https://github.com/ivuorinen.keys}"
# Check for required commands # Check for required commands
if ! command -v age &>/dev/null; then if ! command -v age &> /dev/null; then
echo "Error: age is not installed. Please install it to continue." echo "Error: age is not installed. Please install it to continue."
exit 1 exit 1
fi fi
if ! command -v curl &>/dev/null; then if ! command -v curl &> /dev/null; then
echo "Error: curl is not installed. Please install it to continue." echo "Error: curl is not installed. Please install it to continue."
exit 1 exit 1
fi fi
# Ensure a file is provided # Ensure a file is provided
# shellcheck disable=SC2181
if [[ $# -lt 1 ]]; then if [[ $# -lt 1 ]]; then
echo "Usage: $0 <file-to-encrypt>" echo "Usage: $0 <file-to-encrypt>"
exit 1 exit 1
@@ -50,7 +51,7 @@ fi
# Encrypt the file # Encrypt the file
OUTPUT_FILE="${FILE}.age" OUTPUT_FILE="${FILE}.age"
age -R "$KEYS_FILE" "$FILE" >"$OUTPUT_FILE" age -R "$KEYS_FILE" "$FILE" > "$OUTPUT_FILE"
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
echo "File encrypted successfully: $OUTPUT_FILE" echo "File encrypted successfully: $OUTPUT_FILE"

View File

@@ -14,65 +14,30 @@
SCRIPT=$(basename "$0") 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()
{
# shellcheck disable=SC2317
echo "(!) ERROR: $1" >&2
# shellcheck disable=SC2317
exit 1
}
fi
if ! declare -f msg_done > /dev/null; then
# Function to print done message
# $1 - message (string)
msg_done()
{
# shellcheck disable=SC2317
echo "✓ $1"
# shellcheck disable=SC2317
return 0
}
fi
if ! declare -f array_diff > /dev/null; then
# Function to compare two arrays and return the difference
# Example: array_diff DIFFERENCE ARRAY1 ARRAY2
# $1 - variable to store the difference
# $2 - first array
# $3 - second array
# Output to $1 the difference between $2 and $3
# Source: https://stackoverflow.com/a/42399479/594940
array_diff()
{
# shellcheck disable=SC1083,SC2086
eval local ARR1=\(\"\${$2[@]}\"\)
# shellcheck disable=SC1083,SC2086
eval local ARR2=\(\"\${$3[@]}\"\)
local IFS=$'\n'
mapfile -t "$1" < <(comm -23 <(echo "${ARR1[*]}" | sort) <(echo "${ARR2[*]}" | sort))
}
fi
# Loads configs for better installation experience # Loads configs for better installation experience
source "$DOTFILES/config/shared.sh" source "$DOTFILES/config/shared.sh"
source "${DOTFILES}/local/bin/msgr" source "${DOTFILES}/local/bin/msgr"
# -- Menu builder -- # # -- Menu builder -- #
menu_builder()
{
local title=$1
local commands=("${@:2}")
local width=60
printf "\n%s\n" "$(printf '%.s─' $(seq 1 $width))"
printf "%-${width}s\n" " $title"
printf "%s\n" "$(printf '%.s─' $(seq 1 $width))"
for cmd in "${commands[@]}"; do
local name=${cmd%%:*}
local desc=${cmd#*:}
printf " %-20s %s\n" "$name" "$desc"
done
# printf "\n"
}
menu_section() menu_section()
{ {
LINE=$(printf '%-18s [ %-15s ]\n' "$1" "$2") LINE=$(printf '%-18s [ %-15s ]\n' "$1" "$2")
@@ -126,23 +91,19 @@ section_install()
MENU=( MENU=(
"all:Installs everything in the correct order" "all:Installs everything in the correct order"
"asdf:Install asdf plugins"
"cargo:Install rust/cargo packages" "cargo:Install rust/cargo packages"
"cheat-databases:Install cheat external cheatsheet databases" "cheat-databases:Install cheat external cheatsheet databases"
"composer:Install composer" "composer:Install composer"
"dotenv:Install dotenv-linter"
"fonts:Install programming fonts" "fonts:Install programming fonts"
"gh:Install GitHub CLI Extensions" "gh:Install GitHub CLI Extensions"
"go:Install Go Packages" "go:Install Go Packages"
"imagick:Install ImageMagick CLI" "imagick:Install ImageMagick CLI"
"starship:Install starship.rs"
"macos:Setup nice macOS defaults" "macos:Setup nice macOS defaults"
"neofetch:Install neofetch" "npm-packages:Install NPM Packages"
"nvm:Install Node Version Manager (nvm)"
"nvm-latest:Install latest lts node using nvm"
"npm:Install NPM Packages"
"ntfy:Install ntfy" "ntfy:Install ntfy"
"ohmybash:Install oh-my-bash" "nvm-latest:Install latest lts node using nvm"
"pip:Install pip/python packages" "nvm:Install Node Version Manager (nvm)"
"z:Install z" "z:Install z"
) )
@@ -152,124 +113,111 @@ section_install()
$0 install macos $0 install macos
$0 install fonts $0 install fonts
$0 brew install $0 brew install
#$0 install ohmyposh
$0 install asdf $0 install asdf
$0 install composer $0 install composer
$0 install fzf $0 install fzf
#$0 install go
$0 install cheat-databases $0 install cheat-databases
#$0 install imagick
$0 install nvm $0 install nvm
$0 install npm $0 install npm-packages
# $0 install ntfy
$0 install z $0 install z
msgr msg "Reloading configurations again..." msgr msg "Reloading configurations again..."
source "$DOTFILES/config/shared.sh" source "$DOTFILES/config/shared.sh"
msgr yay "All done!" msgr yay "All done!"
;; ;;
asdf) asdf)
msg "Installing asdf..." msgr run "Installing asdf..."
$0 asdf plugins-add \ $0 asdf plugins-install \
&& msg_yay "asdf installed!" && msgr yay "asdf plugins installed!"
;; ;;
cargo) cargo)
msg "Installing cargo packages..." msgr run "Installing cargo packages..."
bash "$DOTFILES/scripts/install-cargo-packages.sh" \ bash "$DOTFILES/scripts/install-cargo-packages.sh" \
&& msg_yay "cargo packages installed!" && msgr yay "cargo packages installed!"
;; ;;
cheat-databases) cheat-databases)
msg "Installing cheat databases..." msgr run "Installing cheat databases..."
for database in "$DOTFILES"/scripts/install-cheat-*; do for database in "$DOTFILES"/scripts/install-cheat-*; do
bash "$database" \ bash "$database" \
&& msg_yay "Cheat: $database run" && msgr run_done "Cheat: $database run"
done done
;; ;;
composer) composer)
msg "Installing composer..." msgr run "Installing composer..."
bash "$DOTFILES/scripts/install-composer.sh" \ bash "$DOTFILES/scripts/install-composer.sh" \
&& msg_yay "composer installed!" && msgr run_done "composer installed!"
;; ;;
fonts) fonts)
msg "Installing fonts..." msgr run "Installing fonts..."
bash "$DOTFILES/scripts/install-fonts.sh" \ bash "$DOTFILES/scripts/install-fonts.sh" \
&& msg_yay "Installed fonts!" && msgr yay "Installed fonts!"
;;
fzf)
msg "Installing fzf..."
bash "$DOTFILES/scripts/install-fzf.sh" \
&& msg_yay "fzf installed!"
;; ;;
gh) gh)
msg "Installing GitHub CLI Extensions..." msgr run "Installing GitHub CLI Extensions..."
bash "$DOTFILES/scripts/install-gh-extensions.sh" \ bash "$DOTFILES/scripts/install-gh-extensions.sh" \
&& msg_yay "github cli extensions installed!" && msgr yay "github cli extensions installed!"
;; ;;
go) go)
msg "Installing Go Packages..." msgr run "Installing Go Packages..."
bash "$DOTFILES/scripts/install-go-packages.sh" \ bash "$DOTFILES/scripts/install-go-packages.sh" \
&& msg_yay "go packages installed!" && msgr yay "go packages installed!"
;; ;;
imagick) imagick)
msg "Installing ImageMagick CLI..." msgr run "Downloading and installing ImageMagick CLI..."
curl -L https://imagemagick.org/archive/binaries/magick > "$XDG_BIN_HOME/magick" \ curl -L https://imagemagick.org/archive/binaries/magick > "$XDG_BIN_HOME/magick" \
&& chmod +x "$XDG_BIN_HOME/magick" \ && chmod +x "$XDG_BIN_HOME/magick" \
&& msg_yay "imagick installed!" && msgr yay "imagick downloaded and installed!"
;; ;;
macos) macos)
msg "Setting up macOS defaults..." msgr run "Setting up macOS defaults..."
bash "$DOTFILES/scripts/set-macos-defaults.sh" \ bash "$DOTFILES/scripts/install-macos-defaults.sh" \
&& msg_yay "Brewfile defined apps has been installed!" && msgr yay "macOS defaults set!"
;;
neofetch)
msg "Installing neofetch..."
bash "$DOTFILES/scripts/install-neofetch.sh" \
&& msg_yay "neofetch installed!"
;; ;;
nvm) nvm)
msg "Installing nvm..." msgr run "Installing nvm..."
local NVM_VERSION
NVM_VERSION=$(x-gh-get-latest-version nvm-sh/nvm) NVM_VERSION=$(x-gh-get-latest-version nvm-sh/nvm)
msg "Latest nvm version: $NVM_VERSION" msgr ok "Latest nvm version: $NVM_VERSION"
NVM_INSTALL="https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" local NVM_INSTALL="https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh"
NVM_CURL="curl -o- \"$NVM_INSTALL\" | bash" local NVM_CURL="curl -o- \"$NVM_INSTALL\" | bash"
PROFILE=/dev/null bash -c "$NVM_CURL" PROFILE=/dev/null bash -c "$NVM_CURL"
$0 install nvm-latest $0 install nvm-latest
msg_yay "nvm installed!" msgr yay "nvm installed!"
;; ;;
nvm-latest) nvm-latest)
msg "Installing latest lts node..." msgr run "Installing latest lts node..."
if [ -n "$NVM_DIR" ]; then if [ -n "$NVM_DIR" ]; then
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
fi fi
nvm install --lts --latest-npm --default nvm install --lts --latest-npm --default
git checkout "$DOTFILES/base/zshrc" git checkout "$DOTFILES/base/zshrc"
git checkout "$DOTFILES/base/bashrc" git checkout "$DOTFILES/base/bashrc"
msg_yay "latest lts node installed!" msgr yay "latest lts node installed!"
;; ;;
npm)
msg "NPM Packages install started..." npm-packages)
msgr run "NPM Packages install started..."
bash "$DOTFILES/scripts/install-npm-packages.sh" \ bash "$DOTFILES/scripts/install-npm-packages.sh" \
&& msg_yay "NPM Packages have been installed!" && msgr yay "NPM Packages have been installed!"
;;
ntfy)
msg "ntfy install started..."
bash "$DOTFILES/scripts/install-ntfy.sh" \
&& msg_yay "ntfy installed!"
;;
ohmyposh)
msg "oh-my-posh install started..."
bash "$DOTFILES/scripts/install-ohmyposh.sh" \
&& msg_yay "oh-my-posh installed!"
;;
pip)
msg "pip install started..."
bash "$DOTFILES/scripts/install-pip-packages.sh"
;; ;;
z) z)
msg "Installing z..." msgr run "Installing z..."
bash "$DOTFILES/scripts/install-z.sh" \ bash "$DOTFILES/scripts/install-z.sh" \
&& msg_yay "z has been installed!" && msgr yay "z has been installed!"
;; ;;
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
esac esac
} }
@@ -290,12 +238,14 @@ section_brew()
x-have brew && { x-have brew && {
case "$1" in case "$1" in
install) install)
brew bundle install --file="$BREWFILE" --force --quiet && msg_yay "Done!" brew bundle install --file="$BREWFILE" --force --quiet && msgr yay "Done!"
;; ;;
update) update)
brew update && brew outdated && brew upgrade && brew cleanup brew update && brew outdated && brew upgrade && brew cleanup
msg_yay "Done!" msgr yay "Done!"
;; ;;
updatebundle) updatebundle)
# Updates .dotfiles/homebrew/Brewfile with descriptions # Updates .dotfiles/homebrew/Brewfile with descriptions
brew bundle dump \ brew bundle dump \
@@ -305,11 +255,13 @@ section_brew()
--tap \ --tap \
--formula \ --formula \
--cask \ --cask \
--describe && msg_yay "Done!" --describe && msgr yay "Done!"
;; ;;
leaves) leaves)
brew leaves --installed-on-request brew leaves --installed-on-request
;; ;;
untracked) untracked)
declare -a BREW_LIST_ALL declare -a BREW_LIST_ALL
while IFS= read -r line; do while IFS= read -r line; do
@@ -342,7 +294,7 @@ section_brew()
# If there are no untracked packages, exit # If there are no untracked packages, exit
if [ ${#BREW_LIST_UNTRACKED[@]} -eq 0 ]; then if [ ${#BREW_LIST_UNTRACKED[@]} -eq 0 ]; then
msg_yay "No untracked packages found!" msgr yay "No untracked packages found!"
exit 0 exit 0
fi fi
@@ -351,20 +303,19 @@ section_brew()
echo " $f" echo " $f"
done done
;; ;;
clean)
brew bundle cleanup --file="$BREWFILE" && msg_yay "Done!"
;;
autoupdate) autoupdate)
brew autoupdate delete brew autoupdate delete
brew autoupdate start 43200 --upgrade --cleanup --immediate brew autoupdate start 43200 --upgrade --cleanup --immediate
;; ;;
*)
menu_usage "$USAGE_PREFIX" "${MENU[@]}" clean) brew bundle cleanup --file="$BREWFILE" && msgr yay "Done!" ;;
;;
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
esac esac
} }
! x-have brew && menu_section "$USAGE_PREFIX" "brew not available on this system" ! x-have brew && menu_builder "$USAGE_PREFIX" "brew not available on this system"
} }
section_asdf() section_asdf()
@@ -374,10 +325,11 @@ section_asdf()
"current:Show asdf current versions" "current:Show asdf current versions"
"global:Show asdf global versions" "global:Show asdf global versions"
"installed:Show asdf installed versions" "installed:Show asdf installed versions"
"local:Show asdf local versions"
"plugins-add:Add and update direnv and asdf-plugin-manager, and all other plugins"
"plugins-update:Update all asdf plugins" "plugins-update:Update all asdf plugins"
"plugins-install:Install plugins from configuration"
"plugins-remove:Remove installed plugins"
"reset:Reset asdf plugins" "reset:Reset asdf plugins"
"fix-tool-versions:Remove uninstalled plugins from .tool-versions"
"versions:Show asdf versions" "versions:Show asdf versions"
"where:Show asdf where" "where:Show asdf where"
"which:Show asdf which" "which:Show asdf which"
@@ -385,120 +337,142 @@ section_asdf()
case "$1" in case "$1" in
plugins-update) plugins-update)
APM_BIN="$(asdf where asdf-plugin-manager)/bin/asdf-plugin-manager"
msgr run "Updating all asdf plugins" msgr run "Updating all asdf plugins"
$APM_BIN update-all asdf plugin update --all
$APM_BIN export > "$ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME"
msgr run_done "Updated all plugins" msgr run_done "Updated all plugins"
;; ;;
plugins-add)
X_GH_BIN="$DOTFILES/local/bin/x-gh-get-latest-version"
LATEST_APM="$($X_GH_BIN asdf-community/asdf-plugin-manager | sed 's/^v//')"
LATEST_DIRENV="$($X_GH_BIN asdf-community/asdf-direnv)"
PLUGIN_VERSIONS="$DOTFILES/config/asdf/plugin-versions"
APM_BIN="$HOME/.local/bin/asdf/shims/asdf-plugin-manager"
msgr run "Adding and updating direnv and asdf-plugin-manager" plugins-install)
asdf plugin add direnv https://github.com/asdf-community/asdf-direnv.git msgr run "Installing plugins from configuration"
asdf global direnv "$LATEST_DIRENV"
asdf install direnv "$LATEST_DIRENV"
asdf plugin add asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git # First install direnv if it's not installed
asdf global asdf-plugin-manager "$LATEST_APM" if ! asdf plugin list | grep -q "^direnv$"; then
asdf install asdf-plugin-manager "$LATEST_APM" msgr nested "Installing direnv plugin"
asdf reshim asdf plugin add direnv https://github.com/asdf-community/asdf-direnv.git
msgr run_done "direnv and asdf-plugin-manager added and updated"
msgr run "Reset plugin-versions file to the original using git" # Install latest direnv
if git ls-files --error-unmatch "$PLUGIN_VERSIONS" > /dev/null 2>&1; then local latest_direnv
git checkout -- "$PLUGIN_VERSIONS" latest_direnv=$(asdf latest direnv)
asdf install direnv "$latest_direnv"
asdf global direnv "$latest_direnv"
fi fi
msgr run_done "Reset plugin-versions file"
msgr run "Adding all plugins with asdf-plugin-manager" # Check that all plugins are installed
"$APM_BIN" add-all local installed_plugins
msgr run_done "Added all plugins with asdf-plugin-manager" installed_plugins=$(asdf plugin list)
msgr run "Install all plugins" while IFS= read -r line; do
PLUGINS=$($APM_BIN list | awk -F ' ' '{print $1}' | sort) # Skip empty lines and comments
for P in $PLUGINS; do [[ -z $line || $line =~ ^# ]] && continue
msgr run "Installing $P"
asdf install "$P" latest
asdf global "$P" latest
done
local plugin
plugin=$(echo "$line" | awk '{print $1}')
msgr run_done "Installed all plugins" # Skip direnv, it's already installed
[[ $plugin == "direnv" ]] && continue
msgr run "Reshimming" if ! echo "$installed_plugins" | grep -q "^${plugin}$"; then
asdf reshim msgr nested "Installing $plugin plugin"
msgr run_done "Reshimmed" asdf plugin add "$plugin"
fi
done < "$DOTFILES/base/tool-versions"
msgr run_done "All plugins installed"
;; ;;
plugins-remove) plugins-remove)
PLUGIN_VERSIONS="$DOTFILES/config/asdf/plugin-versions"
msgr run "Remove installed plugins" msgr run "Remove installed plugins"
INSTALLED_ASDF_PLUGINS=$(asdf list | grep -vE "direnv|asdf-plugin-manager" | grep -v "^ ") local installed_plugins
for P in $INSTALLED_ASDF_PLUGINS; do installed_plugins=$(asdf plugin list | grep -v "^direnv$")
asdf plugin remove "$P"
msgr nested_done "Removed $P"
done
msgr run "Reset plugin-versions file to the original using git" for plugin in $installed_plugins; do
if git ls-files --error-unmatch "$PLUGIN_VERSIONS" > /dev/null 2>&1; then msgr nested "Removing $plugin"
git checkout -- "$PLUGIN_VERSIONS" asdf plugin remove "$plugin"
fi done
msgr run_done "Reset plugin-versions file"
msgr run_done "Remove plugins done!" msgr run_done "Remove plugins done!"
;; ;;
reset)
APM_BIN="$(asdf where asdf-plugin-manager)/bin/asdf-plugin-manager"
msgr run "Get currently installed plugins, remove those that are not defined" reset)
msgr run "Resetting asdf environment"
$0 asdf plugins-remove $0 asdf plugins-remove
$0 asdf plugins-add $0 asdf plugins-install
$0 asdf fixtoolversions
asdf reshim asdf reshim
msgr yay "Reset asdf plugins done!" msgr yay "Reset asdf plugins done!"
;; ;;
fixtoolversions)
ASDF_TOOL_VERSIONS_FILE="$DOTFILES/base/tool-versions"
ASDF_TOOL_FILE_PLUGINS=$(awk '{print $1 " " $2}' "$ASDF_TOOL_VERSIONS_FILE")
APM_BIN="$(asdf where asdf-plugin-manager)/bin/asdf-plugin-manager"
msgr run "Loading $ASDF_TOOL_VERSIONS_FILE and collecting installed" fix-tool-versions)
ASDF_PLUGINS_DEFINED=$($APM_BIN list | awk -F ' ' '{print $1}') local tool_versions_file="$DOTFILES/base/tool-versions"
local temp_file
temp_file=$(mktemp)
echo "$ASDF_TOOL_FILE_PLUGINS" | \ msgr run "Fixing tool-versions file"
grep -Fxv -f <(echo "$ASDF_PLUGINS_DEFINED") > tmp && \
mv tmp "$ASDF_TOOL_VERSIONS_FILE"
msgr run_done "Fixed $ASDF_TOOL_VERSIONS_FILE" # Check that .tool-versions file exists
if [[ ! -f $tool_versions_file ]]; then
msgr error "tool-versions file not found: $tool_versions_file"
rm -f "$temp_file"
return 1
fi
# Check that asdf can be found in the path
if ! command -v asdf > /dev/null; then
msgr error "asdf not found"
rm -f "$temp_file"
return 1
fi
# Read installed plugins
msgr nested "Reading installed plugins"
local installed_plugins
installed_plugins=$(asdf plugin list | sort)
# Compare .tool-versions and installed plugins,
# remove unknown plugins from .tool-versions
msgr nested "Updating tool-versions file"
while IFS= read -r line; do
# Keep comments and empty lines
if [[ -z $line || $line =~ ^[[:space:]]*# ]]; then
echo "$line" >> "$temp_file"
continue
fi
local plugin
plugin=$(echo "$line" | awk '{print $1}')
if echo "$installed_plugins" | grep -q "^${plugin}$"; then
echo "$line" >> "$temp_file"
else
msgr nested "Removing $plugin - not installed"
fi
done < "$tool_versions_file"
# Check that the temp file is valid
if [[ ! -s $temp_file ]] || ! grep -v '^[[:space:]]*#' "$temp_file" | grep -q .; then
msgr error "Generated file is empty or contains only comments, keeping original"
rm -f "$temp_file"
return 1
fi
# Backup the original .tool-versions
cp "$tool_versions_file" "${tool_versions_file}.bak"
# Overwrite .tool-versions with the generated file
mv "$temp_file" "$tool_versions_file"
msgr run_done "Updated $tool_versions_file"
msgr nested "Backup saved as ${tool_versions_file}.bak"
return 0
;; ;;
current)
asdf current current) asdf current ;;
;; global) asdf global ;;
global) installed) asdf list ;;
asdf global versions) asdf list all ;;
;; where) asdf where ;;
installed) which) asdf which ;;
asdf list *) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
;;
local)
asdf local
;;
versions)
asdf list all
;;
where)
asdf where
;;
which)
asdf which
;;
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
esac esac
} }
@@ -511,7 +485,6 @@ section_helpers()
"env:Show environment variables" "env:Show environment variables"
"functions:Show functions" "functions:Show functions"
"nvim:Show nvim keybindings" "nvim:Show nvim keybindings"
# shellcheck disable=SC2016
'path:Show $PATH dir by dir' 'path:Show $PATH dir by dir'
"tmux:Show tmux keybindings" "tmux:Show tmux keybindings"
"wezterm:Show wezterm keybindings" "wezterm:Show wezterm keybindings"
@@ -527,6 +500,7 @@ section_helpers()
# shellcheck disable=2001 # shellcheck disable=2001
for i in $(echo "$PATH" | sed 's/:/ /g'); do echo "$i"; done for i in $(echo "$PATH" | sed 's/:/ /g'); do echo "$i"; done
;; ;;
aliases) aliases)
case "$SECTION" in case "$SECTION" in
"zsh") "zsh")
@@ -540,6 +514,7 @@ section_helpers()
;; ;;
esac esac
;; ;;
"colors") "colors")
max=255 max=255
start=0 start=0
@@ -563,24 +538,14 @@ section_helpers()
printf "\n" printf "\n"
start=$((start + 10)) start=$((start + 10))
done done
;;
;; "env") env | sort ;;
"env") "functions") declare -F ;;
env | sort "nvim") cat "$DOTFILES/docs/nvim-keybindings.md" ;;
;; "tmux") cat "$DOTFILES/docs/tmux-keybindings.md" ;;
"functions") "wezterm") cat "$DOTFILES/docs/wezterm-keybindings.md" ;;
declare -F *) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
;;
"nvim")
cat "$DOTFILES/docs/nvim-keybindings.md"
;;
"tmux")
cat "$DOTFILES/docs/tmux-keybindings.md"
;;
"wezterm")
cat "$DOTFILES/docs/wezterm-keybindings.md"
;;
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
esac esac
} }
@@ -604,7 +569,7 @@ section_docs()
tmux) bash "$DOTFILES/local/bin/x-dfm-docs-xterm-keybindings" ;; tmux) bash "$DOTFILES/local/bin/x-dfm-docs-xterm-keybindings" ;;
nvim) bash "$DOTFILES/scripts/create-nvim-keymaps.sh" ;; nvim) bash "$DOTFILES/scripts/create-nvim-keymaps.sh" ;;
wezterm) bash "$DOTFILES/scripts/create-wezterm-keymaps.sh" ;; wezterm) bash "$DOTFILES/scripts/create-wezterm-keymaps.sh" ;;
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;; *) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
esac esac
} }
@@ -622,37 +587,42 @@ section_dotfiles()
case "$1" in case "$1" in
fmt) fmt)
msg_ok "Running all formatters" msgr run "Running all formatters"
$0 dotfiles yamlfmt $0 dotfiles yamlfmt
$0 dotfiles shfmt $0 dotfiles shfmt
msg_done "...done!" msgr run_done "...done!"
;; ;;
reset_all) reset_all)
msg_ok "Running all reset commands" msgr ok "Running all reset commands"
$0 dotfiles reset_nvim $0 dotfiles reset_nvim
;; ;;
reset_nvim) reset_nvim)
msgr run "Cleaning nvim state, cache and config"
rm -rf \ rm -rf \
~/.local/share/nvim \ ~/.local/share/nvim \
~/.local/state/nvim \ ~/.local/state/nvim \
~/.cache/nvim \ ~/.cache/nvim \
~/.config/nvim ~/.config/nvim
msg_ok "Deleted old nvim files (share, state and cache + config)" msgr ok "Deleted old nvim files (share, state and cache + config)"
ln -s "$DOTFILES/config/nvim" ~/.config/nvim ln -s "$DOTFILES/config/nvim" ~/.config/nvim
msg_ok "Linked nvim and astronvim" msgr ok "Linked nvim and astronvim"
x-have npm && $0 install npm x-have npm && $0 install npm
msg_ok "Installed packages" msgr ok "Installed packages"
msg_done "nvim reset!" msgr run_done "nvim reset!"
;; ;;
yamlfmt) yamlfmt)
# format yaml files # format yaml files
x-have yamlfmt && yamlfmt -conf "$DOTFILES/.yamlfmt" x-have yamlfmt && yamlfmt -conf "$DOTFILES/.yamlfmt"
! x-have yamlfmt && msg_err "yamlfmt not found" ! x-have yamlfmt && msgr err "yamlfmt not found"
;; ;;
shfmt) shfmt)
# If system doesn't have fd or shfmt installed, exit # If system doesn't have fd or shfmt installed, exit
! x-have fd && msg_err "fd not found, install with asdf" ! x-have fd && msgr err "fd not found, install it to continue"
! x-have shfmt && msg_err "shfmt not found, install with asdf" ! x-have shfmt && msgr err "shfmt not found, install it to continue"
# Format shell scripts according to following rules. # Format shell scripts according to following rules.
fd --full-path "$DOTFILES" -tx \ fd --full-path "$DOTFILES" -tx \
--hidden \ --hidden \
@@ -663,9 +633,10 @@ section_dotfiles()
--func-next-line --list --write \ --func-next-line --list --write \
--indent 2 --case-indent --space-redirects \ --indent 2 --case-indent --space-redirects \
--binary-next-line {} \; --binary-next-line {} \;
msg_yay "dotfiles have been shfmt formatted!" msgr yay "dotfiles have been shfmt formatted!"
;; ;;
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
esac esac
} }
@@ -685,11 +656,58 @@ section_check()
[[ $2 == "" ]] && echo "$X_ARCH" && exit 0 [[ $2 == "" ]] && echo "$X_ARCH" && exit 0
[[ $X_ARCH == "$2" ]] && exit 0 || exit 1 [[ $X_ARCH == "$2" ]] && exit 0 || exit 1
;; ;;
h | host | hostname) h | host | hostname)
[[ $2 == "" ]] && echo "$X_HOSTNAME" && exit 0 [[ $2 == "" ]] && echo "$X_HOSTNAME" && exit 0
[[ $X_HOSTNAME == "$2" ]] && exit 0 || exit 1 [[ $X_HOSTNAME == "$2" ]] && exit 0 || exit 1
;; ;;
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
esac
}
section_scripts()
{
USAGE_PREFIX="$SCRIPT scripts <command>"
# Get description from a file
get_script_description()
{
local file
local desc
file="$1"
desc=$(sed -n '/@description/s/.*@description *\(.*\)/\1/p' "$file" | head -1)
echo "${desc:-No description available}"
}
# Collect scripts and their descriptions
declare -A SCRIPT_MENU
for script in "$DOTFILES/scripts/install-"*.sh; do
if [ -f "$script" ]; then
name=$(basename "$script" .sh | sed 's/install-//')
desc=$(get_script_description "$script")
SCRIPT_MENU[$name]="$desc"
fi
done
case "$1" in
"")
# Show the menu
local menu_items=()
for name in "${!SCRIPT_MENU[@]}"; do
menu_items+=("$name:${SCRIPT_MENU[$name]}")
done
menu_builder "$USAGE_PREFIX" "${menu_items[@]}"
;;
*)
# Run the chosen script
script_path="$DOTFILES/scripts/install-$1.sh"
if [ -f "$script_path" ]; then
bash "$script_path"
else
msgr err "Script not found: $1"
fi
;;
esac esac
} }
@@ -699,7 +717,7 @@ section_tests()
USAGE_PREFIX="$SCRIPT tests <command>" USAGE_PREFIX="$SCRIPT tests <command>"
MENU=( MENU=(
"msg:List all log functions from shared.sh" "msgr:List all available msgr message types"
"params:List all parameters" "params:List all parameters"
) )
@@ -711,29 +729,29 @@ section_tests()
done done
;; ;;
msg) msg)
msg "msg" # shellcheck disable=SC1010
msg_done "msg_done" msgr done "msgr done"
msg_done_suffix "msg_done_suffix" msgr done_suffix "msgr done_suffix"
msg_err "msg_err" msgr err "msgr err"
msg_nested "msg_nested" msgr nested "msgr nested"
msg_nested_done "msg_nested_done" msgr nested_done "msgr nested_done"
msg_ok "msg_ok" msgr ok "msgr ok"
msg_prompt "msg_prompt" msgr prompt "msgr prompt"
msg_prompt_done "msg_prompt_done" msgr prompt_done "msgr prompt_done"
msg_run "msg_run" "second_param" msgr run "msgr run" "second_param"
msg_run_done "msg_run_done" "second_param" msgr run_done "msgr run_done" "second_param"
msg_warn "msg_warn" msgr warn "msgr warn"
msg_yay "msg_yay" msgr yay "msgr yay"
msg_yay_done "msg_yay_done" msgr yay_done "msgr yay_done"
;; ;;
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;; *) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
esac esac
} }
usage() usage()
{ {
echo "" echo ""
msg_prompt "Usage: $SCRIPT <section> <command>" msgr prompt "Usage: $SCRIPT <section> <command>"
echo $" Empty <command> prints <section> help." echo $" Empty <command> prints <section> help."
echo "" echo ""
section_install section_install
@@ -748,6 +766,8 @@ usage()
echo "" echo ""
section_docs section_docs
echo "" echo ""
section_scripts
echo ""
section_helpers section_helpers
} }
@@ -764,6 +784,7 @@ main()
dotfiles) section_dotfiles "$@" ;; dotfiles) section_dotfiles "$@" ;;
helpers) section_helpers "$@" ;; helpers) section_helpers "$@" ;;
docs) section_docs "$@" ;; docs) section_docs "$@" ;;
scripts) section_scripts "$@" ;;
tests) section_tests "$@" ;; tests) section_tests "$@" ;;
*) usage && exit 0 ;; *) usage && exit 0 ;;
esac esac

View File

@@ -23,7 +23,8 @@ generate_tmux_keybindings()
{ {
local tmux_keybindings_docs="$1" local tmux_keybindings_docs="$1"
local cb="\n\`\`\`\n" local cb="\n\`\`\`txt\n"
local cbe="\n\`\`\`\n"
local kb local kb
kb=$(tmux lsk -Tprefix -N | sed -e 's/^/ /;') kb=$(tmux lsk -Tprefix -N | sed -e 's/^/ /;')
local h="# tmux keybindings\n" local h="# tmux keybindings\n"
@@ -33,7 +34,7 @@ generate_tmux_keybindings()
kb="${kb//$HOME/\$HOME}" kb="${kb//$HOME/\$HOME}"
msg "Outputting tmux keybindings to $tmux_keybindings_docs" msg "Outputting tmux keybindings to $tmux_keybindings_docs"
echo -e "${h}${l}${cb}${kb}${cb}" > "$tmux_keybindings_docs" echo -e "${h}${l}${cb}${kb}${cbe}" > "$tmux_keybindings_docs"
msg "Done!" msg "Done!"
} }

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Create file containing key mappings for Neovim # @description Create file containing key mappings for Neovim
# Usage: ./create-nvim-keymaps.sh # Usage: ./create-nvim-keymaps.sh
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh

View File

@@ -1,18 +0,0 @@
#!/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 "$@"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Create file containing key mappings for wezterm # @description Create file containing key mappings for wezterm
# Usage: ./create-wezterm-keymaps.sh # Usage: ./create-wezterm-keymaps.sh
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh

View File

@@ -1,126 +0,0 @@
#!/usr/bin/env bash
#
# Install asdf and plugins I use
#
# It also updates asdf and the plugins, and then reshim asdf.
#
# Usage: ./install-asdf.sh [both|install|update|add_plugins]
# Author: Ismo Vuorinen <https://github.com/ivuorinen>
# License: MIT
#
source "${DOTFILES}/config/shared.sh"
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
export PATH="${ASDF_DIR}/bin:$PATH"
# If ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME is not set, set it
if [ -z "${ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME}" ]; then
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
fi
msg "Sourcing asdf in your shell"
. "$ASDF_DIR/asdf.sh"
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"
"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"
"pre-commit:github.com/jonathanmorley/asdf-pre-commit.git"
"ripgrep:gitlab.com/wt0f/asdf-ripgrep.git"
"rust:github.com/code-lever/asdf-rust.git"
"shellcheck:github.com/luizm/asdf-shellcheck.git"
"shfmt:github.com/luizm/asdf-shfmt.git"
"terragrunt:github.com/ohmer/asdf-terragrunt.git"
"tf-summarize:github.com/adamcrews/asdf-tf-summarize.git"
"yamllint:github.com/ericcornelissen/asdf-yamllint.git"
"yq:github.com/sudermanjr/asdf-yq.git"
)
# Function to update asdf and plugins
update_asdf()
{
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-plugin-manager export > "${ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME}"
asdf install
return 0
}
update_asdf_commands()
{
msg "Updating asdf commands using asdf-plugin-manager"
asdf-plugin-manager update-all
return 0
}
# Function to install asdf plugins
install_asdf_plugins()
{
msg "Installing asdf plugins"
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}"
done
msg "Exporting asdf plugin versions"
asdf-plugin-manager export > "${ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME}"
return 0
}
reshim()
{
msg "Reshim asdf"
asdf reshim
return 0
}
# create usage function
usage()
{
echo "Usage: $0 [both|install|add_plugins|update]"
exit 1
}
main()
{
case $1 in
"both")
install_asdf_plugins
update_asdf
reshim
;;
"update")
update_asdf_commands
reshim
;;
"install")
update_asdf
reshim
;;
"add_plugins")
install_asdf_plugins
reshim
;;
*)
usage
;;
esac
}
main "$@"

View File

@@ -1,22 +1,18 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Install cargo/rust packages. # @description Install cargo/rust packages.
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "$HOME/.dotfiles/config/shared.sh"
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead." msgr run "Starting to install rust/cargo packages"
exit 0
eval "$HOME/.dotfiles/config/shared.sh"
msg "Starting to install rust/cargo packages"
source "$CARGO_HOME/env" source "$CARGO_HOME/env"
# If we have cargo install-update, use it first # If we have cargo install-update, use it first
if command -v cargo-install-update &> /dev/null; then if command -v cargo-install-update &> /dev/null; then
msg_run "Updating cargo packages with cargo install-update" msgr run "Updating cargo packages with cargo install-update"
cargo install-update -a cargo install-update -a
msg_done "Done with cargo install-update" msgr run_done "Done with cargo install-update"
fi fi
packages=( packages=(
@@ -55,8 +51,9 @@ install_packages()
# Skip comments # Skip comments
if [[ ${pkg:0:1} == "#" ]]; then continue; fi if [[ ${pkg:0:1} == "#" ]]; then continue; fi
msg_run "Installing cargo package $pkg" msgr run "Installing cargo package $pkg"
cargo install --jobs $BUILD_JOBS "$pkg" cargo install --jobs $BUILD_JOBS "$pkg"
msgr run_done "Done installing $pkg"
echo "" echo ""
done done
} }
@@ -64,14 +61,14 @@ install_packages()
# Function to perform additional steps for installed cargo packages # Function to perform additional steps for installed cargo packages
post_install_steps() post_install_steps()
{ {
msg_run "Now doing the next steps for cargo packages" msgr run "Now doing the next steps for cargo packages"
# use bob to install latest stable nvim # use bob to install latest stable nvim
if command -v bob &> /dev/null; then if command -v bob &> /dev/null; then
bob use stable && x-path-append "$XDG_DATA_HOME/bob/nvim-bin" bob use stable && x-path-append "$XDG_DATA_HOME/bob/nvim-bin"
fi fi
msg_run "Removing cargo cache" msgr run "Removing cargo cache"
cargo cache --autoclean cargo cache --autoclean
msg_done "Done removing cargo cache" msg_done "Done removing cargo cache"
} }

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# @description Update pure-bash-bible cheatsheets
# shellcheck disable=SC2231,SC2034,SC2181,SC2068 # shellcheck disable=SC2231,SC2034,SC2181,SC2068
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "${DOTFILES}/config/shared.sh" source "${DOTFILES}/config/shared.sh"

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Install PHP Package Manager Composer # @description Install PHP Package Manager Composer
# #
# shellcheck source="shared.sh" # shellcheck source="shared.sh"
eval "$HOME/.dotfiles/config/shared.sh" source "$HOME/.dotfiles/config/shared.sh"
if ! command -v php &> /dev/null; then if ! command -v php &> /dev/null; then
msg_err "PHP Not Available, cannot install composer" msg_err "PHP Not Available, cannot install composer"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Install NerdFonts # @description Install NerdFonts
# #
# shellcheck source="shared.sh" # shellcheck source="shared.sh"
source "$DOTFILES/config/shared.sh" source "$DOTFILES/config/shared.sh"
@@ -7,24 +7,21 @@ source "$DOTFILES/config/shared.sh"
GIT_REPO="https://github.com/ryanoasis/nerd-fonts.git" GIT_REPO="https://github.com/ryanoasis/nerd-fonts.git"
TMP_PATH="$XDG_CACHE_HOME/nerd-fonts" TMP_PATH="$XDG_CACHE_HOME/nerd-fonts"
msg "-- NerdFonts --" msgr run "Starting to install NerdFonts"
fonts=( fonts=(
Hack
IntelOneMono
JetBrainsMono JetBrainsMono
OpenDyslexic OpenDyslexic
SpaceMono
) )
# Function to clone or update the NerdFonts repository # Function to clone or update the NerdFonts repository
clone_or_update_repo() clone_or_update_repo()
{ {
if [ ! -d "$TMP_PATH" ]; then if [ ! -d "$TMP_PATH" ]; then
git clone --quiet --filter=blob:none --sparse "$GIT_REPO" "$TMP_PATH" git clone --quiet --filter=blob:none --sparse --depth=1 "$GIT_REPO" "$TMP_PATH"
fi fi
cd "$TMP_PATH" || msg_err "No such folder $TMP_PATH" cd "$TMP_PATH" || msgr err "No such folder $TMP_PATH"
} }
# Function to add fonts to sparse-checkout # Function to add fonts to sparse-checkout
@@ -36,7 +33,7 @@ add_fonts_to_sparse_checkout()
# Skip comments # Skip comments
if [[ ${font:0:1} == "#" ]]; then continue; fi if [[ ${font:0:1} == "#" ]]; then continue; fi
msg_run "Adding $font to sparse-checkout" msgr run "Adding $font to sparse-checkout"
git sparse-checkout add "patched-fonts/$font" git sparse-checkout add "patched-fonts/$font"
echo "" echo ""
done done
@@ -45,9 +42,9 @@ add_fonts_to_sparse_checkout()
# Function to install NerdFonts # Function to install NerdFonts
install_fonts() install_fonts()
{ {
msg "Starting to install NerdFonts..." msgr run "Starting to install NerdFonts..."
./install.sh -q -s ${fonts[*]} ./install.sh -q -s ${fonts[*]}
msg_ok "Done" msgr run_done "Done"
} }
remove_tmp_path() remove_tmp_path()

View File

@@ -1,29 +0,0 @@
#!/usr/bin/env bash
#
# Install fzf
#
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
exit 0
# shellcheck source=shared.sh
eval "$DOTFILES/config/shared.sh"
FZF_GIT="https://github.com/junegunn/fzf.git"
FZF_PATH="${XDG_CONFIG_HOME}/fzf"
FZF_BUILD="/tmp/fzf"
main()
{
if [ ! -d "$FZF_BUILD" ]; then
git clone --depth 1 "$FZF_GIT" "$FZF_BUILD"
"$FZF_BUILD/install" \
--xdg \
--bin
msg_done "fzf installed"
else
msg_done "fzf ($FZF_PATH/) already installed"
fi
}
main "$@"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Install GitHub CLI extensions # @description Install GitHub CLI extensions
# #
# shellcheck source="shared.sh" # shellcheck source="shared.sh"
source "${DOTFILES}/config/shared.sh" source "${DOTFILES}/config/shared.sh"
@@ -7,10 +7,10 @@ source "${DOTFILES}/config/shared.sh"
# Enable verbosity with VERBOSE=1 # Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}" VERBOSE="${VERBOSE:-0}"
msg_run "Installing gh (GitHub Client) extensions" msgr run "Installing gh (GitHub Client) extensions"
if ! command -v gh &> /dev/null; then if ! command -v gh &> /dev/null; then
msg_err "gh (GitHub Client) could not be found, please install it first" msgr err "gh (GitHub Client) could not be found, please install it first"
exit 0 exit 0
fi fi
@@ -43,7 +43,7 @@ install_extensions()
# Skip comments # Skip comments
if [[ ${ext:0:1} == "#" ]]; then continue; fi if [[ ${ext:0:1} == "#" ]]; then continue; fi
msg_nested "Installing $ext" msgr nested "Installing $ext"
gh extension install "$ext" gh extension install "$ext"
echo "" echo ""
done done
@@ -52,7 +52,7 @@ install_extensions()
main() main()
{ {
install_extensions install_extensions
msg_ok "Done" msgr run_done "Done"
} }
main "$@" main "$@"

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# @description Install git-crypt
# #
# Install git-crypt
# NOTE: Experimental, wip # NOTE: Experimental, wip
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
@@ -9,7 +9,7 @@ source "${DOTFILES}/config/shared.sh"
# Enable verbosity with VERBOSE=1 # Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}" VERBOSE="${VERBOSE:-0}"
msg_run "Installing git-crypt" msgr run "Installing git-crypt"
if ! command -v git-crypt &> /dev/null; then if ! command -v git-crypt &> /dev/null; then
REPO_URL="https://github.com/AGWA/git-crypt.git" REPO_URL="https://github.com/AGWA/git-crypt.git"
@@ -23,8 +23,8 @@ if ! command -v git-crypt &> /dev/null; then
cd "$BUILD_PATH" || msg_err "$BUILD_PATH not found" cd "$BUILD_PATH" || msg_err "$BUILD_PATH not found"
make && make install PREFIX="$HOME/.local" make && make install PREFIX="$HOME/.local"
else else
msg_done "git-crypt ($CHECK_PATH) already installed" msgr run_done "git-crypt ($CHECK_PATH) already installed"
fi fi
fi fi
msg_done "Done installing git-crypt" msgr run_done "Done installing git-crypt"

View File

@@ -1,19 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Install Go packages # @description Install Go packages
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "$DOTFILES/config/shared.sh"
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
exit 0
eval "$DOTFILES/config/shared.sh"
# Enable verbosity with VERBOSE=1 # Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}" VERBOSE="${VERBOSE:-0}"
msg_run "Installing go packages" msgr run "Installing go packages"
! x-have "go" && msg "go hasn't been installed yet." && exit 0 ! x-have "go" && msgr err "go hasn't been installed yet." && exit 0
packages=( packages=(
# A shell parser, formatter, and interpreter with bash support; includes shfmt # A shell parser, formatter, and interpreter with bash support; includes shfmt
@@ -49,7 +45,7 @@ install_packages()
# Skip comments # Skip comments
if [[ ${pkg:0:1} == "#" ]]; then continue; fi if [[ ${pkg:0:1} == "#" ]]; then continue; fi
msg_nested "Installing go package: $pkg" msgr nested "Installing go package: $pkg"
go install "$pkg" go install "$pkg"
echo "" echo ""
done done
@@ -58,23 +54,23 @@ install_packages()
# Function to install completions and run actions for selected packages # Function to install completions and run actions for selected packages
post_install() post_install()
{ {
msg_run "Installing completions for selected packages" msgr run "Installing completions for selected packages"
if command -v git-profile &> /dev/null; then if command -v git-profile &> /dev/null; then
git-profile completion zsh > "$ZSH_CUSTOM_COMPLETION_PATH/_git-profile" \ git-profile completion zsh > "$ZSH_CUSTOM_COMPLETION_PATH/_git-profile" \
&& msg_ok "Installed completions for git-profile" && msgr run_done "Installed completions for git-profile"
fi fi
if command -v antidot &> /dev/null; then if command -v antidot &> /dev/null; then
antidot update \ antidot update \
&& msg_ok "Updated antidot database" && msgr run_done "Updated antidot database"
fi fi
} }
# Function to clear go cache # Function to clear go cache
clear_go_cache() clear_go_cache()
{ {
msg_run "Clearing go cache" msgr run "Clearing go cache"
go clean -cache -modcache go clean -cache -modcache
} }
@@ -83,7 +79,7 @@ main()
install_packages install_packages
post_install post_install
clear_go_cache clear_go_cache
msg_ok "Done" msgr run_done "Done"
} }
main "$@" main "$@"

View File

@@ -1,17 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# # @description Sets macOS Defaults that I like
# set-macos-defaults.sh - Sets macOS Defaults that I like
# #
# This script contains large portions from following scripts: # This script contains large portions from following scripts:
# - https://github.com/freekmurze/dotfiles/blob/main/macos/set-defaults.sh # - https://github.com/freekmurze/dotfiles/blob/main/macos/set-defaults.sh
#
[ "$(uname)" != "Darwin" ] && echo "Not a macOS system" && exit 0 [ "$(uname)" != "Darwin" ] && echo "Not a macOS system" && exit 0
# shellcheck source=shared.sh # shellcheck source=shared.sh
eval "$HOME/.dotfiles/config/shared.sh" source "$HOME/.dotfiles/config/shared.sh"
msg_run "Starting to set macOS defaults, these require sudo privileges:" msgr run "Starting to set macOS defaults, these require sudo privileges:"
# Ask for the administrator password upfront # Ask for the administrator password upfront
sudo -v sudo -v
@@ -24,7 +22,7 @@ while true; do
kill -0 "$$" || exit kill -0 "$$" || exit
done 2> /dev/null & done 2> /dev/null &
msg_nested "Change user shell to zsh if it is available and not the current" msgr nested "Change user shell to zsh if it is available and not the current"
# Change user shell to zsh if not that already. # Change user shell to zsh if not that already.
if hash zsh 2> /dev/null; then if hash zsh 2> /dev/null; then
@@ -35,7 +33,7 @@ fi
# General UI/UX # # General UI/UX #
############################################################################### ###############################################################################
msg_nested "Setting General UI/UX settings" msgr nested "Setting General UI/UX settings"
# Disable the sound effects on boot # Disable the sound effects on boot
sudo nvram SystemAudioVolume=" " sudo nvram SystemAudioVolume=" "
@@ -89,7 +87,7 @@ defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
# SSD-specific tweaks # # SSD-specific tweaks #
############################################################################### ###############################################################################
msg_nested "Setting SSD-specific tweaks" msgr nested "Setting SSD-specific tweaks"
# Disable hibernation (speeds up entering sleep mode) # Disable hibernation (speeds up entering sleep mode)
sudo pmset -a hibernatemode 0 sudo pmset -a hibernatemode 0
@@ -101,7 +99,7 @@ sudo pmset -a sms 0
# Trackpad, mouse, keyboard, Bluetooth accessories, and input # # Trackpad, mouse, keyboard, Bluetooth accessories, and input #
############################################################################### ###############################################################################
msg_nested "Settings for Trackpad, mouse, keyboard, Bluetooth accessories, and input" msgr nested "Settings for Trackpad, mouse, keyboard, Bluetooth accessories, and input"
# Increase sound quality for Bluetooth headphones/headsets # Increase sound quality for Bluetooth headphones/headsets
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Max (editable)" 80 defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Max (editable)" 80
@@ -137,7 +135,7 @@ launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist 2> /dev/nul
# Screen # # Screen #
############################################################################### ###############################################################################
msg_nested "Settings for Screen" msgr nested "Settings for Screen"
# Require password immediately after sleep or screen saver begins # Require password immediately after sleep or screen saver begins
defaults write com.apple.screensaver askForPassword -int 1 defaults write com.apple.screensaver askForPassword -int 1
@@ -147,7 +145,7 @@ defaults write com.apple.screensaver askForPasswordDelay -int 0
# Finder # # Finder #
############################################################################### ###############################################################################
msg_nested "Settings for Finder" msgr nested "Settings for Finder"
# Set Desktop as the default location for new Finder windows # Set Desktop as the default location for new Finder windows
# For other paths, use `PfLo` and `file:///full/path/here/` # For other paths, use `PfLo` and `file:///full/path/here/`
@@ -207,7 +205,7 @@ defaults write com.apple.finder FXInfoPanesExpanded -dict \
# Screenshots # # Screenshots #
############################################################################### ###############################################################################
msg_nested "Settings for Screenshots" msgr nested "Settings for Screenshots"
# Set default screenshot location # Set default screenshot location
mkdir -p "$HOME/Documents/Screenshots" mkdir -p "$HOME/Documents/Screenshots"
@@ -223,7 +221,7 @@ defaults write com.apple.screencapture "name" -string "screenshot"
# Dock, Dashboard, and hot corners # # Dock, Dashboard, and hot corners #
############################################################################### ###############################################################################
msg_nested "Settings for Dock, Dashboard, and hot corners" msgr nested "Settings for Dock, Dashboard, and hot corners"
# Prevent applications from bouncing in Dock # Prevent applications from bouncing in Dock
defaults write com.apple.dock no-bouncing -bool true defaults write com.apple.dock no-bouncing -bool true
@@ -255,7 +253,7 @@ defaults write com.apple.dock showhidden -bool true
# Safari & WebKit # # Safari & WebKit #
############################################################################### ###############################################################################
msg_nested "Settings for Safari & WebKit" msgr nested "Settings for Safari & WebKit"
# Enable Safari's debug menu # Enable Safari's debug menu
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
@@ -281,7 +279,7 @@ defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
# Activity Monitor # # Activity Monitor #
############################################################################### ###############################################################################
msg_nested "Settings for ActivityMonitor" msgr nested "Settings for ActivityMonitor"
# Show the main window when launching Activity Monitor # Show the main window when launching Activity Monitor
defaults write com.apple.ActivityMonitor OpenMainWindow -bool true defaults write com.apple.ActivityMonitor OpenMainWindow -bool true
@@ -300,7 +298,7 @@ defaults write com.apple.ActivityMonitor SortDirection -int 0
# Address Book, Dashboard, iCal, TextEdit, and Disk Utility # # Address Book, Dashboard, iCal, TextEdit, and Disk Utility #
############################################################################### ###############################################################################
msg_nested "Settings for Address Book, Dashboard, iCal, TextEdit, and Disk Utility" msgr nested "Settings for Address Book, Dashboard, iCal, TextEdit, and Disk Utility"
# Use plain text mode for new TextEdit documents # Use plain text mode for new TextEdit documents
defaults write com.apple.TextEdit RichText -int 0 defaults write com.apple.TextEdit RichText -int 0
@@ -313,7 +311,7 @@ defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4
# Messages # # Messages #
############################################################################### ###############################################################################
msg_nested "Settings for Messages" msgr nested "Settings for Messages"
# Disable smart quotes as it's annoying for messages that contain code # Disable smart quotes as it's annoying for messages that contain code
defaults write com.apple.messageshelper.MessageController \ defaults write com.apple.messageshelper.MessageController \
@@ -327,7 +325,7 @@ defaults write com.apple.messageshelper.MessageController \
-dict-add "continuousSpellCheckingEnabled" \ -dict-add "continuousSpellCheckingEnabled" \
-bool false -bool false
msg_nested "Restarting applications to apply changes" msgr nested "Restarting applications to apply changes"
############################################################################### ###############################################################################
# Kill affected applications # # Kill affected applications #

View File

@@ -1,73 +0,0 @@
#!/usr/bin/env bash
#
# Install neofetch from source
#
# shellcheck source=shared.sh
source "$DOTFILES/config/shared.sh"
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
NEOFETCH_VERSION="$(x-gh-get-latest-version dylanaraps/neofetch)"
NEOFETCH_REPO="https://github.com/dylanaraps/neofetch"
NEOFETCH_URL="${NEOFETCH_REPO}/archive/refs/tags/${NEOFETCH_VERSION}.tar.gz"
NEOFETCH_TEMP="/tmp/neofetch"
NEOFETCH_INSTALL_PREFIX="$HOME/.local"
# Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}"
# Function to install neofetch from source
install_neofetch()
{
LC_ALL=C
mkdir -p "$NEOFETCH_TEMP" "$NEOFETCH_INSTALL_PREFIX"
curl -L "$NEOFETCH_URL" -o "$NEOFETCH_TEMP.tar.gz"
tar zxvf "$NEOFETCH_TEMP.tar.gz" --directory="$NEOFETCH_TEMP"
cd "$NEOFETCH_TEMP/neofetch-$NEOFETCH_VERSION" \
&& make PREFIX="${NEOFETCH_INSTALL_PREFIX}" install \
&& rm -rf "$NEOFETCH_TEMP*" \
&& msg_yay "neofetch installed!"
}
main()
{
if ! command -v neofetch &> /dev/null; then
install_neofetch
elif [ "$NEOFETCH_VERSION" != "$(neofetch --version | awk '{print $2}')" ]; then
install_neofetch
else
msg_done "neofetch v.${NEOFETCH_VERSION} already installed"
fi
}
main "$@"

View File

@@ -1,9 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Install npm packages globally. # @description Install npm packages globally.
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "$DOTFILES/config/shared.sh"
eval "$DOTFILES/config/shared.sh"
# Enable verbosity with VERBOSE=1 # Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}" VERBOSE="${VERBOSE:-0}"

View File

@@ -1,16 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# # @description Install ntfy
# Install ntfy
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
eval "$DOTFILES/config/shared.sh" source "$DOTFILES/config/shared.sh"
# Enable verbosity with VERBOSE=1 # Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}" VERBOSE="${VERBOSE:-0}"
# Check if ntfy is already installed # Check if ntfy is already installed
if x-have "ntfy"; then if x-have "ntfy"; then
msg "ntfy already installed" msgr done "ntfy already installed"
exit 0 exit 0
fi fi
@@ -23,7 +22,7 @@ case $(dfm check arch) in
NTFY_ARCH="macOS_all" NTFY_ARCH="macOS_all"
;; ;;
*) *)
msg_err "Unsupported OS" msgr err "Unsupported OS"
;; ;;
esac esac
@@ -51,7 +50,7 @@ install_ntfy()
main() main()
{ {
install_ntfy install_ntfy
msg "ntfy installation complete" msgr done "ntfy installation complete"
} }
main "$@" main "$@"

View File

@@ -1,33 +0,0 @@
#!/usr/bin/env bash
#
# Install oh-my-bash
#
# shellcheck source=shared.sh
source "${DOTFILES}/config/shared.sh"
set -euo pipefail
# Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}"
OSH="$HOME/.local/share/oh-my-bash"
# Function to install oh-my-bash
install_oh_my_bash()
{
if [ ! -d "$OSH" ]; then
[ -f "$HOME/.bashrc" ] && mv "$HOME/.bashrc" "$HOME/.bashrc.temp"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)" --unattended
[ -f "$HOME/.bashrc.temp" ] && mv "$HOME/.bashrc.temp" "$HOME/.bashrc"
msg "oh-my-bash installed to $OSH"
else
msg_done "oh-my-bash ($OSH) already installed"
fi
}
main()
{
install_oh_my_bash
}
main "$@"

View File

@@ -1,33 +0,0 @@
#!/usr/bin/env zsh
#
# Install oh-my-posh
#
# shellcheck source=shared.sh
source "${DOTFILES}/config/shared.sh"
# Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}"
msg "Starting to install oh-my-posh"
# Install oh-my-posh
install_oh_my_posh()
{
curl -s https://ohmyposh.dev/install.sh | bash -s -- -d ~/.local/bin
msg "oh-my-posh installed to ~/.local/bin"
}
# Initialize oh-my-posh
init_oh_my_posh()
{
eval "$(oh-my-posh init zsh --config $OHMYPOSH_CFG)"
msg "oh-my-posh initialized with config $OHMYPOSH_CFG"
}
main()
{
install_oh_my_posh
init_oh_my_posh
}
main "$@"

View File

@@ -1,21 +1,20 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Install python/pip packages. # @description Install python/pip packages.
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "${DOTFILES}/config/shared.sh" source "${DOTFILES}/config/shared.sh"
# Enable verbosity with VERBOSE=1 # Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}" VERBOSE="${VERBOSE:-0}"
msg "Starting to install pip packages" msgr run "Starting to install pip packages"
if ! command -v python3 &> /dev/null; then if ! command -v python3 &> /dev/null; then
msg_err "Could not find python3, something really weird is going on." msgr err "Could not find python3, something really weird is going on."
exit 1 exit 1
fi fi
msg_nested "Upgrading pip" msgr nested "Upgrading pip"
python3 -m pip install --user --upgrade pip python3 -m pip install --user --upgrade pip
packages=( packages=(
@@ -32,11 +31,11 @@ install_packages()
# Skip comments # Skip comments
if [[ ${pkg:0:1} == "#" ]]; then continue; fi if [[ ${pkg:0:1} == "#" ]]; then continue; fi
msg_nested "Installing pip package: $pkg" msgr nested "Installing pip package: $pkg"
python3 -m pip install --user --upgrade "$pkg" python3 -m pip install --user --upgrade "$pkg"
echo "" echo ""
done done
} }
install_packages install_packages
msg_yay "Run pip package installations" msgr run_done "Run pip package installations"

View File

@@ -1,6 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# # @description Install XCode CLI Tools with osascript magic.
# Install XCode CLI Tools with osascript magic.
# Ismo Vuorinen <https://github.com/ivuorinen> 2018 # Ismo Vuorinen <https://github.com/ivuorinen> 2018
# #
@@ -9,13 +8,13 @@ VERBOSE="${VERBOSE:-0}"
# Check if the script is running on macOS # Check if the script is running on macOS
if [ "$(uname)" != "Darwin" ]; then if [ "$(uname)" != "Darwin" ]; then
echo "Not a macOS system" msgr warn "Not a macOS system"
exit 0 exit 0
fi fi
# Check if xcode-select is available # Check if xcode-select is available
if ! command -v xcode-select &> /dev/null; then if ! command -v xcode-select &> /dev/null; then
msg_err "xcode-select could not be found, skipping" msgr err "xcode-select could not be found, skipping"
exit 0 exit 0
fi fi
@@ -46,7 +45,7 @@ prompt_xcode_install()
if [ "$XCODE_MESSAGE" = "button returned:OK" ]; then if [ "$XCODE_MESSAGE" = "button returned:OK" ]; then
xcode-select --install xcode-select --install
else else
echo "You have cancelled the installation, please rerun the installer." msgr warn "You have cancelled the installation, please rerun the installer."
exit 1 exit 1
fi fi
} }
@@ -57,7 +56,7 @@ main()
keep_alive_sudo keep_alive_sudo
if [ -x "$XCODE_SWIFT_PATH" ]; then if [ -x "$XCODE_SWIFT_PATH" ]; then
echo "You have swift from xcode-select. Continuing..." msgr run "You have swift from xcode-select. Continuing..."
else else
prompt_xcode_install prompt_xcode_install
fi fi

View File

@@ -1,6 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# # @description Install z
# Install z
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "${DOTFILES}/config/shared.sh" source "${DOTFILES}/config/shared.sh"
@@ -16,9 +15,9 @@ clone_z_repo()
if [ ! -d "$bin_path" ]; then if [ ! -d "$bin_path" ]; then
git clone "$git_path" "$bin_path" git clone "$git_path" "$bin_path"
msg "z installed at $bin_path" msgr run_done "z installed at $bin_path"
else else
msg "z ($bin_path/) already installed" msgr ok "z ($bin_path/) already installed"
fi fi
} }

View File

@@ -1,19 +1,19 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# # Shared bash functions and helpers.
# Shared bash functions and helpers
# that can be sourced to other scripts.
# Helper env variables. Use like this: VERBOSE=1 ./script.sh # Helper env variables. Use like this: VERBOSE=1 ./script.sh
: "${VERBOSE:=0}" : "${VERBOSE:=0}"
# Set variable that checks if the shared.sh script has been sourced only once # Set variable that checks if the shared.sh script has been
# If the script has been sourced more than once, the script not be sourced again # sourced only once If the script has been sourced more than once,
# the script not be sourced again.
[ -z "$SHARED_SCRIPTS_SOURCED" ] && { [ -z "$SHARED_SCRIPTS_SOURCED" ] && {
source "${DOTFILES}/config/shared.sh" source "${DOTFILES}/config/shared.sh"
msgr warn "(!) shared.sh not sourced" msgr warn "(!) shared.sh not sourced"
# Set variable that checks if the shared.sh script has been sourced only once # Set variable that checks if the shared.sh script has been
# sourced only once.
# shellcheck disable=SC2034 # shellcheck disable=SC2034
export SHARED_SCRIPTS_SOURCED=1 export SHARED_SCRIPTS_SOURCED=1
} }

1
tools/dotbot-asdf Submodule

Submodule tools/dotbot-asdf added at 1ff44a2848