mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-27 21:45:41 +00:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 099e6672c8 | |||
| e578e52aff | |||
|
|
0b5f80cb03 | ||
|
|
72f42835ff | ||
|
|
a949f0d4cf | ||
|
|
8b1e4462b3 | ||
|
|
055cf7ef2e | ||
|
|
8c2b3fb475 | ||
| 3fa1efe88d | |||
| 9cc81c4cbf | |||
| bba76843db | |||
| 9018d1a038 | |||
|
|
a8595e2e07 | ||
|
|
beb89e9490 | ||
|
|
cb381fe57d | ||
|
|
7be770a2af | ||
|
|
d16ce9ad0f | ||
| ab67f6be5a | |||
| efadbb4248 | |||
| ded4bf3bb3 | |||
|
|
62eb417935 | ||
| d22f9ece7d | |||
| 79be2d41bc | |||
|
|
743ebb0e9f |
8
.github/dependabot.yml
vendored
8
.github/dependabot.yml
vendored
@@ -1,8 +0,0 @@
|
||||
---
|
||||
version: 2
|
||||
updates:
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: 'github-actions'
|
||||
directory: '/'
|
||||
schedule:
|
||||
interval: 'weekly'
|
||||
2
.github/workflows/changelog.yml
vendored
2
.github/workflows/changelog.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
||||
permissions: write-all
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Create changelog text
|
||||
id: changelog
|
||||
|
||||
4
.github/workflows/linters.yml
vendored
4
.github/workflows/linters.yml
vendored
@@ -27,7 +27,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Yarn Lock Changes
|
||||
uses: Simek/yarn-lock-changes@61d1a0595070b79c1abdc8e1e5a5f5d98b18918c # v0.12.2
|
||||
@@ -35,4 +35,4 @@ jobs:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Run PR Lint
|
||||
uses: ivuorinen/actions/pr-lint@ff0ca4bc920c518b2ce2dc20c5e5a6e95f76dee0 # v2025.11.02
|
||||
uses: ivuorinen/actions/pr-lint@a52399cf74eac2b0963591ab2c6c8eb0f7f50b2d # v2025.12.02
|
||||
|
||||
4
.github/workflows/new-release.yml
vendored
4
.github/workflows/new-release.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
||||
version: ${{ steps.daily-version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- name: Create tag if necessary
|
||||
uses: fregante/daily-version-action@fb1a60b7c4daf1410cd755e360ebec3901e58588 # v2.1.3
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
|
||||
- name: Create release
|
||||
if: steps.daily-version.outputs.created
|
||||
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
|
||||
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tag_name: ${{ steps.daily-version.outputs.version }}
|
||||
|
||||
6
.github/workflows/pre-commit-autoupdate.yml
vendored
6
.github/workflows/pre-commit-autoupdate.yml
vendored
@@ -23,13 +23,13 @@ jobs:
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
|
||||
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
|
||||
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
|
||||
|
||||
- run: pip install pre-commit && pre-commit autoupdate
|
||||
|
||||
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
||||
- uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: update/pre-commit-hooks
|
||||
|
||||
2
.github/workflows/sync-labels.yml
vendored
2
.github/workflows/sync-labels.yml
vendored
@@ -29,4 +29,4 @@ jobs:
|
||||
issues: write
|
||||
|
||||
steps:
|
||||
- uses: ivuorinen/actions/sync-labels@ff0ca4bc920c518b2ce2dc20c5e5a6e95f76dee0 # v2025.11.02
|
||||
- uses: ivuorinen/actions/sync-labels@a52399cf74eac2b0963591ab2c6c8eb0f7f50b2d # v2025.12.02
|
||||
|
||||
2
.github/workflows/update-submodules.yml
vendored
2
.github/workflows/update-submodules.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 2
|
||||
|
||||
44
.gitignore
vendored
44
.gitignore
vendored
@@ -11,47 +11,49 @@
|
||||
.nfs*
|
||||
.scannerwork
|
||||
.vscode
|
||||
.yarn/
|
||||
!config/git/local.d/.gitkeep
|
||||
!config/nvim/spell/.gitkeep
|
||||
!config/zed/settings.json
|
||||
!ssh/local.d/.gitkeep
|
||||
**/exports-secret.fish
|
||||
**/exports.secret.fish
|
||||
*.tmp.*
|
||||
Brewfile.lock.json
|
||||
antidote_plugins.zsh
|
||||
config/alacritty/theme-active.toml
|
||||
config/cheat/cheatsheets/pure-bash-bible/*
|
||||
config/cheat/cheatsheets/tldr/*
|
||||
config/fish/completions/asdf.fish
|
||||
config/fish/fish_variables
|
||||
config/fish/fish_variables.*
|
||||
config/gh/hosts.yml
|
||||
config/git/credentials
|
||||
config/git/local.d/*
|
||||
config/gnupg/S.*
|
||||
config/gnupg/private-keys-v1.d
|
||||
config/gnupg/s
|
||||
config/iterm2/AppSupport
|
||||
config/karabiner/automatic_backups
|
||||
config/npm/npmrc
|
||||
config/nvim/lazy-lock.json
|
||||
config/nvim/spell/*
|
||||
!config/nvim/spell/.gitkeep
|
||||
config/git/local.d/*
|
||||
!config/git/local.d/.gitkeep
|
||||
config/op/plugins/gh.json
|
||||
config/op/plugins/used_items/gh.json
|
||||
config/vim/.netrwhist
|
||||
config/vim/extra/*
|
||||
config/vim/fzf
|
||||
config/vim/plugged/*
|
||||
config/zed/*
|
||||
!config/zed/settings.json
|
||||
config/zed/settings.json
|
||||
config/zsh/.zcompdump
|
||||
dependency-check-report.html
|
||||
iTermServer-*
|
||||
lazy-lock.json
|
||||
local/share/fonts/*
|
||||
local/bin/asdf/plugins/*
|
||||
local/bin/yabai
|
||||
local/man/yabai.1
|
||||
local/share/fonts/*
|
||||
lock
|
||||
node_modules
|
||||
ssh/local.d/*
|
||||
!ssh/local.d/.gitkeep
|
||||
config/fish/fish_variables
|
||||
**/exports.secret.fish
|
||||
**/exports-secret.fish
|
||||
config/fish/completions/asdf.fish
|
||||
config/vim/.netrwhist
|
||||
config/vim/extra/*
|
||||
config/gh/hosts.yml
|
||||
dependency-check-report.html
|
||||
local/bin/yabai
|
||||
local/man/yabai.1
|
||||
config/op/plugins/used_items/gh.json
|
||||
config/zed/settings.json
|
||||
*.tmp.*
|
||||
config/op/plugins/gh.json
|
||||
config/fish/fish_variables.*
|
||||
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -83,3 +83,6 @@
|
||||
[submodule "tmux/tmux-resurrect"]
|
||||
path = config/tmux/plugins/tmux-resurrect
|
||||
url = https://github.com/tmux-plugins/tmux-resurrect.git
|
||||
[submodule "tmux/catppuccin"]
|
||||
path = config/tmux/plugins/catppuccin
|
||||
url = https://github.com/catppuccin/tmux.git
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.25.3
|
||||
1.25.4
|
||||
|
||||
@@ -24,7 +24,7 @@ repos:
|
||||
args: [--autofix, --no-sort-keys]
|
||||
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: v0.45.0
|
||||
rev: v0.46.0
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
args: [-c, .markdownlint.json, --fix]
|
||||
@@ -45,12 +45,12 @@ repos:
|
||||
- id: shfmt
|
||||
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.8
|
||||
rev: v1.7.9
|
||||
hooks:
|
||||
- id: actionlint
|
||||
|
||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||
rev: 42.1.3
|
||||
rev: 42.27.1
|
||||
hooks:
|
||||
- id: renovate-config-validator
|
||||
|
||||
|
||||
1
.yarnrc.yml
Normal file
1
.yarnrc.yml
Normal file
@@ -0,0 +1 @@
|
||||
nodeLinker: node-modules
|
||||
@@ -42,6 +42,8 @@ git submodule add --name tmux/tmux-current-pane-hostname \
|
||||
-f https://github.com/soyuka/tmux-current-pane-hostname.git config/tmux/plugins/tmux-current-pane-hostname
|
||||
git submodule add --name tmux/tmux-dark-notify \
|
||||
-f https://github.com/ivuorinen/tmux-dark-notify.git config/tmux/plugins/tmux-dark-notify
|
||||
git submodule add --name tmux/catppuccin \
|
||||
-f https://github.com/catppuccin/tmux.git config/tmux/plugins/catppuccin
|
||||
|
||||
# Takes submodules and sets them to ignore all changes
|
||||
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
||||
|
||||
15
base/hammerspoon/.luacheckrc
Normal file
15
base/hammerspoon/.luacheckrc
Normal file
@@ -0,0 +1,15 @@
|
||||
--
|
||||
-- These globals can be set and accessed:
|
||||
--
|
||||
globals = {
|
||||
"rawrequire",
|
||||
}
|
||||
|
||||
--
|
||||
-- These globals can only be accessed:
|
||||
--
|
||||
read_globals = {
|
||||
"hs",
|
||||
"ls",
|
||||
"spoon",
|
||||
}
|
||||
1010
base/hammerspoon/generate-hammerspoon-types.py
Executable file
1010
base/hammerspoon/generate-hammerspoon-types.py
Executable file
File diff suppressed because it is too large
Load Diff
17863
base/hammerspoon/hammerspoon.types.lua
Normal file
17863
base/hammerspoon/hammerspoon.types.lua
Normal file
File diff suppressed because it is too large
Load Diff
204
base/hammerspoon/init.lua
Normal file
204
base/hammerspoon/init.lua
Normal file
@@ -0,0 +1,204 @@
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ Hammerspoon config file │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
-- init.lua — Pure Hammerspoon window controls
|
||||
-- Converted from skhdrc logic; expanded with per‑display grids,
|
||||
-- app rules with groups, wrap‑around focus, cross‑display moves,
|
||||
-- and overlay/notification toggles.
|
||||
-- Author: Ismo Vuorinen (ivuorinen)
|
||||
|
||||
--------------------------------------------------
|
||||
-- Caps Lock as Meh key (Shift+Control+Alt)
|
||||
--------------------------------------------------
|
||||
-- Prerequisites:
|
||||
-- 1. Go to System Settings → Keyboard → Keyboard Shortcuts → Modifier Keys
|
||||
-- 2. Set Caps Lock to "No Action" (you mentioned you already did this)
|
||||
-- 3. Install Karabiner-Elements: brew install --cask karabiner-elements
|
||||
-- 4. Open Karabiner-Elements, go to "Simple Modifications"
|
||||
-- 5. Add: caps_lock → f18
|
||||
--
|
||||
-- Then you can use F18 as your Meh key in Hammerspoon:
|
||||
local f18 = hs.hotkey.modal.new()
|
||||
|
||||
-- Capture F18 key press/release
|
||||
hs.hotkey.bind({}, 'F18', function()
|
||||
f18:enter()
|
||||
end, function()
|
||||
f18:exit()
|
||||
end)
|
||||
|
||||
-- Meh (F18/Caps Lock) key bindings for window management
|
||||
-- These provide quick access to common window operations
|
||||
|
||||
-- Helper function to get focused window
|
||||
local function W()
|
||||
return hs.window.focusedWindow()
|
||||
end
|
||||
|
||||
-- Window positioning: thirds (U/I/O)
|
||||
f18:bind({}, 'u', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit({ x = 0, y = 0, w = 1 / 3, h = 1 }, 0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'i', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit({ x = 1 / 3, y = 0, w = 1 / 3, h = 1 }, 0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'o', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit({ x = 2 / 3, y = 0, w = 1 / 3, h = 1 }, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Window positioning: half width, full height (Y)
|
||||
f18:bind({}, 'y', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit({ x = 0, y = 0, w = 0.5, h = 1 }, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Cycle through all windows (H/L)
|
||||
-- We need to maintain state to properly cycle through all windows
|
||||
local windowCycleIndex = 1
|
||||
local windowCycleList = {}
|
||||
local lastCycleTime = 0
|
||||
|
||||
local function getWindowCycleList()
|
||||
local currentTime = hs.timer.secondsSinceEpoch()
|
||||
-- Reset if more than 2 seconds have passed since last cycle
|
||||
if currentTime - lastCycleTime > 2 then
|
||||
windowCycleIndex = 1
|
||||
windowCycleList = hs.window.orderedWindows()
|
||||
end
|
||||
lastCycleTime = currentTime
|
||||
return windowCycleList
|
||||
end
|
||||
|
||||
f18:bind({}, 'h', function()
|
||||
local windows = getWindowCycleList()
|
||||
if #windows <= 1 then
|
||||
return
|
||||
end
|
||||
|
||||
-- Cycle backward
|
||||
windowCycleIndex = windowCycleIndex - 1
|
||||
if windowCycleIndex < 1 then
|
||||
windowCycleIndex = #windows
|
||||
end
|
||||
|
||||
windows[windowCycleIndex]:focus()
|
||||
end)
|
||||
|
||||
f18:bind({}, 'l', function()
|
||||
local windows = getWindowCycleList()
|
||||
if #windows <= 1 then
|
||||
return
|
||||
end
|
||||
|
||||
-- Cycle forward
|
||||
windowCycleIndex = windowCycleIndex + 1
|
||||
if windowCycleIndex > #windows then
|
||||
windowCycleIndex = 1
|
||||
end
|
||||
|
||||
windows[windowCycleIndex]:focus()
|
||||
end)
|
||||
|
||||
-- Window sizing: maximize (Up/J) and center (Down)
|
||||
f18:bind({}, 'up', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:maximize(0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'j', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:maximize(0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'down', function()
|
||||
local w = W()
|
||||
if not w then
|
||||
return
|
||||
end
|
||||
local f = w:frame()
|
||||
local sf = w:screen():frame()
|
||||
if f.w < sf.w * 0.95 then
|
||||
w:maximize(0)
|
||||
else
|
||||
local ww, hh = math.floor(sf.w * 0.5), math.floor(sf.h * 0.9)
|
||||
local xx = sf.x + math.floor((sf.w - ww) / 2)
|
||||
local yy = sf.y + math.floor((sf.h - hh) / 2)
|
||||
w:setFrame({ x = xx, y = yy, w = ww, h = hh }, 0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'k', function()
|
||||
local w = W()
|
||||
if w then
|
||||
local sf = w:screen():frame()
|
||||
local ww, hh = math.floor(sf.w * 0.9), math.floor(sf.h * 0.9)
|
||||
local xx = sf.x + math.floor((sf.w - ww) / 2)
|
||||
local yy = sf.y + math.floor((sf.h - hh) / 2)
|
||||
w:setFrame({ x = xx, y = yy, w = ww, h = hh }, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Move to next/previous screen (. and ,)
|
||||
f18:bind({}, '.', function()
|
||||
local w = W()
|
||||
if w then
|
||||
local s = w:screen()
|
||||
local ns = s:toEast() or s:toWest()
|
||||
if ns then
|
||||
w:moveToScreen(ns, true, true, 0)
|
||||
end
|
||||
end
|
||||
end)
|
||||
f18:bind({}, ',', function()
|
||||
local w = W()
|
||||
if w then
|
||||
local s = w:screen()
|
||||
local ps = s:toWest() or s:toEast()
|
||||
if ps then
|
||||
w:moveToScreen(ps, true, true, 0)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
-- Window positioning: halves (Left/Right arrows)
|
||||
f18:bind({}, 'left', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit(hs.layout.left50, 0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'right', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit(hs.layout.right50, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Paste from clipboard with Meh + V
|
||||
f18:bind({}, 'v', function()
|
||||
hs.eventtap.keyStrokes(hs.pasteboard.getContents())
|
||||
end)
|
||||
|
||||
-- Paste 1Password secret with Meh + P
|
||||
f18:bind({}, 'p', function()
|
||||
local output, status = hs.execute('op read "op://Svea/3hzhctmvovbwlgulv7mgy25rf4/login-input"', true)
|
||||
if status then
|
||||
hs.eventtap.keyStrokes(output:gsub('%s+$', '')) -- trim trailing whitespace
|
||||
else
|
||||
hs.alert.show('1Password CLI error')
|
||||
end
|
||||
end)
|
||||
|
||||
-- require 'generate_emmylua'
|
||||
30
config/fish/themes/Catppuccin Latte.theme
Normal file
30
config/fish/themes/Catppuccin Latte.theme
Normal file
@@ -0,0 +1,30 @@
|
||||
# name: 'Catppuccin Latte'
|
||||
# url: 'https://github.com/catppuccin/fish'
|
||||
# preferred_background: eff1f5
|
||||
|
||||
fish_color_normal 4c4f69
|
||||
fish_color_command 1e66f5
|
||||
fish_color_param dd7878
|
||||
fish_color_keyword d20f39
|
||||
fish_color_quote 40a02b
|
||||
fish_color_redirection ea76cb
|
||||
fish_color_end fe640b
|
||||
fish_color_comment 8c8fa1
|
||||
fish_color_error d20f39
|
||||
fish_color_gray 9ca0b0
|
||||
fish_color_selection --background=ccd0da
|
||||
fish_color_search_match --background=ccd0da
|
||||
fish_color_option 40a02b
|
||||
fish_color_operator ea76cb
|
||||
fish_color_escape e64553
|
||||
fish_color_autosuggestion 9ca0b0
|
||||
fish_color_cancel d20f39
|
||||
fish_color_cwd df8e1d
|
||||
fish_color_user 179299
|
||||
fish_color_host 1e66f5
|
||||
fish_color_host_remote 40a02b
|
||||
fish_color_status d20f39
|
||||
fish_pager_color_progress 9ca0b0
|
||||
fish_pager_color_prefix ea76cb
|
||||
fish_pager_color_completion 4c4f69
|
||||
fish_pager_color_description 9ca0b0
|
||||
30
config/fish/themes/Catppuccin Mocha.theme
Normal file
30
config/fish/themes/Catppuccin Mocha.theme
Normal file
@@ -0,0 +1,30 @@
|
||||
# name: 'Catppuccin Mocha'
|
||||
# url: 'https://github.com/catppuccin/fish'
|
||||
# preferred_background: 1e1e2e
|
||||
|
||||
fish_color_normal cdd6f4
|
||||
fish_color_command 89b4fa
|
||||
fish_color_param f2cdcd
|
||||
fish_color_keyword f38ba8
|
||||
fish_color_quote a6e3a1
|
||||
fish_color_redirection f5c2e7
|
||||
fish_color_end fab387
|
||||
fish_color_comment 7f849c
|
||||
fish_color_error f38ba8
|
||||
fish_color_gray 6c7086
|
||||
fish_color_selection --background=313244
|
||||
fish_color_search_match --background=313244
|
||||
fish_color_option a6e3a1
|
||||
fish_color_operator f5c2e7
|
||||
fish_color_escape eba0ac
|
||||
fish_color_autosuggestion 6c7086
|
||||
fish_color_cancel f38ba8
|
||||
fish_color_cwd f9e2af
|
||||
fish_color_user 94e2d5
|
||||
fish_color_host 89b4fa
|
||||
fish_color_host_remote a6e3a1
|
||||
fish_color_status f38ba8
|
||||
fish_pager_color_progress 6c7086
|
||||
fish_pager_color_prefix f5c2e7
|
||||
fish_pager_color_completion cdd6f4
|
||||
fish_pager_color_description 6c7086
|
||||
@@ -38,6 +38,8 @@ brew "openssl@3"
|
||||
brew "cryptography"
|
||||
# YAML Parser
|
||||
brew "libyaml"
|
||||
# Display directories as trees (with optional color/HTML output)
|
||||
brew "tree"
|
||||
# Automate deployment, configuration, and upgrading
|
||||
brew "ansible"
|
||||
# Checks ansible playbooks for practices and behaviour
|
||||
@@ -104,7 +106,7 @@ brew "glib"
|
||||
brew "cargo-binstall"
|
||||
# Multi-platform support library with a focus on asynchronous I/O
|
||||
brew "libuv"
|
||||
# Platform built on V8 to build network applications
|
||||
# Open-source, cross-platform JavaScript runtime environment
|
||||
brew "node", link: false
|
||||
# CLI tool for analyzing Claude Code usage from local JSONL files
|
||||
brew "ccusage"
|
||||
@@ -230,6 +232,8 @@ brew "luarocks"
|
||||
brew "lzip"
|
||||
# Swiss Army Knife for macOS
|
||||
brew "m-cli"
|
||||
# Cross platform, open source .NET development framework
|
||||
brew "mono"
|
||||
# Collection of tools that nobody wrote when UNIX was young
|
||||
brew "moreutils"
|
||||
# NCurses Disk Usage
|
||||
@@ -290,8 +294,8 @@ brew "tflint"
|
||||
brew "tfsec"
|
||||
# Terminal multiplexer
|
||||
brew "tmux"
|
||||
# Display directories as trees (with optional color/HTML output)
|
||||
brew "tree"
|
||||
# Extremely fast Python package installer and resolver, written in Rust
|
||||
brew "uv"
|
||||
# Tool for creating isolated virtual python environments
|
||||
brew "virtualenv"
|
||||
# Command-line interface to the WakaTime api
|
||||
@@ -349,13 +353,18 @@ cask "fantastical"
|
||||
cask "font-jetbrains-mono"
|
||||
cask "font-jetbrains-mono-nerd-font"
|
||||
cask "font-monaspace"
|
||||
cask "font-monaspace-nf"
|
||||
cask "font-open-sans"
|
||||
# GIT client
|
||||
cask "fork"
|
||||
# Desktop automation application
|
||||
cask "hammerspoon"
|
||||
# HTTP and GraphQL Client
|
||||
cask "insomnia"
|
||||
# JetBrains tools manager
|
||||
cask "jetbrains-toolbox"
|
||||
# Keyboard customiser
|
||||
cask "karabiner-elements"
|
||||
# End-to-end encryption software
|
||||
cask "keybase"
|
||||
# Kubernetes IDE
|
||||
|
||||
68
config/karabiner/karabiner.json
Normal file
68
config/karabiner/karabiner.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"profiles": [
|
||||
{
|
||||
"complex_modifications": {
|
||||
"rules": [
|
||||
{
|
||||
"description": "Change right_command+hjkl to arrow keys",
|
||||
"manipulators": [
|
||||
{
|
||||
"from": {
|
||||
"key_code": "h",
|
||||
"modifiers": {
|
||||
"mandatory": ["right_command"],
|
||||
"optional": ["any"]
|
||||
}
|
||||
},
|
||||
"to": [{ "key_code": "left_arrow" }],
|
||||
"type": "basic"
|
||||
},
|
||||
{
|
||||
"from": {
|
||||
"key_code": "j",
|
||||
"modifiers": {
|
||||
"mandatory": ["right_command"],
|
||||
"optional": ["any"]
|
||||
}
|
||||
},
|
||||
"to": [{ "key_code": "down_arrow" }],
|
||||
"type": "basic"
|
||||
},
|
||||
{
|
||||
"from": {
|
||||
"key_code": "k",
|
||||
"modifiers": {
|
||||
"mandatory": ["right_command"],
|
||||
"optional": ["any"]
|
||||
}
|
||||
},
|
||||
"to": [{ "key_code": "up_arrow" }],
|
||||
"type": "basic"
|
||||
},
|
||||
{
|
||||
"from": {
|
||||
"key_code": "l",
|
||||
"modifiers": {
|
||||
"mandatory": ["right_command"],
|
||||
"optional": ["any"]
|
||||
}
|
||||
},
|
||||
"to": [{ "key_code": "right_arrow" }],
|
||||
"type": "basic"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Default profile",
|
||||
"selected": true,
|
||||
"simple_modifications": [
|
||||
{
|
||||
"from": { "key_code": "caps_lock" },
|
||||
"to": [{ "key_code": "f18" }]
|
||||
}
|
||||
],
|
||||
"virtual_hid_keyboard": { "keyboard_type_v2": "iso" }
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,31 +1,112 @@
|
||||
return {
|
||||
{
|
||||
'neanias/everforest-nvim',
|
||||
version = false,
|
||||
lazy = false,
|
||||
priority = 1000, -- make sure to load this before all the other start plugins
|
||||
'catppuccin/nvim',
|
||||
name = 'catppuccin',
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require('everforest').setup {
|
||||
background = 'medium', -- hard, medium, soft
|
||||
transparent_background_level = 2, -- 0, 1, 2
|
||||
sign_column_background = 'grey', -- none, grey
|
||||
disable_italic_comments = false,
|
||||
diagnostic_virtual_text = 'coloured', -- coloured, gray, underline, none
|
||||
diagnostic_line_highlight = true,
|
||||
diagnostic_line_highlight_background = 'dimmed', -- dimmed, normal
|
||||
diagnostic_text_highlight = true,
|
||||
ui_contrast = 'low', -- high, low
|
||||
italics = true,
|
||||
spell_foreground = true,
|
||||
show_eob = true,
|
||||
colours_override = function() end,
|
||||
float_style = 'dim',
|
||||
on_highlights = function(_, _) end,
|
||||
dim_inactive_windows = true,
|
||||
inlay_hints_background = 'dimmed',
|
||||
require('catppuccin').setup {
|
||||
flavour = 'auto', -- latte, frappe, macchiato, mocha
|
||||
background = { -- :h background
|
||||
light = 'latte',
|
||||
dark = 'mocha',
|
||||
},
|
||||
transparent_background = false,
|
||||
float = {
|
||||
transparent = true, -- enable transparent floating windows
|
||||
solid = false, -- use solid styling for floating windows, see |winborder|
|
||||
},
|
||||
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
|
||||
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`)
|
||||
dim_inactive = {
|
||||
enabled = true, -- dims the background color of inactive window
|
||||
shade = 'dark',
|
||||
percentage = 0.15, -- percentage of the shade to apply to the inactive window
|
||||
},
|
||||
no_italic = false, -- Force no italic
|
||||
no_bold = false, -- Force no bold
|
||||
no_underline = false, -- Force no underline
|
||||
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
|
||||
comments = { 'italic' }, -- Change the style of comments
|
||||
conditionals = { 'italic' },
|
||||
loops = {},
|
||||
functions = {},
|
||||
keywords = {},
|
||||
strings = {},
|
||||
variables = {},
|
||||
numbers = {},
|
||||
booleans = {},
|
||||
properties = {},
|
||||
types = {},
|
||||
operators = {},
|
||||
-- miscs = {}, -- Uncomment to turn off hard-coded styles
|
||||
},
|
||||
lsp_styles = { -- Handles the style of specific lsp hl groups (see `:h lsp-highlight`).
|
||||
virtual_text = {
|
||||
errors = { 'italic' },
|
||||
hints = { 'italic' },
|
||||
warnings = { 'italic' },
|
||||
information = { 'italic' },
|
||||
ok = { 'italic' },
|
||||
},
|
||||
underlines = {
|
||||
errors = { 'underline' },
|
||||
hints = { 'underline' },
|
||||
warnings = { 'underline' },
|
||||
information = { 'underline' },
|
||||
ok = { 'underline' },
|
||||
},
|
||||
inlay_hints = {
|
||||
background = true,
|
||||
},
|
||||
},
|
||||
color_overrides = {},
|
||||
custom_highlights = {},
|
||||
default_integrations = true,
|
||||
auto_integrations = false,
|
||||
integrations = {
|
||||
cmp = true,
|
||||
gitsigns = true,
|
||||
nvimtree = true,
|
||||
notify = false,
|
||||
mini = {
|
||||
enabled = true,
|
||||
indentscope_color = '',
|
||||
},
|
||||
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
|
||||
},
|
||||
}
|
||||
|
||||
-- setup must be called before loading
|
||||
vim.cmd.colorscheme 'catppuccin'
|
||||
end,
|
||||
},
|
||||
-- {
|
||||
-- 'neanias/everforest-nvim',
|
||||
-- version = false,
|
||||
-- lazy = false,
|
||||
-- priority = 1000, -- make sure to load this before all the other start plugins
|
||||
-- config = function()
|
||||
-- require('everforest').setup {
|
||||
-- background = 'medium', -- hard, medium, soft
|
||||
-- transparent_background_level = 2, -- 0, 1, 2
|
||||
-- sign_column_background = 'grey', -- none, grey
|
||||
-- disable_italic_comments = false,
|
||||
-- diagnostic_virtual_text = 'coloured', -- coloured, gray, underline, none
|
||||
-- diagnostic_line_highlight = true,
|
||||
-- diagnostic_line_highlight_background = 'dimmed', -- dimmed, normal
|
||||
-- diagnostic_text_highlight = true,
|
||||
-- ui_contrast = 'low', -- high, low
|
||||
-- italics = true,
|
||||
-- spell_foreground = true,
|
||||
-- show_eob = true,
|
||||
-- colours_override = function() end,
|
||||
-- float_style = 'dim',
|
||||
-- on_highlights = function(_, _) end,
|
||||
-- dim_inactive_windows = true,
|
||||
-- inlay_hints_background = 'dimmed',
|
||||
-- }
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- Automatic dark mode
|
||||
-- https://github.com/f-person/auto-dark-mode.nvim
|
||||
@@ -60,37 +141,37 @@ return {
|
||||
|
||||
-- Remove all background colors to make nvim transparent
|
||||
-- https://github.com/xiyaowong/nvim-transparent
|
||||
{
|
||||
'xiyaowong/nvim-transparent',
|
||||
lazy = false,
|
||||
enabled = true,
|
||||
config = function()
|
||||
local t = require 'transparent'
|
||||
t.setup {
|
||||
extra_groups = {
|
||||
'NormalNC',
|
||||
'NormalFloat',
|
||||
'EndOfBuffer',
|
||||
'FloatTitle',
|
||||
'FloatBorder',
|
||||
'NotifyDEBUGBorder',
|
||||
'NotifyERRORBorder',
|
||||
'NotifyINFOBorder',
|
||||
'NotifyINFOBorder73',
|
||||
'NotifyINFOBorder75',
|
||||
'NotifyINFOBorder101',
|
||||
'NotifyTRACEBorder',
|
||||
'NotifyWARNBorder',
|
||||
'NotifyBackground',
|
||||
'TelescopeBorder',
|
||||
'TelescopePromptBorder',
|
||||
'TelescopeResultsBorder',
|
||||
'TelescopePreviewBorder',
|
||||
},
|
||||
}
|
||||
t.clear_prefix 'NeoTree'
|
||||
end,
|
||||
},
|
||||
-- {
|
||||
-- 'xiyaowong/nvim-transparent',
|
||||
-- lazy = false,
|
||||
-- enabled = true,
|
||||
-- config = function()
|
||||
-- local t = require 'transparent'
|
||||
-- t.setup {
|
||||
-- extra_groups = {
|
||||
-- 'NormalNC',
|
||||
-- 'NormalFloat',
|
||||
-- 'EndOfBuffer',
|
||||
-- 'FloatTitle',
|
||||
-- 'FloatBorder',
|
||||
-- 'NotifyDEBUGBorder',
|
||||
-- 'NotifyERRORBorder',
|
||||
-- 'NotifyINFOBorder',
|
||||
-- 'NotifyINFOBorder73',
|
||||
-- 'NotifyINFOBorder75',
|
||||
-- 'NotifyINFOBorder101',
|
||||
-- 'NotifyTRACEBorder',
|
||||
-- 'NotifyWARNBorder',
|
||||
-- 'NotifyBackground',
|
||||
-- 'TelescopeBorder',
|
||||
-- 'TelescopePromptBorder',
|
||||
-- 'TelescopeResultsBorder',
|
||||
-- 'TelescopePreviewBorder',
|
||||
-- },
|
||||
-- }
|
||||
-- t.clear_prefix 'NeoTree'
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- Display a character as the colorcolumn
|
||||
-- https://github.com/lukas-reineke/virt-column.nvim
|
||||
|
||||
1
config/tmux/plugins/catppuccin
Submodule
1
config/tmux/plugins/catppuccin
Submodule
Submodule config/tmux/plugins/catppuccin added at 38932bddfc
18
config/tmux/sesh-tmux.fish
Executable file
18
config/tmux/sesh-tmux.fish
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env fish
|
||||
|
||||
set selection (sesh list --icons | fzf-tmux -p 80%,70% \
|
||||
--no-sort --ansi --border-label ' sesh ' --prompt '⚡ ' \
|
||||
--header ' ^a all ^t tmux ^g configs ^x zoxide ^d tmux kill ^f find' \
|
||||
--bind 'tab:down,btab:up' \
|
||||
--bind 'ctrl-a:change-prompt(⚡ )+reload(sesh list --icons)' \
|
||||
--bind 'ctrl-t:change-prompt(🪟 )+reload(sesh list -t --icons)' \
|
||||
--bind 'ctrl-g:change-prompt(⚙️ )+reload(sesh list -c --icons)' \
|
||||
--bind 'ctrl-x:change-prompt(📁 )+reload(sesh list -z --icons)' \
|
||||
--bind 'ctrl-f:change-prompt(🔎 )+reload(fd -H -d 2 -t d -E .Trash . ~)' \
|
||||
--bind 'ctrl-d:execute(tmux kill-session -t {2..})+change-prompt(⚡ )+reload(sesh list --icons)' \
|
||||
--preview-window 'right:55%' \
|
||||
--preview 'sesh preview {}')
|
||||
|
||||
if test -n "$selection"
|
||||
sesh connect "$selection"
|
||||
end
|
||||
@@ -1,46 +1,3 @@
|
||||
# Everforest dark theme for tmux
|
||||
# Generated from template - do not edit manually
|
||||
set -g @catppuccin_flavor "mocha"
|
||||
set -g @catppuccin_window_status_style "basic"
|
||||
|
||||
# Enable proper color support
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -as terminal-features ",*:RGB"
|
||||
|
||||
set -g pane-border-style "bg=default,fg=#859289"
|
||||
set -g pane-active-border-style "bg=default,fg=#a7c080"
|
||||
|
||||
# Window tabs
|
||||
set -g window-style "bg=default,fg=default,dim"
|
||||
set -g window-status-style "bg=default,fg=default,dim"
|
||||
set -g window-status-current-style "bg=default,fg=#d3c6aa"
|
||||
set -g window-status-activity-style "bg=default,fg=#dbbc7f,nodim"
|
||||
set -g window-status-bell-style "bg=default,fg=yellow,nodim"
|
||||
set -g window-status-last-style "bg=default,fg=#a7c080"
|
||||
set -g window-status-format " #I:#W "
|
||||
|
||||
# Messages
|
||||
set -g message-style "bg=default,fg=#d3c6aa"
|
||||
set -g message-command-style "bg=default,fg=#d3c6aa"
|
||||
|
||||
# Status bar
|
||||
set -g status-style "bg=default,fg=default"
|
||||
set -g status-left " #[default]"
|
||||
set -g status-right " #[fg=#a7c080]#S@#[fg=#859289]#h #[fg=#7fbbb3]%H:%M #[fg=#dbbc7f]%d.%m "
|
||||
set -g status-left-style "bg=default,fg=white"
|
||||
set -g status-right-style "bg=default,fg=white"
|
||||
|
||||
set -g menu-style "bg=default,fg=white"
|
||||
set -g menu-selected-style "bg=default,fg=#a7c080"
|
||||
set -g menu-border-style "fg=#a7c080"
|
||||
set -g menu-border-lines "single"
|
||||
|
||||
set -g popup-style "bg=default,fg=white"
|
||||
set -g popup-border-style "fg=#a7c080"
|
||||
set -g popup-border-lines "single"
|
||||
|
||||
set -g display-panes-colour "blue"
|
||||
set -g display-panes-active-colour "red"
|
||||
set -g display-panes-time 1000 # milliseconds
|
||||
|
||||
set -g pane-border-indicators "arrows"
|
||||
set -g pane-border-lines "single"
|
||||
set -g clock-mode-style "24"
|
||||
|
||||
@@ -1,6 +1,2 @@
|
||||
set-option -g status-style 'fg=#4c4f69,bg=default'
|
||||
set-window-option -g window-status-style 'fg=#4c4f69,bg=default dim'
|
||||
set-window-option -g window-status-current-style 'fg=#8839ef,bg=default'
|
||||
set-window-option -g window-status-activity-style 'fg=#4c4f69,bg=default nodim'
|
||||
set-window-option -g window-status-bell-style 'fg=#4c4f69,bg=default'
|
||||
set -g message-style 'fg=#8839ef bg=#e6e9ef bold' # fg magenta, bg black
|
||||
set -g @catppuccin_flavor "latte"
|
||||
set -g @catppuccin_window_status_style "basic"
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||
set -ag terminal-features 'xterm-256color:RGB'
|
||||
|
||||
# Enable proper color support
|
||||
set -as terminal-features ",*:RGB"
|
||||
|
||||
set -g default-terminal "tmux-256color" # Set default terminal to 256 colors
|
||||
set -g detach-on-destroy off # don't detach tmux when killing a session
|
||||
set -g display-time 0 # Hide clock
|
||||
@@ -51,17 +54,17 @@ if-shell '[ "$DEBUG" = "1" ]' 'set -g debug-file ~/.cache/tmux-debug.log'
|
||||
# │ Theme │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
|
||||
set -g pane-active-border-style "bg=default,fg=#7aa2f7"
|
||||
set -g pane-border-style "bg=default,fg=#31748f"
|
||||
set -g status-style "bg=default"
|
||||
set -g status-justify "left"
|
||||
set -g status-left ''
|
||||
set -g status-left-length "0"
|
||||
set -g status-position "bottom"
|
||||
set -g status-right "#S@#h #{tmux_mode_indicator}"
|
||||
set -g status-right-length "30"
|
||||
set -g status-right-length "50"
|
||||
set -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
||||
set -g window-status-format ' #I:#W '
|
||||
set -g @catppuccin_status_background 'none'
|
||||
set -g @catppuccin_window_flags 'icon'
|
||||
set -g @catppuccin_status_connect_separator 'no'
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Bindings │
|
||||
@@ -101,32 +104,16 @@ unbind p
|
||||
bind p paste-buffer
|
||||
|
||||
# tms bindings
|
||||
bind -N "tms" t display-popup -E "tms"
|
||||
bind -N "tms" T display-popup -E "tms"
|
||||
bind -N "tms windows" C-w display-popup -E "tms windows"
|
||||
bind -N "tms switch" C-s display-popup -E "tms switch"
|
||||
bind -N "tms refresh" C-r display-popup -E "tms refresh"
|
||||
|
||||
# global sessions
|
||||
# bind-key "K" display-popup -h 90% -w 50% -E "sesh ui"
|
||||
bind-key "K" run-shell "sesh connect \"$(
|
||||
sesh list --icons --hide-duplicates | fzf-tmux -p 100%,100% --no-border \
|
||||
--list-border \
|
||||
--no-sort --prompt '⚡ ' \
|
||||
--input-border \
|
||||
--header-border \
|
||||
--bind 'tab:down,btab:up' \
|
||||
--bind 'ctrl-b:abort' \
|
||||
--bind 'ctrl-a:change-prompt(⚡ )+reload(sesh list --icons)' \
|
||||
--bind 'ctrl-t:change-prompt( )+reload(sesh list -t --icons)' \
|
||||
--bind 'ctrl-g:change-prompt(⚙️ )+reload(sesh list -c --icons)' \
|
||||
--bind 'ctrl-x:change-prompt(📁 )+reload(sesh list -z --icons)' \
|
||||
--bind 'ctrl-f:change-prompt(🔎 )+reload(fd -H -d 2 -t d -E .Trash . ~)' \
|
||||
--bind 'ctrl-d:execute(tmux kill-session -t {2..})+change-prompt(⚡ )+reload(sesh list --icons)' \
|
||||
--preview-window 'right:70%' \
|
||||
--preview 'sesh preview {}' \
|
||||
)\""
|
||||
|
||||
bind-key "N" display-popup -E "sesh ui"
|
||||
bind -N "sesh selection" t run-shell "$HOME/.dotfiles/config/tmux/sesh-tmux.fish"
|
||||
bind -N "last-session (via sesh) " L run-shell "sesh last"
|
||||
bind -N "sesh ui" N display-popup -E "sesh ui"
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Plugins │
|
||||
@@ -142,7 +129,7 @@ bind-key "N" display-popup -E "sesh ui"
|
||||
## A plugin to name your tmux windows smartly.
|
||||
## https://github.com/ofirgall/tmux-window-name
|
||||
### Maximum name length of a window
|
||||
set -g @tmux_window_name_max_name_len "20"
|
||||
set -g @tmux_window_name_max_name_len "25"
|
||||
### Replace $HOME with ~ in window names
|
||||
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'antidote', 'direnv', 'md5']" # Default is []
|
||||
@@ -189,5 +176,6 @@ run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-current-pane-hostname/curren
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-fzf-url/fzf-url.tmux"
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-resurrect/resurrect.tmux"
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-continuum/continuum.tmux"
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/catppuccin/catppuccin.tmux"
|
||||
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-dark-notify/main.tmux"
|
||||
|
||||
@@ -66,9 +66,11 @@ config.scrollback_lines = 3000
|
||||
-- Function to detect the theme based on appearance
|
||||
function Scheme_for_appearance(appearance)
|
||||
if appearance:find 'Dark' then
|
||||
return 'Everforest Dark (Medium)'
|
||||
return 'Catppuccin Mocha'
|
||||
-- return 'Everforest Dark (Medium)'
|
||||
else
|
||||
return 'Everforest Light (Medium)'
|
||||
return 'Catppuccin Latte'
|
||||
-- return 'Everforest Light (Medium)'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -33,8 +33,10 @@ Leader: `<ctrl><space>`
|
||||
? List key bindings
|
||||
D Choose and detach a client from a list
|
||||
E Spread panes out evenly
|
||||
L Switch to the last client
|
||||
L last-session (via sesh)
|
||||
M Clear the marked pane
|
||||
N sesh ui
|
||||
T tms
|
||||
] Paste the most recent paste buffer
|
||||
c Create a new window
|
||||
d Detach the current client
|
||||
@@ -46,7 +48,7 @@ Leader: `<ctrl><space>`
|
||||
o Select the next pane
|
||||
q Display pane numbers
|
||||
s Choose a session from a list
|
||||
t tms
|
||||
t sesh selection
|
||||
w Choose a window from a list
|
||||
x Kill the active pane
|
||||
z Zoom the active pane
|
||||
@@ -74,8 +76,6 @@ Leader: `<ctrl><space>`
|
||||
M-Left Resize the pane left by 5
|
||||
M-Right Resize the pane right by 5
|
||||
C-o Rotate through the panes
|
||||
C-r tms refresh
|
||||
C-s tms switch
|
||||
C-w tms windows
|
||||
C-z Suspend the current client
|
||||
C-Up Resize the pane up
|
||||
@@ -87,3 +87,4 @@ Leader: `<ctrl><space>`
|
||||
S-Left Move the visible part of the window left
|
||||
S-Right Move the visible part of the window right
|
||||
```
|
||||
|
||||
|
||||
@@ -38,5 +38,5 @@
|
||||
"prettier": "^3.6.2",
|
||||
"typescript": "^5.8.3"
|
||||
},
|
||||
"packageManager": "yarn@1.22.22"
|
||||
"packageManager": "yarn@4.12.0"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user