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 appdir: "/Applications"
cask_args language: "de,deu,en,eng" cask_args language: "de,deu,en,eng"
## Taps # ## Taps
tap "buo/cask-upgrade" # tap "homebrew/bundle"
tap "fabianishere/personal" # tap "homebrew/cask"
tap "homebrew/bundle" # tap "homebrew/cask-drivers"
tap "homebrew/cask" # tap "homebrew/cask-fonts"
tap "homebrew/cask-drivers" # tap "homebrew/cask-versions"
tap "homebrew/cask-fonts" # tap "homebrew/core"
tap "homebrew/cask-versions" # tap "homebrew/services"
tap "homebrew/core" # tap "microsoft/git"
tap "homebrew/services" tap "nikitabobko/tap"
tap "hudochenkov/sshpass" tap "FelixKratz/formulae"
tap "khanhas/tap"
tap "koekeishiya/formulae"
## brew formulae ## brew formulae
brew "arping" brew "FelixKratz/formulae/borders"
brew "node"
brew "bitwarden-cli"
brew "brew-cask-completion" brew "brew-cask-completion"
brew "python@3.9" brew "arping"
brew "checkbashisms" brew "checkbashisms"
brew "convmv" brew "eza"
brew "duti"
brew "exiftool"
brew "tesseract"
brew "ffmpeg", args: ["HEAD"]
brew "git" brew "git"
brew "git-secret" brew "git-secret"
brew "go" brew "go"
brew "htop" brew "htop"
brew "hugo" brew "hugo"
brew "ipmitool" brew "iperf"
brew "iperf3"
brew "jq" brew "jq"
brew "mas"
brew "mosh" brew "mosh"
brew "nmap" brew "nmap"
brew "node"
brew "ocrmypdf" brew "ocrmypdf"
brew "pandoc" brew "python3"
brew "reattach-to-user-namespace"
brew "rsync" brew "rsync"
brew "rclone"
brew "restic"
brew "shfmt" brew "shfmt"
brew "subversion"
brew "tesseract-lang" brew "tesseract-lang"
brew "tmux" brew "tmux"
brew "topgrade" brew "topgrade"
brew "tree" brew "tree"
brew "vim" brew "vim"
brew "youtube-dl" brew "yt-dlp"
#brew "trippy"
brew "zsh" brew "zsh"
brew "zsh-completions" brew "zsh-completions"
brew "fabianishere/personal/pam_reattach"
brew "hudochenkov/sshpass/sshpass"
brew "koekeishiya/formulae/skhd"
brew "koekeishiya/formulae/yabai", args: ["HEAD"]
## cask formulae # Fonts
cask "airbuddy" cask "font-meslo-lg-nerd-font"
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"
cask "font-fira-code" cask "font-fira-code"
cask "font-source-code-pro" 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 "fork"
cask "fujitsu-scansnap-manager"
cask "google-chrome" cask "google-chrome"
# cask "hyperkey"
cask "raspberry-pi-imager"
cask "hammerspoon"
cask "hazel" cask "hazel"
cask "hex-fiend" cask "curseforge"
cask "istat-menus" cask "obs"
cask "iterm2" # cask "hiddenbar"
cask "keyboardcleantool" cask "jordanbaird-ice"
cask "little-snitch" cask "karabiner-elements"
cask "logitech-camera-settings"
cask "mactex-no-gui"
cask "marked" 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 "mediathekview"
cask "microsoft-teams" cask "microsoft-teams"
cask "moneymoney"
cask "monitorcontrol" cask "monitorcontrol"
cask "nextcloud" cask "nextcloud"
cask "numi" cask "numi"
cask "onyx" cask "raycast"
cask "oracle-jdk" # cask "rectangle"
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 "spotify" cask "spotify"
cask "transmission"
cask "transmit"
cask "unclack"
cask "vlc" cask "vlc"
cask "vnc-viewer" cask "vnc-viewer"
cask "vscodium" cask "nikitabobko/tap/aerospace"
cask "webex"
cask "whichspace"
cask "wireshark"
## Mac AppStore ## Mac AppStore
mas "AdGuard for Safari", id: 1440147259 mas "AdGuard for Safari", id: 1440147259;
mas "Affinity Designer", id: 824171161 mas "Affinity Designer", id: 824171161;
mas "Affinity Photo", id: 824183456 mas "Affinity Photo", id: 824183456;
mas "Affinity Publisher", id: 881418622 mas "Affinity Publisher", id: 881418622;
mas "Amphetamine", id: 937984704 mas "Amphetamine", id: 937984704;
mas "AudioBookBinder", id: 413969927 mas "AudioBookBinder", id: 413969927;
mas "Bitwarden", id: 1352778147 mas "Bitwarden", id: 1352778147;
mas "Cardhop", id: 1290358394 mas "Cardhop", id: 1290358394;
mas "ColorSlurp", id: 1287239339 mas "ColorSlurp", id: 1287239339;
mas "Controller", id: 1198176727 mas "Create Booklet", id: 943029046;
mas "Create Booklet", id: 943029046 mas "DaisyDisk", id: 411643860;
mas "DaisyDisk", id: 411643860 mas "Drafts", id: 1435957248;
mas "Drafts", id: 1435957248 mas "Draw Things", id: 6444050820;
mas "Final Cut Pro", id: 424389933 mas "Final Cut Pro", id: 424389933;
mas "iA Writer", id: 775737590 mas "iA Writer", id: 775737590;
mas "Interact Scratchpad", id: 1199660222 mas "Ice Cubes", id: 6444915884;
mas "Keynote", id: 409183694 mas "Interact Scratchpad", id: 1199660222;
mas "Mactracker", id: 430255202 mas "Microsoft Excel", id: 462058435;
mas "Microsoft Excel", id: 462058435 mas "Microsoft PowerPoint", id: 462062816;
mas "Microsoft PowerPoint", id: 462062816 mas "Microsoft Word", id: 462054704;
mas "Microsoft Word", id: 462054704 mas "Mindcad Tiler", id: 432460453;
mas "Mindcad Tiler", id: 432460453 mas "Moom Classic", id: 419330170;
mas "MindNode", id: 992076693 mas "MQTT Explorer", id: 1455214828;
mas "MQTT Explorer", id: 1455214828 mas "Parcel", id: 639968404;
mas "Numbers", id: 409203825 mas "Reeder", id: 1529448980;
mas "Pages", id: 409201541 mas "RSS Button for Safari", id: 1437501942;
mas "Parcel", id: 639968404 mas "The Unarchiver", id: 425424353;
mas "Reeder", id: 1529448980 mas "Todoist", id: 585829637;
mas "RSS Button for Safari", id: 1437501942 mas "WireGuard", id: 1451685025;
mas "Scenecuts Helper", id: 1540491573 mas "WhatsApp", id: 310633997;
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

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 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' # Start htop and split the window when the session "main" is created
# remap prefix from 'C-b' to 'C-a' 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 unbind C-b
set-option -g prefix C-a set-option -g prefix C-a
bind-key C-a send-prefix bind-key C-a send-prefix
# Use C-b to send prefix twice so it acts on nested session # Split panes using 'h' for horizontal and 'v' for vertical splits
bind-key -n C-b send-prefix bind "h" split-window -h
bind "v" split-window -v
# split panes using # and -
bind "#" split-window -h
bind "-" split-window -v
unbind '"' unbind '"'
unbind % unbind %
# reload config file # Reload the tmux configuration file with 'r'
bind r source-file $XDG_CONFIG_HOME/tmux/tmux.conf bind r source-file $XDG_CONFIG_HOME/tmux/tmux.conf
# switch panes using Alt-arrow without prefix ### Status and Window Configuration
bind -n M-Left select-pane -L # Set the status bar update interval to 1 second
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
set -g status-interval 1 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 '' # Set the color of the clock mode
## Indicate if prefix has been pressed set -g clock-mode-colour "#8bd5ca"
set -ga status-left '#[bg=#white]#[fg=#brightblack]#{?client_prefix,#[fg=red] ◯ , ◯ }'
## Session name
set -ga status-left "#S"
set -g status-right '' # Set the style for copy mode (foreground black, background a specific color, bold text)
# Date and time set -g mode-style 'fg=black bg=#ed8796 bold'
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 "
#+--- Windows ---+ # Set the style for pane borders
set -g window-status-format " #[fg=white,bg=brightblack] #I #[fg=white,bg=brightblack]#W #F " set -g pane-border-style 'fg=white'
set -g window-status-current-format " #[fg=black,bg=cyan] #I #[fg=black,bg=cyan]#W #F " set -g pane-active-border-style 'fg=#8bd5ca'
set -g window-status-separator ""
### 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 # Search for docker-compose files in the current and all sub direcotries and run docker compose with provided arguments
function dc() { 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 # Save current working directory
CURRENT_DIR="${PWD}" CURRENT_DIR="${PWD}"
for file in $(find ${PWD} -maxdepth 2 -type f -regextype posix-extended -regex '.*(docker-compose|compose)\.ya?ml' | sort); do for file in $(find ${PWD} -maxdepth 2 -type f -regextype posix-extended -regex '.*(docker-compose|compose)\.ya?ml' | sort); do
cd $(dirname "$file") cd $(dirname "$file")
docker compose $@ docker compose $@
done done
# Change back to saved working directory # Change back to saved working directory
cd ${CURRENT_DIR} cd ${CURRENT_DIR}
} fi
}

View File

@ -1,21 +1,21 @@
## Automatically compile all compilable files to zwc ## Automatically compile all compilable files to zwc
function zwcautocompile () { function zwcautocompile() {
autoload -Uz zrecompile 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 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 $zsh_file && rm -f $zsh_file.zwc.old zrecompile -pq ${f} && rm -f ${f}.zwc.old
done done
if [[ -d ${ZAUTOLOADDIR} ]]; then if [[ -d ${ZAUTOLOADDIR} ]]; then
for f in ${ZAUTOLOADDIR}/*; do for f in ${ZAUTOLOADDIR}/*; do
zrecompile -pq $f && rm -f $f.zwc.old zrecompile -pq ${f} && rm -f ${f}.zwc.old
done done
fi fi
if [[ -d ${ZLIBDIR} ]]; then if [[ -d ${ZLIBDIR} ]]; then
for f in ${ZLIBDIR}/*; do for f in ${ZLIBDIR}/*; do
zrecompile -pq $f && rm -f $f.zwc.old zrecompile -pq ${f} && rm -f ${f}.zwc.old
done done
fi fi
} }

View File

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

View File

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

View File

@ -21,6 +21,5 @@ export PYTHONUSERBASE=${HOME}/.local
export INPUTRC="${XDG_CONFIG_HOME}/readline/inputrc" export INPUTRC="${XDG_CONFIG_HOME}/readline/inputrc"
export MANPATH="${MANPATH-$(manpath)}:${HOME}/.local/share/man" export MANPATH="${MANPATH-$(manpath)}:${HOME}/.local/share/man"
# EZA # EZA
EZA_CONFIG_DIR=${XDG_CONFIG_HOME}/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 '^[[A' history-substring-search-up # or '\eOA'
bindkey '^[[B' history-substring-search-down # or '\eOB' bindkey '^[[B' history-substring-search-down # or '\eOB'
HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=1 HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=1

View File

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