mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-04 21:48:52 +00:00
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b5f80cb03 | ||
|
|
72f42835ff | ||
|
|
a949f0d4cf | ||
|
|
8b1e4462b3 | ||
|
|
055cf7ef2e | ||
|
|
8c2b3fb475 | ||
| 3fa1efe88d | |||
| 9cc81c4cbf | |||
| bba76843db | |||
| 9018d1a038 | |||
|
|
a8595e2e07 | ||
|
|
beb89e9490 | ||
|
|
cb381fe57d | ||
|
|
7be770a2af | ||
|
|
d16ce9ad0f | ||
| ab67f6be5a | |||
| efadbb4248 | |||
| ded4bf3bb3 | |||
|
|
62eb417935 | ||
| d22f9ece7d | |||
| 79be2d41bc | |||
|
|
743ebb0e9f | ||
|
|
8fcab21a67 | ||
|
|
43a714513f | ||
|
|
044298af74 | ||
|
|
6604f7a2ca | ||
|
|
065eb2f9c0 |
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
|
permissions: write-all
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||||
|
|
||||||
- name: Create changelog text
|
- name: Create changelog text
|
||||||
id: changelog
|
id: changelog
|
||||||
|
|||||||
4
.github/workflows/linters.yml
vendored
4
.github/workflows/linters.yml
vendored
@@ -27,7 +27,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||||
|
|
||||||
- name: Yarn Lock Changes
|
- name: Yarn Lock Changes
|
||||||
uses: Simek/yarn-lock-changes@61d1a0595070b79c1abdc8e1e5a5f5d98b18918c # v0.12.2
|
uses: Simek/yarn-lock-changes@61d1a0595070b79c1abdc8e1e5a5f5d98b18918c # v0.12.2
|
||||||
@@ -35,4 +35,4 @@ jobs:
|
|||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Run PR Lint
|
- name: Run PR Lint
|
||||||
uses: ivuorinen/actions/pr-lint@ff0ca4bc920c518b2ce2dc20c5e5a6e95f76dee0 # v2025.11.02
|
uses: ivuorinen/actions/pr-lint@5cc7373a22402ee8985376bc713f00e09b5b2edb # v2025.11.23
|
||||||
|
|||||||
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 }}
|
version: ${{ steps.daily-version.outputs.version }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||||
|
|
||||||
- name: Create tag if necessary
|
- name: Create tag if necessary
|
||||||
uses: fregante/daily-version-action@fb1a60b7c4daf1410cd755e360ebec3901e58588 # v2.1.3
|
uses: fregante/daily-version-action@fb1a60b7c4daf1410cd755e360ebec3901e58588 # v2.1.3
|
||||||
@@ -40,7 +40,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
if: steps.daily-version.outputs.created
|
if: steps.daily-version.outputs.created
|
||||||
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
|
uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2.4.2
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
tag_name: ${{ steps.daily-version.outputs.version }}
|
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
|
pull-requests: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||||
|
|
||||||
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
|
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
|
||||||
|
|
||||||
- run: pip install pre-commit && pre-commit autoupdate
|
- 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:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
branch: update/pre-commit-hooks
|
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
|
issues: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: ivuorinen/actions/sync-labels@ff0ca4bc920c518b2ce2dc20c5e5a6e95f76dee0 # v2025.11.02
|
- uses: ivuorinen/actions/sync-labels@5cc7373a22402ee8985376bc713f00e09b5b2edb # v2025.11.23
|
||||||
|
|||||||
2
.github/workflows/update-submodules.yml
vendored
2
.github/workflows/update-submodules.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
|
|||||||
43
.gitignore
vendored
43
.gitignore
vendored
@@ -11,47 +11,48 @@
|
|||||||
.nfs*
|
.nfs*
|
||||||
.scannerwork
|
.scannerwork
|
||||||
.vscode
|
.vscode
|
||||||
|
!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
|
Brewfile.lock.json
|
||||||
antidote_plugins.zsh
|
antidote_plugins.zsh
|
||||||
config/alacritty/theme-active.toml
|
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/fish/completions/asdf.fish
|
||||||
|
config/fish/fish_variables
|
||||||
|
config/fish/fish_variables.*
|
||||||
|
config/gh/hosts.yml
|
||||||
config/git/credentials
|
config/git/credentials
|
||||||
|
config/git/local.d/*
|
||||||
config/gnupg/S.*
|
config/gnupg/S.*
|
||||||
config/gnupg/private-keys-v1.d
|
config/gnupg/private-keys-v1.d
|
||||||
config/gnupg/s
|
config/gnupg/s
|
||||||
config/iterm2/AppSupport
|
config/iterm2/AppSupport
|
||||||
|
config/karabiner/automatic_backups
|
||||||
config/npm/npmrc
|
config/npm/npmrc
|
||||||
config/nvim/lazy-lock.json
|
config/nvim/lazy-lock.json
|
||||||
config/nvim/spell/*
|
config/nvim/spell/*
|
||||||
!config/nvim/spell/.gitkeep
|
config/op/plugins/gh.json
|
||||||
config/git/local.d/*
|
config/op/plugins/used_items/gh.json
|
||||||
!config/git/local.d/.gitkeep
|
config/vim/.netrwhist
|
||||||
|
config/vim/extra/*
|
||||||
config/vim/fzf
|
config/vim/fzf
|
||||||
config/vim/plugged/*
|
config/vim/plugged/*
|
||||||
config/zed/*
|
config/zed/*
|
||||||
!config/zed/settings.json
|
config/zed/settings.json
|
||||||
config/zsh/.zcompdump
|
config/zsh/.zcompdump
|
||||||
|
dependency-check-report.html
|
||||||
iTermServer-*
|
iTermServer-*
|
||||||
lazy-lock.json
|
lazy-lock.json
|
||||||
local/share/fonts/*
|
|
||||||
local/bin/asdf/plugins/*
|
local/bin/asdf/plugins/*
|
||||||
|
local/bin/yabai
|
||||||
|
local/man/yabai.1
|
||||||
|
local/share/fonts/*
|
||||||
lock
|
lock
|
||||||
node_modules
|
node_modules
|
||||||
ssh/local.d/*
|
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"]
|
[submodule "tmux/tmux-resurrect"]
|
||||||
path = config/tmux/plugins/tmux-resurrect
|
path = config/tmux/plugins/tmux-resurrect
|
||||||
url = https://github.com/tmux-plugins/tmux-resurrect.git
|
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]
|
args: [--autofix, --no-sort-keys]
|
||||||
|
|
||||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||||
rev: v0.45.0
|
rev: v0.46.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: markdownlint
|
- id: markdownlint
|
||||||
args: [-c, .markdownlint.json, --fix]
|
args: [-c, .markdownlint.json, --fix]
|
||||||
@@ -45,17 +45,17 @@ repos:
|
|||||||
- id: shfmt
|
- id: shfmt
|
||||||
|
|
||||||
- repo: https://github.com/rhysd/actionlint
|
- repo: https://github.com/rhysd/actionlint
|
||||||
rev: v1.7.8
|
rev: v1.7.9
|
||||||
hooks:
|
hooks:
|
||||||
- id: actionlint
|
- id: actionlint
|
||||||
|
|
||||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||||
rev: 41.168.5
|
rev: 42.27.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: renovate-config-validator
|
- id: renovate-config-validator
|
||||||
|
|
||||||
- repo: https://github.com/JohnnyMorganz/StyLua
|
- repo: https://github.com/JohnnyMorganz/StyLua
|
||||||
rev: v2.3.0
|
rev: v2.3.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: stylua # or stylua-system / stylua-github
|
- id: stylua # or stylua-system / stylua-github
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
-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 \
|
git submodule add --name tmux/tmux-dark-notify \
|
||||||
-f https://github.com/ivuorinen/tmux-dark-notify.git config/tmux/plugins/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
|
# 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
|
||||||
|
|||||||
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"
|
brew "cryptography"
|
||||||
# YAML Parser
|
# YAML Parser
|
||||||
brew "libyaml"
|
brew "libyaml"
|
||||||
|
# Display directories as trees (with optional color/HTML output)
|
||||||
|
brew "tree"
|
||||||
# Automate deployment, configuration, and upgrading
|
# Automate deployment, configuration, and upgrading
|
||||||
brew "ansible"
|
brew "ansible"
|
||||||
# Checks ansible playbooks for practices and behaviour
|
# Checks ansible playbooks for practices and behaviour
|
||||||
@@ -104,7 +106,7 @@ brew "glib"
|
|||||||
brew "cargo-binstall"
|
brew "cargo-binstall"
|
||||||
# Multi-platform support library with a focus on asynchronous I/O
|
# Multi-platform support library with a focus on asynchronous I/O
|
||||||
brew "libuv"
|
brew "libuv"
|
||||||
# Platform built on V8 to build network applications
|
# Open-source, cross-platform JavaScript runtime environment
|
||||||
brew "node", link: false
|
brew "node", link: false
|
||||||
# CLI tool for analyzing Claude Code usage from local JSONL files
|
# CLI tool for analyzing Claude Code usage from local JSONL files
|
||||||
brew "ccusage"
|
brew "ccusage"
|
||||||
@@ -230,6 +232,8 @@ brew "luarocks"
|
|||||||
brew "lzip"
|
brew "lzip"
|
||||||
# Swiss Army Knife for macOS
|
# Swiss Army Knife for macOS
|
||||||
brew "m-cli"
|
brew "m-cli"
|
||||||
|
# Cross platform, open source .NET development framework
|
||||||
|
brew "mono"
|
||||||
# Collection of tools that nobody wrote when UNIX was young
|
# Collection of tools that nobody wrote when UNIX was young
|
||||||
brew "moreutils"
|
brew "moreutils"
|
||||||
# NCurses Disk Usage
|
# NCurses Disk Usage
|
||||||
@@ -290,8 +294,8 @@ brew "tflint"
|
|||||||
brew "tfsec"
|
brew "tfsec"
|
||||||
# Terminal multiplexer
|
# Terminal multiplexer
|
||||||
brew "tmux"
|
brew "tmux"
|
||||||
# Display directories as trees (with optional color/HTML output)
|
# Extremely fast Python package installer and resolver, written in Rust
|
||||||
brew "tree"
|
brew "uv"
|
||||||
# Tool for creating isolated virtual python environments
|
# Tool for creating isolated virtual python environments
|
||||||
brew "virtualenv"
|
brew "virtualenv"
|
||||||
# Command-line interface to the WakaTime api
|
# Command-line interface to the WakaTime api
|
||||||
@@ -349,13 +353,18 @@ cask "fantastical"
|
|||||||
cask "font-jetbrains-mono"
|
cask "font-jetbrains-mono"
|
||||||
cask "font-jetbrains-mono-nerd-font"
|
cask "font-jetbrains-mono-nerd-font"
|
||||||
cask "font-monaspace"
|
cask "font-monaspace"
|
||||||
|
cask "font-monaspace-nf"
|
||||||
cask "font-open-sans"
|
cask "font-open-sans"
|
||||||
# GIT client
|
# GIT client
|
||||||
cask "fork"
|
cask "fork"
|
||||||
|
# Desktop automation application
|
||||||
|
cask "hammerspoon"
|
||||||
# HTTP and GraphQL Client
|
# HTTP and GraphQL Client
|
||||||
cask "insomnia"
|
cask "insomnia"
|
||||||
# JetBrains tools manager
|
# JetBrains tools manager
|
||||||
cask "jetbrains-toolbox"
|
cask "jetbrains-toolbox"
|
||||||
|
# Keyboard customiser
|
||||||
|
cask "karabiner-elements"
|
||||||
# End-to-end encryption software
|
# End-to-end encryption software
|
||||||
cask "keybase"
|
cask "keybase"
|
||||||
# Kubernetes IDE
|
# 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 {
|
return {
|
||||||
{
|
{
|
||||||
'neanias/everforest-nvim',
|
'catppuccin/nvim',
|
||||||
version = false,
|
name = 'catppuccin',
|
||||||
lazy = false,
|
priority = 1000,
|
||||||
priority = 1000, -- make sure to load this before all the other start plugins
|
|
||||||
config = function()
|
config = function()
|
||||||
require('everforest').setup {
|
require('catppuccin').setup {
|
||||||
background = 'medium', -- hard, medium, soft
|
flavour = 'auto', -- latte, frappe, macchiato, mocha
|
||||||
transparent_background_level = 2, -- 0, 1, 2
|
background = { -- :h background
|
||||||
sign_column_background = 'grey', -- none, grey
|
light = 'latte',
|
||||||
disable_italic_comments = false,
|
dark = 'mocha',
|
||||||
diagnostic_virtual_text = 'coloured', -- coloured, gray, underline, none
|
},
|
||||||
diagnostic_line_highlight = true,
|
transparent_background = false,
|
||||||
diagnostic_line_highlight_background = 'dimmed', -- dimmed, normal
|
float = {
|
||||||
diagnostic_text_highlight = true,
|
transparent = true, -- enable transparent floating windows
|
||||||
ui_contrast = 'low', -- high, low
|
solid = false, -- use solid styling for floating windows, see |winborder|
|
||||||
italics = true,
|
},
|
||||||
spell_foreground = true,
|
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
|
||||||
show_eob = true,
|
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`)
|
||||||
colours_override = function() end,
|
dim_inactive = {
|
||||||
float_style = 'dim',
|
enabled = true, -- dims the background color of inactive window
|
||||||
on_highlights = function(_, _) end,
|
shade = 'dark',
|
||||||
dim_inactive_windows = true,
|
percentage = 0.15, -- percentage of the shade to apply to the inactive window
|
||||||
inlay_hints_background = 'dimmed',
|
},
|
||||||
|
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,
|
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
|
-- Automatic dark mode
|
||||||
-- https://github.com/f-person/auto-dark-mode.nvim
|
-- https://github.com/f-person/auto-dark-mode.nvim
|
||||||
@@ -60,37 +141,37 @@ return {
|
|||||||
|
|
||||||
-- Remove all background colors to make nvim transparent
|
-- Remove all background colors to make nvim transparent
|
||||||
-- https://github.com/xiyaowong/nvim-transparent
|
-- https://github.com/xiyaowong/nvim-transparent
|
||||||
{
|
-- {
|
||||||
'xiyaowong/nvim-transparent',
|
-- 'xiyaowong/nvim-transparent',
|
||||||
lazy = false,
|
-- lazy = false,
|
||||||
enabled = true,
|
-- enabled = true,
|
||||||
config = function()
|
-- config = function()
|
||||||
local t = require 'transparent'
|
-- local t = require 'transparent'
|
||||||
t.setup {
|
-- t.setup {
|
||||||
extra_groups = {
|
-- extra_groups = {
|
||||||
'NormalNC',
|
-- 'NormalNC',
|
||||||
'NormalFloat',
|
-- 'NormalFloat',
|
||||||
'EndOfBuffer',
|
-- 'EndOfBuffer',
|
||||||
'FloatTitle',
|
-- 'FloatTitle',
|
||||||
'FloatBorder',
|
-- 'FloatBorder',
|
||||||
'NotifyDEBUGBorder',
|
-- 'NotifyDEBUGBorder',
|
||||||
'NotifyERRORBorder',
|
-- 'NotifyERRORBorder',
|
||||||
'NotifyINFOBorder',
|
-- 'NotifyINFOBorder',
|
||||||
'NotifyINFOBorder73',
|
-- 'NotifyINFOBorder73',
|
||||||
'NotifyINFOBorder75',
|
-- 'NotifyINFOBorder75',
|
||||||
'NotifyINFOBorder101',
|
-- 'NotifyINFOBorder101',
|
||||||
'NotifyTRACEBorder',
|
-- 'NotifyTRACEBorder',
|
||||||
'NotifyWARNBorder',
|
-- 'NotifyWARNBorder',
|
||||||
'NotifyBackground',
|
-- 'NotifyBackground',
|
||||||
'TelescopeBorder',
|
-- 'TelescopeBorder',
|
||||||
'TelescopePromptBorder',
|
-- 'TelescopePromptBorder',
|
||||||
'TelescopeResultsBorder',
|
-- 'TelescopeResultsBorder',
|
||||||
'TelescopePreviewBorder',
|
-- 'TelescopePreviewBorder',
|
||||||
},
|
-- },
|
||||||
}
|
-- }
|
||||||
t.clear_prefix 'NeoTree'
|
-- t.clear_prefix 'NeoTree'
|
||||||
end,
|
-- end,
|
||||||
},
|
-- },
|
||||||
|
|
||||||
-- Display a character as the colorcolumn
|
-- Display a character as the colorcolumn
|
||||||
-- https://github.com/lukas-reineke/virt-column.nvim
|
-- 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
|
set -g @catppuccin_flavor "mocha"
|
||||||
# Generated from template - do not edit manually
|
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 -g @catppuccin_flavor "latte"
|
||||||
set-window-option -g window-status-style 'fg=#4c4f69,bg=default dim'
|
set -g @catppuccin_window_status_style "basic"
|
||||||
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
|
|
||||||
|
|||||||
@@ -18,6 +18,9 @@
|
|||||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||||
set -ag terminal-features '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 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 detach-on-destroy off # don't detach tmux when killing a session
|
||||||
set -g display-time 0 # Hide clock
|
set -g display-time 0 # Hide clock
|
||||||
@@ -51,17 +54,17 @@ if-shell '[ "$DEBUG" = "1" ]' 'set -g debug-file ~/.cache/tmux-debug.log'
|
|||||||
# │ Theme │
|
# │ 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-justify "left"
|
||||||
set -g status-left ''
|
set -g status-left ''
|
||||||
set -g status-left-length "0"
|
set -g status-left-length "0"
|
||||||
set -g status-position "bottom"
|
set -g status-position "bottom"
|
||||||
set -g status-right "#S@#h #{tmux_mode_indicator}"
|
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-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
||||||
set -g window-status-format ' #I:#W '
|
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 │
|
# │ Bindings │
|
||||||
@@ -101,32 +104,16 @@ unbind p
|
|||||||
bind p paste-buffer
|
bind p paste-buffer
|
||||||
|
|
||||||
# tms bindings
|
# 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 windows" C-w display-popup -E "tms windows"
|
||||||
bind -N "tms switch" C-s display-popup -E "tms switch"
|
bind -N "tms switch" C-s display-popup -E "tms switch"
|
||||||
bind -N "tms refresh" C-r display-popup -E "tms refresh"
|
bind -N "tms refresh" C-r display-popup -E "tms refresh"
|
||||||
|
|
||||||
# global sessions
|
# global sessions
|
||||||
# bind-key "K" display-popup -h 90% -w 50% -E "sesh ui"
|
# bind-key "K" display-popup -h 90% -w 50% -E "sesh ui"
|
||||||
bind-key "K" run-shell "sesh connect \"$(
|
bind -N "sesh selection" t run-shell "$HOME/.dotfiles/config/tmux/sesh-tmux.fish"
|
||||||
sesh list --icons --hide-duplicates | fzf-tmux -p 100%,100% --no-border \
|
bind -N "last-session (via sesh) " L run-shell "sesh last"
|
||||||
--list-border \
|
bind -N "sesh ui" N display-popup -E "sesh ui"
|
||||||
--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"
|
|
||||||
|
|
||||||
# ╭──────────────────────────────────────────────────────────╮
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
# │ Plugins │
|
# │ Plugins │
|
||||||
@@ -142,7 +129,7 @@ bind-key "N" display-popup -E "sesh ui"
|
|||||||
## A plugin to name your tmux windows smartly.
|
## A plugin to name your tmux windows smartly.
|
||||||
## https://github.com/ofirgall/tmux-window-name
|
## https://github.com/ofirgall/tmux-window-name
|
||||||
### Maximum name length of a window
|
### 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
|
### Replace $HOME with ~ in window names
|
||||||
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', 'antidote', 'direnv', 'md5']" # Default is []
|
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-fzf-url/fzf-url.tmux"
|
||||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-resurrect/resurrect.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/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"
|
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 to detect the theme based on appearance
|
||||||
function Scheme_for_appearance(appearance)
|
function Scheme_for_appearance(appearance)
|
||||||
if appearance:find 'Dark' then
|
if appearance:find 'Dark' then
|
||||||
return 'Everforest Dark (Medium)'
|
return 'Catppuccin Mocha'
|
||||||
|
-- return 'Everforest Dark (Medium)'
|
||||||
else
|
else
|
||||||
return 'Everforest Light (Medium)'
|
return 'Catppuccin Latte'
|
||||||
|
-- return 'Everforest Light (Medium)'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,10 @@ Leader: `<ctrl><space>`
|
|||||||
? List key bindings
|
? List key bindings
|
||||||
D Choose and detach a client from a list
|
D Choose and detach a client from a list
|
||||||
E Spread panes out evenly
|
E Spread panes out evenly
|
||||||
L Switch to the last client
|
L last-session (via sesh)
|
||||||
M Clear the marked pane
|
M Clear the marked pane
|
||||||
|
N sesh ui
|
||||||
|
T tms
|
||||||
] Paste the most recent paste buffer
|
] Paste the most recent paste buffer
|
||||||
c Create a new window
|
c Create a new window
|
||||||
d Detach the current client
|
d Detach the current client
|
||||||
@@ -46,7 +48,7 @@ Leader: `<ctrl><space>`
|
|||||||
o Select the next pane
|
o Select the next pane
|
||||||
q Display pane numbers
|
q Display pane numbers
|
||||||
s Choose a session from a list
|
s Choose a session from a list
|
||||||
t tms
|
t sesh selection
|
||||||
w Choose a window from a list
|
w Choose a window from a list
|
||||||
x Kill the active pane
|
x Kill the active pane
|
||||||
z Zoom the active pane
|
z Zoom the active pane
|
||||||
@@ -74,8 +76,6 @@ Leader: `<ctrl><space>`
|
|||||||
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-o Rotate through the panes
|
||||||
C-r tms refresh
|
|
||||||
C-s tms switch
|
|
||||||
C-w tms windows
|
C-w tms windows
|
||||||
C-z Suspend the current client
|
C-z Suspend the current client
|
||||||
C-Up Resize the pane up
|
C-Up Resize the pane up
|
||||||
@@ -87,3 +87,4 @@ Leader: `<ctrl><space>`
|
|||||||
S-Left Move the visible part of the window left
|
S-Left Move the visible part of the window left
|
||||||
S-Right Move the visible part of the window right
|
S-Right Move the visible part of the window right
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -3310,9 +3310,9 @@ js-tokens@^4.0.0:
|
|||||||
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
||||||
|
|
||||||
js-yaml@^4.1.0, js-yaml@~4.1.0:
|
js-yaml@^4.1.0, js-yaml@~4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
|
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b"
|
||||||
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
|
integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==
|
||||||
dependencies:
|
dependencies:
|
||||||
argparse "^2.0.1"
|
argparse "^2.0.1"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user