Compare commits

..

12 Commits

6 changed files with 494 additions and 112 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