reformat directories structure and add aerospace windows manager

Signed-off-by: Rack Lin <racklin@gmail.com>
This commit is contained in:
2026-03-31 17:30:38 +08:00
parent 8bd05824c0
commit cd967cfa2a
70 changed files with 412 additions and 34 deletions

View File

@@ -30,11 +30,11 @@ Make sure you have installed all of the following prerequisites on your developm
```
- tmux config
- MacOSX config
## How to use
### git
Lets stow git setting,
Lets stow git setting,
`stow --dotfiles -vSt ~ git`
Thats it! we have successfully created a symlink for `.gitconfig` ,and a symlink for `.gitignore_global`
@@ -42,22 +42,19 @@ Thats it! we have successfully created a symlink for `.gitconfig` ,and a syml
`stow --dotfiles -vSt ~ zsh`
### fish shell
`mkdir ~/.config/fish`
`stow --dotfiles -vSt ~/.config/fish fish`
`stow --dotfiles -vSt ~ fish`
### tmux
`stow --dotfiles -vSt ~ tmux`
### nvim
`mkdir ~/.config/nvim`
`stow --dotfiles -vSt ~/.config/nvim nvim`
`stow --dotfiles -vSt ~ nvim`
### ghostty
`mkdir ~/.config/ghostty`
`stow --dotfiles -vSt ~/.config/ghostty ghostty`
`stow --dotfiles -vSt ~ ghostty`
### starship
`stow --dotfiles -vSt ~/.config starship`
`stow --dotfiles -vSt ~ starship`
## About me

View File

@@ -0,0 +1,300 @@
# Place a copy of this config to ~/.aerospace.toml
# After that, you can edit ~/.aerospace.toml to your liking
# Config version for compatibility and deprecations
# Fallback value (if you omit the key): config-version = 1
config-version = 2
# You can use it to add commands that run after AeroSpace startup.
# Available commands : https://nikitabobko.github.io/AeroSpace/commands
after-startup-command = [
'exec-and-forget borders active_color=0xffe2e4e5 inactive_color=0xff494d64 width=5.0' # order=above'
]
# 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 = false
# List of workspaces that should stay alive even when they contain no windows,
# even when they are invisible.
# This config version is only available since 'config-version = 2'
# Fallback value (if you omit the key): persistent-workspaces = []
#persistent-workspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B",
# "C", "D", "E", "F", "G", "I", "M", "N", "O", "P", "Q",
# "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
persistent-workspaces = ["1", "2", "3", "4", "5",
"A", "C", "D", "E", "O",
"Q", "S", "T", "W", "X", "Z"]
# A callback that runs every time binding mode changes
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
on-mode-changed = []
# Possible values: (qwerty|dvorak|colemak)
# 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 = 8
inner.vertical = 8
outer.left = 8
outer.bottom = 8
outer.top = 8
outer.right = 8
# '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, pageUp, pageDown, home, end, forwardDelete,
# sectionSign (ISO keyboards only, european keyboards only)
# - 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
alt-slash = 'layout tiles horizontal vertical'
alt-comma = 'layout accordion horizontal vertical'
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
alt-h = 'focus left'
alt-j = 'focus down'
alt-k = 'focus up'
alt-l = 'focus right'
# See: https://nikitabobko.github.io/AeroSpace/commands#move
alt-shift-h = 'move left'
alt-shift-j = 'move down'
alt-shift-k = 'move up'
alt-shift-l = 'move right'
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
alt-minus = 'resize smart -50'
alt-equal = 'resize smart +50'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
alt-1 = 'workspace 1'
alt-2 = 'workspace 2'
alt-3 = 'workspace 3'
alt-4 = 'workspace 4'
alt-5 = 'workspace 5'
#alt-6 = 'workspace 6'
#alt-7 = 'workspace 7'
#alt-8 = 'workspace 8'
#alt-9 = 'workspace 9'
alt-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need
#alt-b = 'workspace B'
alt-c = 'workspace C'
alt-d = 'workspace D'
alt-e = 'workspace E'
#alt-f = 'workspace F'
#alt-g = 'workspace G'
#alt-i = 'workspace I'
#alt-m = 'workspace M'
#alt-n = 'workspace N'
alt-o = 'workspace O'
#alt-p = 'workspace P'
alt-q = 'workspace Q'
#alt-r = 'workspace R'
alt-s = 'workspace S'
alt-t = 'workspace T'
#alt-u = 'workspace U'
#alt-v = 'workspace V'
alt-w = 'workspace W'
alt-x = 'workspace X'
#alt-y = 'workspace Y'
alt-z = 'workspace Z'
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
alt-shift-1 = 'move-node-to-workspace 1'
alt-shift-2 = 'move-node-to-workspace 2'
alt-shift-3 = 'move-node-to-workspace 3'
alt-shift-4 = 'move-node-to-workspace 4'
alt-shift-5 = 'move-node-to-workspace 5'
#alt-shift-6 = 'move-node-to-workspace 6'
#alt-shift-7 = 'move-node-to-workspace 7'
#alt-shift-8 = 'move-node-to-workspace 8'
#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
alt-tab = 'workspace-back-and-forth'
# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor
alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
alt-shift-semicolon = 'mode service'
# run ghostty
#alt-enter = 'exec-and-forget open -n /Applications/Ghostty.app'
#alt-enter = '''exec-and-forget CUR_WS=$(aerospace list-workspaces --focused) &&
# osascript -e 'tell application "Ghostty"
# new window
# activate
# end tell' &&
# aerospace move-node-to-workspace --focus-follows-window "$CUR_WS"'''
# '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']
alt-shift-h = ['join-with left', 'mode main']
alt-shift-j = ['join-with down', 'mode main']
alt-shift-k = ['join-with up', 'mode main']
alt-shift-l = ['join-with right', 'mode main']
alt-shift-p = ['move-workspace-to-monitor prev']
alt-shift-n = ['move-workspace-to-monitor next']
#[workspace-to-monitor-force-assignment]
# 6 = 2
# 7 = 2
# 8 = 2
# 5 = '^Built-in Retina Display$'
[[on-window-detected]]
if.app-id = 'com.mitchellh.ghostty'
run = ['layout floating', 'move-node-to-workspace T']
[[on-window-detected]]
if.app-id = 'com.cmuxterm.app'
run = ['move-node-to-workspace T']
[[on-window-detected]]
if.app-id = 'com.brave.Browser'
run = 'move-node-to-workspace W' # workspace W - Web browser
[[on-window-detected]]
if.app-id = 'com.google.Chrome'
run = 'move-node-to-workspace W' # workspace W - Web browser
[[on-window-detected]]
if.app-id = 'md.obsidian'
run = ['move-node-to-workspace O']
[[on-window-detected]]
if.app-id = 'com.bitwarden.desktop'
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.tencent.xinWeChat'
run = ['layout accordion', 'move-node-to-workspace Q']
[[on-window-detected]]
if.app-id = 'com.tdesktop.Telegram'
run = ['layout accordion', 'move-node-to-workspace Q']
[[on-window-detected]]
if.app-id = 'jp.naver.line.mac'
run = ['layout accordion', 'move-node-to-workspace Q']
[[on-window-detected]]
if.app-id = 'com.apple.Music'
run = 'move-node-to-workspace E'
[[on-window-detected]]
if.app-id = 'com.tencent.tencentmeeting'
run = 'move-node-to-workspace A'
[[on-window-detected]]
if.app-id = 'com.larksuite.larkApp'
run = 'move-node-to-workspace A'
[[on-window-detected]]
if.app-id = 'com.larksuite.larkApp.iron'
run = ['move-node-to-workspace A', 'enable off']
[[on-window-detected]]
if.app-id = 'com.microsoft.VSCode'
run = 'move-node-to-workspace C'

View File

@@ -1,16 +0,0 @@
if type -q eza
alias ls "eza -g --icons --classify --group-directories-first"
alias lsa "ls -a"
alias ll "ls -l"
alias lla "ll -a"
alias llg "ll --git"
end
if type -q nvim
alias vi nvim
alias vim nvim
end
# openclaw
alias openclaw-cliproxyapi-tunnel 'ssh -NL 8317:127.0.0.1:8317 node@openclaw-vm'
alias openclaw-tunnel 'ssh -NL 18789:127.0.0.1:18789 node@openclaw-vm'

View File

@@ -1,4 +1,4 @@
# podman migrate transparently from Docker to Podman Desktop
# podman migrate transparently from Docker to Podman Desktop
if type -q podman
set PODMAN_SOCKET_PATH "$(podman machine inspect --format '{{.ConnectionInfo.PodmanSocket.Path}}')"
export DOCKER_HOST="unix://$PODMAN_SOCKET_PATH"
@@ -15,6 +15,10 @@ if type -q docker
# azure-cli
# alias az="docker run --rm --name azure-cli -v \$HOME/.azure/config:/.azure/config bitnami/azure-cli:latest"
# alias aws="docker run --rm --name aws-cli -v \$HOME/.aws/config:/.aws/config bitnami/aws-cli:latest"
## plantuml local server
alias run-plantuml-server="docker run -d -p 8080:8080 --name plantuml-server --rm --read-only -v /tmp/jetty plantuml/plantuml-server:jetty"
alias stop-plantuml-server="docker stop plantuml-server"
end

View File

@@ -0,0 +1,9 @@
# brew bundle dump
alias brew-bundle-dump 'brew bundle dump --global --force --describe'
# Mole shell completion
set -l output (mole completion fish 2>/dev/null); and echo "$output" | source
# openclaw
alias openclaw-cliproxyapi-tunnel 'ssh -NL 8317:127.0.0.1:8317 node@openclaw-vm'
alias openclaw-tunnel 'ssh -NL 18789:127.0.0.1:18789 node@openclaw-vm'

View File

@@ -37,6 +37,28 @@ if status is-interactive
source (dirname (status --current-filename))/config-windows.fish
end
# eza alias
if type -q eza
alias l 'eza -bGF --header --git --color=always --group-directories-first --icons'
alias l. 'eza -a | grep -E \'^\.\''
alias lS 'eza -1 --color=always --group-directories-first --icons'
alias la 'eza --long --all --group --group-directories-first'
alias ll 'eza -la --icons --octal-permissions --group-directories-first --icons'
alias llm 'eza -lbGd --header --git --sort=modified --color=always --group-directories-first --icons'
alias llg "ll --git"
alias ls 'eza --color=always --group-directories-first --icons'
alias lsa 'ls -lah'
alias lt 'eza --tree --level=2 --color=always --group-directories-first --icons'
alias lx 'eza -lbhHigUmuSa@ --time-style=long-iso --git --color-scale --color=always --group-directories-first --icons'
end
alias md 'mkdir -p'
if type -q nvim
alias vi nvim
alias vim nvim
end
# using less instead of more
export LESS='-R'
alias more='less'

View File

@@ -1,4 +1,4 @@
font-size = 18
font-size = 19
font-family = JetBrainsMonoNL Nerd Font Mono

View File

@@ -48,3 +48,5 @@ DerivedData
.atom/compile-cache
.atom/storage
# synology nas
**/@eaDir/**

View File

@@ -1,13 +1,22 @@
tap "felixkratz/formulae"
tap "manaflow-ai/cmux"
tap "nikitabobko/tap"
# Command-line interface for SQLite
brew "sqlite"
# Download with resuming and segmented downloading
brew "aria2"
# Record and share terminal sessions
brew "asciinema"
# Resource monitor. C++ version and continuation of bashtop and bpytop
brew "btop"
# Statistics utility to count lines of code
brew "cloc"
# Get a file from an HTTP, HTTPS or FTP server
brew "curl"
# Pack, ship and run any application as a lightweight container
brew "docker"
# Isolated development environments using Docker
brew "docker-compose"
# More intuitive version of du in rust
brew "dust"
# Modern, maintained replacement for ls
@@ -34,6 +43,8 @@ brew "jq"
brew "mas"
# Hash utilities
brew "md5sha1sum"
# Deep clean and optimize your Mac
brew "mole"
# Ambitious Vim-fork focused on extensibility and agility
brew "neovim"
# Library for color text mode, widget based user interfaces
@@ -44,35 +55,55 @@ brew "podman"
brew "podman-compose"
# Podman Terminal User Interface
brew "podman-tui"
# Incremental parsing library
brew "tree-sitter"
# Modern API client that lives in your terminal
brew "posting"
# Generic machine emulator and virtualizer
brew "qemu"
# Search tool like grep and The Silver Searcher
brew "ripgrep"
# Command-line interface for https://speedtest.net bandwidth tests
brew "speedtest-cli"
# Cross-shell prompt for astronauts
brew "starship"
# Organize software neatly under a single directory tree (e.g. /usr/local)
brew "stow"
# Simplified and community-driven man pages
brew "tldr"
# Official tldr client written in Rust
brew "tlrc"
# Terminal multiplexer
brew "tmux"
# Incremental parsing library
brew "tree-sitter"
# Parser generator tool
brew "tree-sitter-cli"
# Feature-rich command-line audio/video downloader
brew "yt-dlp"
# Tracks most-used directories to make cd smarter
brew "z"
# Shell extension to navigate your filesystem faster
brew "zoxide"
# A window border system for macOS
brew "felixkratz/formulae/borders"
# Custom macOS statusbar with shell plugin, interaction and graph support
brew "felixkratz/formulae/sketchybar"
# AeroSpace is an i3-like tiling window manager for macOS
cask "nikitabobko/tap/aerospace"
# Menu bar icon organiser
cask "bartender"
# Desktop password and login vault
cask "bitwarden"
# Web browser focusing on privacy
cask "brave-browser"
# Ghostty-based terminal with vertical tabs and notifications for AI coding agents
cask "cmux"
# Tool to run Windows software
cask "crossover"
cask "font-arial"
cask "font-arial-black"
cask "font-hack-nerd-font"
cask "font-jetbrains-mono-nerd-font"
cask "font-noto-sans-cjk"
cask "font-noto-sans-cjk-tc"
cask "font-noto-sans-tc"
cask "font-noto-serif-cjk"
cask "font-sketchybar-app-font"
# Terminal emulator that uses platform-native UI and GPU acceleration
cask "ghostty"
# Client for the Google Drive storage service
@@ -93,22 +124,34 @@ cask "openvanilla"
cask "openvpn-connect"
# Browse, manage, inspect containers and images
cask "podman-desktop"
# Control your tools with a few keystrokes
cask "raycast"
# Screenshot measurement and annotation tool
cask "shottr"
# Visible indicator of the current input source
cask "showyedge"
# Video game digital distribution service
cask "steam"
# Sync and backup service to Synology NAS drives
cask "synology-drive"
# Desktop client for Telegram messenger
cask "telegram-desktop"
# JDK from the Eclipse Foundation (Adoptium)
cask "temurin"
# File transfer application
cask "transmit"
# Virtual machines UI using QEMU
cask "utm"
# Open-source code editor
cask "visual-studio-code"
# Video conferencing software
cask "voov-meeting"
# Free messaging and calling application
cask "wechat"
# Open-source version of the X.Org X Window System
cask "xquartz"
# REST, GraphQL and gRPC client
cask "yaak"
mas "GarageBand", id: 682658836
mas "iMovie", id: 408981434
mas "Keynote", id: 409183694
@@ -120,8 +163,10 @@ mas "Numbers", id: 409203825
mas "OneDrive", id: 823766827
mas "Pages", id: 409201541
mas "Shadowrocket", id: 932747118
vscode "bmewburn.vscode-intelephense-client"
vscode "eamodio.gitlens"
vscode "editorconfig.editorconfig"
vscode "jebbs.plantuml"
vscode "ms-azuretools.vscode-containers"
vscode "ms-vscode-remote.remote-containers"
vscode "ms-vscode-remote.remote-ssh"
@@ -130,3 +175,4 @@ vscode "ms-vscode-remote.remote-wsl"
vscode "ms-vscode-remote.vscode-remote-extensionpack"
vscode "ms-vscode.remote-explorer"
vscode "ms-vscode.remote-server"
vscode "xdebug.php-debug"

View File

@@ -0,0 +1 @@
spacing: compact

View File

@@ -0,0 +1,2 @@
name: Get Users
url: https://jsonplaceholder.typicode.com/users

View File

@@ -0,0 +1 @@
[]

0
vscode/mcp.json Normal file
View File

10
vscode/settings.json Normal file
View File

@@ -0,0 +1,10 @@
{
"containers.containerClient": "com.microsoft.visualstudio.containers.docker",
"containers.orchestratorClient": "com.microsoft.visualstudio.orchestrators.dockercompose",
"plantuml.render": "PlantUMLServer",
"plantuml.server": "http://localhost:8080",
"editor.fontSize": 15,
"editor.fontFamily": "'JetBrainsMonoNL Nerd Font Mono', Menlo, Monaco, 'Courier New', monospace",
"editor.formatOnSave": true,
"php.validate.executablePath": ""
}