Compare commits

..

23 Commits

Author SHA1 Message Date
eb3ca0a023 aerospace: Updated config 2025-01-23 23:05:02 +01:00
c8eb8caad0 Ghostty: Updated config 2025-01-23 23:04:40 +01:00
f9f9bfd00b Brew: Updated Brewfile 2024-12-28 22:17:31 +01:00
7a34d51e4f karabiner: Updated config 2024-12-28 22:16:27 +01:00
5effd669c5 Ghostty: Add config 2024-12-28 22:15:46 +01:00
70a5e6eeb7 brew: Remove Hyperkey and added Karabiner Elements 2024-12-05 09:21:30 +01:00
5996e6116e Karabiner: Added config 2024-12-05 09:19:58 +01:00
669935cb7d brew: Updated Brewfile 2024-12-04 23:37:44 +01:00
d17a407787 aerospace: Updated config 2024-12-04 23:37:05 +01:00
885897bec5 aerospace: Updated config 2024-12-02 09:40:43 +01:00
d9f261a637 aerospace: Added config 2024-12-01 09:30:44 +01:00
395c670241 git: Added config 2024-11-28 22:52:12 +01:00
fe07298506 tmux: Replace $HOME with ~in pane titles 2024-11-08 23:50:04 +01:00
67832c2ac9 ZSH: Add plugin for renaming tmux panes by path or command 2024-11-08 23:49:36 +01:00
c3df9f22af tmux: Fixed window index for startup command 2024-11-05 21:41:55 +01:00
e593ca2c50 tmux: Fixed wrong color for status indicator and window title 2024-11-05 21:31:22 +01:00
87673142e3 tmux: Redid config again without external dependencies 2024-11-05 20:53:10 +01:00
1f6bf9e9c8 tmux: Changed loading of plugins 2024-11-05 01:02:29 +01:00
836e9ccd56 tmux: Updated config to use tpm and catppucin theme 2024-11-05 00:54:53 +01:00
3506f405d3 ZSH: Add config for autosuggestions 2024-11-03 18:18:57 +01:00
ed3eeb9459 Removed youtube-dl config 2024-10-29 14:00:02 +01:00
384dcae932 ZSH: Linted files 2024-10-29 13:59:15 +01:00
864f0805ba ZSH: Added prepend-sudo plugin 2024-10-29 13:58:26 +01:00
16 changed files with 605 additions and 222 deletions

View File

@ -2,154 +2,137 @@
cask_args appdir: "/Applications"
cask_args language: "de,deu,en,eng"
## Taps
tap "buo/cask-upgrade"
tap "fabianishere/personal"
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-drivers"
tap "homebrew/cask-fonts"
tap "homebrew/cask-versions"
tap "homebrew/core"
tap "homebrew/services"
tap "hudochenkov/sshpass"
tap "khanhas/tap"
tap "koekeishiya/formulae"
# ## Taps
# tap "homebrew/bundle"
# tap "homebrew/cask"
# tap "homebrew/cask-drivers"
# tap "homebrew/cask-fonts"
# tap "homebrew/cask-versions"
# tap "homebrew/core"
# tap "homebrew/services"
# tap "microsoft/git"
tap "nikitabobko/tap"
tap "FelixKratz/formulae"
## brew formulae
brew "arping"
brew "node"
brew "bitwarden-cli"
brew "FelixKratz/formulae/borders"
brew "brew-cask-completion"
brew "python@3.9"
brew "arping"
brew "checkbashisms"
brew "convmv"
brew "duti"
brew "exiftool"
brew "tesseract"
brew "ffmpeg", args: ["HEAD"]
brew "eza"
brew "git"
brew "git-secret"
brew "go"
brew "htop"
brew "hugo"
brew "ipmitool"
brew "iperf"
brew "iperf3"
brew "jq"
brew "mas"
brew "mosh"
brew "nmap"
brew "node"
brew "ocrmypdf"
brew "pandoc"
brew "reattach-to-user-namespace"
brew "python3"
brew "rsync"
brew "rclone"
brew "restic"
brew "shfmt"
brew "subversion"
brew "tesseract-lang"
brew "tmux"
brew "topgrade"
brew "tree"
brew "vim"
brew "youtube-dl"
brew "yt-dlp"
#brew "trippy"
brew "zsh"
brew "zsh-completions"
brew "fabianishere/personal/pam_reattach"
brew "hudochenkov/sshpass/sshpass"
brew "koekeishiya/formulae/skhd"
brew "koekeishiya/formulae/yabai", args: ["HEAD"]
## cask formulae
cask "airbuddy"
cask "alfred"
cask "amethyst"
cask "arduino"
cask "arq"
cask "balenaetcher"
cask "bartender"
cask "bonjeff"
cask "calibre"
cask "coconutbattery"
cask "coolterm"
cask "dbeaver-community"
cask "drawio"
cask "fantastical"
cask "filebot"
cask "firefox"
# Fonts
cask "font-meslo-lg-nerd-font"
cask "font-fira-code"
cask "font-source-code-pro"
# Casks
cask "adobe-creative-cloud"
cask "airbuddy"
cask "minecraft"
cask "filebot"
cask "firefox"
cask "ghostty"
cask "birdfont"
cask "balenaetcher"
cask "bettertouchtool"
cask "bonjeff"
cask "fork"
cask "fujitsu-scansnap-manager"
cask "google-chrome"
# cask "hyperkey"
cask "raspberry-pi-imager"
cask "hammerspoon"
cask "hazel"
cask "hex-fiend"
cask "istat-menus"
cask "iterm2"
cask "keyboardcleantool"
cask "little-snitch"
cask "logitech-camera-settings"
cask "mactex-no-gui"
cask "curseforge"
cask "obs"
# cask "hiddenbar"
cask "jordanbaird-ice"
cask "karabiner-elements"
cask "marked"
cask "moneymoney"
cask "pdf-expert"
# cask "sequel-ace"
# cask "thor"
cask "transmit"
# cask "whichspace"
cask "calibre"
cask "coconutbattery"
cask "vscodium"
cask "itsycal"
cask "stats"
# cask "iterm2"
cask "dbeaver-community"
cask "discord"
cask "inkscape"
cask "joplin"
cask "mediathekview"
cask "microsoft-teams"
cask "moneymoney"
cask "monitorcontrol"
cask "nextcloud"
cask "numi"
cask "onyx"
cask "oracle-jdk"
cask "pdf-expert"
cask "plex"
cask "pocket-casts"
cask "portfolioperformance"
cask "qlcommonmark"
cask "raspberry-pi-imager"
cask "sequel-ace"
cask "silicon-info"
cask "sonos"
cask "raycast"
# cask "rectangle"
cask "spotify"
cask "transmission"
cask "transmit"
cask "unclack"
cask "vlc"
cask "vnc-viewer"
cask "vscodium"
cask "webex"
cask "whichspace"
cask "wireshark"
cask "nikitabobko/tap/aerospace"
## Mac AppStore
mas "AdGuard for Safari", id: 1440147259
mas "Affinity Designer", id: 824171161
mas "Affinity Photo", id: 824183456
mas "Affinity Publisher", id: 881418622
mas "Amphetamine", id: 937984704
mas "AudioBookBinder", id: 413969927
mas "Bitwarden", id: 1352778147
mas "Cardhop", id: 1290358394
mas "ColorSlurp", id: 1287239339
mas "Controller", id: 1198176727
mas "Create Booklet", id: 943029046
mas "DaisyDisk", id: 411643860
mas "Drafts", id: 1435957248
mas "Final Cut Pro", id: 424389933
mas "iA Writer", id: 775737590
mas "Interact Scratchpad", id: 1199660222
mas "Keynote", id: 409183694
mas "Mactracker", id: 430255202
mas "Microsoft Excel", id: 462058435
mas "Microsoft PowerPoint", id: 462062816
mas "Microsoft Word", id: 462054704
mas "Mindcad Tiler", id: 432460453
mas "MindNode", id: 992076693
mas "MQTT Explorer", id: 1455214828
mas "Numbers", id: 409203825
mas "Pages", id: 409201541
mas "Parcel", id: 639968404
mas "Reeder", id: 1529448980
mas "RSS Button for Safari", id: 1437501942
mas "Scenecuts Helper", id: 1540491573
mas "SerialTools", id: 611021963
mas "The Unarchiver", id: 425424353
mas "Todoist", id: 585829637
mas "Turn Off the Lights for Safari", id: 1273998507
mas "Tweetbot", id: 557168941
mas "WhatsApp", id: 1147396723
mas "WireGuard", id: 1451685025
mas "Xcode", id: 497799835
mas "AdGuard for Safari", id: 1440147259;
mas "Affinity Designer", id: 824171161;
mas "Affinity Photo", id: 824183456;
mas "Affinity Publisher", id: 881418622;
mas "Amphetamine", id: 937984704;
mas "AudioBookBinder", id: 413969927;
mas "Bitwarden", id: 1352778147;
mas "Cardhop", id: 1290358394;
mas "ColorSlurp", id: 1287239339;
mas "Create Booklet", id: 943029046;
mas "DaisyDisk", id: 411643860;
mas "Drafts", id: 1435957248;
mas "Draw Things", id: 6444050820;
mas "Final Cut Pro", id: 424389933;
mas "iA Writer", id: 775737590;
mas "Ice Cubes", id: 6444915884;
mas "Interact Scratchpad", id: 1199660222;
mas "Microsoft Excel", id: 462058435;
mas "Microsoft PowerPoint", id: 462062816;
mas "Microsoft Word", id: 462054704;
mas "Mindcad Tiler", id: 432460453;
mas "Moom Classic", id: 419330170;
mas "MQTT Explorer", id: 1455214828;
mas "Parcel", id: 639968404;
mas "Reeder", id: 1529448980;
mas "RSS Button for Safari", id: 1437501942;
mas "The Unarchiver", id: 425424353;
mas "Todoist", id: 585829637;
mas "WireGuard", id: 1451685025;
mas "WhatsApp", id: 310633997;

View File

@ -0,0 +1,292 @@
# This needs jankyborders and hyperkey installed.
# Hyperkey must configured configured to use caps lock as hyperkey und must not include shift in hyperkey.
# Place a copy of this config to ~/.aerospace.toml
# After that, you can edit ~/.aerospace.toml to your liking
# You can use it to add commands that run after login to macOS user session.
# 'start-at-login' needs to be 'true' for 'after-login-command' to work
# Available commands: https://nikitabobko.github.io/AeroSpace/commands
after-login-command = []
# You can use it to add commands that run after AeroSpace startup.
# 'after-startup-command' is run after 'after-login-command'
# Available commands : https://nikitabobko.github.io/AeroSpace/commands
# JankyBorders has a built-in detection of already running process,
# so it won't be run twice on AeroSpace restart
after-startup-command = [
'exec-and-forget borders active_color=0xffeff1f5 inactive_color=0xff8c8fa1 width=10.0'
]
# Start AeroSpace at login
start-at-login = true
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
enable-normalization-flatten-containers = true
enable-normalization-opposite-orientation-for-nested-containers = true
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
# The 'accordion-padding' specifies the size of accordion padding
# You can set 0 to disable the padding feature
accordion-padding = 30
# Possible values: tiles|accordion
default-root-container-layout = 'tiles'
# Possible values: horizontal|vertical|auto
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
# tall monitor (anything higher than wide) gets vertical orientation
default-root-container-orientation = 'auto'
# Mouse follows focus when focused monitor changes
# Drop it from your config, if you don't like this behavior
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
# Fallback value (if you omit the key): on-focused-monitor-changed = []“¡”¬””
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app
automatically-unhide-macos-hidden-apps = true
# Possible values: (qwerty|dvorak)
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
[key-mapping]
preset = 'qwerty'
# Gaps between windows (inner-*) and between monitor edges (outer-*).
# Possible values:
# - Constant: gaps.outer.top = 8
# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
# In this example, 24 is a default value when there is no match.
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
[gaps]
inner.horizontal = 16
inner.vertical = 16
outer.left = 16
outer.bottom = 16
outer.top = 16
outer.right = 16
# 'main' binding mode declaration
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
# 'main' binding mode must be always presented
# Fallback value (if you omit the key): mode.main.binding = {}
[mode.main.binding]
# All possible keys:
# - Letters. a, b, c, ..., z
# - Numbers. 0, 1, 2, ..., 9
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
# - F-keys. f1, f2, ..., f20
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
# leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
# keypadMinus, keypadMultiply, keypadPlus
# - Arrows. left, down, up, right
# All possible modifiers: cmd, alt, ctrl, shift
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)
# alt-enter = '''exec-and-forget osascript -e '
# tell application "Terminal"
# do script
# activate
# end tell'
# '''
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
cmd-ctrl-alt-period = 'layout tiles horizontal vertical'
cmd-ctrl-alt-comma = 'layout accordion horizontal vertical'
cmd-ctrl-alt-f = 'fullscreen'
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
cmd-ctrl-alt-left = 'focus left'
cmd-ctrl-alt-down = 'focus down'
cmd-ctrl-alt-up = 'focus up'
cmd-ctrl-alt-right = 'focus right'
# See: https://nikitabobko.github.io/AeroSpace/commands#move
cmd-ctrl-alt-shift-h = 'move left'
cmd-ctrl-alt-shift-j = 'move down'
cmd-ctrl-alt-shift-k = 'move up'
cmd-ctrl-alt-shift-l = 'move right'
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
cmd-ctrl-alt-shift-down = 'resize smart -50'
cmd-ctrl-alt-shift-up = 'resize smart +50'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
cmd-ctrl-alt-1 = 'workspace 1'
cmd-ctrl-alt-2 = 'workspace 2'
cmd-ctrl-alt-3 = 'workspace 3'
cmd-ctrl-alt-4 = 'workspace 4'
cmd-ctrl-alt-5 = 'workspace 5'
cmd-ctrl-alt-6 = 'workspace 6'
cmd-ctrl-alt-7 = 'workspace 7'
# cmd-ctrl-alt-8 = 'workspace 8'
# cmd-ctrl-alt-9 = 'workspace 9'
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
cmd-ctrl-alt-shift-1 = 'move-node-to-workspace 1'
cmd-ctrl-alt-shift-2 = 'move-node-to-workspace 2'
cmd-ctrl-alt-shift-3 = 'move-node-to-workspace 3'
cmd-ctrl-alt-shift-4 = 'move-node-to-workspace 4'
cmd-ctrl-alt-shift-5 = 'move-node-to-workspace 5'
cmd-ctrl-alt-shift-6 = 'move-node-to-workspace 6'
cmd-ctrl-alt-shift-7 = 'move-node-to-workspace 7'
# cmd-ctrl-alt-shift-8 = 'move-node-to-workspace 8'
# cmd-ctrl-alt-shift-9 = 'move-node-to-workspace 9'
# alt-shift-a = 'move-node-to-workspace A'
# alt-shift-b = 'move-node-to-workspace B'
# alt-shift-c = 'move-node-to-workspace C'
# alt-shift-d = 'move-node-to-workspace D'
# alt-shift-e = 'move-node-to-workspace E'
# alt-shift-f = 'move-node-to-workspace F'
# alt-shift-g = 'move-node-to-workspace G'
# alt-shift-i = 'move-node-to-workspace I'
# alt-shift-m = 'move-node-to-workspace M'
# alt-shift-n = 'move-node-to-workspace N'
# alt-shift-o = 'move-node-to-workspace O'
# alt-shift-p = 'move-node-to-workspace P'
# alt-shift-q = 'move-node-to-workspace Q'
# alt-shift-r = 'move-node-to-workspace R'
# alt-shift-s = 'move-node-to-workspace S'
# alt-shift-t = 'move-node-to-workspace T'
# alt-shift-u = 'move-node-to-workspace U'
# alt-shift-v = 'move-node-to-workspace V'
# alt-shift-w = 'move-node-to-workspace W'
# alt-shift-x = 'move-node-to-workspace X'
# alt-shift-y = 'move-node-to-workspace Y'
# alt-shift-z = 'move-node-to-workspace Z'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth
cmd-ctrl-alt-tab = 'workspace-back-and-forth'
# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor
cmd-ctrl-alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
# alt-shift-sfemicolon = 'mode service'
cmd-ctrl-alt-s = 'mode service'
# 'service' binding mode declaration.
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
[mode.service.binding]
esc = ['reload-config', 'mode main']
r = ['flatten-workspace-tree', 'mode main'] # reset layout
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
backspace = ['close-all-windows-but-current', 'mode main']
# sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2
#s = ['layout sticky tiling', 'mode main']
cmd-ctrl-alt-shift-h = ['join-with left', 'mode main']
cmd-ctrl-alt-shift-j = ['join-with down', 'mode main']
cmd-ctrl-alt-shift-k = ['join-with up', 'mode main']
cmd-ctrl-alt-shift-l = ['join-with right', 'mode main']
## Workspace 1: Main
[[on-window-detected]]
if.app-id = 'org.mozilla.firefox'
run = 'move-node-to-workspace 1'
[[on-window-detected]]
if.app-id = 'com.reederapp.5.macOS'
run = 'move-node-to-workspace 1'
[[on-window-detected]]
if.app-id = 'com.apple.Safari'
run = 'move-node-to-workspace 1'
[[on-window-detected]]
if.app-id = 'com.google.Chrome'
run = 'move-node-to-workspace 1'
## Workspace 2: Mail
[[on-window-detected]]
if.app-id = 'com.apple.mail'
run = 'move-node-to-workspace 2'
[[on-window-detected]]
if.app-id = 'org.mozilla.thunderbird'
run = 'move-node-to-workspace 2'
## Workspace 3: Messaging
[[on-window-detected]]
if.app-id = 'com.apple.MobileSMS'
run = 'move-node-to-workspace 3'
[[on-window-detected]]
if.app-id = 'net.whatsapp.WhatsApp'
run = 'move-node-to-workspace 3'
## Workspace 4: PIM
[[on-window-detected]]
if.app-id = 'com.apple.iCal'
run = 'move-node-to-workspace 4'
[[on-window-detected]]
if.app-id = 'com.apple.AddressBook'
run = 'move-node-to-workspace 4'
## Workspace 5: Shell
[[on-window-detected]]
if.app-id = 'com.googlecode.iterm2'
run = 'move-node-to-workspace 5'
[[on-window-detected]]
if.app-id = 'com.mitchellh.ghostty'
run = 'move-node-to-workspace 5'
## Workspace 6: Code
[[on-window-detected]]
if.app-id = 'com.vscodium'
run = 'move-node-to-workspace 6'
[[on-window-detected]]
if.app-id = 'com.DanPristupov.Fork'
run = 'move-node-to-workspace 6'
## Workspace 7: Misc
[[on-window-detected]]
if.app-id = 'com.hnc.Discord'
run = 'move-node-to-workspace 7'
[[on-window-detected]]
if.app-id = 'com.mojang.minecraftlauncher'
run = 'move-node-to-workspace 7'
[[on-window-detected]]
if.app-id = 'com.moneymoney-app.retail'
run = 'move-node-to-workspace 7'
[[on-window-detected]]
if.app-name-regex-substring = 'Actual Budget'
run = 'move-node-to-workspace 7'
## Floating apps
[[on-window-detected]]
if.app-id = 'com.jordanbaird.Ice'
run = 'layout floating'
[[on-window-detected]]
if.app-name-regex-substring = 'ntfy.sh'
run = 'layout floating'
[[on-window-detected]]
if.app-name-regex-substring = 'Home Assistant'
run = 'layout floating'
[exec]
inherit-env-vars = true
## Add homebrew prefix to path
[exec.env-vars]
PATH = '$(brew --prefix)/bin:/$(brew --prefix)/sbin:${PATH}'

14
.config/ghostty/config Normal file
View File

@ -0,0 +1,14 @@
font-family = MesloLGM Nerd Font Mono
font-thicken = true
font-size = 15
theme = catppuccin-mocha
cursor-opacity = 0.5
cursor-style-blink = true
background-opacity = 0.9
background-blur-radius = 20
initial-command = /opt/homebrew/bin/tmux a -d
quit-after-last-window-closed = true

7
.config/git/config Normal file
View File

@ -0,0 +1,7 @@
[init]
defaultBranch = main
[user]
name = Christian Baer
email = chris@debilux.org
[core]
editor = vim

View File

@ -0,0 +1,80 @@
{
"profiles": [
{
"complex_modifications": {
"rules": [
{
"description": "Hyperkey",
"manipulators": [
{
"from": {
"key_code": "caps_lock",
"modifiers": {
"mandatory": ["shift"],
"optional": ["caps_lock"]
}
},
"to": [
{
"key_code": "left_shift",
"modifiers": ["left_command", "left_control", "left_option"]
}
],
"type": "basic"
},
{
"from": {
"key_code": "caps_lock",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "left_command",
"modifiers": ["left_control", "left_option"]
}
],
"type": "basic"
}
]
},
{
"description": "Play/Pause controls spotify only when it's running",
"manipulators": [
{
"from": { "key_code": "f8" },
"to": [
{
"halt": true,
"repeat": false,
"shell_command": "osascript ~/.config/karabiner/scripts/spotify_playpause.scpt"
}
],
"type": "basic"
}
]
}
]
},
"devices": [
{
"identifiers": {
"is_keyboard": true,
"is_pointing_device": true,
"product_id": 45091,
"vendor_id": 1133
},
"ignore": false
}
],
"name": "Default profile",
"selected": true,
"simple_modifications": [
{
"from": { "consumer_key_code": "play_or_pause" },
"to": [{ "key_code": "vk_none" }]
}
],
"virtual_hid_keyboard": { "keyboard_type_v2": "iso" }
}
]
}

View File

@ -0,0 +1,6 @@
-- If Spotify is running, toggle play/pause. Otherwise do nothing
if application "Spotify" is running then
using terms from application "Spotify"
tell application "Spotify" to playpause
end using terms from
end if

View File

@ -1,99 +1,95 @@
# Start a session if none exists
### General Settings
# Enable mouse support in tmux
set -g mouse on
# Set the default terminal type to "tmux-256color" for better color support
set -g default-terminal "tmux-256color"
# Set the base index for windows to 1 (instead of the default 0)
set -g base-index 1
# Set the base index for panes to 1 (instead of the default 0)
setw -g pane-base-index 1
# Increase the history limit (useful for longer command histories)
set-option -g history-limit 10000
### Startup Configuration
# Start a new session named "main" if none exists
new-session -s main
# Start htop and split window
set-hook -t main session-created 'send-keys -t main:0 "sudo htop" C-m; split-window'
# remap prefix from 'C-b' to 'C-a'
# Start htop and split the window when the session "main" is created
set-hook -t main session-created 'send-keys -t main:1 "sudo htop" C-m; split-window'
### Key Bindings
# Remap the prefix key from 'C-b' (Ctrl-b) to 'C-a' (Ctrl-a)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# Use C-b to send prefix twice so it acts on nested session
bind-key -n C-b send-prefix
# split panes using # and -
bind "#" split-window -h
bind "-" split-window -v
# Split panes using 'h' for horizontal and 'v' for vertical splits
bind "h" split-window -h
bind "v" split-window -v
unbind '"'
unbind %
# reload config file
# Reload the tmux configuration file with 'r'
bind r source-file $XDG_CONFIG_HOME/tmux/tmux.conf
# switch panes using Alt-arrow without prefix
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# start windows and panes at 1, not 0,
set -g base-index 1
set -g pane-base-index 1
# Enable mouse mode
set -g mouse on
#+---------+
#+ Options +
#+---------+
set -g status-interval 1
set -g status on
set -g aggressive-resize on
#+--------+
#+ Status +
#+--------+
#+--- Layout ---+
set -g status-justify left
#+--- Colors ---+
set -g status-bg black
set -g status-fg white
#+-------+
#+ Panes +
#+-------+
set -g pane-border-style bg=black,fg=brightblack
set -g pane-active-border-style bg=black,fg=magenta
set -g display-panes-colour black
set -g display-panes-active-colour brightblack
#+------------+
#+ Clock Mode +
#+------------+
setw -g clock-mode-colour cyan
#+----------+
#+ Messages +
#+---------+
set -g message-style fg=cyan,bg=brightblack
set -g message-command-style fg=cyan,bg=brightblack
######################
### DESIGN CHANGES ###
######################
## Status bar design
# status line
set -g status-justify left
### Status and Window Configuration
# Set the status bar update interval to 1 second
set -g status-interval 1
set -g default-terminal "screen-256color"
# Enable automatic renaming of windows
set-option -g automatic-rename on
#+--- Bars ---+
# Set window title to the current directory if the process is zsh, otherwise show the process name with arguments
set-option -g automatic-rename-format '#{?#{==:#{pane_current_command},zsh},#(echo #{pane_current_path} | sed "s|^$HOME|~|"),#{pane_current_command}}'
set -g status-left ''
## Indicate if prefix has been pressed
set -ga status-left '#[bg=#white]#[fg=#brightblack]#{?client_prefix,#[fg=red] ◯ , ◯ }'
## Session name
set -ga status-left "#S"
# Set the color of the clock mode
set -g clock-mode-colour "#8bd5ca"
set -g status-right ''
# Date and time
set -ga status-right "#[fg=white,bg=brightblack] %Y-%m-%d |#[fg=white,bg=brightblack] %H:%M"
# Hostname
set -ga status-right "#[fg=cyan,bg=brightblack,nobold,noitalics,nounderscore] #[fg=black,bg=blue,bold] #h "
# Set the style for copy mode (foreground black, background a specific color, bold text)
set -g mode-style 'fg=black bg=#ed8796 bold'
#+--- Windows ---+
set -g window-status-format " #[fg=white,bg=brightblack] #I #[fg=white,bg=brightblack]#W #F "
set -g window-status-current-format " #[fg=black,bg=cyan] #I #[fg=black,bg=cyan]#W #F "
set -g window-status-separator ""
# Set the style for pane borders
set -g pane-border-style 'fg=white'
set -g pane-active-border-style 'fg=#8bd5ca'
### Status Bar Configuration
# Position the status bar at the bottom
set -g status-position bottom
# Align status bar items to the left
set -g status-justify left
# Set the style for the status bar
set -g status-style 'fg=white,bg=#262626'
# Clear the default left status
set -g status-left ''
# Set the maximum length for the left status
set -g status-left-length 30
## Session name in the status bar
set -ga status-left "#[bg=#444444,fg=white] #S "
# Display different colors for the session name based on whether the prefix is active
set -ga status-left '#[fg=black]#{?client_prefix,#[bg=#ed8796] S ,#[bg=#a6da95] S }'
set -ga status-left '#[bg=#262626] '
# Set window status format to include the current directory or command
setw -g window-status-format '#[bg=#8787AF,fg=black] #I #[bg=#585B70,fg=white] #W #F '
# Set the current window status format to include the current directory or command
setw -g window-status-current-format '#[bg=#c6a0f6,fg=black] #I #[bg=#585B70,fg=white] #W #F '
# Set the separator between window statuses
set -g window-status-separator " "
# Status bar right settings (display host information)
set -g status-right "#[fg=black,bg=#7dc4e4] H #[fg=white,bg=brightblack] #H "
# Set the maximum length for the right status
set -g status-right-length 40

View File

@ -1,5 +0,0 @@
-o "%(title)s [%(id)s].%(ext)s"
-f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best"
--add-metadata
--geo-bypass
--continue

View File

@ -1,14 +1,21 @@
# Search for docker-compose files in the current and all sub direcotries and run docker compose with provided arguments
function dc() {
if [ -z "$1" ]; then
# display usage if no parameters given
echo "Search for docker-compose files in the current and all sub direcotries and run docker compose with provided arguments"
echo "Usage: dc <docker compose commands>"
return 1
else
# Save current working directory
CURRENT_DIR="${PWD}"
for file in $(find ${PWD} -maxdepth 2 -type f -regextype posix-extended -regex '.*(docker-compose|compose)\.ya?ml' | sort); do
cd $(dirname "$file")
docker compose $@
cd $(dirname "$file")
docker compose $@
done
# Change back to saved working directory
cd ${CURRENT_DIR}
}
fi
}

View File

@ -1,21 +1,21 @@
## Automatically compile all compilable files to zwc
function zwcautocompile () {
function zwcautocompile() {
autoload -Uz zrecompile
for zsh_file in $(find ${ZDOTDIR} -maxdepth 3 -type f \( -name "*.zsh" -o -name ".zlogin" -o -name ".zshrc" \) ! -name "*.zwc" ! -name "*.zwc.old"); do
zrecompile -pq $zsh_file && rm -f $zsh_file.zwc.old
for f in $(find ${ZDOTDIR} -maxdepth 3 -type f \( -name "*.zsh" -o -name ".zlogin" -o -name ".zshrc" \) ! -name "*.zwc" ! -name "*.zwc.old"); do
zrecompile -pq ${f} && rm -f ${f}.zwc.old
done
if [[ -d ${ZAUTOLOADDIR} ]]; then
for f in ${ZAUTOLOADDIR}/*; do
zrecompile -pq $f && rm -f $f.zwc.old
zrecompile -pq ${f} && rm -f ${f}.zwc.old
done
fi
if [[ -d ${ZLIBDIR} ]]; then
for f in ${ZLIBDIR}/*; do
zrecompile -pq $f && rm -f $f.zwc.old
zrecompile -pq ${f} && rm -f ${f}.zwc.old
done
fi
}
}

View File

@ -1,8 +1,8 @@
## Purge all compiled zwc files
function zwcpurge () {
function zwcpurge() {
autoload -Uz zrecompile
for zsh_file in $(find ${ZDOTDIR} -maxdepth 3 -type f \( -name "*.zwc" -o -name "*.zwc.old" \)); do
rm -f ${zsh_file}
rm -f ${zsh_file}
done
}
}

View File

@ -2,10 +2,10 @@
if [[ -d "${ZAUTOLOADDIR}" ]]; then
fpath=($fpath ${ZAUTOLOADDIR})
fpath=($fpath ${ZAUTOLOADDIR})
# Load functions
for func in ${ZAUTOLOADDIR}/*; do
autoload -Uz ${func:t}
done
fi
# Load functions
for func in ${ZAUTOLOADDIR}/*; do
autoload -Uz ${func:t}
done
fi

View File

@ -21,6 +21,5 @@ export PYTHONUSERBASE=${HOME}/.local
export INPUTRC="${XDG_CONFIG_HOME}/readline/inputrc"
export MANPATH="${MANPATH-$(manpath)}:${HOME}/.local/share/man"
# EZA
EZA_CONFIG_DIR=${XDG_CONFIG_HOME}/eza

View File

@ -0,0 +1 @@
ZSH_AUTOSUGGEST_STRATEGY=(history completion)

View File

@ -1,4 +1,5 @@
# zsh-history-substring-search configuration
# Keybindings
bindkey '^[[A' history-substring-search-up # or '\eOA'
bindkey '^[[B' history-substring-search-down # or '\eOB'
HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=1

View File

@ -21,7 +21,9 @@ plugin_repos=(
zsh-users/zsh-autosuggestions
zsh-users/zsh-syntax-highlighting
kulynyak/zsh.prepend-sudo
zsh-users/zsh-history-substring-search
amyreese/zsh-titles
)
# load plugins