├── id_rsa ├── home ├── .config │ ├── borders │ │ ├── nohup.out │ │ └── bordersrc │ ├── zed │ │ ├── .gitignore │ │ ├── keymap.json │ │ └── settings.json │ ├── karabiner │ │ ├── .DS_Store │ │ ├── assets │ │ │ ├── .DS_Store │ │ │ └── complex_modifications │ │ │ │ ├── 1625592180.json │ │ │ │ └── 1625507559.json │ │ ├── automatic_backups │ │ │ └── karabiner_20210705.json │ │ └── karabiner.json │ ├── flameshot │ │ └── flameshot.ini │ ├── nvim │ │ └── init.vim │ ├── aliases │ ├── starship │ │ └── starship.toml │ ├── linearmouse │ │ └── linearmouse.json │ ├── kitty │ │ ├── current-theme.conf │ │ ├── themes │ │ │ └── nerdyman.conf │ │ └── kitty.conf │ ├── wezterm │ │ ├── colors │ │ │ └── nerdyman.toml │ │ └── wezterm.lua │ ├── Code │ │ └── User │ │ │ ├── keybindings.json │ │ │ └── settings.json │ ├── aerospace │ │ └── aerospace.toml │ ├── Cursor │ │ └── User │ │ │ ├── keybindings.json │ │ │ └── settings.json │ └── i3 │ │ └── config ├── .local │ └── bin │ │ ├── browser │ │ ├── incognito-chromium │ │ ├── font-cache-clear │ │ ├── pacman-autoremove │ │ ├── font-list-variations │ │ ├── incognito-firefox │ │ ├── pretty-diff │ │ ├── public-ip │ │ ├── incognito │ │ ├── kill-wine │ │ ├── public-geoip │ │ ├── pacman-package-info │ │ ├── nv-fan │ │ ├── macos-unquarantine │ │ └── proton-run ├── .zprofile ├── Documents │ └── configs │ │ └── gerbera │ │ ├── .env │ │ └── docker-compose.yml ├── .atom │ ├── keymap.cson │ ├── styles.less │ └── config.cson ├── .Xresources ├── Library │ └── KeyBindings │ │ └── DefaultKeyBinding.dict ├── .xinitrc ├── .tmux.conf ├── .gitconfig ├── .zshrc └── .cursor │ └── extensions │ └── extensions.json ├── scrots ├── kitty.png ├── social.png ├── rofi-drun.png ├── rofi-run.png ├── vs-code.png ├── wezterm.png └── rofi-window.png ├── .gitignore ├── Library └── Keyboard Layouts │ ├── British (PC 105).icns │ ├── British (PC 105 alt).icns │ └── British (PC 105).keylayout ├── .gitmodules ├── archinstall ├── install.sh ├── user_credentials.json ├── README.md ├── download.sh ├── user_disk_layout.json └── user_configuration.json ├── .editorconfig ├── etc └── issue ├── install-deps.sh ├── README.md ├── gnome-mods.sh └── macos-mods.sh /id_rsa: -------------------------------------------------------------------------------- 1 | Don't be silly. 2 | -------------------------------------------------------------------------------- /home/.config/borders/nohup.out: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /home/.local/bin/browser: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec $BROWSER 4 | -------------------------------------------------------------------------------- /home/.zprofile: -------------------------------------------------------------------------------- 1 | eval "$(/opt/homebrew/bin/brew shellenv)" 2 | -------------------------------------------------------------------------------- /home/.config/zed/.gitignore: -------------------------------------------------------------------------------- 1 | .tmp* 2 | conversations/ 3 | embeddings/ 4 | prompts/ 5 | -------------------------------------------------------------------------------- /home/.local/bin/incognito-chromium: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec chromium --incognito 4 | -------------------------------------------------------------------------------- /scrots/kitty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/scrots/kitty.png -------------------------------------------------------------------------------- /scrots/social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/scrots/social.png -------------------------------------------------------------------------------- /home/.local/bin/font-cache-clear: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec fc-cache -f; sudo fc-cache -f 4 | -------------------------------------------------------------------------------- /home/.local/bin/pacman-autoremove: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec pacman -Qdtq | pacman -Rs - 4 | -------------------------------------------------------------------------------- /scrots/rofi-drun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/scrots/rofi-drun.png -------------------------------------------------------------------------------- /scrots/rofi-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/scrots/rofi-run.png -------------------------------------------------------------------------------- /scrots/vs-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/scrots/vs-code.png -------------------------------------------------------------------------------- /scrots/wezterm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/scrots/wezterm.png -------------------------------------------------------------------------------- /scrots/rofi-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/scrots/rofi-window.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .*.swp 2 | .*~ 3 | *.ignore 4 | .DS_Store 5 | home/.config/karabiner/automatic_backups/ 6 | -------------------------------------------------------------------------------- /home/.local/bin/font-list-variations: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec fc-list -f '%{style[0]}\n' "$1" 4 | 5 | -------------------------------------------------------------------------------- /home/.local/bin/incognito-firefox: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec firefox-developer-edition --private 4 | -------------------------------------------------------------------------------- /home/.local/bin/pretty-diff: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec colordiff -yW"`tput cols`" "$1" "$2" | bat 4 | -------------------------------------------------------------------------------- /home/.local/bin/public-ip: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec dig +short myip.opendns.com @resolver1.opendns.com 4 | -------------------------------------------------------------------------------- /home/.config/karabiner/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/home/.config/karabiner/.DS_Store -------------------------------------------------------------------------------- /home/.local/bin/incognito: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #exec firefox-developer-edition --private 4 | exec brave --incognito 5 | -------------------------------------------------------------------------------- /home/.config/karabiner/assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/home/.config/karabiner/assets/.DS_Store -------------------------------------------------------------------------------- /home/Documents/configs/gerbera/.env: -------------------------------------------------------------------------------- 1 | GERBERA_VIDEO_SOURCE_PATH=/mnt/multimedia/videos 2 | GERBERA_VIDEO_TARGET_PATH=/media/videos 3 | -------------------------------------------------------------------------------- /Library/Keyboard Layouts/British (PC 105).icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/Library/Keyboard Layouts/British (PC 105).icns -------------------------------------------------------------------------------- /Library/Keyboard Layouts/British (PC 105 alt).icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdyman/dotfiles/HEAD/Library/Keyboard Layouts/British (PC 105 alt).icns -------------------------------------------------------------------------------- /home/.atom/keymap.cson: -------------------------------------------------------------------------------- 1 | '.platform-win32 .editor, .platform-linux atom-text-editor': 2 | 'ctrl-shift-X': 'markdown-pdf:convert' 3 | 'ctrl-shift-C': 'unset!' 4 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "home/.config/kitty/kitty_search"] 2 | path = home/.config/kitty/kitty_search 3 | url = https://github.com/trygveaa/kitty-kitten-search 4 | -------------------------------------------------------------------------------- /home/.local/bin/kill-wine: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | wineserver -k; killall -9 wine wineserver; for i in `ps ax|egrep "*\.exe"|grep -v 'egrep'|awk '{print $1 }'`;do kill -9 $i;done 4 | -------------------------------------------------------------------------------- /home/.Xresources: -------------------------------------------------------------------------------- 1 | Xft.dpi: 96 2 | Xft.antialias: true 3 | Xft.hinting: true 4 | Xft.rgba: rgb 5 | Xft.autohint: false 6 | Xft.hintstyle: hintslight 7 | Xft.lcdfilter: lcddefault 8 | -------------------------------------------------------------------------------- /archinstall/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec archinstall \ 4 | --config ./user_configuration.json \ 5 | --creds user_credentials.json \ 6 | --disk-layout ./user_disk_layout.json 7 | -------------------------------------------------------------------------------- /home/.local/bin/public-geoip: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | _ip=$(source "$(dirname ${BASH_SOURCE[0]})/public-ip") 4 | _geoip=$(geoiplookup $_ip) 5 | 6 | echo "IP : ${_ip}" 7 | echo "GeoIP: ${_geoip}" 8 | 9 | -------------------------------------------------------------------------------- /archinstall/user_credentials.json: -------------------------------------------------------------------------------- 1 | { 2 | "users": [ 3 | { 4 | "sudo": true, 5 | "username": "me", 6 | "enc_password": "pass" 7 | } 8 | ], 9 | "root_enc_password": "pass" 10 | } 11 | -------------------------------------------------------------------------------- /home/.config/borders/bordersrc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | options=( 4 | style=round 5 | width=4.0 6 | hidpi=on 7 | active_color=0xCCC9BDFF 8 | inactive_color=0x00000000 9 | ) 10 | 11 | borders "${options[@]}" 12 | -------------------------------------------------------------------------------- /home/.config/flameshot/flameshot.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | contrastOpacity=188 3 | filenamePattern=%F_%H-%M-%S 4 | savePath=/Users/me/Downloads 5 | startupLaunch=true 6 | uploadHistoryMax=0 7 | 8 | [Shortcuts] 9 | TAKE_SCREENSHOT=Ctrl+Shift+3 10 | -------------------------------------------------------------------------------- /home/.local/bin/pacman-package-info: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Find the executables for a package 4 | # https://bbs.archlinux.org/viewtopic.php?pid=693938#p693938 5 | 6 | for ARG in $(pacman -Qql $1); do [ ! -d $ARG ] && [ -x $ARG ] && echo $ARG; done 7 | -------------------------------------------------------------------------------- /archinstall/README.md: -------------------------------------------------------------------------------- 1 | # archinstall 2 | 3 | Run the following command to pull down the scripts and configs, then follow the instructions: 4 | 5 | ```sh 6 | bash -c "$(curl -fsSL https://raw.github.com/nerdyman/dotfiles/main/archinstall/download.sh)" 7 | ``` 8 | -------------------------------------------------------------------------------- /home/.local/bin/nv-fan: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Set fan speed for Nvidia GPU 4 | 5 | _default_speed="80" 6 | _speed=${1:-$_default_speed} 7 | 8 | nvidia-settings -a "[gpu:0]/GPUFanControlState=1" 9 | nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=${_speed}" 10 | -------------------------------------------------------------------------------- /home/.config/karabiner/assets/complex_modifications/1625592180.json: -------------------------------------------------------------------------------- 1 | {"title":"Open a new terminal","rules":[{"description":"Open a new terminal","manipulators":[{"type":"basic","from":{"modifiers":{"mandatory":["left_alt","left_shift"]},"key_code":"t"},"to":[{"shell_command":"open -n -a kitty"}]}]}]} -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | root = true 5 | 6 | [*] 7 | charset = utf-8 8 | end_of_line = lf 9 | indent_size = 2 10 | indent_style = tab 11 | insert_final_newline = true 12 | trim_trailing_whitespace = true 13 | -------------------------------------------------------------------------------- /home/.config/nvim/init.vim: -------------------------------------------------------------------------------- 1 | syntax on 2 | 3 | set mouse= 4 | set autoindent 5 | set cursorline 6 | set formatoptions-=cro 7 | set incsearch 8 | set ignorecase 9 | set hlsearch 10 | set magic 11 | set modeline 12 | set nobackup 13 | set nospell 14 | set noswapfile 15 | set number 16 | set ruler 17 | set shiftwidth=2 18 | set showcmd 19 | set showmatch 20 | set showmode 21 | set textwidth=0 22 | set wildmenu 23 | -------------------------------------------------------------------------------- /home/Library/KeyBindings/DefaultKeyBinding.dict: -------------------------------------------------------------------------------- 1 | { 2 | "\UF729" = "moveToBeginningOfLine:"; 3 | "\UF72B" = "moveToEndOfLine:"; 4 | "$\UF729" = "moveToBeginningOfLineAndModifySelection:"; 5 | "$\UF72B" = "moveToEndOfLineAndModifySelection:"; 6 | "^\UF729" = "moveToBeginningOfDocument:"; 7 | "^\UF72B" = "moveToEndOfDocument:"; 8 | "^$\UF729" = "moveToBeginningOfDocumentAndModifySelection:"; 9 | "^$\UF72B" = "moveToEndOfDocumentAndModifySelection:"; 10 | } 11 | -------------------------------------------------------------------------------- /home/Documents/configs/gerbera/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | app: 5 | image: gerbera/gerbera:v1.4.0 6 | container_name: gerbera 7 | env_file: "./.env" 8 | hostname: gerbera 9 | network_mode: host 10 | volumes: 11 | - type: bind 12 | source: ${GERBERA_VIDEO_SOURCE_PATH} 13 | target: ${GERBERA_VIDEO_TARGET_PATH} 14 | read_only: true 15 | command: 16 | - --add-file 17 | - ${GERBERA_VIDEO_TARGET_PATH} 18 | -------------------------------------------------------------------------------- /etc/issue: -------------------------------------------------------------------------------- 1 | ######################## KEEP OUT OF MY PERSONAL SPACE ######################## 2 | 3 | Here we go. 4 | We get a one, personal space. 5 | Two, personal space. 6 | Three, stay out of my personal space. 7 | Four, keep away from my personal space. 8 | Five... Get out of that personal space. 9 | Six... Stay away from my personal space. 10 | Seven... Keep away from that personal space. 11 | Eight, personal space. 12 | Nine, personal space. 13 | 14 | You know, I take personal space pretty seriously, up to the point that I don't 15 | even care about this... I'm not even interested in having remote users in my personal space. 16 | -------------------------------------------------------------------------------- /home/.config/aliases: -------------------------------------------------------------------------------- 1 | # ls alias needed for grc to highlight dir listings correctly https://github.com/garabik/grc/issues/36 2 | #alias ls="grc --colour=auto ls --color=always" 3 | alias ls="eza --git --header --hyperlink --group-directories-first" 4 | alias l="ls -lah" 5 | alias vim="nvim" 6 | alias batl="bat --style=plain" 7 | alias prettybatl="prettybat --style=plain" 8 | alias icat="kitten icat" 9 | alias yeet="rm -rf" 10 | 11 | # go to projects directory and allow autocompletions of files and folders 12 | hash -d b="${HOME}/.local/bin" 13 | hash -d p="${HOME}/Documents/projects" 14 | 15 | function killport () { 16 | echo "Killing port ${1}" 17 | kill -9 $(lsof -ti:$1) 18 | } 19 | 20 | # vim: set filetype=sh : 21 | -------------------------------------------------------------------------------- /home/.local/bin/macos-unquarantine: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if an argument was provided 4 | if [ $# -eq 0 ]; then 5 | echo "Usage: $0 " 6 | echo "Example: $0 '/Applications/MyApp.app'" 7 | exit 1 8 | fi 9 | 10 | # Get the first argument 11 | app_path="$1" 12 | 13 | # Check if the path exists 14 | if [ ! -e "$app_path" ]; then 15 | echo "Error: '$app_path' does not exist" 16 | exit 1 17 | fi 18 | 19 | # Remove quarantine attribute 20 | echo "Removing quarantine from: $app_path" 21 | xattr -rd com.apple.quarantine "$app_path" 22 | 23 | if [ $? -eq 0 ]; then 24 | echo "Quarantine removed successfully" 25 | else 26 | echo "Error: Failed to remove quarantine" 27 | exit 1 28 | fi 29 | -------------------------------------------------------------------------------- /home/.atom/styles.less: -------------------------------------------------------------------------------- 1 | @font-size-normal: .87rem; 2 | @font-size-small: .825rem; 3 | 4 | atom-panel *, 5 | linter-message *, 6 | atom-text-editor[mini], 7 | .tree-view *, 8 | .tooltip, 9 | .tab-bar *, 10 | .find-and-replace .find-meta-container, 11 | .btn, 12 | .settings-view, 13 | .status-bar, 14 | .list-tree * { 15 | -webkit-font-smoothing: antialiased; 16 | font-size: @font-size-normal; 17 | font-family: 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; 18 | font-weight: 500; 19 | } 20 | 21 | atom-panel.modal * { 22 | font-size: @font-size-small; 23 | } 24 | 25 | .config-menu ul li a, 26 | .pane-item section .section-heading, .pane-item .section .section-heading { 27 | font-weight: 600; 28 | } 29 | 30 | .status-bar { 31 | font-size: @font-size-small; 32 | } 33 | -------------------------------------------------------------------------------- /archinstall/download.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | TARGET_DIR="/tmp/archinstall-configs" 4 | 5 | rm -rf $TARGET_DIR 6 | mkdir -p $TARGET_DIR 7 | pushd $TARGET_DIR 8 | curl -fsSL https://raw.githubusercontent.com/nerdyman/dotfiles/main/archinstall/user_configuration.json -O 9 | curl -fsSL https://raw.githubusercontent.com/nerdyman/dotfiles/main/archinstall/user_credentials.json -O 10 | curl -fsSL https://raw.githubusercontent.com/nerdyman/dotfiles/main/archinstall/user_disk_layout.json -O 11 | curl -fsSL https://raw.githubusercontent.com/nerdyman/dotfiles/main/archinstall/install.sh -O 12 | echo "You might want to make some changes:" 13 | echo "=> $(pwd)/user_configuration.json to change harddrives" 14 | echo "=> $(pwd)/user_credentials.json to change password" 15 | echo "=> $(pwd)/user_disk_layout.json to change install disk key" 16 | 17 | zsh 18 | -------------------------------------------------------------------------------- /archinstall/user_disk_layout.json: -------------------------------------------------------------------------------- 1 | { 2 | "/dev/sda": { 3 | "partitions": [ 4 | { 5 | "boot": true, 6 | "encrypted": false, 7 | "filesystem": { 8 | "format": "fat32" 9 | }, 10 | "mountpoint": "/boot", 11 | "size": "512Mib", 12 | "start": "1Mib", 13 | "type": "primary", 14 | "wipe": "true" 15 | }, 16 | { 17 | "btrfs": { 18 | "subvolumes": { 19 | "@": "/", 20 | "@.snapshots": "/.snapshots", 21 | "@home": "/home", 22 | "@log": "/var/log", 23 | "@pkg": "/var/cache/packman/pkg" 24 | } 25 | }, 26 | "encrypted": false, 27 | "filesystem": { 28 | "format": "btrfs", 29 | "mount_options": [ 30 | "compress=zstd" 31 | ] 32 | }, 33 | "mountpoint": null, 34 | "size": "100%", 35 | "start": "513MiB", 36 | "type": "primary", 37 | "wipe": true 38 | } 39 | ], 40 | "wipe": true 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /install-deps.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 4 | echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/me/.zprofile 5 | eval "$(/opt/homebrew/bin/brew shellenv)" 6 | 7 | brew install awscli bandwhich bash-completion bat bat-extras coreutils ctop eza fnm fzf gnu-tar grc git git-delta htop inetutils jq neovim ripgrep shellcheck starship tree zsh zsh-syntax-highlighting zstd 8 | 9 | # macOS 10 | if [[ "$(uname)" == "Darwin" ]]; then 11 | brew tap FelixKratz/formulae 12 | brew install --cask nikitabobko/tap/aerospace flameshot hiddenbar kap raycast wezterm 13 | brew install --cask linearmouse --no-quarantine 14 | 15 | brew install borders iproute2mac rustup-init 16 | 17 | softwareupdate --install-rosetta 18 | fi 19 | 20 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended 21 | 22 | -------------------------------------------------------------------------------- /home/.local/bin/proton-run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #!/bin/sh 4 | 5 | if [ -z "$STEAMDIR" ]; then 6 | STEAMDIR="$HOME/.steam/steam/steamapps" 7 | fi 8 | if [ -z "$PROTON_VERSION" ]; then 9 | PROTON_VERSION="Proton 3.16" 10 | fi 11 | 12 | 13 | PROTON_DIR="${STEAMDIR}/common/${PROTON_VERSION}" 14 | PROTON_WINE_PATH="${PROTON_DIR}/dist/bin/wine64" 15 | 16 | if [ ! -z "$KILL_WINE" ]; then 17 | # A bit hardcore, but whatever 18 | wineserver -k; killall -9 wine wineserver; for i in `ps ax|egrep "*\.exe"|grep -v 'egrep'|awk '{print $1 }'`;do kill -9 $i;done 19 | fi 20 | 21 | if [ -z "$1" ]; then 22 | PROTON_DEF_PFX="${PROTON_DIR}/dist/share/default_pfx" 23 | echo -e "\e[32m\e[1mUSING proton default environment\e[0m" 24 | else 25 | PROTON_DEF_PFX="${STEAMDIR}/compatdata/${1}/pfx" 26 | echo -e "\e[32m\e[1mUSING app sepcific environment for APPID: $1\e[0m" 27 | fi 28 | 29 | shift 30 | WINEESYNC=1 env WINEPREFIX="$PROTON_DEF_PFX" WINEPATH="$PROTON_WINE_PATH" "$PROTON_WINE_PATH" "$@" 31 | -------------------------------------------------------------------------------- /home/.xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | userresources=$HOME/.Xresources 4 | usermodmap=$HOME/.Xmodmap 5 | sysresources=/etc/X11/xinit/.Xresources 6 | sysmodmap=/etc/X11/xinit/.Xmodmap 7 | 8 | # merge in defaults and keymaps 9 | 10 | if [ -f $sysresources ]; then 11 | xrdb -merge $sysresources 12 | fi 13 | 14 | if [ -f $sysmodmap ]; then 15 | xmodmap $sysmodmap 16 | fi 17 | 18 | if [ -f "$userresources" ]; then 19 | xrdb -merge "$userresources" 20 | 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | # start some nice programs 28 | 29 | if [ -d /etc/X11/xinit/xinitrc.d ] ; then 30 | for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do 31 | [ -x "$f" ] && . "$f" 32 | done 33 | unset f 34 | fi 35 | 36 | # SSH 37 | eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) 38 | export SSH_AUTH_SOCK 39 | export XDG_CURRENT_DESKTOP=XFCE 40 | pacmd load-module module-alsa-sink device=hw:0,1 & 41 | compton --config ~/.config/compton/compton-good.conf & 42 | exec startxfce4 43 | -------------------------------------------------------------------------------- /home/.config/starship/starship.toml: -------------------------------------------------------------------------------- 1 | add_newline = false 2 | 3 | # A minimal left prompt 4 | format = """$all""" 5 | 6 | # move the rest of the prompt to the right 7 | right_format = """$time""" 8 | 9 | [character] # The name of the module we are configuring is "character" 10 | success_symbol = "[✓](bold green)" 11 | error_symbol = "[✗](bold red)" 12 | 13 | [cmd_duration] 14 | min_time = 500 15 | format = "⏳[$duration](bold yellow)" 16 | 17 | [time] 18 | disabled = false 19 | format = "[$time]($style) " 20 | time_format = "%T" 21 | style = "bold black" 22 | utc_time_offset = "1" 23 | 24 | [aws] 25 | disabled = false 26 | format = 'on [$symbol($profile )(\($region\) )]($style)' 27 | style = "bold blue" 28 | symbol = "🅰 " 29 | 30 | [docker_context] 31 | disabled = false 32 | format = "[🐋 $context](blue bold) " 33 | 34 | [git_commit] 35 | disabled = false 36 | commit_hash_length = 8 37 | tag_symbol = "🔖 " 38 | 39 | [git_status] 40 | conflicted = "⚔️ " 41 | 42 | [nodejs] 43 | format = "[⬢ $version](bold green) " 44 | 45 | [package] 46 | disabled = false 47 | format = "[🎁 $version](208 bold) " 48 | 49 | [python] 50 | disabled = false 51 | 52 | [status] 53 | disabled = false 54 | format = "[$status]($style) " 55 | -------------------------------------------------------------------------------- /home/.config/zed/keymap.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "context": "Editor", 4 | "bindings": { 5 | "shift-cmd-a": "workspace::AddFolderToProject" 6 | } 7 | }, 8 | { 9 | "context": "Editor", 10 | "bindings": { 11 | // https://github.com/zed-industries/zed/discussions/14195 12 | // "shift-cmd-w": "workspace::RemoveFolderFromWorkspace" 13 | "shift-alt-a": "agent::ToggleFocus", 14 | "ctrl-shift-m": "markdown::OpenPreviewToTheSide", 15 | "cmd-shift-r": "pane::RevealInProjectPanel", 16 | "ctrl-shift-t": "workspace::NewCenterTerminal" 17 | } 18 | }, 19 | { 20 | "context": "Terminal", 21 | "bindings": { 22 | "ctrl-shift-c": "terminal::Copy", 23 | "ctrl-shift-t": "workspace::NewTerminal", 24 | "ctrl-shift-v": "terminal::Paste" 25 | } 26 | }, 27 | { 28 | "context": "Workspace", 29 | "bindings": { 30 | "ctrl-shift-]": "workspace::ActivateNextPane", 31 | "ctrl-shift-[": "workspace::ActivatePreviousPane", 32 | "shift-alt-s": "workspace::ActivatePaneDown", 33 | "shift-alt-w": "workspace::ActivatePaneUp", 34 | "f1": "workspace::ToggleZoom", 35 | "shift-alt-z": "workspace::ToggleZoom" 36 | } 37 | } 38 | ] 39 | -------------------------------------------------------------------------------- /home/.tmux.conf: -------------------------------------------------------------------------------- 1 | set-window-option -g automatic-rename on 2 | set -g mouse on 3 | 4 | set -g history-limit 30000 5 | 6 | # Set ability to capture on start and restore on exit window data when running an application 7 | setw -g alternate-screen on 8 | 9 | setw -g automatic-rename on # Rename window to reflect current program. 10 | set -g renumber-windows on # Renumber windows when a window is closed. 11 | set -g set-titles on # Set terminal title. 12 | 13 | set -g monitor-activity on 14 | set -g visual-activity off 15 | 16 | # Open new windows in same directory 17 | bind '"' split-window -c "#{pane_current_path}" 18 | bind % split-window -h -c "#{pane_current_path}" 19 | bind c new-window -c "#{pane_current_path}" 20 | 21 | ## Navigation 22 | ## Create session 23 | bind C-c new-session 24 | ## Find session 25 | bind C-f command-prompt -p find-session 'switch-client -t %%' 26 | 27 | # Keybindings 28 | bind - split-window -v 29 | bind | split-window -h 30 | bind r source-file ~/.tmux.conf 31 | ## Switch panes using Alt-arrow without prefix 32 | bind -n M-Left select-pane -L 33 | bind -n M-Right select-pane -R 34 | bind -n M-Up select-pane -U 35 | bind -n M-Down select-pane -D 36 | ## Home/End 37 | bind-key -n Home send Escape "OH" 38 | bind-key -n End send Escape "OF" 39 | -------------------------------------------------------------------------------- /home/.config/linearmouse/linearmouse.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemes" : [ 3 | { 4 | "pointer" : { 5 | "acceleration" : 0.6, 6 | "speed" : 0.06 7 | }, 8 | "if" : { 9 | "device" : { 10 | "vendorID" : "0x5ac", 11 | "productName" : "Apple Internal Keyboard \/ Trackpad", 12 | "productID" : "0x342", 13 | "category" : "trackpad" 14 | } 15 | }, 16 | "scrolling" : { 17 | "distance" : "auto" 18 | }, 19 | "buttons" : { 20 | "universalBackForward" : true 21 | } 22 | }, 23 | { 24 | "scrolling" : { 25 | "reverse" : true, 26 | "distance" : 1 27 | }, 28 | "buttons" : { 29 | "universalBackForward" : true 30 | }, 31 | "if" : { 32 | "device" : { 33 | "productID" : "0xc08b", 34 | "serialNumber" : "111111111111", 35 | "category" : "mouse", 36 | "vendorID" : "0x46d", 37 | "productName" : "G502 HERO Gaming Mouse" 38 | } 39 | }, 40 | "pointer" : { 41 | "disableAcceleration" : false, 42 | "speed" : 0.1549, 43 | "acceleration" : 0.7068 44 | } 45 | } 46 | ], 47 | "$schema" : "https:\/\/schema.linearmouse.app\/0.9.5" 48 | } 49 | -------------------------------------------------------------------------------- /home/.config/kitty/current-theme.conf: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:ft=conf 2 | 3 | # Colours 4 | ## Special 5 | background #1f1b2a 6 | foreground #e9e9eb 7 | cursor #f783ac 8 | selection_foreground #1a172e 9 | selection_background #f783ac 10 | ## Blacks 11 | color0 #464669 12 | color8 #50507a 13 | ## Reds 14 | color1 #ff5e5e 15 | color9 #fb5858 16 | ## Greens 17 | color2 #abf160 18 | color10 #c7fc91 19 | ## Yellows 20 | color3 #ffe066 21 | color11 #ffeba5 22 | ## Blues 23 | color4 #9e89fd 24 | color12 #b3b3ff 25 | ## Magenta 26 | color5 #f783ac 27 | color13 #e599f7 28 | ## Cyan 29 | color6 #87edf3 30 | color14 #a2f5f9 31 | ## White 32 | color7 #ffffff 33 | color15 #e1e1e6 34 | 35 | # Background 36 | background_opacity 0.975 37 | 38 | # Fonts 39 | font_family Hasklig Medium 40 | italic_font Hasklig Medium Italic 41 | bold_font Hasklig Semibold 42 | bold_italic_font Hasklig Semibold Italic 43 | font_size 14 44 | adjust_line_height 1 45 | 46 | # Tab styles 47 | tab_bar_style powerline 48 | tab_powerline_style slanted 49 | active_tab_foreground #464669 50 | active_tab_background #c2fa88 51 | active_tab_font_style bold_italic 52 | inactive_tab_foreground #444 53 | inactive_tab_background #999 54 | inactive_tab_font_style normal 55 | -------------------------------------------------------------------------------- /home/.config/kitty/themes/nerdyman.conf: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:ft=conf 2 | 3 | # Colours 4 | ## Special 5 | background #1f1b2a 6 | foreground #e9e9eb 7 | cursor #f783ac 8 | selection_foreground #1a172e 9 | selection_background #f783ac 10 | ## Blacks 11 | color0 #464669 12 | color8 #50507a 13 | ## Reds 14 | color1 #ff5e5e 15 | color9 #fb5858 16 | ## Greens 17 | color2 #abf160 18 | color10 #c7fc91 19 | ## Yellows 20 | color3 #ffe066 21 | color11 #ffeba5 22 | ## Blues 23 | color4 #9e89fd 24 | color12 #b3b3ff 25 | ## Magenta 26 | color5 #f783ac 27 | color13 #e599f7 28 | ## Cyan 29 | color6 #87edf3 30 | color14 #a2f5f9 31 | ## White 32 | color7 #ffffff 33 | color15 #e1e1e6 34 | 35 | # Background 36 | background_opacity 0.975 37 | 38 | # Fonts 39 | font_family Hasklig Medium 40 | italic_font Hasklig Medium Italic 41 | bold_font Hasklig Semibold 42 | bold_italic_font Hasklig Semibold Italic 43 | font_size 14 44 | adjust_line_height 1 45 | 46 | # Tab styles 47 | tab_bar_style powerline 48 | tab_powerline_style slanted 49 | active_tab_foreground #464669 50 | active_tab_background #c2fa88 51 | active_tab_font_style bold_italic 52 | inactive_tab_foreground #444 53 | inactive_tab_background #999 54 | inactive_tab_font_style normal 55 | -------------------------------------------------------------------------------- /home/.config/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:ft=conf 2 | 3 | # OS 4 | confirm_os_window_close -1 5 | 6 | background_blur 50 7 | scrollback_lines 10000 8 | 9 | # Window 10 | remember_window_size no 11 | initial_window_width 100c 12 | initial_window_height 26c 13 | window_padding_width 4 14 | 15 | # OS title bar 16 | # wayland_titlebar_color system 17 | # macos_titlebar_color system 18 | hide_window_decorations yes 19 | 20 | # Tab bar 21 | bell_on_tab yes 22 | tab_bar_edge bottom 23 | tab_title_template {index}: {title} 24 | focus_follows_mouse no 25 | 26 | # Key mappings 27 | map shift+page_up scroll_page_up 28 | map shift+page_down scroll_page_down 29 | map ctrl+shift+t new_tab_with_cwd 30 | map ctrl+shift+enter new_window_with_cwd 31 | 32 | # Mouse mappings - require cmd or ctrl click for opening links 33 | mouse_map left click ungrabbed no-op 34 | mouse_map ctrl+left click ungrabbed mouse_handle_click selection link prompt 35 | mouse_map ctrl+left press ungrabbed mouse_selection normal 36 | mouse_map cmd+left click ungrabbed mouse_handle_click selection link prompt 37 | mouse_map cmd+left press ungrabbed mouse_selection normal 38 | 39 | # Prevent cursor from hiding 40 | mouse_hide_wait 0 41 | 42 | ## Search 43 | map ctrl+f launch --type=overlay --stdin-source=@screen_scrollback zsh -c "fzf --no-sort --no-mouse --exact -i --tac | kitty +kitten clipboard" 44 | map ctrl+/ launch --allow-remote-control kitty +kitten kitty_search/search.py @active-kitty-window-id 45 | 46 | ## tmux..ish binding 47 | map ctrl+shift+z toggle_layout stack 48 | map f1 toggle_layout stack 49 | 50 | include current-theme.conf 51 | -------------------------------------------------------------------------------- /home/.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | name = nerdyman 3 | email = averynerdyman@gmail.com 4 | 5 | [core] 6 | editor = nvim 7 | ignorecase = false 8 | pager = delta 9 | 10 | [alias] 11 | addp = !git add --intent-to-add "$@" && git add --patch "$@" 12 | chekcout = checkout 13 | checout = checkout 14 | ck = checkout 15 | psh = push 16 | diff-prev = diff HEAD~1..HEAD 17 | fetcharoo = fetch 18 | history = log --follow -p -- 19 | lg = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all 20 | lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all 21 | undo = reset --soft HEAD^ 22 | unpushed = "log @{u}.." 23 | 24 | [init] 25 | defaultBranch = main 26 | 27 | [help] 28 | autocorrect = 10 29 | 30 | [column] 31 | 32 | [branch] 33 | sort = -committerdate 34 | 35 | [tag] 36 | sort = version:refname 37 | 38 | [interactive] 39 | diffFilter = delta --color-only 40 | 41 | [delta] 42 | navigate = true # use n and N to move between diff sections 43 | 44 | [log] 45 | date = iso-local 46 | 47 | [commit] 48 | verbose = true 49 | 50 | [merge] 51 | conflictstyle = diff3 52 | 53 | [diff] 54 | colorMoved = default 55 | 56 | [rebase] 57 | autoSquash = true 58 | autoStash = true 59 | updateRefs = true 60 | 61 | [rerere] 62 | enabled = true 63 | 64 | 65 | 66 | [push] 67 | autoSetupRemote = true 68 | 69 | # Conditionally include work config 70 | [includeIf "gitdir:~/Documents/projects/work/"] 71 | path = ~/.gitconfig.work 72 | 73 | # vim: ts=2 sw=2 et 74 | -------------------------------------------------------------------------------- /home/.config/wezterm/colors/nerdyman.toml: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = "nerdyman" 3 | author = "nerdyman" 4 | origin_url = "https://github.com/nerdyman/dotfiles/tree/main/home/.config/wezterm/colors/nerdyman.toml" 5 | 6 | # Colours are based on #a794ff 7 | 8 | [colors] 9 | foreground = "#c9bdff" 10 | background = "#171424" 11 | cursor_bg = "#ea94ff" 12 | cursor_border = "#ea94ff" 13 | cursor_fg = "#1f1b2a" 14 | selection_bg = "#ea94ff" 15 | selection_fg = "#1a172e" 16 | 17 | ansi = [ 18 | "#534d6f", 19 | "#ff6e7a", 20 | "#9bff7f", 21 | "#ffe571", 22 | "#b8a8ff", 23 | "#ea94ff", 24 | "#83eeff", 25 | "#e1dbff", 26 | ] 27 | 28 | brights = [ 29 | "#8a7cc9", 30 | "#ff7d8c", 31 | "#abf160", 32 | "#ffe066", 33 | "#a794ff", 34 | "#ea94ff", 35 | "#87edf3", 36 | "#ffffff", 37 | ] 38 | 39 | [colors.indexed] 40 | 16 = "rgba(0, 0, 0, 0)" 41 | 17 = "#f00" 42 | 43 | [colors.tab_bar] 44 | background = "rgba(0% 0% 0% 20%)" 45 | inactive_tab_edge = "#ebe5df" 46 | inactive_tab_edge_hover = "#ebe0df" 47 | 48 | [colors.tab_bar.active_tab] 49 | bg_color = "#a794ff" 50 | fg_color = "#21182b" 51 | intensity = "Normal" 52 | italic = true 53 | strikethrough = false 54 | underline = "None" 55 | 56 | [colors.tab_bar.inactive_tab] 57 | bg_color = "rgba(0% 0% 0% 25%)" 58 | fg_color = "#b8a8ff" 59 | intensity = "Normal" 60 | italic = false 61 | strikethrough = false 62 | underline = "None" 63 | 64 | # [colors.tab_bar.inactive_tab_hover] 65 | # bg_color = "#ebdfe4" 66 | # fg_color = "#575279" 67 | # intensity = "Normal" 68 | # italic = false 69 | # strikethrough = false 70 | # underline = "None" 71 | 72 | [colors.tab_bar.new_tab] 73 | bg_color = "rgba(0% 0% 0% 25%)" 74 | fg_color = "#b8a8ff" 75 | intensity = "Normal" 76 | italic = false 77 | strikethrough = false 78 | underline = "None" 79 | 80 | # [colors.tab_bar.new_tab_hover] 81 | # bg_color = "#ebdfe4" 82 | # fg_color = "#575279" 83 | # intensity = "Normal" 84 | # italic = false 85 | # strikethrough = false 86 | # underline = "None" 87 | -------------------------------------------------------------------------------- /home/.atom/config.cson: -------------------------------------------------------------------------------- 1 | "*": 2 | "atom-ide-ui": 3 | use: 4 | "atom-ide-diagnostics-ui": false 5 | "atom-material-ui": 6 | colors: 7 | abaseColor: "#7777e4" 8 | accentColor: "#ffe066" 9 | fonts: {} 10 | tabs: 11 | compactTabs: true 12 | ui: 13 | panelContrast: true 14 | panelShadows: true 15 | core: 16 | autoHideMenuBar: true 17 | closeEmptyWindows: false 18 | disabledPackages: [ 19 | "language-vue" 20 | "language-csharp" 21 | "language-c" 22 | "language-go" 23 | "language-java" 24 | "language-objective-c" 25 | "markdown-pdf" 26 | "atom-import-cost" 27 | "linter-markdown" 28 | ] 29 | excludeVcsIgnoredPaths: false 30 | telemetryConsent: "limited" 31 | themes: [ 32 | "atom-material-ui" 33 | "pure-syntax" 34 | ] 35 | useTreeSitterParsers: false 36 | editor: 37 | fontFamily: "Roboto Mono Medium for Powerline" 38 | fontSize: 15 39 | lineHeight: 2 40 | scrollPastEnd: true 41 | showIndentGuide: true 42 | showInvisibles: true 43 | softTabs: false 44 | tabLength: 4 45 | tabType: "auto" 46 | zoomFontWhenCtrlScrolling: false 47 | "exception-reporting": 48 | userId: "d2b3ea9a-fdd9-4443-99e3-b6fc1f5ec1e3" 49 | "file-types": 50 | "^Dockerfile\\..*$": "source.dockerfile" 51 | "fuzzy-finder": 52 | ignoredNames: [ 53 | "node_modules" 54 | ] 55 | scoringSystem: "fast" 56 | useRipGrep: true 57 | "git-blame": 58 | columnWidth: 239 59 | "language-babel": 60 | emmetCSSAutocomplete: true 61 | "language-elm": 62 | autocompleteEnabled: false 63 | "linter-eslint": 64 | autofix: 65 | fixOnSave: true 66 | "linter-markdown": {} 67 | "linter-sass-lint": 68 | noConfigDisable: true 69 | "linter-shellcheck": 70 | enableNotice: true 71 | "linter-stylelint": 72 | showIgnored: true 73 | "linter-ui-default": 74 | panelHeight: 300 75 | "markdown-preview": {} 76 | minimap: {} 77 | "one-dark-ui": {} 78 | "open-terminal-here": 79 | command: "termite" 80 | "pinned-tabs": 81 | closeUnpinned: true 82 | visualstudio: 83 | enable: true 84 | minimumWidth: 100 85 | "prettier-atom": 86 | formatOnSaveOptions: 87 | enabled: true 88 | isDisabledIfNoConfigFile: true 89 | showInStatusBar: true 90 | useEslint: true 91 | useStylelint: true 92 | "spell-check": 93 | locales: [ 94 | "en_GB" 95 | ] 96 | welcome: 97 | showOnStartup: false 98 | -------------------------------------------------------------------------------- /home/.config/Code/User/keybindings.json: -------------------------------------------------------------------------------- 1 | // Place your key bindings in this file to override the defaultsauto[] 2 | [ 3 | // Markdown preview 4 | { 5 | "when": "editorTextFocus && editorLangId != 'svg'", 6 | "key": "ctrl+shift+m", 7 | "command": "markdown.showPreviewToSide" 8 | }, 9 | // SVG Preview 10 | { 11 | "when": "editorTextFocus && editorLangId == 'svg'", 12 | "key": "ctrl+shift+m", 13 | "command": "svg.showSvg" 14 | }, 15 | // Disable `+` and `-` zoom 16 | { 17 | "key": "cmd+=", 18 | "command": "-workbench.action.zoomIn" 19 | }, 20 | { 21 | "key": "cmd+-", 22 | "command": "-workbench.action.zoomOut" 23 | }, 24 | 25 | // Change document language prompt. 26 | { 27 | "when": "isMac", 28 | "key": "shift+cmd+l", 29 | "command": "workbench.action.editor.changeLanguageMode" 30 | }, 31 | { 32 | "key": "shift+ctrl+l", 33 | "command": "workbench.action.editor.changeLanguageMode" 34 | }, 35 | 36 | // Line manipulation. 37 | { 38 | "when": "isLinux", 39 | "key": "win+alt+down", 40 | "command": "editor.action.copyLinesDownAction" 41 | }, 42 | { 43 | "when": "isLinux", 44 | "key": "win+alt+up", 45 | "command": "editor.action.copyLinesUpAction" 46 | }, 47 | // Go to start of line with `ctrl+left arrow` 48 | { 49 | "key": "ctrl+left", 50 | "command": "cursorHome" 51 | }, 52 | // Go to end of line with `ctrl+right arrow` 53 | { 54 | "key": "ctrl+right", 55 | "command": "cursorEnd" 56 | }, 57 | 58 | // Workspace management. 59 | { 60 | "when": "isMac", 61 | "key": "shift+cmd+a", 62 | "command": "workbench.action.addRootFolder" 63 | }, 64 | { 65 | "when": "isMac", 66 | "key": "shift+cmd+w", 67 | "command": "workbench.action.removeRootFolder" 68 | }, 69 | { 70 | "when": "isLinux", 71 | "key": "shift+ctrl+a", 72 | "command": "workbench.action.addRootFolder" 73 | }, 74 | { 75 | "when": "isLinux", 76 | "key": "shift+ctrl+w", 77 | "command": "workbench.action.removeRootFolder" 78 | }, 79 | 80 | // Sidebar. 81 | { 82 | "when": "isMac", 83 | "key": "shift+cmd+\\", 84 | "command": "search.action.revealInSideBar" 85 | }, 86 | { 87 | "key": "ctrl+shift+\\", 88 | "command": "workbench.files.action.showActiveFileInExplorer" 89 | }, 90 | { 91 | "key": "ctrl+\\", 92 | "command": "workbench.action.toggleSidebarVisibility" 93 | } 94 | ] 95 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 |

dotfiles

4 | 5 | Configs and scripts for macOS and Linux. 6 | 7 | [![Wezterm](./scrots/wezterm.png)](./home/.config/wezterm/) 8 | 9 |
10 | 11 | ## macOS & Linux 12 | 13 | - [Git](./home/.gitconfig) 14 | - [.gitconfig](./home/.gitconfig) 15 | - Delta [↗](https://github.com/dandavison/delta) 16 | - [Kitty](./home/.config/kitty) 17 | - [kitty.conf](./home/.config/kitty/kitty.conf) 18 | - [nerdyman kitty theme](./home/.config/kitty/themes/nerdyman.conf) 19 | - Kitty Kitten Search [↗](https://github.com/trygveaa/kitty-kitten-search) 20 | - [Starship](./home/.config/starship) 21 | - [starship.toml](./home/.config/starship/starship.toml) 22 | - [tmux](./home/.tmux.conf) 23 | - [Visual Studio Code](./home/.config/Code) 24 | - [keybindings.json](./home/.config/Code/User/keybindings.json) 25 | - [settings.json](./home/.config/Code/User/settings.json) 26 | - [WezTerm](./home/.config/wezterm) 27 | - [wezterm.lua](./home/.config/wezterm/wezterm.lua) 28 | - [colors/nerdyman.toml](./home/.config/wezterm/colors/nerdyman.toml) My WezTerm theme 29 | - [Zed](./home/.config/zed) 30 | - [keymap.json](./home/.config/zed/keymap.json) 31 | - [settings.json](./home/.config/zed/settings.json) 32 | - [zsh](./home/.zshrc) 33 | - [.zshrc](./home/.zshrc) 34 | - [aliases](./home/.config/aliases) 35 | - fnm [↗](https://github.com/Schniz/fnm) 36 | - zsh-syntax-highlighting [↗](https://github.com/zsh-users/zsh-syntax-highlighting) 37 | - [Custom Scripts](./home/.local/bin/) 38 | 39 | ## macOS 40 | 41 | - [AeroSpace](./home/.config/aerospace/aerospace.toml) 42 | - [Keybindings](./home/Library/KeyBindings) 43 | - [Karabiner](./home/.config/karabiner/karabiner.json) 44 | - [macOS mods](./macos-mods.sh) 45 | - Uses [GNU coreutils↗](https://formulae.brew.sh/formula/coreutils) 46 | - [Actual working UK keyboard layouts](./Library/Keyboard%20Layouts) (taken from [http://liyang.hu/osx-british.xhtml](http://liyang.hu/osx-british.xhtml)) 47 | 48 | ## Linux 49 | 50 | - [Arch Linux Install Scripts](./archinstall/) 51 | - [Gnome mods](./gnome-mods.sh) 52 | 53 | ## Install Dependencies 54 | 55 | [Homebrew](https://brew.sh/) is used to install dependencies. Run the following to install CLI tools 56 | on Linux and CLI tools and apps on macOS. 57 | 58 | ```sh 59 | bash install-deps.sh 60 | ``` 61 | 62 | ### Fonts 63 | 64 | - [Hasklig Monospace↗](https://github.com/i-tu/Hasklig) 65 | - [Mona Sans↗](https://github.com/github/mona-sans) 66 | 67 | ## Screenshots 68 | 69 | [![VS Code](./scrots/vs-code.png)](./home/.config/Code/User/) 70 | 71 | ## Other Stuff 72 | 73 | - [Gerbera UPnP server Docker config](./home/Documents/configs/gerbera/) for sharing remote folders with my TV 74 | - [💀 Atom](./home/.atom) 75 | - [i3wm (gaps)](./home/.config/i3) 76 | -------------------------------------------------------------------------------- /home/.config/aerospace/aerospace.toml: -------------------------------------------------------------------------------- 1 | # Reference: https://github.com/i3/i3/blob/next/etc/config 2 | 3 | enable-normalization-flatten-containers = false 4 | enable-normalization-opposite-orientation-for-nested-containers = false 5 | 6 | after-startup-command = [ 7 | 'exec-and-forget borders' 8 | ] 9 | 10 | [mode.main.binding] 11 | alt-enter = 'exec-and-forget wezterm start' 12 | 13 | # Monitor focusing 14 | alt-shift-slash = 'focus-monitor --wrap-around next' 15 | 16 | # Window focusing 17 | alt-x = 'focus left --boundaries workspace --boundaries-action wrap-around-the-workspace' 18 | alt-c = 'focus right --boundaries workspace --boundaries-action wrap-around-the-workspace' 19 | alt-k = 'focus down' 20 | alt-l = 'focus up' 21 | 22 | # Window movement 23 | alt-shift-j = 'move left' 24 | alt-shift-k = 'move down' 25 | alt-shift-l = 'move up' 26 | alt-shift-semicolon = 'move right' 27 | alt-shift-comma = 'move-node-to-monitor --wrap-around --focus-follows-window next' 28 | 29 | alt-h = 'split horizontal' 30 | alt-v = 'split vertical' 31 | 32 | alt-f = 'fullscreen' 33 | 34 | alt-s = 'layout v_accordion' # 'layout stacking' in i3 35 | alt-w = 'layout h_accordion' # 'layout tabbed' in i3 36 | alt-e = 'layout tiles horizontal vertical' # 'layout toggle split' in i3 37 | 38 | alt-shift-space = 'layout floating tiling' # 'floating toggle' in i3 39 | 40 | # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth 41 | alt-tab = 'workspace-back-and-forth' 42 | 43 | # See: https://nikitabobko.github.io/AeroSpace/commands#resize 44 | alt-shift-minus = 'resize smart -48' 45 | alt-shift-equal = 'resize smart +48' 46 | 47 | # Not supported, because this command is redundant in AeroSpace mental model. 48 | # See: https://nikitabobko.github.io/AeroSpace/guide#floating-windows 49 | #alt-space = 'focus toggle_tiling_floating' 50 | 51 | # `focus parent`/`focus child` are not yet supported, and it's not clear whether they 52 | # should be supported at all https://github.com/nikitabobko/AeroSpace/issues/5 53 | # alt-a = 'focus parent' 54 | 55 | ctrl-1 = 'workspace web' 56 | ctrl-2 = 'workspace code' 57 | ctrl-3 = 'workspace term' 58 | ctrl-4 = 'workspace chat' 59 | ctrl-5 = 'workspace ops' 60 | ctrl-6 = 'workspace misc' 61 | ctrl-7 = 'workspace 7' 62 | ctrl-8 = 'workspace 8' 63 | ctrl-9 = 'workspace 9' 64 | ctrl-0 = 'workspace 10' 65 | 66 | ctrl-shift-1 = 'move-node-to-workspace web' 67 | ctrl-shift-2 = 'move-node-to-workspace code' 68 | ctrl-shift-3 = 'move-node-to-workspace term' 69 | ctrl-shift-4 = 'move-node-to-workspace chat' 70 | ctrl-shift-5 = 'move-node-to-workspace ops' 71 | ctrl-shift-6 = 'move-node-to-workspace misc' 72 | ctrl-shift-7 = 'move-node-to-workspace 7' 73 | ctrl-shift-8 = 'move-node-to-workspace 8' 74 | ctrl-shift-9 = 'move-node-to-workspace 9' 75 | ctrl-shift-0 = 'move-node-to-workspace 10' 76 | 77 | alt-shift-c = 'reload-config' 78 | alt-shift-r = 'flatten-workspace-tree' 79 | alt-r = 'mode resize' 80 | 81 | [mode.resize.binding] 82 | h = 'resize width -50' 83 | j = 'resize height +50' 84 | k = 'resize height -50' 85 | l = 'resize width +50' 86 | enter = 'mode main' 87 | esc = 'mode main' 88 | 89 | [gaps] 90 | inner.horizontal = 3 91 | inner.vertical = 3 92 | outer.left = 4 93 | outer.bottom = 4 94 | outer.top = 4 95 | outer.right = 4 96 | -------------------------------------------------------------------------------- /gnome-mods.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Unbind defaults. 4 | gsettings set org.gnome.mutter.keybindings switch-monitor "[]" 5 | gsettings set org.gnome.shell.keybindings switch-to-application-1 "[]" 6 | gsettings set org.gnome.shell.keybindings switch-to-application-2 "[]" 7 | gsettings set org.gnome.shell.keybindings switch-to-application-3 "[]" 8 | gsettings set org.gnome.shell.keybindings switch-to-application-4 "[]" 9 | gsettings set org.gnome.shell.keybindings switch-to-application-5 "[]" 10 | gsettings set org.gnome.shell.keybindings switch-to-application-6 "[]" 11 | gsettings set org.gnome.shell.keybindings switch-to-application-7 "[]" 12 | gsettings set org.gnome.shell.keybindings switch-to-application-8 "[]" 13 | gsettings set org.gnome.shell.keybindings switch-to-application-9 "[]" 14 | 15 | # Set up workspaces. 16 | gsettings set org.gnome.desktop.wm.preferences num-workspaces 10 17 | gsettings set org.gnome.mutter dynamic-workspaces false 18 | gsettings set org.gnome.mutter workspaces-only-on-primary true 19 | 20 | # Switch to workspace. 21 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-1 "['1']" 22 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-2 "['2']" 23 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-3 "['3']" 24 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-4 "['4']" 25 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-5 "['5']" 26 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-6 "['6']" 27 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-7 "['7']" 28 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-8 "['8']" 29 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-9 "['9']" 30 | gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-10 "['0']" 31 | 32 | # Move window to workspace. 33 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-1 "['1']" 34 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-2 "['2']" 35 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-3 "['3']" 36 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-4 "['4']" 37 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-5 "['5']" 38 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-6 "['6']" 39 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-7 "['7']" 40 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-8 "['8']" 41 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-9 "['9']" 42 | gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-10 "['0']" 43 | 44 | # Window Placement. 45 | gsettings set org.gnome.mutter auto-maximize true 46 | gsettings set org.gnome.mutter center-new-windows true 47 | gsettings set org.gnome.desktop.wm.keybindings always-on-top "['a']" 48 | gsettings set org.gnome.desktop.wm.keybindings close "['q','q']" 49 | gsettings set org.gnome.desktop.wm.keybindings toggle-fullscreen "['f']" 50 | gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['f']" 51 | -------------------------------------------------------------------------------- /home/.config/Cursor/User/keybindings.json: -------------------------------------------------------------------------------- 1 | // Place your key bindings in this file to override the defaultsauto[] 2 | [ 3 | // Markdown preview 4 | { 5 | "when": "editorTextFocus && editorLangId != 'svg'", 6 | "key": "ctrl+shift+m", 7 | "command": "markdown.showPreviewToSide" 8 | }, 9 | // SVG Preview 10 | { 11 | "when": "editorTextFocus && editorLangId == 'svg'", 12 | "key": "ctrl+shift+m", 13 | "command": "svg.showSvg" 14 | }, 15 | // Disable `+` and `-` zoom 16 | { 17 | "key": "cmd+=", 18 | "command": "-workbench.action.zoomIn" 19 | }, 20 | { 21 | "key": "cmd+-", 22 | "command": "-workbench.action.zoomOut" 23 | }, 24 | 25 | // Change document language prompt. 26 | { 27 | "when": "isMac", 28 | "key": "shift+cmd+l", 29 | "command": "workbench.action.editor.changeLanguageMode" 30 | }, 31 | { 32 | "key": "shift+ctrl+l", 33 | "command": "workbench.action.editor.changeLanguageMode" 34 | }, 35 | 36 | // Line manipulation. 37 | { 38 | "when": "isLinux", 39 | "key": "win+alt+down", 40 | "command": "editor.action.copyLinesDownAction" 41 | }, 42 | { 43 | "when": "isLinux", 44 | "key": "win+alt+up", 45 | "command": "editor.action.copyLinesUpAction" 46 | }, 47 | // Go to start of line with `ctrl+left arrow` 48 | { 49 | "key": "ctrl+left", 50 | "command": "cursorHome" 51 | }, 52 | // Go to end of line with `ctrl+right arrow` 53 | { 54 | "key": "ctrl+right", 55 | "command": "cursorEnd" 56 | }, 57 | 58 | // Workspace management. 59 | { 60 | "when": "isMac", 61 | "key": "shift+cmd+a", 62 | "command": "workbench.action.addRootFolder" 63 | }, 64 | { 65 | "when": "isMac", 66 | "key": "shift+cmd+w", 67 | "command": "workbench.action.removeRootFolder" 68 | }, 69 | { 70 | "when": "isLinux", 71 | "key": "shift+ctrl+a", 72 | "command": "workbench.action.addRootFolder" 73 | }, 74 | { 75 | "when": "isLinux", 76 | "key": "shift+ctrl+w", 77 | "command": "workbench.action.removeRootFolder" 78 | }, 79 | 80 | { 81 | "key": "alt+1", 82 | "command": "workbench.action.focusActiveEditorGroup" 83 | }, 84 | 85 | { 86 | "key": "alt+2", 87 | "command": "workbench.action.chat.openInSidebar", 88 | "when": "chatPanelParticipantRegistered && chatIsEnabled && view != 'workbench.panel.chat.view'" 89 | }, 90 | 91 | { 92 | "key": "alt+3", 93 | "command": "workbench.action.chat.openEditSession", 94 | "when": "chatEditingParticipantRegistered && chatIsEnabled && view != 'workbench.panel.chat.view.edits'" 95 | }, 96 | 97 | { 98 | "key": "alt+3", 99 | "command": "workbench.action.chat.openEditSession", 100 | "when": "chatEditingParticipantRegistered && chatIsEnabled && view != 'workbench.panel.chat.view.edits'" 101 | }, 102 | 103 | // Sidebar. 104 | { 105 | "when": "isMac", 106 | "key": "shift+cmd+\\", 107 | "command": "search.action.revealInSideBar" 108 | }, 109 | { 110 | "key": "ctrl+shift+\\", 111 | "command": "workbench.files.action.showActiveFileInExplorer" 112 | }, 113 | { 114 | "key": "ctrl+\\", 115 | "command": "workbench.action.toggleSidebarVisibility" 116 | }, 117 | { 118 | "key": "cmd+i", 119 | "command": "composerMode.agent" 120 | }, 121 | { 122 | "key": "shift+cmd+s", 123 | "command": "-workbench.action.openAgentsView", 124 | "when": "!isInBackgroundComposerWindow" 125 | } 126 | ] 127 | -------------------------------------------------------------------------------- /home/.config/zed/settings.json: -------------------------------------------------------------------------------- 1 | // Zed settings 2 | // 3 | // For information on how to configure Zed, see the Zed 4 | // documentation: https://zed.dev/docs/configuring-zed 5 | // 6 | // To see all of Zed's default settings without changing your 7 | // custom settings, run the `open default settings` command 8 | // from the command palette or from `Zed` application menu. 9 | { 10 | "agent": { 11 | "default_profile": "ask", 12 | "dock": "left", 13 | "default_model": { 14 | "provider": "copilot_chat", 15 | "model": "claude-sonnet-4" 16 | } 17 | }, 18 | "base_keymap": "VSCode", 19 | "buffer_font_family": "Hasklig", 20 | "buffer_font_size": 15, 21 | "buffer_font_weight": 500, 22 | "buffer_line_height": { 23 | "custom": 2.15 24 | }, 25 | "collaboration_panel": { 26 | "button": false 27 | }, 28 | "current_line_highlight": "all", 29 | "diagnostics": { 30 | "button": true, 31 | "include_warnings": true, 32 | "lsp_pull_diagnostics": { 33 | "enabled": true, 34 | "debounce_ms": 50 35 | }, 36 | "inline": { 37 | "enabled": false, 38 | "update_debounce_ms": 150, 39 | "padding": 4, 40 | "min_column": 0, 41 | "max_severity": null 42 | } 43 | }, 44 | "edit_predictions": { 45 | "mode": "eager" 46 | }, 47 | "ensure_final_newline_on_save": true, 48 | "extend_comment_on_newline": false, 49 | "features": { 50 | "edit_prediction_provider": "copilot" 51 | }, 52 | "format_on_save": "on", 53 | "icon_theme": "Catppuccin Frappé", 54 | "indent_guides": { 55 | "active_line_width": 2, 56 | "enabled": true, 57 | "line_width": 1, 58 | "coloring": "indent_aware", 59 | "background_coloring": "disabled" 60 | }, 61 | "linked_edits": true, 62 | "lsp": { 63 | "vtsls": { 64 | "settings": { 65 | "javascript": { "tsserver": { "maxTsServerMemory": 10240 } }, 66 | "typescript": { "tsserver": { "maxTsServerMemory": 10240 } } 67 | } 68 | } 69 | }, 70 | "preferred_line_length": 110, 71 | "preview_tabs": { 72 | "enable_preview_from_code_navigation": true, 73 | "enable_preview_from_file_finder": true, 74 | "enabled": true 75 | }, 76 | "project_panel": { 77 | "auto_fold_dirs": true, 78 | "auto_reveal_entries": false, 79 | "default_width": 280, 80 | "dock": "right", 81 | "file_icons": true, 82 | "folder_icons": false, 83 | "git_status": true, 84 | "indent_size": 8, 85 | "show_diagnostics": "errors" 86 | }, 87 | "show_whitespaces": "boundary", 88 | "soft_wrap": "editor_width", 89 | "selection_highlight": true, 90 | "tabs": { 91 | "close_position": "right", 92 | "show_diagnostics": "errors", 93 | "file_icons": true, 94 | "git_status": true, 95 | "show_close_button": "hover" 96 | }, 97 | "terminal": { 98 | "dock": "right", 99 | "font_family": "Hasklig", 100 | "blinking": "on", 101 | "font_weight": 500, 102 | "font_size": 14, 103 | "font_features": { 104 | "liga": true, 105 | "calt": true 106 | }, 107 | "detect_venv": { 108 | "on": { 109 | // Default directories to search for virtual environments, relative 110 | // to the current working directory. We recommend overriding this 111 | // in your project's settings, rather than globally. 112 | "directories": [".env", ".env.local", "env", ".venv", "venv"], 113 | // Can also be `csh`, `fish`, and `nushell` 114 | "activate_script": "default" 115 | } 116 | } 117 | }, 118 | "theme": { 119 | "mode": "system", 120 | "light": "One Light", 121 | "dark": "Catppuccin Mocha" 122 | }, 123 | "title_bar": { 124 | "show_sign_in": false, 125 | "show_user_picture": false 126 | }, 127 | "toolbar": { 128 | // "breadcrumbs": false, 129 | "quick_actions": false 130 | }, 131 | "ui_font_size": 16, 132 | "ui_font_family": "Mona Sans", 133 | "ui_font_weight": 500, 134 | "use_autoclose": true 135 | } 136 | -------------------------------------------------------------------------------- /archinstall/user_configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "archinstall-language": "English", 3 | "audio_config": { 4 | "audio": "pipewire" 5 | }, 6 | "bootloader": "Systemd-boot", 7 | "debug": false, 8 | "disk_config": { 9 | "config_type": "default_layout", 10 | "device_modifications": [ 11 | { 12 | "device": "/dev/nvme0n1", 13 | "partitions": [ 14 | { 15 | "btrfs": [], 16 | "flags": ["boot"], 17 | "fs_type": "fat32", 18 | "size": { 19 | "sector_size": null, 20 | "unit": "GiB", 21 | "value": 1 22 | }, 23 | "mount_options": [], 24 | "mountpoint": "/boot", 25 | "obj_id": "boot-partition", 26 | "start": { 27 | "sector_size": null, 28 | "unit": "MiB", 29 | "value": 1 30 | }, 31 | "status": "create", 32 | "type": "primary" 33 | }, 34 | { 35 | "btrfs": [ 36 | { 37 | "compress": false, 38 | "mountpoint": "/", 39 | "name": "@", 40 | "nodatacow": false 41 | }, 42 | { 43 | "compress": false, 44 | "mountpoint": "/home", 45 | "name": "@home", 46 | "nodatacow": false 47 | } 48 | ], 49 | "flags": [], 50 | "fs_type": "btrfs", 51 | "size": { 52 | "sector_size": null, 53 | "unit": "Percent", 54 | "value": 100 55 | }, 56 | "mount_options": [], 57 | "mountpoint": "/", 58 | "obj_id": "root-partition-id", 59 | "start": { 60 | "sector_size": null, 61 | "unit": "GiB", 62 | "value": 1 63 | }, 64 | "status": "create", 65 | "type": "primary" 66 | } 67 | ], 68 | "wipe": true 69 | } 70 | ] 71 | }, 72 | "hostname": "itty", 73 | "kernels": ["linux", "linux-zen"], 74 | "locale_config": { 75 | "kb_layout": "uk", 76 | "sys_enc": "UTF-8", 77 | "sys_lang": "en_GB" 78 | }, 79 | "mirror_config": { 80 | "optional_repositories": ["multilib"] 81 | }, 82 | "network_config": { 83 | "type": "nm" 84 | }, 85 | "packages": [ 86 | "adobe-source-han-sans-otc-fonts", 87 | "adobe-source-han-sans-cn-fonts", 88 | "adobe-source-han-sans-tw-fonts", 89 | "adobe-source-han-sans-jp-fonts", 90 | "adobe-source-han-sans-kr-fonts", 91 | "arch-audit", 92 | "aws-cli", 93 | "bash-completion", 94 | "bat", 95 | "base-devel", 96 | "bc", 97 | "checksec", 98 | "cpio", 99 | "curl", 100 | "docker", 101 | "ethtool", 102 | "exfatprogs", 103 | "expac", 104 | "f2fs-tools", 105 | "firewalld", 106 | "flatpak", 107 | "fuse3", 108 | "git", 109 | "git-delta", 110 | "gnutls", 111 | "go", 112 | "gst-plugins-bad", 113 | "gst-plugins-base", 114 | "gst-plugins-good", 115 | "gst-plugins-ugly", 116 | "gstreamer", 117 | "gst-libav", 118 | "gvfs", 119 | "gtk2", 120 | "gtk3", 121 | "gtk4", 122 | "gtk-engines", 123 | "gtk-engine-murrine", 124 | "gzip", 125 | "htop", 126 | "inter-font", 127 | "jq", 128 | "linux-firmware", 129 | "linux-headers", 130 | "linux-zen-headers", 131 | "lynis", 132 | "lzop", 133 | "mlocate", 134 | "ncurses", 135 | "mesa", 136 | "lib32-mesa", 137 | "mtpfs", 138 | "neovim", 139 | "netdata", 140 | "networkmanager", 141 | "nload", 142 | "ntfs-3g", 143 | "perl-file-mimeinfo", 144 | "p7zip", 145 | "pipewire", 146 | "lib32-pipewire", 147 | "pkgstats", 148 | "qt5-base", 149 | "qt5-wayland", 150 | "qt6-base", 151 | "qt6-wayland", 152 | "ripgrep", 153 | "shellcheck", 154 | "steam", 155 | "strace", 156 | "ttf-bitstream-vera", 157 | "ttf-croscore", 158 | "ttf-dejavu", 159 | "ttf-fira-mono", 160 | "ttf-liberation", 161 | "ttf-hannom", 162 | "ttf-roboto", 163 | "wget", 164 | "whois", 165 | "wine-staging", 166 | "wine-gecko", 167 | "wine-mono", 168 | "wqy-zenhei", 169 | "unrar", 170 | "xclip", 171 | "xdg-user-dirs", 172 | "xdotool", 173 | "xwayland", 174 | "unzip", 175 | "xorg", 176 | "xterm", 177 | "xz", 178 | "zip", 179 | "zsh", 180 | "zsh-completions", 181 | "zsh-syntax-highlighting", 182 | "vulkan-radeon", 183 | "lib32-vulkan-radeon", 184 | "sddm", 185 | "plasma-desktop", 186 | "xdg-desktop-portal-kde" 187 | ], 188 | "custom-commands": [ 189 | "sudo -H -u me xdg-user-dirs-update", 190 | "echo \"Installing yay\"", 191 | "git clone https://aur.archlinux.org/yay.git ./yay", 192 | "cd ./yay", 193 | "sudo -H -u me makepkg -si --noconfirm", 194 | "cd .. && rm -rf ./yay" 195 | ], 196 | "profile_config": null, 197 | "timezone": "Europe/London" 198 | } 199 | -------------------------------------------------------------------------------- /home/.config/karabiner/assets/complex_modifications/1625507559.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Finder", 3 | "rules": [ 4 | { 5 | "description": "Use Return as Open", 6 | "manipulators": [ 7 | { 8 | "type": "basic", 9 | "from": { 10 | "key_code": "return_or_enter", 11 | "modifiers": { 12 | "optional": ["any"] 13 | } 14 | }, 15 | "to": [ 16 | { 17 | "key_code": "o", 18 | "modifiers": ["right_command"] 19 | } 20 | ], 21 | "conditions": [ 22 | { 23 | "type": "frontmost_application_if", 24 | "bundle_identifiers": [ 25 | "^com.apple.finder" 26 | ] 27 | } 28 | ] 29 | } 30 | ] 31 | }, 32 | { 33 | "description": "Use Return as Open and Use Fn+Return as Rename", 34 | "manipulators": [ 35 | { 36 | "type": "basic", 37 | "from": { 38 | "key_code": "return_or_enter", 39 | "modifiers": { 40 | "mandatory": [ 41 | "fn" 42 | ] 43 | } 44 | }, 45 | "to": [ 46 | { 47 | "key_code": "return_or_enter" 48 | } 49 | ], 50 | "conditions": [ 51 | { 52 | "type": "frontmost_application_if", 53 | "bundle_identifiers": [ 54 | "^com.apple.finder" 55 | ] 56 | } 57 | ] 58 | }, 59 | { 60 | "type": "basic", 61 | "from": { 62 | "key_code": "return_or_enter" 63 | }, 64 | "to": [ 65 | { 66 | "key_code": "o", 67 | "modifiers": ["right_command"] 68 | } 69 | ], 70 | "conditions": [ 71 | { 72 | "type": "frontmost_application_if", 73 | "bundle_identifiers": [ 74 | "^com.apple.finder" 75 | ] 76 | } 77 | ] 78 | } 79 | ] 80 | }, 81 | { 82 | "description": "Use F2 as Rename", 83 | "manipulators": [ 84 | { 85 | "type": "basic", 86 | "from": { 87 | "key_code": "f2" 88 | }, 89 | "to": [ 90 | { 91 | "key_code": "return_or_enter" 92 | } 93 | ], 94 | "conditions": [ 95 | { 96 | "type": "frontmost_application_if", 97 | "bundle_identifiers": [ 98 | "^com.apple.finder" 99 | ] 100 | } 101 | ] 102 | } 103 | ] 104 | }, 105 | { 106 | "description": "Use Delete as Move to Trash", 107 | "manipulators": [ 108 | { 109 | "type": "basic", 110 | "from": { 111 | "key_code": "delete_forward", 112 | "modifiers": { 113 | "optional": ["any"] 114 | } 115 | }, 116 | "to": [ 117 | { 118 | "key_code": "delete_or_backspace", 119 | "modifiers": ["left_command"] 120 | } 121 | ], 122 | "conditions": [ 123 | { 124 | "type": "frontmost_application_if", 125 | "bundle_identifiers": [ 126 | "^com.apple.finder" 127 | ] 128 | } 129 | ] 130 | } 131 | ] 132 | }, 133 | { 134 | "description": "Use Fn+Delete as Move to Trash", 135 | "manipulators": [ 136 | { 137 | "type": "basic", 138 | "from": { 139 | "key_code": "delete_forward", 140 | "modifiers": { 141 | "mandatory": [ 142 | "fn" 143 | ] 144 | } 145 | }, 146 | "to": [ 147 | { 148 | "key_code": "delete_or_backspace", 149 | "modifiers": ["left_command"] 150 | } 151 | ], 152 | "conditions": [ 153 | { 154 | "type": "frontmost_application_if", 155 | "bundle_identifiers": [ 156 | "^com.apple.finder" 157 | ] 158 | } 159 | ] 160 | } 161 | ] 162 | }, 163 | { 164 | "description": "Use Backspace as Go to Previous Folder", 165 | "manipulators": [ 166 | { 167 | "type": "basic", 168 | "from": { 169 | "key_code": "delete_or_backspace" 170 | }, 171 | "to": [ 172 | { 173 | "key_code": "semicolon", 174 | "modifiers": ["left_command"] 175 | } 176 | ], 177 | "conditions": [ 178 | { 179 | "type": "frontmost_application_if", 180 | "bundle_identifiers": [ 181 | "^com.apple.finder" 182 | ] 183 | } 184 | ] 185 | } 186 | ] 187 | } 188 | ] 189 | } 190 | -------------------------------------------------------------------------------- /home/.config/karabiner/automatic_backups/karabiner_20210705.json: -------------------------------------------------------------------------------- 1 | { 2 | "global": { 3 | "check_for_updates_on_startup": true, 4 | "show_in_menu_bar": true, 5 | "show_profile_name_in_menu_bar": false 6 | }, 7 | "profiles": [ 8 | { 9 | "complex_modifications": { 10 | "parameters": { 11 | "basic.simultaneous_threshold_milliseconds": 50, 12 | "basic.to_delayed_action_delay_milliseconds": 500, 13 | "basic.to_if_alone_timeout_milliseconds": 1000, 14 | "basic.to_if_held_down_threshold_milliseconds": 500, 15 | "mouse_motion_to_scroll.speed": 100 16 | }, 17 | "rules": [] 18 | }, 19 | "devices": [], 20 | "fn_function_keys": [ 21 | { 22 | "from": { 23 | "key_code": "f1" 24 | }, 25 | "to": [ 26 | { 27 | "consumer_key_code": "display_brightness_decrement" 28 | } 29 | ] 30 | }, 31 | { 32 | "from": { 33 | "key_code": "f2" 34 | }, 35 | "to": [ 36 | { 37 | "consumer_key_code": "display_brightness_increment" 38 | } 39 | ] 40 | }, 41 | { 42 | "from": { 43 | "key_code": "f3" 44 | }, 45 | "to": [ 46 | { 47 | "apple_vendor_keyboard_key_code": "mission_control" 48 | } 49 | ] 50 | }, 51 | { 52 | "from": { 53 | "key_code": "f4" 54 | }, 55 | "to": [ 56 | { 57 | "apple_vendor_keyboard_key_code": "spotlight" 58 | } 59 | ] 60 | }, 61 | { 62 | "from": { 63 | "key_code": "f5" 64 | }, 65 | "to": [ 66 | { 67 | "consumer_key_code": "dictation" 68 | } 69 | ] 70 | }, 71 | { 72 | "from": { 73 | "key_code": "f6" 74 | }, 75 | "to": [ 76 | { 77 | "key_code": "f6" 78 | } 79 | ] 80 | }, 81 | { 82 | "from": { 83 | "key_code": "f7" 84 | }, 85 | "to": [ 86 | { 87 | "consumer_key_code": "rewind" 88 | } 89 | ] 90 | }, 91 | { 92 | "from": { 93 | "key_code": "f8" 94 | }, 95 | "to": [ 96 | { 97 | "consumer_key_code": "play_or_pause" 98 | } 99 | ] 100 | }, 101 | { 102 | "from": { 103 | "key_code": "f9" 104 | }, 105 | "to": [ 106 | { 107 | "consumer_key_code": "fast_forward" 108 | } 109 | ] 110 | }, 111 | { 112 | "from": { 113 | "key_code": "f10" 114 | }, 115 | "to": [ 116 | { 117 | "consumer_key_code": "mute" 118 | } 119 | ] 120 | }, 121 | { 122 | "from": { 123 | "key_code": "f11" 124 | }, 125 | "to": [ 126 | { 127 | "consumer_key_code": "volume_decrement" 128 | } 129 | ] 130 | }, 131 | { 132 | "from": { 133 | "key_code": "f12" 134 | }, 135 | "to": [ 136 | { 137 | "consumer_key_code": "volume_increment" 138 | } 139 | ] 140 | } 141 | ], 142 | "name": "Default profile", 143 | "parameters": { 144 | "delay_milliseconds_before_open_device": 1000 145 | }, 146 | "selected": true, 147 | "simple_modifications": [], 148 | "virtual_hid_keyboard": { 149 | "country_code": 0, 150 | "indicate_sticky_modifier_keys_state": true, 151 | "mouse_key_xy_scale": 100 152 | } 153 | } 154 | ] 155 | } -------------------------------------------------------------------------------- /home/.zshrc: -------------------------------------------------------------------------------- 1 | # If you come from bash you might have to change your $PATH. 2 | # export PATH=$HOME/bin:/usr/local/bin:$PATH 3 | 4 | ## custom variables to determine which settings to use (defaults presume we're using homebrew on Linux) 5 | __ZSH="$HOME/.oh-my-zsh/" 6 | __ZSH_SYNTAX_HIGHLIGHTING="/home/linuxbrew/.linuxbrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" 7 | 8 | # change config for macos 9 | if [[ "$(uname)" == "Darwin" ]]; then 10 | # custom definitions 11 | __ZSH="/Users/$(whoami)/.oh-my-zsh" 12 | __ZSH_SYNTAX_HIGHLIGHTING="/opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" 13 | 14 | # os definitions 15 | PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH" 16 | PATH="$HOMEBREW_PREFIX/make/libexec/gnubin:$PATH" 17 | FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions/_grc:/opt/homebrew/share/zsh/site-functions/_gh:$FPATH" 18 | FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" 19 | 20 | # alt + arrow left/right bindings 21 | bindkey '[C' forward-word 22 | bindkey '[D' backward-word 23 | 24 | # cmd + arrow left/right bindings 25 | bindkey "^[[1;9D" beginning-of-line 26 | bindkey "^[[1;9C" end-of-line 27 | 28 | alias ls="gls" 29 | fi 30 | 31 | # Path to your oh-my-zsh installation. 32 | export ZSH="${__ZSH}" 33 | 34 | # Set name of the theme to load --- if set to "random", it will 35 | # load a random theme each time oh-my-zsh is loaded, in which case, 36 | # to know which specific one was loaded, run: echo $RANDOM_THEME 37 | 38 | # Uncomment the following line to use case-sensitive completion. 39 | # CASE_SENSITIVE="true" 40 | 41 | # Uncomment the following line to use hyphen-insensitive completion. 42 | # Case-sensitive completion must be off. _ and - will be interchangeable. 43 | # HYPHEN_INSENSITIVE="true" 44 | 45 | # Uncomment the following line to disable bi-weekly auto-update checks. 46 | DISABLE_AUTO_UPDATE="true" 47 | 48 | # Uncomment the following line to automatically update without prompting. 49 | # DISABLE_UPDATE_PROMPT="true" 50 | 51 | # Uncomment the following line to change how often to auto-update (in days). 52 | # export UPDATE_ZSH_DAYS=13 53 | 54 | # Uncomment the following line if pasting URLs and other text is messed up. 55 | # DISABLE_MAGIC_FUNCTIONS=true 56 | 57 | # Uncomment the following line to disable colors in ls. 58 | # DISABLE_LS_COLORS="true" 59 | 60 | # Uncomment the following line to disable auto-setting terminal title. 61 | # DISABLE_AUTO_TITLE="true" 62 | 63 | # Uncomment the following line to enable command auto-correction. 64 | # ENABLE_CORRECTION="true" 65 | 66 | # Uncomment the following line to display red dots whilst waiting for completion. 67 | COMPLETION_WAITING_DOTS="true" 68 | 69 | # Uncomment the following line if you want to disable marking untracked files 70 | # under VCS as dirty. This makes repository status check for large repositories 71 | # much, much faster. 72 | # DISABLE_UNTRACKED_FILES_DIRTY="true" 73 | 74 | # Uncomment the following line if you want to change the command execution time 75 | # stamp shown in the history command output. 76 | # You can set one of the optional three formats: 77 | # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" 78 | # or set a custom format using the strftime function format specifications, 79 | # see 'man strftime' for details. 80 | HIST_STAMPS="yyyy-mm-dd" 81 | 82 | # Would you like to use another custom folder than $ZSH/custom? 83 | # ZSH_CUSTOM=/path/to/new-custom-folder 84 | 85 | # You may need to manually set your language environment 86 | # export LANG=en_US.UTF-8 87 | 88 | ZSH_CACHE_DIR=$HOME/.cache/oh-my-zsh 89 | if [[ ! -d $ZSH_CACHE_DIR ]]; then 90 | mkdir $ZSH_CACHE_DIR 91 | fi 92 | 93 | # default os exports 94 | export TERM=xterm 95 | export EDITOR=nvim 96 | export CLICOLOR=1 97 | 98 | ## fzf 99 | setopt EXTENDED_HISTORY 100 | setopt HIST_EXPIRE_DUPS_FIRST 101 | setopt HIST_FIND_NO_DUPS 102 | setopt HIST_IGNORE_DUPS 103 | setopt HIST_IGNORE_ALL_DUPS 104 | setopt HIST_IGNORE_SPACE 105 | setopt HIST_SAVE_NO_DUPS 106 | export FZF_BASE="$(which fzf)" 107 | 108 | # Which plugins would you like to load? 109 | # Standard plugins can be found in ~/.oh-my-zsh/plugins/* 110 | # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ 111 | # Example format: plugins=(rails git textmate ruby lighthouse) 112 | # Add wisely, as too many plugins slow down shell startup. 113 | plugins=( 114 | aws 115 | direnv 116 | dircycle 117 | docker 118 | colored-man-pages 119 | extract 120 | fzf 121 | grc 122 | git 123 | git-flow-avh 124 | npm 125 | pnpm-shell-completion 126 | rbenv 127 | yarn 128 | ) 129 | 130 | source $ZSH/oh-my-zsh.sh 131 | source $__ZSH_SYNTAX_HIGHLIGHTING 132 | 133 | ## aliases and environment variables 134 | [[ -f "${HOME}/.config/aliases" ]] && source "${HOME}/.config/aliases" 135 | [[ -f "${HOME}/.config/aliases.private" ]] && source "${HOME}/.config/aliases.private" 136 | [[ -f "${HOME}/.config/env.private" ]] && source "${HOME}/.config/env.private" 137 | 138 | ## zsh options 139 | #unsetopt SHARE_HISTORY 140 | #setopt NO_SHARE_HISTORY 141 | 142 | ## hooks 143 | autoload -U add-zsh-hook 144 | autoload bashcompinit 145 | bashcompinit 146 | 147 | ## starship 148 | export STARSHIP_CONFIG=~/.config/starship/starship.toml 149 | export STARSHIP_SHELL=zsh 150 | 151 | ## autocompletion 152 | [[ -f ~/.config/tabtab/zsh/__tabtab.zsh ]] && . ~/.config/tabtab/zsh/__tabtab.zsh || true 153 | 154 | ## run 155 | eval "$(starship init zsh)" 156 | 157 | # fnm 158 | export PATH=/home/me/.fnm:$PATH 159 | eval "$(fnm env --use-on-cd --version-file-strategy recursive)" 160 | -------------------------------------------------------------------------------- /home/.config/wezterm/wezterm.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require 'wezterm' 2 | local act = wezterm.action 3 | local config = wezterm.config_builder() 4 | 5 | -- Meta 6 | config.automatically_reload_config = true 7 | 8 | -- Rendering 9 | config.freetype_load_flags = 'NO_HINTING' 10 | config.freetype_load_target = "Light" 11 | config.front_end = "WebGpu" 12 | config.max_fps = 144 13 | config.webgpu_preferred_adapter = { 14 | backend = 'Metal', 15 | device_type= "IntegratedGpu", 16 | name= "Apple M3 Pro", 17 | } 18 | 19 | -- Window 20 | config.window_decorations = "RESIZE|MACOS_FORCE_DISABLE_SHADOW" 21 | config.window_background_opacity = 0.975 22 | config.macos_window_background_blur = 20 23 | 24 | -- Layout 25 | config.initial_rows = 50 26 | config.initial_cols = 200 27 | 28 | -- Tabs 29 | config.use_fancy_tab_bar = false 30 | config.enable_tab_bar = true 31 | config.tab_bar_at_bottom = true 32 | config.tab_max_width = 40 33 | config.hide_tab_bar_if_only_one_tab = false 34 | config.show_new_tab_button_in_tab_bar = false 35 | config.inactive_pane_hsb = { 36 | saturation = 0.8, 37 | brightness = 0.8, 38 | } 39 | 40 | -- Fonts 41 | config.harfbuzz_features = { 'zero', 'calt=1', 'clig=1', 'liga=1' } 42 | config.font = wezterm.font('Hasklig', { weight = 'Medium' }) 43 | config.font_size = 14.5 44 | config.line_height = 1.15 45 | config.font_rules = { 46 | { 47 | italic = false, 48 | intensity = 'Half', 49 | font = wezterm.font('Hasklig', { weight = 'Regular' }) 50 | }, 51 | { 52 | italic = false, 53 | intensity = 'Normal', 54 | font = wezterm.font('Hasklig', { weight = 'Medium' }) 55 | }, 56 | { 57 | italic = false, 58 | intensity = 'Bold', 59 | font = wezterm.font('Hasklig', { weight = 'DemiBold' }) 60 | }, 61 | { 62 | italic = true, 63 | intensity = 'Normal', 64 | font = wezterm.font('Hasklig', { weight = 'Medium' }) 65 | } 66 | } 67 | 68 | -- Cursor 69 | config.cursor_blink_ease_in = 'Linear' 70 | config.cursor_blink_ease_out = 'Linear' 71 | config.cursor_blink_rate = 800 72 | 73 | -- Colours 74 | config.color_scheme_dirs = { '$HOME/.config/wezterm/colors' } 75 | config.color_scheme = 'nerdyman' 76 | 77 | -- Mouse bindings 78 | config.mouse_bindings = { 79 | -- Change the default click behavior so that it only selects 80 | -- text and doesn't open hyperlinks 81 | { 82 | event = { Up = { streak = 1, button = 'Left' } }, 83 | mods = 'NONE', 84 | action = act.CompleteSelection 'ClipboardAndPrimarySelection', 85 | }, 86 | 87 | -- and make CTRL-Click open hyperlinks 88 | { 89 | event = { Up = { streak = 1, button = 'Left' } }, 90 | mods = 'CTRL', 91 | action = act.OpenLinkAtMouseCursor, 92 | }, 93 | } 94 | 95 | -- Key bindings 96 | config.enable_kitty_keyboard = true 97 | config.leader = { key = 'a', mods = 'CTRL' } 98 | config.keys = { 99 | { 100 | key = 'H', 101 | mods = 'LEADER', 102 | action = act.AdjustPaneSize { 'Left', 5 }, 103 | }, 104 | { 105 | key = 'J', 106 | mods = 'LEADER', 107 | action = act.AdjustPaneSize { 'Down', 5 }, 108 | }, 109 | { 110 | key = 'K', 111 | mods = 'LEADER', 112 | action = act.AdjustPaneSize { 'Up', 5 } 113 | }, 114 | { 115 | key = 'L', 116 | mods = 'LEADER', 117 | action = act.AdjustPaneSize { 'Right', 5 }, 118 | }, 119 | -- Make cmd arrow left go to start of the line 120 | { 121 | key = 'LeftArrow', 122 | mods = 'CMD', 123 | action = wezterm.action { SendString = "\x1bOH" }, 124 | }, 125 | -- Make cmd arrow right go to start of line 126 | { 127 | key = 'RightArrow', 128 | mods = 'CMD', 129 | action = wezterm.action { SendString = "\x1bOF" }, 130 | }, 131 | -- Make Option-Left equivalent to Alt-b which many line editors interpret as backward-word 132 | { 133 | key = "LeftArrow", 134 | mods = "OPT", 135 | action = act{ SendString = "\x1bb" } 136 | }, 137 | -- Make Option-Right equivalent to Alt-f; forward-word 138 | { 139 | key = "RightArrow", 140 | mods = "OPT", 141 | action = act{ SendString = "\x1bf" } 142 | }, 143 | -- Set tab title 144 | { 145 | key = 'E', 146 | mods = 'CTRL|SHIFT', 147 | action = act.PromptInputLine { 148 | description = 'Set tab name:', 149 | action = wezterm.action_callback(function(window, pane, line) 150 | -- line will be `nil` if they hit escape without entering anything 151 | -- An empty string if they just hit enter 152 | -- Or the actual line of text they wrote 153 | if line then 154 | window:active_tab():set_title(line) 155 | end 156 | end), 157 | }, 158 | }, 159 | -- Open new pane 160 | { 161 | key = 'Enter', 162 | mods = 'SHIFT|CTRL', 163 | action = act.SplitVertical{ domain = 'CurrentPaneDomain' }, 164 | }, 165 | { 166 | key = 'Enter', 167 | mods = 'SHIFT', 168 | action = act.SplitHorizontal{ domain = 'CurrentPaneDomain' }, 169 | }, 170 | { 171 | key = 'F1', 172 | action = act.TogglePaneZoomState, 173 | }, 174 | -- Cycle pane forward 175 | { 176 | key = '}', 177 | mods = 'SHIFT|CTRL', 178 | action = act{ActivatePaneDirection="Next"}, 179 | }, 180 | -- Cycle pane backwards 181 | { 182 | key = '{', 183 | mods = 'SHIFT|CTRL', 184 | action = act{ActivatePaneDirection="Prev"}, 185 | }, 186 | -- Cycle tab forward 187 | { 188 | key = 'RightArrow', 189 | mods = 'SHIFT|CTRL', 190 | action = act{ActivateTabRelative=1}, 191 | }, 192 | -- Cycle tab backwards 193 | { 194 | key = 'LeftArrow', 195 | mods = 'SHIFT|CTRL', 196 | action = act{ActivateTabRelative=-1}, 197 | }, 198 | -- Quit tab 199 | { 200 | key = 'Q', 201 | mods = 'SHIFT|CTRL', 202 | action = act{CloseCurrentTab={confirm=false}}, 203 | }, 204 | -- Show command menu 205 | { 206 | key = 'P', 207 | mods = 'SHIFT|CTRL', 208 | action = act.ActivateCommandPalette, 209 | }, 210 | } 211 | 212 | return config 213 | 214 | -- vim: set expandtab shiftwidth=2 softtabstop=2: 215 | -------------------------------------------------------------------------------- /home/.config/Cursor/User/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.trimTrailingWhitespace": true, 3 | "svg.completion.showAdvanced": true, 4 | "workbench.editor.empty.hint": "hidden", 5 | "search.mode": "newEditor", 6 | "debug.inlineValues": "on", 7 | "editor.accessibilitySupport": "off", 8 | "editor.autoClosingBrackets": "always", 9 | "editor.autoClosingQuotes": "beforeWhitespace", 10 | "editor.codeActionsOnSave": { 11 | "source.fixAll.eslint": "explicit" 12 | }, 13 | "editor.copyWithSyntaxHighlighting": false, 14 | "editor.find.seedSearchStringFromSelection": "never", 15 | "editor.fontFamily": "Hasklig", 16 | "editor.fontLigatures": true, 17 | "editor.fontSize": 14, 18 | "editor.fontWeight": "500", 19 | "editor.formatOnPaste": false, 20 | "editor.formatOnSave": true, 21 | "editor.inlineSuggest.enabled": true, 22 | "editor.letterSpacing": 0.1, 23 | "editor.lineHeight": 32, 24 | "editor.selectionHighlight": true, 25 | "editor.occurrencesHighlight": "multiFile", 26 | "editor.multiCursorModifier": "alt", 27 | "editor.renderWhitespace": "boundary", 28 | "editor.roundedSelection": true, 29 | "editor.rulers": [ 30 | 120 31 | ], 32 | "editor.smoothScrolling": true, 33 | "editor.tabCompletion": "on", 34 | "explorer.autoReveal": false, 35 | "explorer.confirmDelete": false, 36 | "explorer.decorations.colors": true, 37 | "files.associations": { 38 | "*.ejs": "html" 39 | }, 40 | "files.enableTrash": false, 41 | "files.exclude": { 42 | "**/.git": true, 43 | "**/.svn": true, 44 | "**/.hg": true, 45 | "**/CVS": true, 46 | "**/.DS_Store": true, 47 | "**/tmp": true, 48 | "**/node_modules": true, 49 | "**/bower_components": true, 50 | "**/dist": true, 51 | ".env": false, 52 | ".env.*": false 53 | }, 54 | "files.insertFinalNewline": true, 55 | "git.decorations.enabled": true, 56 | "javascript.suggest.autoImports": false, 57 | "markdown.links.openLocation": "beside", 58 | "markdown.preview.fontFamily": "system-ui", 59 | "redhat.telemetry.enabled": false, 60 | "search.exclude": { 61 | "*.ignore": true, 62 | ".env": false 63 | }, 64 | "search.quickOpen.includeHistory": false, 65 | "search.showLineNumbers": true, 66 | "terminal.explorerKind": "external", 67 | "terminal.external.linuxExec": "kitty", 68 | "terminal.integrated.cursorBlinking": true, 69 | "terminal.integrated.defaultProfile.osx": "zsh", 70 | "terminal.integrated.enableMultiLinePasteWarning": false, 71 | "terminal.integrated.fontFamily": "Hasklig", 72 | "terminal.integrated.fontSize": 14, 73 | "terminal.integrated.fontWeight": "500", 74 | "terminal.integrated.fontWeightBold": "600", 75 | "typescript.suggest.autoImports": false, 76 | "chat.editor.lineHeight": 1.5, 77 | "chat.editor.fontSize": 13, 78 | "window.restoreWindows": "all", 79 | "window.zoomLevel": 0.25, 80 | "workbench.colorCustomizations": { 81 | "[Cryptic]": { 82 | "editor.lineHighlightBackground": "#eb83f711", 83 | "editor.lineHighlightBorder": "#ff000000", 84 | "editorIndentGuide.activeBackground1": "#f783ac66", 85 | "editorIndentGuide.background1": "#f783ac22" 86 | }, 87 | "editor.selectionBackground": "#ffffff44", 88 | "editor.selectionHighlightBorder": "#ffffff80", 89 | "editorCursor.foreground": "#f783ac", 90 | "editorError.background": "#dd00004a", 91 | "editorWarning.background": "#ffd0004f", 92 | "terminalCursor.foreground": "#f783ac" 93 | }, 94 | "workbench.editor.closeOnFileDelete": true, 95 | "workbench.editor.enablePreviewFromQuickOpen": false, 96 | "workbench.editor.highlightModifiedTabs": true, 97 | "workbench.editor.pinnedTabSizing": "compact", 98 | "workbench.editorAssociations": { 99 | "*.svg": "default" 100 | }, 101 | "workbench.list.horizontalScrolling": true, 102 | "workbench.settings.useSplitJSON": false, 103 | "workbench.startupEditor": "welcomePage", 104 | "workbench.tree.indent": 12, 105 | "gitlens.codeLens.enabled": false, 106 | "terminal.external.osxExec": "Kitty.app", 107 | "editor.stickyScroll.enabled": true, 108 | "prettier.requireConfig": true, 109 | "workbench.colorTheme": "Cryptic", 110 | "markdown.preview.scrollPreviewWithEditor": false, 111 | "totalTypeScript.hideAllTips": false, 112 | "totalTypeScript.hideBasicTips": true, 113 | "totalTypeScript.hiddenTips": [ 114 | "passing-generics-to-types", 115 | "record-utility-type", 116 | "as-const", 117 | "as-const-on-object", 118 | "typeof", 119 | "pick-utility-type", 120 | "omit-utility-type", 121 | "type-alias-with-generics", 122 | "interface-with-generics", 123 | "interface-with-multiple-generics", 124 | "type-alias-with-multiple-generics", 125 | "keyof", 126 | "mapped-type", 127 | "required-utility-type", 128 | "partial-utility-type", 129 | "generic-slots-in-functions", 130 | "returntype-utility-type", 131 | "tuple-type", 132 | "non-null-expression", 133 | "uppercase-utility-type", 134 | "in-operator-narrowing", 135 | "conditional-type", 136 | "nested-conditional-type", 137 | "never-keyword", 138 | "type-predicate", 139 | "nonnullable-utility-type", 140 | "parameters-utility-type", 141 | "awaited-utility-type" 142 | ], 143 | "search.searchEditor.defaultNumberOfContextLines": 5, 144 | "markdown.preview.fontSize": 18, 145 | "git.openRepositoryInParentFolders": "never", 146 | "tailwindCSS.experimental.classRegex": [ 147 | [ 148 | "cva\\(([^)]*)\\)", 149 | "[\"'`]([^\"'`]*).*?[\"'`]" 150 | ], 151 | [ 152 | "cx\\(([^)]*)\\)", 153 | "(?:'|\"|`)([^']*)(?:'|\"|`)" 154 | ] 155 | ], 156 | "yaml.customTags": [ 157 | "!And", 158 | "!And sequence", 159 | "!If", 160 | "!If sequence", 161 | "!Not", 162 | "!Not sequence", 163 | "!Equals", 164 | "!Equals sequence", 165 | "!Or", 166 | "!Or sequence", 167 | "!FindInMap", 168 | "!FindInMap sequence", 169 | "!Base64", 170 | "!Join", 171 | "!Join sequence", 172 | "!Cidr", 173 | "!Ref", 174 | "!Sub", 175 | "!Sub sequence", 176 | "!GetAtt", 177 | "!GetAZs", 178 | "!ImportValue", 179 | "!ImportValue sequence", 180 | "!Select", 181 | "!Select sequence", 182 | "!Split", 183 | "!Split sequence" 184 | ], 185 | "shellcheck.ignorePatterns": { 186 | "**/.env": true, 187 | "**/.env.*": true 188 | }, 189 | "workbench.sideBar.location": "right", 190 | "cursor.cpp.disabledLanguages": [ 191 | "markdown", 192 | "plaintext", 193 | "scminput" 194 | ], 195 | "[typescriptreact]": { 196 | "editor.defaultFormatter": "esbenp.prettier-vscode" 197 | }, 198 | "[javascript]": { 199 | "editor.defaultFormatter": "esbenp.prettier-vscode" 200 | }, 201 | "window.commandCenter": 1, 202 | "catppuccin-icons.hidesExplorerArrows": true, 203 | "material-icon-theme.activeIconPack": "react", 204 | "material-icon-theme.saturation": 0.85, 205 | "material-icon-theme.hidesExplorerArrows": true, 206 | "material-icon-theme.files.color": "#554e6e", 207 | "material-icon-theme.folders.color": "#5b5573", 208 | "material-icon-theme.rootFolders.color": "#5b5573", 209 | "workbench.iconTheme": "catppuccin-latte", 210 | "terminal.integrated.scrollback": 100000 211 | } 212 | -------------------------------------------------------------------------------- /home/.config/Code/User/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "apollographql.display.showRunInStudioButton": false, 3 | "files.trimTrailingWhitespace": true, 4 | "svg.completion.showAdvanced": true, 5 | "workbench.editor.empty.hint": "hidden", 6 | "search.mode": "newEditor", 7 | "debug.inlineValues": "on", 8 | "editor.accessibilitySupport": "off", 9 | "editor.autoClosingBrackets": "always", 10 | "editor.autoClosingQuotes": "beforeWhitespace", 11 | "editor.codeActionsOnSave": { 12 | "source.fixAll.eslint": "explicit" 13 | }, 14 | "editor.copyWithSyntaxHighlighting": false, 15 | "editor.find.seedSearchStringFromSelection": "never", 16 | "editor.fontFamily": "Hasklig", 17 | "editor.fontLigatures": true, 18 | "editor.fontSize": 14, 19 | "editor.fontWeight": "500", 20 | "editor.formatOnPaste": false, 21 | "editor.formatOnSave": true, 22 | "editor.inlineSuggest.enabled": true, 23 | "editor.letterSpacing": 0.1, 24 | "editor.lineHeight": 32, 25 | "editor.multiDocumentOccurrencesHighlight": true, 26 | "editor.multiCursorModifier": "alt", 27 | "editor.renderWhitespace": "boundary", 28 | "editor.roundedSelection": true, 29 | "editor.rulers": [120], 30 | "editor.smoothScrolling": true, 31 | "editor.tabCompletion": "on", 32 | "explorer.autoReveal": false, 33 | "explorer.confirmDelete": false, 34 | "explorer.decorations.colors": true, 35 | "files.associations": { 36 | "*.ejs": "html" 37 | }, 38 | "files.enableTrash": false, 39 | "files.exclude": { 40 | "**/.git": true, 41 | "**/.svn": true, 42 | "**/.hg": true, 43 | "**/CVS": true, 44 | "**/.DS_Store": true, 45 | "**/tmp": true, 46 | "**/node_modules": true, 47 | "**/bower_components": true, 48 | "**/dist": true, 49 | ".env": false, 50 | ".env.*": false 51 | }, 52 | "files.insertFinalNewline": true, 53 | "git.decorations.enabled": true, 54 | "javascript.suggest.autoImports": false, 55 | "markdown.links.openLocation": "beside", 56 | "markdown.preview.fontFamily": "system-ui", 57 | "redhat.telemetry.enabled": false, 58 | "search.exclude": { 59 | "*.ignore": true, 60 | ".env": false 61 | }, 62 | "search.quickOpen.includeHistory": false, 63 | "search.showLineNumbers": true, 64 | "telemetry.telemetryLevel": "off", 65 | "terminal.explorerKind": "external", 66 | "terminal.external.linuxExec": "kitty", 67 | "terminal.integrated.cursorBlinking": true, 68 | "terminal.integrated.defaultProfile.osx": "zsh", 69 | "terminal.integrated.enableMultiLinePasteWarning": false, 70 | "terminal.integrated.fontFamily": "Hasklig", 71 | "terminal.integrated.fontSize": 14, 72 | "terminal.integrated.fontWeight": "500", 73 | "terminal.integrated.fontWeightBold": "600", 74 | "typescript.suggest.autoImports": false, 75 | "chat.editor.lineHeight": 1.5, 76 | "chat.editor.fontSize": 13, 77 | "window.restoreWindows": "all", 78 | "window.zoomLevel": 0.25, 79 | "workbench.colorCustomizations": { 80 | "[Cryptic]": { 81 | "editor.lineHighlightBackground": "#eb83f711", 82 | "editor.lineHighlightBorder": "#ff000000", 83 | "editorIndentGuide.activeBackground1": "#f783ac66", 84 | "editorIndentGuide.background1": "#f783ac22" 85 | }, 86 | "editor.selectionBackground": "#ffffff44", 87 | "editor.selectionHighlightBorder": "#ffffff80", 88 | "editorCursor.foreground": "#f783ac", 89 | "editorError.background": "#dd00004a", 90 | "editorWarning.background": "#ffd0004f", 91 | "terminalCursor.foreground": "#f783ac" 92 | }, 93 | "workbench.editor.closeOnFileDelete": true, 94 | "workbench.editor.enablePreviewFromQuickOpen": false, 95 | "workbench.editor.highlightModifiedTabs": true, 96 | "workbench.editor.pinnedTabSizing": "compact", 97 | "workbench.iconTheme": "eq-material-theme-icons-palenight", 98 | "workbench.list.horizontalScrolling": true, 99 | "workbench.settings.useSplitJSON": false, 100 | "workbench.startupEditor": "welcomePage", 101 | "workbench.tree.indent": 12, 102 | "gitlens.codeLens.enabled": false, 103 | "terminal.external.osxExec": "Kitty.app", 104 | "editor.stickyScroll.enabled": true, 105 | "prettier.requireConfig": true, 106 | "workbench.colorTheme": "Cryptic", 107 | "github.copilot.enable": { 108 | "*": true, 109 | "plaintext": false, 110 | "markdown": true, 111 | "scminput": false 112 | }, 113 | "markdown.preview.scrollPreviewWithEditor": false, 114 | "totalTypeScript.hideAllTips": false, 115 | "totalTypeScript.hideBasicTips": true, 116 | "totalTypeScript.hiddenTips": [ 117 | "passing-generics-to-types", 118 | "record-utility-type", 119 | "as-const", 120 | "as-const-on-object", 121 | "typeof", 122 | "pick-utility-type", 123 | "omit-utility-type", 124 | "type-alias-with-generics", 125 | "interface-with-generics", 126 | "interface-with-multiple-generics", 127 | "type-alias-with-multiple-generics", 128 | "keyof", 129 | "mapped-type", 130 | "required-utility-type", 131 | "partial-utility-type", 132 | "generic-slots-in-functions", 133 | "returntype-utility-type", 134 | "tuple-type", 135 | "non-null-expression", 136 | "uppercase-utility-type", 137 | "in-operator-narrowing" 138 | ], 139 | "search.searchEditor.defaultNumberOfContextLines": 5, 140 | "markdown.preview.fontSize": 18, 141 | "git.openRepositoryInParentFolders": "never", 142 | "tailwindCSS.experimental.classRegex": [ 143 | [ 144 | "cva\\(([^)]*)\\)", 145 | "[\"'`]([^\"'`]*).*?[\"'`]" 146 | ], 147 | [ 148 | "cx\\(([^)]*)\\)", 149 | "(?:'|\"|`)([^']*)(?:'|\"|`)" 150 | ], 151 | ], 152 | "yaml.customTags": [ 153 | "!And", 154 | "!And sequence", 155 | "!If", 156 | "!If sequence", 157 | "!Not", 158 | "!Not sequence", 159 | "!Equals", 160 | "!Equals sequence", 161 | "!Or", 162 | "!Or sequence", 163 | "!FindInMap", 164 | "!FindInMap sequence", 165 | "!Base64", 166 | "!Join", 167 | "!Join sequence", 168 | "!Cidr", 169 | "!Ref", 170 | "!Sub", 171 | "!Sub sequence", 172 | "!GetAtt", 173 | "!GetAZs", 174 | "!ImportValue", 175 | "!ImportValue sequence", 176 | "!Select", 177 | "!Select sequence", 178 | "!Split", 179 | "!Split sequence" 180 | ], 181 | "aws.telemetry": false, 182 | "shellcheck.ignorePatterns": { 183 | "**/.env": true, 184 | "**/.env.*": true 185 | }, 186 | 187 | /** 188 | * Languages. 189 | */ 190 | "[css]": { 191 | "editor.defaultFormatter": "esbenp.prettier-vscode" 192 | }, 193 | "[javascript]": { 194 | "editor.defaultFormatter": "esbenp.prettier-vscode" 195 | }, 196 | "[json]": { 197 | "editor.defaultFormatter": "esbenp.prettier-vscode" 198 | }, 199 | "[typescript]": { 200 | "editor.defaultFormatter": "esbenp.prettier-vscode" 201 | }, 202 | "[typescriptreact]": { 203 | "editor.defaultFormatter": "esbenp.prettier-vscode" 204 | }, 205 | /** 206 | * Ruby. 207 | */ 208 | "[ruby]": { 209 | "editor.formatOnSave": true, 210 | "editor.formatOnType": true, 211 | "editor.tabSize": 2, 212 | "editor.insertSpaces": true, 213 | "editor.semanticHighlighting.enabled": true, 214 | "files.trimTrailingWhitespace": true, 215 | "files.insertFinalNewline": true, 216 | "files.trimFinalNewlines": true, 217 | "editor.rulers": [ 218 | 120 219 | ], 220 | "editor.defaultFormatter": "LoranKloeze.ruby-rubocop-revived" 221 | }, 222 | "solargraph.commandPath": "/Users/me/.rbenv/shims/solargraph", 223 | "rubyLsp.rubyVersionManager": "rbenv", 224 | "ruby.rubocop.executePath": "/Users/me/.rbenv/shims/", 225 | "[jsonc]": { 226 | "editor.defaultFormatter": "esbenp.prettier-vscode" 227 | }, 228 | "workbench.sideBar.location": "right", 229 | } 230 | -------------------------------------------------------------------------------- /home/.config/i3/config: -------------------------------------------------------------------------------- 1 | # This file has been auto-generated by i3-config-wizard(1). 2 | # It will not be overwritten, so edit it as you like. 3 | # 4 | # Should you change your keyboard layout some time, delete 5 | # this file and re-run i3-config-wizard(1). 6 | # 7 | 8 | # i3 config file (v4) 9 | # 10 | # Please see http://i3wm.org/docs/userguide.html for a complete reference! 11 | # zsh> xmodmap 12 | 13 | # Modifier keys 14 | set $mod Mod4 15 | set $alt Mod1 16 | 17 | # Colors 18 | set $border #7b5adb 19 | set $borderFg #f1e7f1 20 | set $borderFocused #ffd749 21 | set $borderFocusedFg #27273f 22 | set $borderFocusedInactive #f17ba5 23 | set $borderFocusedInactiveFg #58395d 24 | 25 | # Window manager colors 26 | # border backgr. text indicator 27 | client.focused #deb832 $borderFocused $borderFocusedFg # 28 | client.focused_inactive #da6b92 $borderFocusedInactive $borderFocusedInactiveFg # 29 | client.unfocused #674db1 $border $borderFg # 30 | #client.placeholder # # # # 31 | focus_follows_mouse no 32 | 33 | # Gaps 34 | gaps inner 6 35 | gaps outer 0 36 | border_radius 1 37 | 38 | # Font for window titles. Will also be used by the bar unless a different font 39 | # is used in the bar {} block below. 40 | # This font is widely installed, provides lots of unicode glyphs, right-to-left 41 | # text rendering and scalability on retina/hidpi displays (thanks to pango). 42 | font pango:SF Pro Display Semibold 9.75 43 | # Before i3 v4.8, we used to recommend this one as the default: 44 | # font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 45 | # The font above is very space-efficient, that is, it looks good, sharp and 46 | # clear in small sizes. However, its unicode glyph coverage is limited, the old 47 | # X core fonts rendering does not support right-to-left and this being a bitmap 48 | # font, it doesn’t scale on retina/hidpi displays. 49 | 50 | # Use Mouse+$mod to drag floating windows to their wanted position 51 | floating_modifier $mod 52 | # start a terminal 53 | bindsym $mod+t exec kitty 54 | # kill focused window 55 | bindsym $mod+Shift+q kill 56 | 57 | # There also is the (new) i3-dmenu-desktop which only displays applications 58 | # shipping a .desktop file. It is a wrapper around dmenu, so you need that 59 | # 60 | # installed. 61 | # bindsym $mod+d exec --no-startup-id i3-dmenu-desktop 62 | 63 | # change focus 64 | bindsym $mod+j focus left 65 | bindsym $mod+k focus down 66 | bindsym $mod+l focus up 67 | bindsym $mod+semicolon focus right 68 | 69 | # alternatively, you can use the cursor keys: 70 | bindsym $mod+Left focus left 71 | bindsym $mod+Down focus down 72 | bindsym $mod+Up focus up 73 | bindsym $mod+Right focus right 74 | 75 | # move focused window 76 | bindsym $mod+Shift+j move left 77 | bindsym $mod+Shift+k move down 78 | # bindsym $mod+Shift+l move up 79 | bindsym $mod+Shift+semicolon move right 80 | # Alternatively, you can use the cursor keys: 81 | bindsym $mod+Shift+Left move left 82 | bindsym $mod+Shift+Down move down 83 | bindsym $mod+Shift+Up move up 84 | bindsym $mod+Shift+Right move right 85 | # Split in horizontal orientation 86 | bindsym $mod+h split h 87 | # Split in vertical orientation 88 | bindsym $mod+v split v 89 | # Enter fullscreen mode for the focused container 90 | bindsym $mod+f fullscreen 91 | 92 | # Change container layout (stacked, tabbed, toggle split) 93 | bindsym $mod+s layout stacking 94 | bindsym $mod+w layout tabbed 95 | bindsym $mod+e layout default 96 | bindsym $mod+Shift+s layout toggle split 97 | 98 | # Toggle tiling / floating 99 | bindsym $mod+Shift+space floating toggle 100 | # Change focus between tiling / floating windows 101 | bindsym $mod+space focus mode_toggle 102 | # Focus the parent container 103 | bindsym $mod+a focus parent 104 | # Focus the child container 105 | bindsym $mod+c focus child 106 | 107 | # Switch to workspace 108 | bindsym $mod+1 workspace web 109 | bindsym $mod+2 workspace code 110 | bindsym $mod+3 workspace term 111 | bindsym $mod+4 workspace steam 112 | bindsym $mod+5 workspace admin 113 | bindsym $mod+6 workspace vm 114 | bindsym $mod+7 workspace misc 115 | bindsym $mod+8 workspace db 116 | bindsym $mod+9 workspace 9 117 | bindsym $mod+0 workspace 10 118 | 119 | # Move focused container to workspace 120 | bindsym $mod+Shift+1 move container to workspace web 121 | bindsym $mod+Shift+2 move container to workspace code 122 | bindsym $mod+Shift+3 move container to workspace term 123 | bindsym $mod+Shift+4 move container to workspace steam 124 | bindsym $mod+Shift+5 move container to workspace admin 125 | bindsym $mod+Shift+6 move container to workspace vm 126 | bindsym $mod+Shift+7 move container to workspace misc 127 | bindsym $mod+Shift+8 move container to workspace db 128 | bindsym $mod+Shift+9 move container to workspace 9 129 | bindsym $mod+Shift+0 move container to workspace 10 130 | 131 | # window floating 132 | for_window [instance="i3wmForceFloat"] floating enable, move absolute center 133 | for_window [class="^i3wmForceFloat$"] floating enable 134 | for_window [window_role="pop-up"] floating enable,move absolute center 135 | for_window [class="Galculator"] floating enable,move absolute center 136 | for_window [class="Lxappearance"] floating enable,move absolute center 137 | for_window [class="Nm-connection-editor"] floating enable,move absolute center 138 | for_window [class="Xfce4-panel"] floating enable,move absolute center 139 | for_window [class="ulauncher"] floating enable, border none 140 | 141 | # plasma 142 | # Don’t treat Plasma pop-ups as full-sized windows 143 | for_window [class="plasmashell"] floating enable 144 | # Don’t spawn an empty window for the Plasma Desktop 145 | for_window [title="Desktop — Plasma"] kill, floating enable, border none 146 | for_window [class="Plasma"] floating enable 147 | for_window [class="krunner"] floating enable 148 | for_window [class="Kmix"] floating enable 149 | for_window [class="Klipper"] floating enable 150 | for_window [class="Plasmoidviewer"] floating enable 151 | # Don’t let notifications and non-interactive pop-up windows steal focus 152 | no_focus [class="plasmashell" window_type="notification"] 153 | #no_focus [class="plasmashell" window_type="on_screen_display"] 154 | for_window [window_role="pop-up"] floating enable 155 | for_window [window_role="bubble"] floating enable 156 | for_window [window_role="task_dialog"] floating enable 157 | for_window [window_role="Preferences"] floating enable 158 | for_window [window_role="About"] floating enable 159 | for_window [window_type="dialog"] floating enable 160 | for_window [window_type="menu"] floating enable 161 | 162 | # disable window borders (don't show title only 1px border) 163 | for_window [class="^.*"] border pixel 1 164 | new_window pixel 1 165 | default_border pixel 1 166 | 167 | # reload the configuration file 168 | bindsym $mod+Shift+c reload 169 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 170 | bindsym $mod+Shift+r restart 171 | # exit i3 (logs you out of your X session) 172 | bindsym $alt+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" 173 | 174 | # Function key bindings 175 | bindsym XF86AudioRaiseVolume exec "amixer set Master 4%+" 176 | bindsym XF86AudioLowerVolume exec "amixer set Master 4%-" 177 | bindsym XF86AudioMute exec "amixer set Master toggle" 178 | #bindsym XF86AudioPlay exec quodlibet --play-pause 179 | #bindsym XF86AudioStop exec quodlibet --stop 180 | #bindsym XF86AudioPrev exec quodlibet --previous 181 | #bindsym XF86AudioNext exec quodlibet --next 182 | 183 | # resize window (you can also use the mouse for that) 184 | bindsym $mod+r mode "resize" 185 | mode "resize" { 186 | # These bindings trigger as soon as you enter the resize mode 187 | 188 | # Pressing left will shrink the window’s width. 189 | # Pressing right will grow the window’s width. 190 | # Pressing up will shrink the window’s height. 191 | 192 | # Pressing down will grow the window’s height. 193 | bindsym j resize shrink width 4 px or 4 ppt 194 | bindsym k resize grow height 4 px or 5 ppt 195 | bindsym l resize shrink height 4 px or 4 ppt 196 | bindsym semicolon resize grow width 4 px or 4 ppt 197 | # same bindings, but for the arrow keys 198 | bindsym Left resize shrink width 4 px or 4 ppt 199 | bindsym Down resize grow height 4 px or 4 ppt 200 | bindsym Up resize shrink height 4 px or 4 ppt 201 | bindsym Right resize grow width 4 px or 4 ppt 202 | # back to normal: Enter or Escape 203 | bindsym Return mode "default" 204 | bindsym Escape mode "default" 205 | } 206 | 207 | # custom bindings 208 | bindsym $mod+Shift+t exec kitty --class=i3wmForceFloat 209 | bindsym $mod+Shift+e exec nautilus 210 | bindsym $mod+d exec "rofi -modi drun,run,window -show drun" 211 | bindsym $mod+Shift+l exec xflock 212 | bindsym $mod+Shift+d exec xflock4 && sleep 1 && systemctl hibernate 213 | bindsym $mod+Print exec xfce4-screenshooter 214 | bindsym Print exec flameshot gui 215 | 216 | # vim: set ft=sh: 217 | -------------------------------------------------------------------------------- /macos-mods.sh: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | setopt VERBOSE 4 | 5 | # @see https://daiderd.com/nix-darwin/manual/index.html 6 | # @see https://gist.github.com/romanhaa/9804183f242991007b316a59c4ba5e5a 7 | 8 | FALLBACK_HOSTNAME=$(hostname) 9 | MOD_HOSTNAME=${1:-$FALLBACK_HOSTNAME} 10 | 11 | echo "Using hostname: $MOD_HOSTNAME" 12 | 13 | sudo scutil --set HostName "$MOD_HOSTNAME" 14 | 15 | # Reset to defaults using `defaults delete -g ` 16 | 17 | # dock 18 | # position 19 | defaults write com.apple.dock "orientation" -string "bottom" 20 | # icon size 21 | defaults write com.apple.dock "tilesize" -int "64" 22 | # show recents 23 | defaults write com.apple.dock "show-recents" -bool "false" 24 | # minimize animation 25 | defaults write com.apple.dock "mineffect" -string "genie" 26 | # restart dock 27 | killall Dock 28 | 29 | # finder 30 | # show "Quit" menu item - disabled, aerospace handles 'soft' closing finder pretty well 31 | # defaults write com.apple.finder "QuitMenuItem" -bool "true" 32 | # show all file extensions 33 | defaults write NSGlobalDomain "AppleShowAllExtensions" -bool "true" 34 | # show hidden files 35 | defaults write com.apple.finder "AppleShowAllFiles" -bool "true" 36 | # do not show warning when changing file extensions 37 | defaults write com.apple.finder "FXEnableExtensionChangeWarning" -bool "false" 38 | # do not use iCloud as default file storage destination 39 | defaults write NSGlobalDomain "NSDocumentSaveNewDocumentsToCloud" -bool "false" 40 | # remove delay when hovering title 41 | defaults write NSGlobalDomain "NSToolbarTitleViewRolloverDelay" -float "0" 42 | # restart finder 43 | killall Finder 44 | 45 | # mission control 46 | # deactivate auto rearrange 47 | defaults write com.apple.dock "mru-spaces" -bool "false" 48 | # group windows so they scale correctly with Aerospace https://nikitabobko.github.io/AeroSpace/guide#a-note-on-mission-control 49 | defaults write com.apple.dock expose-group-apps -bool true 50 | restart dock 51 | killall Dock 52 | 53 | # dictation 54 | # disable dictation 55 | defaults write com.apple.HIToolbox AppleDictationAutoEnable -int 0 56 | 57 | # feedback assistant 58 | # do not autogather large files when submitting a report 59 | defaults write com.apple.appleseed.FeedbackAssistant "Autogather" -bool "false" 60 | 61 | # enable spring loading for Dock items 62 | defaults write com.apple.dock "enable-spring-load-actions-on-all-items" -bool "true" 63 | killall Dock 64 | 65 | # disable "Application Downloaded from Internet" popup 66 | defaults write com.apple.LaunchServices "LSQuarantine" -bool "false" 67 | 68 | # expand save panel by default 69 | defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true 70 | defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true 71 | 72 | # expand print panel by default 73 | defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true 74 | defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true 75 | 76 | # do not show accent menu when long-pressing key 77 | defaults write -g ApplePressAndHoldEnabled -bool false 78 | 79 | # drag windows by holding CTRL + CMD and clicking anywhere in the window 80 | # does not work with all applications 81 | defaults write -g NSWindowShouldDragOnGesture -bool true 82 | 83 | # navigate UI elements with keyboard (tab key) 84 | # alternatively: System Preferences -> Keyboard -> Shortcuts -> check "Use keyboard navigation to move focus between controls" 85 | defaults write NSGlobalDomain AppleKeyboardUIMode -int 3 86 | 87 | # disable animation when opening the info window in finder (CMD + I) 88 | # defaults write com.apple.finder DisableAllAnimations -bool true 89 | 90 | # disable animations when opening an application from the dock 91 | # defaults write com.apple.dock launchanim -bool false 92 | 93 | # make all animations faster that are used by mission control 94 | defaults write com.apple.dock expose-animation-duration -float 0.1 95 | 96 | # automatically quit printer app once the print jobs complete 97 | defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true 98 | 99 | # disable Apple Intelligence 100 | defaults write com.apple.CloudSubscriptionFeatures.optIn "device" -bool "false" 101 | defaults write com.apple.CloudSubscriptionFeatures.optIn "auto_opt_in" -bool "false" 102 | 103 | # disable automatic capitalization 104 | defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool false 105 | 106 | # disable smart dashes 107 | defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false 108 | 109 | # disable automatic period substitution 110 | defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool false 111 | 112 | # disable smart quotes 113 | defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false 114 | 115 | # disable auto-correct 116 | defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false 117 | 118 | # Set language and text formats 119 | defaults write NSGlobalDomain AppleLanguages -array "en-GB" 120 | # defaults write NSGlobalDomain AppleLocale -string "en_US@currency=GBP" 121 | defaults write NSGlobalDomain AppleMeasurementUnits -string "Centimeters" 122 | defaults write NSGlobalDomain AppleMetricUnits -bool true 123 | 124 | # set the timezone; see `sudo systemsetup -listtimezones` for other values 125 | sudo systemsetup -settimezone "Europe/London" > /dev/null 126 | 127 | # Disable Spotlight Indexing 128 | sudo mdutil -i off -d / 129 | 130 | # Disable font smoothing (looks bad on regular HD displays) 131 | #defaults write -g AppleFontSmoothing -int 1 132 | #defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO 133 | 134 | # Disable mouse acceleration 135 | defaults write .GlobalPreferences com.apple.mouse.scaling -1 136 | 137 | # Trackpad 138 | # disable haptic feedback 139 | defaults write NSGlobalDomain com.apple.trackpad.forceClick -bool false 140 | 141 | # https://privacy.sexy — v0.13.8 — Tue, 17 Jun 2025 10:42:19 GMT 142 | if [ "$EUID" -ne 0 ]; then 143 | script_path=$([[ "$0" = /* ]] && echo "$0" || echo "$PWD/${0#./}") 144 | sudo "$script_path" || ( 145 | echo 'Administrator privileges are required.' 146 | exit 1 147 | ) 148 | exit 0 149 | fi 150 | 151 | 152 | # Disable personalized advertisements and identifier tracking 153 | echo '--- Disable personalized advertisements and identifier tracking' 154 | defaults write com.apple.AdLib allowIdentifierForAdvertising -bool false 155 | defaults write com.apple.AdLib allowApplePersonalizedAdvertising -bool false 156 | defaults write com.apple.AdLib forceLimitAdTracking -bool true 157 | # ---------------------------------------------------------- 158 | 159 | 160 | # ---------------------------------------------------------- 161 | # ------------Disable Microsoft Office telemetry------------ 162 | # ---------------------------------------------------------- 163 | echo '--- Disable Microsoft Office telemetry' 164 | defaults write com.microsoft.office DiagnosticDataTypePreference -string ZeroDiagnosticData 165 | # ---------------------------------------------------------- 166 | 167 | 168 | # ---------------------------------------------------------- 169 | # ---------------Disable guest account login---------------- 170 | # ---------------------------------------------------------- 171 | echo '--- Disable guest account login' 172 | sudo defaults write '/Library/Preferences/com.apple.loginwindow' 'GuestEnabled' -bool NO 173 | if ! command -v 'sysadminctl' &> /dev/null; then 174 | echo 'Skipping because "sysadminctl" is not found.' 175 | else 176 | sudo sysadminctl -guestAccount off 177 | fi 178 | # ---------------------------------------------------------- 179 | 180 | 181 | # ---------------------------------------------------------- 182 | # -----------Disable guest file sharing over SMB------------ 183 | # ---------------------------------------------------------- 184 | echo '--- Disable guest file sharing over SMB' 185 | sudo defaults write '/Library/Preferences/SystemConfiguration/com.apple.smb.server' 'AllowGuestAccess' -bool NO 186 | if ! command -v 'sysadminctl' &> /dev/null; then 187 | echo 'Skipping because "sysadminctl" is not found.' 188 | else 189 | sudo sysadminctl -smbGuestAccess off 190 | fi 191 | # ---------------------------------------------------------- 192 | 193 | 194 | # ---------------------------------------------------------- 195 | # -----------Disable guest file sharing over AFP------------ 196 | # ---------------------------------------------------------- 197 | echo '--- Disable guest file sharing over AFP' 198 | sudo defaults write '/Library/Preferences/com.apple.AppleFileServer' 'guestAccess' -bool NO 199 | if ! command -v 'sysadminctl' &> /dev/null; then 200 | echo 'Skipping because "sysadminctl" is not found.' 201 | else 202 | sudo sysadminctl -afpGuestAccess off 203 | fi 204 | sudo killall -HUP AppleFileServer 205 | # ---------------------------------------------------------- 206 | 207 | 208 | # ---------------------------------------------------------- 209 | # -------------Disable online spell correction-------------- 210 | # ---------------------------------------------------------- 211 | echo '--- Disable online spell correction' 212 | defaults write NSGlobalDomain WebAutomaticSpellingCorrectionEnabled -bool false 213 | # ---------------------------------------------------------- 214 | 215 | 216 | # ---------------------------------------------------------- 217 | # ---------------Disable remote Apple events---------------- 218 | # ---------------------------------------------------------- 219 | echo '--- Disable remote Apple events' 220 | sudo systemsetup -setremoteappleevents off 221 | # ---------------------------------------------------------- 222 | 223 | 224 | # ---------------------------------------------------------- 225 | # --Disable automatic storage of documents in iCloud Drive-- 226 | # ---------------------------------------------------------- 227 | echo '--- Disable automatic storage of documents in iCloud Drive' 228 | defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false 229 | # ---------------------------------------------------------- 230 | 231 | 232 | # ---------------------------------------------------------- 233 | # ---------------Disable AirDrop file sharing--------------- 234 | # ---------------------------------------------------------- 235 | echo '--- Disable AirDrop file sharing' 236 | defaults write com.apple.NetworkBrowser DisableAirDrop -bool true 237 | # ---------------------------------------------------------- 238 | 239 | 240 | # ---------------------------------------------------------- 241 | # ----------------Disable Spotlight indexing---------------- 242 | # ---------------------------------------------------------- 243 | echo '--- Disable Spotlight indexing' 244 | sudo mdutil -i off -d / 245 | # ---------------------------------------------------------- 246 | 247 | 248 | # ---------------------------------------------------------- 249 | # ------Disable participation in Siri data collection------- 250 | # ---------------------------------------------------------- 251 | echo '--- Disable participation in Siri data collection' 252 | defaults write com.apple.assistant.support 'Siri Data Sharing Opt-In Status' -int 2 253 | # ---------------------------------------------------------- 254 | 255 | 256 | # ---------------------------------------------------------- 257 | # --------------------Disable "Ask Siri"-------------------- 258 | # ---------------------------------------------------------- 259 | echo '--- Disable "Ask Siri"' 260 | defaults write com.apple.assistant.support 'Assistant Enabled' -bool false 261 | # ---------------------------------------------------------- 262 | 263 | 264 | # ---------------------------------------------------------- 265 | # ---------------Disable Siri voice feedback---------------- 266 | # ---------------------------------------------------------- 267 | echo '--- Disable Siri voice feedback' 268 | defaults write com.apple.assistant.backedup 'Use device speaker for TTS' -int 3 269 | # ---------------------------------------------------------- 270 | 271 | 272 | # ---------------------------------------------------------- 273 | # -------Disable Siri services (Siri and assistantd)-------- 274 | # ---------------------------------------------------------- 275 | echo '--- Disable Siri services (Siri and assistantd)' 276 | launchctl disable "user/$UID/com.apple.assistantd" 277 | launchctl disable "gui/$UID/com.apple.assistantd" 278 | sudo launchctl disable 'system/com.apple.assistantd' 279 | launchctl disable "user/$UID/com.apple.Siri.agent" 280 | launchctl disable "gui/$UID/com.apple.Siri.agent" 281 | sudo launchctl disable 'system/com.apple.Siri.agent' 282 | if [ $(/usr/bin/csrutil status | awk '/status/ {print $5}' | sed 's/\.$//') = "enabled" ]; then 283 | >&2 echo 'This script requires SIP to be disabled. Read more: https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection' 284 | fi 285 | # ---------------------------------------------------------- 286 | 287 | 288 | # ---------------------------------------------------------- 289 | # -------Disable "Do you want to enable Siri?" pop-up------- 290 | # ---------------------------------------------------------- 291 | echo '--- Disable "Do you want to enable Siri?" pop-up' 292 | defaults write com.apple.SetupAssistant 'DidSeeSiriSetup' -bool True 293 | # ---------------------------------------------------------- 294 | 295 | 296 | # ---------------------------------------------------------- 297 | # ----------------Remove Siri from menu bar----------------- 298 | # ---------------------------------------------------------- 299 | echo '--- Remove Siri from menu bar' 300 | defaults write com.apple.systemuiserver 'NSStatusItem Visible Siri' 0 301 | # ---------------------------------------------------------- 302 | 303 | 304 | # ---------------------------------------------------------- 305 | # ---------------Remove Siri from status menu--------------- 306 | # ---------------------------------------------------------- 307 | echo '--- Remove Siri from status menu' 308 | defaults write com.apple.Siri 'StatusMenuVisible' -bool false 309 | defaults write com.apple.Siri 'UserHasDeclinedEnable' -bool true 310 | # ---------------------------------------------------------- 311 | -------------------------------------------------------------------------------- /home/.config/karabiner/karabiner.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": [ 3 | { 4 | "complex_modifications": { 5 | "rules": [ 6 | { 7 | "description": "Use cmd+q to close (not quit) Finder window", 8 | "manipulators": [ 9 | { 10 | "conditions": [ 11 | { 12 | "bundle_identifiers": [ 13 | "^com.apple.finder" 14 | ], 15 | "type": "frontmost_application_if" 16 | } 17 | ], 18 | "from": { 19 | "key_code": "q", 20 | "modifiers": { "mandatory": ["command"] } 21 | }, 22 | "to": { 23 | "key_code": "w", 24 | "modifiers": ["command"] 25 | }, 26 | "type": "basic" 27 | } 28 | ] 29 | }, 30 | { 31 | "description": "Use F2 as Rename", 32 | "manipulators": [ 33 | { 34 | "conditions": [ 35 | { 36 | "bundle_identifiers": [ 37 | "^com.apple.finder" 38 | ], 39 | "type": "frontmost_application_if" 40 | } 41 | ], 42 | "from": { "key_code": "f2" }, 43 | "to": [{ "key_code": "return_or_enter" }], 44 | "type": "basic" 45 | } 46 | ] 47 | }, 48 | { 49 | "description": "Use Delete as Move to Trash", 50 | "manipulators": [ 51 | { 52 | "conditions": [ 53 | { 54 | "bundle_identifiers": [ 55 | "^com.apple.finder" 56 | ], 57 | "type": "frontmost_application_if" 58 | } 59 | ], 60 | "from": { 61 | "key_code": "delete_forward", 62 | "modifiers": { "optional": ["any"] } 63 | }, 64 | "to": [ 65 | { 66 | "key_code": "delete_or_backspace", 67 | "modifiers": ["left_command"] 68 | } 69 | ], 70 | "type": "basic" 71 | } 72 | ] 73 | }, 74 | { 75 | "description": "PC-Style Control+Delete/Backspace", 76 | "manipulators": [ 77 | { 78 | "conditions": [ 79 | { 80 | "bundle_identifiers": [ 81 | "^com\\.microsoft\\.rdc$", 82 | "^com\\.microsoft\\.rdc\\.", 83 | "^net\\.sf\\.cord$", 84 | "^com\\.thinomenon\\.RemoteDesktopConnection$", 85 | "^com\\.itap-mobile\\.qmote$", 86 | "^com\\.nulana\\.remotixmac$", 87 | "^com\\.p5sys\\.jump\\.mac\\.viewer$", 88 | "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", 89 | "^com\\.teamviewer\\.TeamViewer$", 90 | "^com\\.vmware\\.horizon$", 91 | "^com\\.2X\\.Client\\.Mac$", 92 | "^com\\.vmware\\.fusion$", 93 | "^com\\.vmware\\.horizon$", 94 | "^com\\.vmware\\.view$", 95 | "^com\\.parallels\\.desktop$", 96 | "^com\\.parallels\\.vm$", 97 | "^com\\.parallels\\.desktop\\.console$", 98 | "^org\\.virtualbox\\.app\\.VirtualBoxVM$", 99 | "^com\\.citrix\\.XenAppViewer$", 100 | "^com\\.vmware\\.proxyApp\\.", 101 | "^com\\.parallels\\.winapp\\.", 102 | "^com\\.apple\\.Terminal$", 103 | "^com\\.googlecode\\.iterm2$", 104 | "^co\\.zeit\\.hyperterm$", 105 | "^co\\.zeit\\.hyper$", 106 | "^io\\.alacritty$", 107 | "^net\\.kovidgoyal\\.kitty$" 108 | ], 109 | "type": "frontmost_application_unless" 110 | } 111 | ], 112 | "from": { 113 | "key_code": "delete_or_backspace", 114 | "modifiers": { 115 | "mandatory": ["control"], 116 | "optional": ["any"] 117 | } 118 | }, 119 | "to": [ 120 | { 121 | "key_code": "delete_or_backspace", 122 | "modifiers": ["option"] 123 | } 124 | ], 125 | "type": "basic" 126 | } 127 | ] 128 | }, 129 | { 130 | "description": "Open a new terminal", 131 | "manipulators": [ 132 | { 133 | "from": { 134 | "key_code": "t", 135 | "modifiers": { "mandatory": ["left_alt", "left_shift"] } 136 | }, 137 | "to": [{ "shell_command": "open -n -a kitty" }], 138 | "type": "basic" 139 | } 140 | ] 141 | }, 142 | { 143 | "description": "PC-Style Screenshot (PrintScreen for whole, Shift+PrintScreen to select)", 144 | "manipulators": [ 145 | { 146 | "conditions": [ 147 | { 148 | "bundle_identifiers": [ 149 | "^com\\.microsoft\\.rdc$", 150 | "^com\\.microsoft\\.rdc\\.", 151 | "^net\\.sf\\.cord$", 152 | "^com\\.thinomenon\\.RemoteDesktopConnection$", 153 | "^com\\.itap-mobile\\.qmote$", 154 | "^com\\.nulana\\.remotixmac$", 155 | "^com\\.p5sys\\.jump\\.mac\\.viewer$", 156 | "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", 157 | "^com\\.teamviewer\\.TeamViewer$", 158 | "^com\\.vmware\\.horizon$", 159 | "^com\\.2X\\.Client\\.Mac$", 160 | "^com\\.vmware\\.fusion$", 161 | "^com\\.vmware\\.horizon$", 162 | "^com\\.vmware\\.view$", 163 | "^com\\.parallels\\.desktop$", 164 | "^com\\.parallels\\.vm$", 165 | "^com\\.parallels\\.desktop\\.console$", 166 | "^org\\.virtualbox\\.app\\.VirtualBoxVM$", 167 | "^com\\.citrix\\.XenAppViewer$", 168 | "^com\\.vmware\\.proxyApp\\.", 169 | "^com\\.parallels\\.winapp\\." 170 | ], 171 | "type": "frontmost_application_unless" 172 | } 173 | ], 174 | "from": { 175 | "key_code": "print_screen", 176 | "modifiers": { 177 | "mandatory": ["shift"], 178 | "optional": ["any"] 179 | } 180 | }, 181 | "to": [ 182 | { 183 | "key_code": "4", 184 | "modifiers": ["left_command", "left_shift"] 185 | } 186 | ], 187 | "type": "basic" 188 | }, 189 | { 190 | "conditions": [ 191 | { 192 | "bundle_identifiers": [ 193 | "^com\\.microsoft\\.rdc$", 194 | "^com\\.microsoft\\.rdc\\.", 195 | "^net\\.sf\\.cord$", 196 | "^com\\.thinomenon\\.RemoteDesktopConnection$", 197 | "^com\\.itap-mobile\\.qmote$", 198 | "^com\\.nulana\\.remotixmac$", 199 | "^com\\.p5sys\\.jump\\.mac\\.viewer$", 200 | "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", 201 | "^com\\.teamviewer\\.TeamViewer$", 202 | "^com\\.vmware\\.horizon$", 203 | "^com\\.2X\\.Client\\.Mac$", 204 | "^com\\.vmware\\.fusion$", 205 | "^com\\.vmware\\.horizon$", 206 | "^com\\.vmware\\.view$", 207 | "^com\\.parallels\\.desktop$", 208 | "^com\\.parallels\\.vm$", 209 | "^com\\.parallels\\.desktop\\.console$", 210 | "^org\\.virtualbox\\.app\\.VirtualBoxVM$", 211 | "^com\\.citrix\\.XenAppViewer$", 212 | "^com\\.vmware\\.proxyApp\\.", 213 | "^com\\.parallels\\.winapp\\." 214 | ], 215 | "type": "frontmost_application_unless" 216 | } 217 | ], 218 | "from": { 219 | "key_code": "print_screen", 220 | "modifiers": { "optional": ["any"] } 221 | }, 222 | "to": [ 223 | { 224 | "key_code": "3", 225 | "modifiers": ["left_command", "left_shift"] 226 | } 227 | ], 228 | "type": "basic" 229 | } 230 | ] 231 | } 232 | ] 233 | }, 234 | "devices": [ 235 | { 236 | "identifiers": { 237 | "is_keyboard": true, 238 | "product_id": 267, 239 | "vendor_id": 1241 240 | }, 241 | "simple_modifications": [ 242 | { 243 | "from": { "key_code": "grave_accent_and_tilde" }, 244 | "to": [{ "key_code": "non_us_backslash" }] 245 | }, 246 | { 247 | "from": { "key_code": "non_us_backslash" }, 248 | "to": [{ "key_code": "grave_accent_and_tilde" }] 249 | } 250 | ], 251 | "treat_as_built_in_keyboard": true 252 | }, 253 | { 254 | "identifiers": { "is_keyboard": true }, 255 | "simple_modifications": [ 256 | { 257 | "from": { "key_code": "grave_accent_and_tilde" }, 258 | "to": [{ "key_code": "backslash" }] 259 | }, 260 | { 261 | "from": { "key_code": "non_us_backslash" }, 262 | "to": [{ "key_code": "non_us_pound" }] 263 | } 264 | ] 265 | } 266 | ], 267 | "name": "Default profile", 268 | "selected": true, 269 | "virtual_hid_keyboard": { "keyboard_type_v2": "iso" } 270 | } 271 | ], 272 | "rules": [ 273 | { 274 | "from": { 275 | "key_code": "t", 276 | "modifiers": { "mandatory": ["left_option", "left_shift"] } 277 | }, 278 | "to": [{ "shell_command": "open -n -a kitty" }], 279 | "type": "basic" 280 | } 281 | ] 282 | } -------------------------------------------------------------------------------- /home/.cursor/extensions/extensions.json: -------------------------------------------------------------------------------- 1 | [{"identifier":{"id":"aki12n.multiwindows-highlight","uuid":"efa4b0cd-3cf1-4a07-93bd-71dc00de486e"},"version":"0.0.9","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/aki12n.multiwindows-highlight-0.0.9","path":"/Users/me/.cursor/extensions/aki12n.multiwindows-highlight-0.0.9","scheme":"file"},"relativeLocation":"aki12n.multiwindows-highlight-0.0.9","metadata":{"id":"efa4b0cd-3cf1-4a07-93bd-71dc00de486e","publisherId":"bf9a2c06-d8c0-4bc4-8048-d01e5700614d","publisherDisplayName":"aki","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1718549705598,"pinned":false,"preRelease":false,"source":"gallery","size":9224217}},{"identifier":{"id":"amazonwebservices.aws-toolkit-vscode","uuid":"ac5787df-9b2d-441c-abf0-977d62bc66f0"},"version":"3.55.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/amazonwebservices.aws-toolkit-vscode-3.55.0","path":"/Users/me/.cursor/extensions/amazonwebservices.aws-toolkit-vscode-3.55.0","scheme":"file"},"relativeLocation":"amazonwebservices.aws-toolkit-vscode-3.55.0","metadata":{"id":"ac5787df-9b2d-441c-abf0-977d62bc66f0","publisherId":"e5177ad8-ec3b-4d49-aefd-3d3331129b54","publisherDisplayName":"Amazon Web Services","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1745135078818,"pinned":false,"preRelease":false,"source":"gallery","size":57515010}},{"identifier":{"id":"anysphere.pyright","uuid":"d990d7f1-60b6-4234-91a7-d146a42bb230"},"version":"1.1.327","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/anysphere.pyright-1.1.327-universal","path":"/Users/me/.cursor/extensions/anysphere.pyright-1.1.327-universal","scheme":"file"},"relativeLocation":"anysphere.pyright-1.1.327-universal","metadata":{"id":"d990d7f1-60b6-4234-91a7-d146a42bb230","publisherId":"963cf79c-e108-4418-8858-b88cc178c014","publisherDisplayName":"Anysphere","targetPlatform":"universal","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1732991474298,"pinned":false,"preRelease":false,"source":"gallery","size":13803949}},{"identifier":{"id":"arcanis.vscode-zipfs","uuid":"b14d47f6-5230-4a65-9366-82edc70d5dfd"},"version":"3.0.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/arcanis.vscode-zipfs-3.0.0","path":"/Users/me/.cursor/extensions/arcanis.vscode-zipfs-3.0.0","scheme":"file"},"relativeLocation":"arcanis.vscode-zipfs-3.0.0","metadata":{"id":"b14d47f6-5230-4a65-9366-82edc70d5dfd","publisherId":"659f24e1-7f98-4a8d-9904-b5f9064a1343","publisherDisplayName":"Maël Nison","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1726393468598,"pinned":false,"preRelease":false,"source":"gallery","size":383691}},{"identifier":{"id":"astro-build.astro-vscode","uuid":"1fbbc8b0-7432-4b7e-8774-3336151da2f3"},"version":"2.15.4","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/astro-build.astro-vscode-2.15.4-darwin-arm64","path":"/Users/me/.cursor/extensions/astro-build.astro-vscode-2.15.4-darwin-arm64","scheme":"file"},"relativeLocation":"astro-build.astro-vscode-2.15.4-darwin-arm64","metadata":{"id":"1fbbc8b0-7432-4b7e-8774-3336151da2f3","publisherId":"6c30d82f-e0d4-488a-a4a3-860c0c90001f","publisherDisplayName":"Astro","targetPlatform":"darwin-arm64","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1729890018572,"pinned":false,"preRelease":false,"source":"gallery","size":16635120}},{"identifier":{"id":"aykutsarac.jsoncrack-vscode","uuid":"87c9998f-5c0f-49ee-b89f-51340cdc449a"},"version":"3.0.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/aykutsarac.jsoncrack-vscode-3.0.0","path":"/Users/me/.cursor/extensions/aykutsarac.jsoncrack-vscode-3.0.0","scheme":"file"},"relativeLocation":"aykutsarac.jsoncrack-vscode-3.0.0","metadata":{"id":"87c9998f-5c0f-49ee-b89f-51340cdc449a","publisherId":"29da73b9-966a-467b-8a22-12f62d0807b1","publisherDisplayName":"AykutSarac","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1738828039559,"pinned":false,"preRelease":false,"source":"gallery","size":4372507}},{"identifier":{"id":"bierner.markdown-checkbox","uuid":"b0db4123-c5d9-4f45-bd2e-70738ebbb304"},"version":"0.4.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/bierner.markdown-checkbox-0.4.0","path":"/Users/me/.cursor/extensions/bierner.markdown-checkbox-0.4.0","scheme":"file"},"relativeLocation":"bierner.markdown-checkbox-0.4.0","metadata":{"id":"b0db4123-c5d9-4f45-bd2e-70738ebbb304","publisherId":"f164f116-e2aa-496b-84dc-2451248e8beb","publisherDisplayName":"Matt Bierner","targetPlatform":"undefined","isApplicationScoped":false,"updated":true,"isPreReleaseVersion":false,"installedTimestamp":1667560590210,"preRelease":false,"size":233909}},{"identifier":{"id":"bierner.markdown-mermaid","uuid":"f8d0ffc4-66bb-4a9c-8149-ef8f043691a1"},"version":"1.28.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/bierner.markdown-mermaid-1.28.0","path":"/Users/me/.cursor/extensions/bierner.markdown-mermaid-1.28.0","scheme":"file"},"relativeLocation":"bierner.markdown-mermaid-1.28.0","metadata":{"id":"f8d0ffc4-66bb-4a9c-8149-ef8f043691a1","publisherId":"f164f116-e2aa-496b-84dc-2451248e8beb","publisherDisplayName":"Matt Bierner","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1744709315879,"pinned":false,"preRelease":false,"source":"gallery","size":34874780}},{"identifier":{"id":"biomejs.biome","uuid":"2c992d35-3965-4369-856e-fdfbb0af2ce2"},"version":"2025.3.151143","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/biomejs.biome-2025.3.151143","path":"/Users/me/.cursor/extensions/biomejs.biome-2025.3.151143","scheme":"file"},"relativeLocation":"biomejs.biome-2025.3.151143","metadata":{"id":"2c992d35-3965-4369-856e-fdfbb0af2ce2","publisherId":"570e4e26-7e71-4308-8299-d18166119ce7","publisherDisplayName":"biomejs","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":true,"hasPreReleaseVersion":true,"installedTimestamp":1742039915143,"pinned":false,"preRelease":true,"source":"gallery","size":1987968}},{"identifier":{"id":"bradlc.vscode-tailwindcss","uuid":"4db62a7c-7d70-419c-96d2-6c3a4dc77ea5"},"version":"0.14.15","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/bradlc.vscode-tailwindcss-0.14.15","path":"/Users/me/.cursor/extensions/bradlc.vscode-tailwindcss-0.14.15","scheme":"file"},"relativeLocation":"bradlc.vscode-tailwindcss-0.14.15","metadata":{"id":"4db62a7c-7d70-419c-96d2-6c3a4dc77ea5","publisherId":"84722833-669b-4c7d-920e-b60e43fae19a","publisherDisplayName":"Tailwind Labs","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1744244925254,"pinned":false,"preRelease":true,"source":"gallery","size":6841943}},{"identifier":{"id":"chrislajoie.vscode-modelines","uuid":"d64f7825-1957-4cd4-9307-4d44fa44c45f"},"version":"2.0.6","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/chrislajoie.vscode-modelines-2.0.6","path":"/Users/me/.cursor/extensions/chrislajoie.vscode-modelines-2.0.6","scheme":"file"},"relativeLocation":"chrislajoie.vscode-modelines-2.0.6","metadata":{"id":"d64f7825-1957-4cd4-9307-4d44fa44c45f","publisherId":"48a5776a-eb0a-4a0a-af21-cccd56e0f4d6","publisherDisplayName":"Chris Lajoie","targetPlatform":"undefined","isApplicationScoped":false,"updated":true,"isPreReleaseVersion":false,"installedTimestamp":1689671183239,"preRelease":false,"size":38031}},{"identifier":{"id":"ckolkman.vscode-postgres","uuid":"b200e7e8-4217-4da9-b8db-5606db56d867"},"version":"1.4.3","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ckolkman.vscode-postgres-1.4.3","path":"/Users/me/.cursor/extensions/ckolkman.vscode-postgres-1.4.3","scheme":"file"},"relativeLocation":"ckolkman.vscode-postgres-1.4.3","metadata":{"id":"b200e7e8-4217-4da9-b8db-5606db56d867","publisherId":"7a200ada-7d6e-4083-99e7-974f31cf3bff","publisherDisplayName":"Chris Kolkman","targetPlatform":"undefined","updated":false,"isPreReleaseVersion":false,"installedTimestamp":1695132944366,"preRelease":false,"size":5356930}},{"identifier":{"id":"dbaeumer.vscode-eslint","uuid":"583b2b34-2c1e-4634-8c0b-0b82e283ea3a"},"version":"3.0.10","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/dbaeumer.vscode-eslint-3.0.10","path":"/Users/me/.cursor/extensions/dbaeumer.vscode-eslint-3.0.10","scheme":"file"},"relativeLocation":"dbaeumer.vscode-eslint-3.0.10","metadata":{"id":"583b2b34-2c1e-4634-8c0b-0b82e283ea3a","publisherId":"29859a75-d81b-4f0e-8578-2c80ecee6f99","publisherDisplayName":"Microsoft","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1718770023976,"pinned":false,"preRelease":false,"source":"gallery","size":811398}},{"identifier":{"id":"donjayamanne.python-environment-manager","uuid":"0c9f60fd-5588-42f7-9176-e80c3ae111ec"},"version":"1.2.7","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/donjayamanne.python-environment-manager-1.2.7","path":"/Users/me/.cursor/extensions/donjayamanne.python-environment-manager-1.2.7","scheme":"file"},"relativeLocation":"donjayamanne.python-environment-manager-1.2.7","metadata":{"id":"0c9f60fd-5588-42f7-9176-e80c3ae111ec","publisherId":"1ba8bd00-2ad1-4be0-a007-5b4b954c1ee7","publisherDisplayName":"donjayamanne","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1736323928321,"pinned":false,"preRelease":false,"source":"gallery","size":22124637}},{"identifier":{"id":"editorconfig.editorconfig","uuid":"f60a60a6-95ba-42d4-b41c-3d24c1b89588"},"version":"0.17.2","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/editorconfig.editorconfig-0.17.2","path":"/Users/me/.cursor/extensions/editorconfig.editorconfig-0.17.2","scheme":"file"},"relativeLocation":"editorconfig.editorconfig-0.17.2","metadata":{"id":"f60a60a6-95ba-42d4-b41c-3d24c1b89588","publisherId":"1ed869e4-8588-4af4-a51e-9c1c86b034b9","publisherDisplayName":"EditorConfig","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1741677945855,"pinned":false,"preRelease":false,"source":"gallery","size":658588}},{"identifier":{"id":"equinusocio.vsc-material-theme-icons","uuid":"6959958f-be4d-42c4-8aa4-dc2c2f086b0a"},"version":"3.8.12","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/equinusocio.vsc-material-theme-icons-3.8.12","path":"/Users/me/.cursor/extensions/equinusocio.vsc-material-theme-icons-3.8.12","scheme":"file"},"relativeLocation":"equinusocio.vsc-material-theme-icons-3.8.12","metadata":{"id":"6959958f-be4d-42c4-8aa4-dc2c2f086b0a","publisherId":"3b9d55d2-da9e-415a-9bea-8d6bc07147d8","publisherDisplayName":"Equinusocio","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1736018435939,"pinned":false,"preRelease":false,"source":"gallery","size":13682597}},{"identifier":{"id":"esbenp.prettier-vscode","uuid":"96fa4707-6983-4489-b7c5-d5ffdfdcce90"},"version":"11.0.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/esbenp.prettier-vscode-11.0.0","path":"/Users/me/.cursor/extensions/esbenp.prettier-vscode-11.0.0","scheme":"file"},"relativeLocation":"esbenp.prettier-vscode-11.0.0","metadata":{"id":"96fa4707-6983-4489-b7c5-d5ffdfdcce90","publisherDisplayName":"Prettier","publisherId":"d16f4e39-2ffb-44e3-9c0d-79d873570e3a","isPreReleaseVersion":false,"targetPlatform":"undefined","isApplicationScoped":false,"hasPreReleaseVersion":false,"installedTimestamp":1723749805647,"pinned":false,"preRelease":false,"source":"gallery","size":10014301}},{"identifier":{"id":"github.vscode-github-actions","uuid":"04f49bfc-8330-4eee-8237-ea938fb755ef"},"version":"0.27.1","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/github.vscode-github-actions-0.27.1","path":"/Users/me/.cursor/extensions/github.vscode-github-actions-0.27.1","scheme":"file"},"relativeLocation":"github.vscode-github-actions-0.27.1","metadata":{"id":"04f49bfc-8330-4eee-8237-ea938fb755ef","publisherId":"7c1c19cd-78eb-4dfb-8999-99caf7679002","publisherDisplayName":"GitHub","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1738371439804,"pinned":false,"preRelease":false,"source":"gallery","size":13723436}},{"identifier":{"id":"golang.go","uuid":"d6f6cfea-4b6f-41f4-b571-6ad2ab7918da"},"version":"0.46.1","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/golang.go-0.46.1","path":"/Users/me/.cursor/extensions/golang.go-0.46.1","scheme":"file"},"relativeLocation":"golang.go-0.46.1","metadata":{"id":"d6f6cfea-4b6f-41f4-b571-6ad2ab7918da","publisherId":"dbf6ae0a-da75-4167-ac8b-75b4512f2153","publisherDisplayName":"golang","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1741249843271,"pinned":false,"preRelease":false,"source":"gallery","size":2816677}},{"identifier":{"id":"idleberg.applescript","uuid":"d57cfcbb-5746-48be-a607-96967331a91c"},"version":"0.27.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/idleberg.applescript-0.27.0","path":"/Users/me/.cursor/extensions/idleberg.applescript-0.27.0","scheme":"file"},"relativeLocation":"idleberg.applescript-0.27.0","metadata":{"id":"d57cfcbb-5746-48be-a607-96967331a91c","publisherId":"d142cf02-af52-4395-9363-148909445cb3","publisherDisplayName":"idleberg","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1743948225152,"pinned":false,"preRelease":false,"source":"gallery","size":732210}},{"identifier":{"id":"jock.svg","uuid":"4ae6dc82-7981-4f10-bd81-2d72aec37f39"},"version":"1.5.4","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/jock.svg-1.5.4","path":"/Users/me/.cursor/extensions/jock.svg-1.5.4","scheme":"file"},"relativeLocation":"jock.svg-1.5.4","metadata":{"id":"4ae6dc82-7981-4f10-bd81-2d72aec37f39","publisherId":"f01a7894-535b-451f-980b-1a4bee6d63f3","publisherDisplayName":"jock","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1719850395484,"pinned":false,"preRelease":false,"source":"gallery","size":6958519}},{"identifier":{"id":"kamikillerto.vscode-colorize","uuid":"445ba381-f232-4150-9056-d790bd76d698"},"version":"0.17.1","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/kamikillerto.vscode-colorize-0.17.1","path":"/Users/me/.cursor/extensions/kamikillerto.vscode-colorize-0.17.1","scheme":"file"},"relativeLocation":"kamikillerto.vscode-colorize-0.17.1","metadata":{"id":"445ba381-f232-4150-9056-d790bd76d698","publisherId":"d4ae7698-aa41-4455-92f8-cbb52b3d5004","publisherDisplayName":"kamikillerto","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1741439357865,"pinned":false,"preRelease":false,"source":"gallery","size":7331918}},{"identifier":{"id":"kravets.vscode-publint","uuid":"cdfaedbd-046b-411e-81f8-7742f99f7ab0"},"version":"0.1.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/kravets.vscode-publint-0.1.0","path":"/Users/me/.cursor/extensions/kravets.vscode-publint-0.1.0","scheme":"file"},"relativeLocation":"kravets.vscode-publint-0.1.0","metadata":{"id":"cdfaedbd-046b-411e-81f8-7742f99f7ab0","publisherId":"c553a856-2404-410d-8d51-3f9b600da052","publisherDisplayName":"Kravets","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1736323929498,"pinned":false,"preRelease":false,"source":"gallery","size":52302}},{"identifier":{"id":"mattpocock.ts-error-translator","uuid":"e78c7d39-3c30-4ef3-a3bd-b5b641cb91eb"},"version":"0.10.1","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/mattpocock.ts-error-translator-0.10.1","path":"/Users/me/.cursor/extensions/mattpocock.ts-error-translator-0.10.1","scheme":"file"},"relativeLocation":"mattpocock.ts-error-translator-0.10.1","metadata":{"id":"e78c7d39-3c30-4ef3-a3bd-b5b641cb91eb","publisherId":"266d893c-7843-4152-a6c6-c6ca378d5832","publisherDisplayName":"Matt Pocock","targetPlatform":"undefined","isApplicationScoped":false,"updated":true,"isPreReleaseVersion":false,"installedTimestamp":1694629004804,"preRelease":false,"size":2168599}},{"identifier":{"id":"mde.select-highlight-minimap","uuid":"54e51aa5-16bd-47ce-bb07-c66ebc0e17a8"},"version":"0.1.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/mde.select-highlight-minimap-0.1.0","path":"/Users/me/.cursor/extensions/mde.select-highlight-minimap-0.1.0","scheme":"file"},"relativeLocation":"mde.select-highlight-minimap-0.1.0","metadata":{"id":"54e51aa5-16bd-47ce-bb07-c66ebc0e17a8","publisherId":"f3610abb-9aec-4c65-a745-f2240a7bad49","publisherDisplayName":"fozzeuh","targetPlatform":"undefined","isApplicationScoped":false,"updated":false,"isPreReleaseVersion":false,"preRelease":false,"installedTimestamp":1660218525212,"size":9162}},{"identifier":{"id":"me-dutour-mathieu.vscode-github-actions","uuid":"8476972c-078a-45ba-8756-b8ce15669cb9"},"version":"3.0.1","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/me-dutour-mathieu.vscode-github-actions-3.0.1","path":"/Users/me/.cursor/extensions/me-dutour-mathieu.vscode-github-actions-3.0.1","scheme":"file"},"relativeLocation":"me-dutour-mathieu.vscode-github-actions-3.0.1","metadata":{"id":"8476972c-078a-45ba-8756-b8ce15669cb9","publisherId":"7c3b50e9-ae9b-4fda-b63b-1b31d8e520ac","publisherDisplayName":"Mathieu Dutour","targetPlatform":"undefined","isApplicationScoped":false,"updated":false,"isPreReleaseVersion":false,"preRelease":false,"installedTimestamp":1662493136637,"size":960287}},{"identifier":{"id":"mechatroner.rainbow-csv","uuid":"3792588c-3d35-442d-91ea-fe6a755e8155"},"version":"3.19.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/mechatroner.rainbow-csv-3.19.0","path":"/Users/me/.cursor/extensions/mechatroner.rainbow-csv-3.19.0","scheme":"file"},"relativeLocation":"mechatroner.rainbow-csv-3.19.0","metadata":{"id":"3792588c-3d35-442d-91ea-fe6a755e8155","publisherId":"0d5438b6-325a-4f88-aa28-6192aa2cf2a6","publisherDisplayName":"mechatroner","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1743948225156,"pinned":false,"preRelease":false,"source":"gallery","size":2894545}},{"identifier":{"id":"mkhl.direnv","uuid":"e365e970-aeef-4dcd-8e4a-17306a27ab62"},"version":"0.17.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/mkhl.direnv-0.17.0","path":"/Users/me/.cursor/extensions/mkhl.direnv-0.17.0","scheme":"file"},"relativeLocation":"mkhl.direnv-0.17.0","metadata":{"id":"e365e970-aeef-4dcd-8e4a-17306a27ab62","publisherId":"577d6c37-7054-4ca5-b4ce-9250409f3903","publisherDisplayName":"Martin Kühl","targetPlatform":"undefined","isApplicationScoped":false,"updated":true,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1710463907299,"pinned":false,"preRelease":false,"size":45035}},{"identifier":{"id":"ms-azuretools.vscode-docker","uuid":"0479fc1c-3d67-49f9-b087-fb9069afe48f"},"version":"1.29.5","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ms-azuretools.vscode-docker-1.29.5","path":"/Users/me/.cursor/extensions/ms-azuretools.vscode-docker-1.29.5","scheme":"file"},"relativeLocation":"ms-azuretools.vscode-docker-1.29.5","metadata":{"id":"0479fc1c-3d67-49f9-b087-fb9069afe48f","publisherId":"52b787f2-79a9-4f32-99b4-393afe3005d3","publisherDisplayName":"Microsoft","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1744244925700,"pinned":false,"preRelease":false,"source":"gallery","size":6945393}},{"identifier":{"id":"ms-playwright.playwright","uuid":"f53b1d43-eef4-4909-99ca-56b5fa3e108c"},"version":"1.1.13","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ms-playwright.playwright-1.1.13","path":"/Users/me/.cursor/extensions/ms-playwright.playwright-1.1.13","scheme":"file"},"relativeLocation":"ms-playwright.playwright-1.1.13","metadata":{"id":"f53b1d43-eef4-4909-99ca-56b5fa3e108c","publisherId":"43a584fb-6d7a-4782-ae52-15ee5fde9bab","publisherDisplayName":"ms-playwright","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1738828039354,"pinned":false,"preRelease":false,"source":"gallery","size":1839352}},{"identifier":{"id":"ms-python.debugpy","uuid":"4bd5d2c9-9d65-401a-b0b2-7498d9f17615"},"version":"2024.6.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ms-python.debugpy-2024.6.0-darwin-arm64","path":"/Users/me/.cursor/extensions/ms-python.debugpy-2024.6.0-darwin-arm64","scheme":"file"},"relativeLocation":"ms-python.debugpy-2024.6.0-darwin-arm64","metadata":{"id":"4bd5d2c9-9d65-401a-b0b2-7498d9f17615","publisherId":"998b010b-e2af-44a5-a6cd-0b5fd3b9b6f8","publisherDisplayName":"ms-python","targetPlatform":"darwin-arm64","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1732991473951,"pinned":false,"preRelease":false,"source":"gallery","size":36161478}},{"identifier":{"id":"ms-python.isort","uuid":"4ad0ce32-ff3f-49f0-83b5-93e5dc00cfff"},"version":"2025.0.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ms-python.isort-2025.0.0","path":"/Users/me/.cursor/extensions/ms-python.isort-2025.0.0","scheme":"file"},"relativeLocation":"ms-python.isort-2025.0.0","metadata":{"id":"4ad0ce32-ff3f-49f0-83b5-93e5dc00cfff","publisherId":"998b010b-e2af-44a5-a6cd-0b5fd3b9b6f8","publisherDisplayName":"Microsoft","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1743803293761,"pinned":false,"preRelease":false,"source":"gallery","size":2890812}},{"identifier":{"id":"ms-python.pylint","uuid":"8dc47276-5882-4c5f-903d-7eef7b9d1584"},"version":"2025.2.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ms-python.pylint-2025.2.0","path":"/Users/me/.cursor/extensions/ms-python.pylint-2025.2.0","scheme":"file"},"relativeLocation":"ms-python.pylint-2025.2.0","metadata":{"id":"8dc47276-5882-4c5f-903d-7eef7b9d1584","publisherId":"998b010b-e2af-44a5-a6cd-0b5fd3b9b6f8","publisherDisplayName":"ms-python","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1741249846541,"pinned":false,"preRelease":false,"source":"gallery","size":7971690}},{"identifier":{"id":"ms-python.python","uuid":"f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5"},"version":"2024.12.3","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ms-python.python-2024.12.3-darwin-arm64","path":"/Users/me/.cursor/extensions/ms-python.python-2024.12.3-darwin-arm64","scheme":"file"},"relativeLocation":"ms-python.python-2024.12.3-darwin-arm64","metadata":{"id":"f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5","publisherId":"998b010b-e2af-44a5-a6cd-0b5fd3b9b6f8","publisherDisplayName":"ms-python","targetPlatform":"darwin-arm64","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1735828126751,"pinned":false,"preRelease":false,"source":"gallery","size":36935518}},{"identifier":{"id":"ms-python.vscode-pylance","uuid":"364d2426-116a-433a-a5d8-a5098dc3afbd"},"version":"2024.8.1","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ms-python.vscode-pylance-2024.8.1","path":"/Users/me/.cursor/extensions/ms-python.vscode-pylance-2024.8.1","scheme":"file"},"relativeLocation":"ms-python.vscode-pylance-2024.8.1","metadata":{"id":"364d2426-116a-433a-a5d8-a5098dc3afbd","publisherId":"998b010b-e2af-44a5-a6cd-0b5fd3b9b6f8","publisherDisplayName":"ms-python","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1735828128415,"pinned":false,"preRelease":false,"source":"gallery","size":60857964}},{"identifier":{"id":"ms-vscode-remote.remote-containers","uuid":"93ce222b-5f6f-49b7-9ab1-a0463c6238df"},"version":"0.394.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ms-vscode-remote.remote-containers-0.394.0","path":"/Users/me/.cursor/extensions/ms-vscode-remote.remote-containers-0.394.0","scheme":"file"},"relativeLocation":"ms-vscode-remote.remote-containers-0.394.0","metadata":{"id":"93ce222b-5f6f-49b7-9ab1-a0463c6238df","publisherId":"ac9410a2-0d75-40ec-90de-b59bb705801d","publisherDisplayName":"ms-vscode-remote","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1742039914702,"pinned":false,"preRelease":false,"source":"gallery","size":7763135}},{"identifier":{"id":"ms-vscode.powershell","uuid":"40d39ce9-c381-47a0-80c8-a6661f731eab"},"version":"2025.0.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ms-vscode.powershell-2025.0.0","path":"/Users/me/.cursor/extensions/ms-vscode.powershell-2025.0.0","scheme":"file"},"relativeLocation":"ms-vscode.powershell-2025.0.0","metadata":{"id":"40d39ce9-c381-47a0-80c8-a6661f731eab","publisherId":"5f5636e7-69ed-4afe-b5d6-8d231fb3d3ee","publisherDisplayName":"Microsoft","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1742039916552,"pinned":false,"preRelease":false,"source":"gallery","size":317490338}},{"identifier":{"id":"naumovs.color-highlight","uuid":"121396ad-85a1-45ec-9fd1-d95028a847f5"},"version":"2.8.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/naumovs.color-highlight-2.8.0","path":"/Users/me/.cursor/extensions/naumovs.color-highlight-2.8.0","scheme":"file"},"relativeLocation":"naumovs.color-highlight-2.8.0","metadata":{"id":"121396ad-85a1-45ec-9fd1-d95028a847f5","publisherId":"e9a76d04-24d4-44eb-a202-964f71acf59e","publisherDisplayName":"Sergii N","targetPlatform":"undefined","isApplicationScoped":false,"updated":true,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1710463907327,"pinned":false,"preRelease":false,"size":1102898}},{"identifier":{"id":"ominous-theme.theme-cryptic","uuid":"4e44877c-1c8d-4f9c-ba86-1372d0fbeeb1"},"version":"1.0.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/ominous-theme.theme-cryptic-1.0.0","path":"/Users/me/.cursor/extensions/ominous-theme.theme-cryptic-1.0.0","scheme":"file"},"relativeLocation":"ominous-theme.theme-cryptic-1.0.0","metadata":{"id":"4e44877c-1c8d-4f9c-ba86-1372d0fbeeb1","publisherDisplayName":"Cryptic Theme","publisherId":"fbb3d024-f8f2-460c-bdb5-99552f6d8c4b","isApplicationScoped":false,"installedTimestamp":1674833026628,"size":120987}},{"identifier":{"id":"orta.vscode-jest","uuid":"7997a8ae-1fae-4022-b834-12f6318aeffd"},"version":"6.4.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/orta.vscode-jest-6.4.0","path":"/Users/me/.cursor/extensions/orta.vscode-jest-6.4.0","scheme":"file"},"relativeLocation":"orta.vscode-jest-6.4.0","metadata":{"id":"7997a8ae-1fae-4022-b834-12f6318aeffd","publisherDisplayName":"Orta","publisherId":"c22b4001-1af3-48d1-87ed-490c6c3b747f","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1730720556484,"pinned":false,"preRelease":false,"source":"gallery","size":1599290}},{"identifier":{"id":"phoenisx.cssvar","uuid":"5d6aae84-2dcc-4bfe-9c30-593c26468866"},"version":"2.6.5","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/phoenisx.cssvar-2.6.5","path":"/Users/me/.cursor/extensions/phoenisx.cssvar-2.6.5","scheme":"file"},"relativeLocation":"phoenisx.cssvar-2.6.5","metadata":{"id":"5d6aae84-2dcc-4bfe-9c30-593c26468866","publisherId":"c68b47ed-dc98-422c-82d7-708274680168","publisherDisplayName":"phoenisx","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1736935400420,"pinned":false,"preRelease":false,"source":"gallery","size":1410946}},{"identifier":{"id":"qufiwefefwoyn.inline-sql-syntax","uuid":"4d32ffbd-a404-4f22-9022-38a9e83e55f1"},"version":"2.16.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/qufiwefefwoyn.inline-sql-syntax-2.16.0","path":"/Users/me/.cursor/extensions/qufiwefefwoyn.inline-sql-syntax-2.16.0","scheme":"file"},"relativeLocation":"qufiwefefwoyn.inline-sql-syntax-2.16.0","metadata":{"id":"4d32ffbd-a404-4f22-9022-38a9e83e55f1","publisherDisplayName":"qufiwefefwoyn","publisherId":"5be51ce2-befe-4527-952a-3e1c764d2c4e","isPreReleaseVersion":false,"targetPlatform":"undefined","isApplicationScoped":false,"updated":false,"preRelease":false,"installedTimestamp":1669634431310,"size":24449621}},{"identifier":{"id":"redhat.vscode-yaml","uuid":"2061917f-f76a-458a-8da9-f162de22b97e"},"version":"1.17.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/redhat.vscode-yaml-1.17.0","path":"/Users/me/.cursor/extensions/redhat.vscode-yaml-1.17.0","scheme":"file"},"relativeLocation":"redhat.vscode-yaml-1.17.0","metadata":{"id":"2061917f-f76a-458a-8da9-f162de22b97e","publisherId":"eed56242-9699-4317-8bc7-e9f4b9bdd3ff","publisherDisplayName":"redhat","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1741249843341,"pinned":false,"preRelease":false,"source":"gallery","size":5457540}},{"identifier":{"id":"tamasfe.even-better-toml","uuid":"b2215d5f-675e-4a2b-b6ac-1ca737518b78"},"version":"0.21.2","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/tamasfe.even-better-toml-0.21.2","path":"/Users/me/.cursor/extensions/tamasfe.even-better-toml-0.21.2","scheme":"file"},"relativeLocation":"tamasfe.even-better-toml-0.21.2","metadata":{"id":"b2215d5f-675e-4a2b-b6ac-1ca737518b78","publisherId":"78c2102e-13a2-49ea-ac79-8d1bbacbbf0e","publisherDisplayName":"tamasfe","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1735828125829,"pinned":false,"preRelease":false,"source":"gallery","size":72272942}},{"identifier":{"id":"timonwong.shellcheck","uuid":"f95d8fff-f70a-4ae5-bb06-5c47ddbc8fc6"},"version":"0.37.7","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/timonwong.shellcheck-0.37.7-darwin-arm64","path":"/Users/me/.cursor/extensions/timonwong.shellcheck-0.37.7-darwin-arm64","scheme":"file"},"relativeLocation":"timonwong.shellcheck-0.37.7-darwin-arm64","metadata":{"id":"f95d8fff-f70a-4ae5-bb06-5c47ddbc8fc6","publisherDisplayName":"timonwong","publisherId":"04757770-dd50-443e-aae4-e1c7cf9c24f5","targetPlatform":"darwin-arm64","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1739344507633,"pinned":false,"preRelease":false,"source":"gallery","size":61489664}},{"identifier":{"id":"tobermory.es6-string-html","uuid":"db50f65a-6c7c-4134-8e8d-e6b8a9c738da"},"version":"2.17.0","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/tobermory.es6-string-html-2.17.0","path":"/Users/me/.cursor/extensions/tobermory.es6-string-html-2.17.0","scheme":"file"},"relativeLocation":"tobermory.es6-string-html-2.17.0","metadata":{"id":"db50f65a-6c7c-4134-8e8d-e6b8a9c738da","publisherDisplayName":"Tobermory","publisherId":"ea206736-c554-4aad-bb7f-813836f42f78","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1735828123995,"pinned":false,"preRelease":false,"source":"gallery","size":246748}},{"identifier":{"id":"unifiedjs.vscode-mdx","uuid":"af8cfc85-cb72-45d0-bae2-9a98cd0c69f3"},"version":"1.8.14","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/unifiedjs.vscode-mdx-1.8.14","path":"/Users/me/.cursor/extensions/unifiedjs.vscode-mdx-1.8.14","scheme":"file"},"relativeLocation":"unifiedjs.vscode-mdx-1.8.14","metadata":{"id":"af8cfc85-cb72-45d0-bae2-9a98cd0c69f3","publisherId":"207bcd0f-c1b5-4dc9-ab76-47615c59238d","publisherDisplayName":"unified","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1745135078405,"pinned":false,"preRelease":false,"source":"gallery","size":6392820}},{"identifier":{"id":"waderyan.gitblame","uuid":"2335b326-c334-4e81-bc51-c408fcec6e7c"},"version":"11.1.2","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/waderyan.gitblame-11.1.2","path":"/Users/me/.cursor/extensions/waderyan.gitblame-11.1.2","scheme":"file"},"relativeLocation":"waderyan.gitblame-11.1.2","metadata":{"id":"2335b326-c334-4e81-bc51-c408fcec6e7c","publisherId":"531ba7ca-0230-4a97-bfd1-0d02fdb02958","publisherDisplayName":"waderyan","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1745138255643,"pinned":false,"preRelease":false,"source":"gallery","size":48255}},{"identifier":{"id":"yoavbls.pretty-ts-errors","uuid":"1e149c89-8f97-447e-863d-1146f0ad1b70"},"version":"0.6.1","location":{"$mid":1,"fsPath":"/Users/me/.cursor/extensions/yoavbls.pretty-ts-errors-0.6.1","path":"/Users/me/.cursor/extensions/yoavbls.pretty-ts-errors-0.6.1","scheme":"file"},"relativeLocation":"yoavbls.pretty-ts-errors-0.6.1","metadata":{"id":"1e149c89-8f97-447e-863d-1146f0ad1b70","publisherId":"0939a3c0-6896-4249-bfa3-4ff58ebaccd0","publisherDisplayName":"yoavbls","targetPlatform":"undefined","isApplicationScoped":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1732472389752,"pinned":false,"preRelease":false,"source":"gallery","size":2193288}}] -------------------------------------------------------------------------------- /Library/Keyboard Layouts/British (PC 105).keylayout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | --------------------------------------------------------------------------------