Compare commits

..
21 Commits
Author SHA1 Message Date
anoto cbb0ae5c46 zsh updates 2026-06-27 21:25:33 -04:00
anoto 538860bfcb add zsh 2026-06-27 16:41:35 -04:00
anoto 440664c233 add more mango configs 2026-06-27 00:19:01 -04:00
anoto d476129d5f update readme 2026-06-27 00:17:56 -04:00
anoto 0948254b3a add grok stuff 2026-06-26 22:40:34 -04:00
anoto 5d22c2f937 vim stuff 2026-06-26 22:25:01 -04:00
anoto f656f0f956 more color settings 2026-06-26 22:09:08 -04:00
anoto 0f0d0aa247 more settings 2026-06-26 22:05:27 -04:00
anoto b5cb85effa add konsole settings 2026-06-26 21:43:43 -04:00
anoto 4503ae78ef more color settings 2026-06-26 21:18:52 -04:00
anoto 46d127f057 update editor settings 2026-06-26 20:50:35 -04:00
anoto 0bddedc48d do not backup projects 2026-06-26 20:30:37 -04:00
anoto c24f4dd7ee save projects locaiton 2026-06-26 20:27:56 -04:00
anoto 944c4cf492 Add mangohud 2026-06-26 20:23:03 -04:00
anoto 96c49fcaa7 add more vscode settings 2026-06-26 20:12:31 -04:00
anoto 2b5c99195c more workspace recs 2026-06-26 20:03:25 -04:00
anoto b0c0cfeb5a new bash settings from arch 2026-06-26 20:00:41 -04:00
anoto dae9e77fee add more settings 2026-06-26 19:53:35 -04:00
anoto 4598a353b9 add ghostty configs 2026-06-26 19:11:08 -04:00
anoto 0399d2ba9d more apt replacements 2026-06-21 00:34:34 -04:00
anoto d632ab3b22 font settings 2026-06-21 00:32:23 -04:00
50 changed files with 5738 additions and 34 deletions
+12
View File
@@ -0,0 +1,12 @@
{
"recommendations": [
"vscode-icons-team.vscode-icons",
"charliermarsh.ruff",
"astral-sh.ty",
"ms-python.vscode-python-envs",
"ms-python.vscode-pylance",
"ms-python.python",
"ms-python.debugpy",
"ms-ossdata.vscode-pgsql"
]
}
+107 -19
View File
@@ -2,42 +2,127 @@
[![built with Grok](https://img.shields.io/badge/built%20with-Grok-000000?style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI%2BPHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMy4yMzcxIDIxLjA0MDdMMjQuMzE4NiAxMi44NTA2QzI0Ljg2MTkgMTIuNDQ5MSAyNS42Mzg0IDEyLjYwNTcgMjUuODk3MyAxMy4yMjk0QzI3LjI1OTcgMTYuNTE4NSAyNi42NTEgMjAuNDcxMiAyMy45NDAzIDIzLjE4NTFDMjEuMjI5NyAyNS44OTg5IDE3LjQ1ODEgMjYuNDk0MSAxNC4wMTA4IDI1LjEzODZMMTAuMjQ0OSAyNi44ODQzQzE1LjY0NjMgMzAuNTgwNiAyMi4yMDUzIDI5LjY2NjUgMjYuMzA0IDI1LjU2MDFDMjkuNTU1MSAyMi4zMDUxIDMwLjU2MiAxNy44NjgzIDI5LjYyMDUgMTMuODY3M0wyOS42MjkgMTMuODc1OEMyOC4yNjM3IDcuOTk4MDkgMjkuOTY0NyA1LjY0ODcxIDMzLjQ0OSAwLjg0NDU3NkMzMy41MzE0IDAuNzMwNjY3IDMzLjYxMzkgMC42MTY3NTcgMzMuNjk2NCAwLjVMMjkuMTExMyA1LjA5MDU1VjUuMDc2MzFMMTMuMjM0MyAyMS4wNDM2Ii8%2BPHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMC45NTAzIDIzLjAzMTNDNy4wNzM0MyAxOS4zMjM1IDcuNzQxODUgMTMuNTg1MyAxMS4wNDk4IDEwLjI3NjNDMTMuNDk1OSA3LjgyNzIyIDE3LjUwMzYgNi44Mjc2NyAyMS4wMDIxIDguMjk3MUwyNC43NTk1IDYuNTU5OThDMjQuMDgyNiA2LjA3MDE3IDIzLjIxNSA1LjU0MzM0IDIyLjIxOTUgNS4xNzMxM0MxNy43MTk4IDMuMzE5MjYgMTIuMzMyNiA0LjI0MTkyIDguNjc0NzkgNy45MDEyNkM1LjE1NjM1IDExLjQyMzkgNC4wNDk5IDE2Ljg0MDMgNS45NDk5MiAyMS40NjIyQzcuMzY5MjQgMjQuOTE2NSA1LjA0MjU3IDI3LjM1OTggMi42OTg4NCAyOS44MjZDMS44NjgyOSAzMC43MDAyIDEuMDM0OSAzMS41NzQ1IDAuMzYzNjQgMzIuNUwxMC45NDc0IDIzLjAzNDEiLz48L3N2Zz4%3D)](https://x.ai/grok) [![built with Grok](https://img.shields.io/badge/built%20with-Grok-000000?style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI%2BPHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMy4yMzcxIDIxLjA0MDdMMjQuMzE4NiAxMi44NTA2QzI0Ljg2MTkgMTIuNDQ5MSAyNS42Mzg0IDEyLjYwNTcgMjUuODk3MyAxMy4yMjk0QzI3LjI1OTcgMTYuNTE4NSAyNi42NTEgMjAuNDcxMiAyMy45NDAzIDIzLjE4NTFDMjEuMjI5NyAyNS44OTg5IDE3LjQ1ODEgMjYuNDk0MSAxNC4wMTA4IDI1LjEzODZMMTAuMjQ0OSAyNi44ODQzQzE1LjY0NjMgMzAuNTgwNiAyMi4yMDUzIDI5LjY2NjUgMjYuMzA0IDI1LjU2MDFDMjkuNTU1MSAyMi4zMDUxIDMwLjU2MiAxNy44NjgzIDI5LjYyMDUgMTMuODY3M0wyOS42MjkgMTMuODc1OEMyOC4yNjM3IDcuOTk4MDkgMjkuOTY0NyA1LjY0ODcxIDMzLjQ0OSAwLjg0NDU3NkMzMy41MzE0IDAuNzMwNjY3IDMzLjYxMzkgMC42MTY3NTcgMzMuNjk2NCAwLjVMMjkuMTExMyA1LjA5MDU1VjUuMDc2MzFMMTMuMjM0MyAyMS4wNDM2Ii8%2BPHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMC45NTAzIDIzLjAzMTNDNy4wNzM0MyAxOS4zMjM1IDcuNzQxODUgMTMuNTg1MyAxMS4wNDk4IDEwLjI3NjNDMTMuNDk1OSA3LjgyNzIyIDE3LjUwMzYgNi44Mjc2NyAyMS4wMDIxIDguMjk3MUwyNC43NTk1IDYuNTU5OThDMjQuMDgyNiA2LjA3MDE3IDIzLjIxNSA1LjU0MzM0IDIyLjIxOTUgNS4xNzMxM0MxNy43MTk4IDMuMzE5MjYgMTIuMzMyNiA0LjI0MTkyIDguNjc0NzkgNy45MDEyNkM1LjE1NjM1IDExLjQyMzkgNC4wNDk5IDE2Ljg0MDMgNS45NDk5MiAyMS40NjIyQzcuMzY5MjQgMjQuOTE2NSA1LjA0MjU3IDI3LjM1OTggMi42OTg4NCAyOS44MjZDMS44NjgyOSAzMC43MDAyIDEuMDM0OSAzMS41NzQ1IDAuMzYzNjQgMzIuNUwxMC45NDc0IDIzLjAzNDEiLz48L3N2Zz4%3D)](https://x.ai/grok)
## Stow Personal dotfiles managed with [GNU Stow](https://www.gnu.org/software/stow/). Each top-level directory is a stow package that mirrors files into `$HOME`.
1. Install it: ## Quick start
``sudo dnf install stow``
2. Organize your repo like this: ```bash
git clone <repo-url> ~/.dotfiles
cd ~/.dotfiles
# Arch
sudo pacman -S stow
# Fedora
# sudo dnf install stow
stow bash git nvim vim python ghostty mangohud konsole kde-themes dolphin agents vscode vscode-server
``` ```
~/dotfiles/
To stow all packages at once (excludes `arch/`, which is not a stow package):
```bash
stow agents bash dolphin ghostty git kde-themes konsole mangohud nvim python vim vscode vscode-server
```
`arch/` holds standalone helper scripts — see [Scripts](#scripts) below.
## Packages
| Package | Symlinks |
|---------|----------|
| `bash` | `~/.bashrc`, `~/.bashrc.d/*`, `~/.editorconfig` |
| `git` | `~/.gitconfig`, `~/.gitignore_global` |
| `nvim` | `~/.config/nvim/` |
| `vim` | `~/.vimrc` |
| `python` | `~/.ruff.toml` |
| `ghostty` | `~/.config/ghostty/` |
| `mangohud` | `~/.config/MangoHud/` (base, custom, and FFXIV wine configs) |
| `konsole` | `~/.config/konsolerc`, `~/.local/share/konsole/` (Catppuccin themes, bash profile) |
| `kde-themes` | `~/.local/share/color-schemes/` (Catppuccin Mocha Teal/Blue) |
| `dolphin` | `~/.config/dolphinrc`, `~/.config/dolphin/`, `~/.local/share/dolphin/` |
| `agents` | `~/.grok/` (Grok CLI config, rules, skills path) |
| `vscode` | `~/.config/Code/User/settings.json` → shared with vscode-server |
| `vscode-server` | `~/.vscode-server/data/Machine/settings.json` |
### Bash modules
`~/.bashrc.d/` is sourced automatically. Modules:
- `alias.bash` — general aliases
- `git.bash` — git helpers
- `fonts.bash` — font paths
- `ruff.bash` — Ruff integration
- `mango.bash` — MangoHud env vars
- `vscode.bash` — VS Code helpers
- `wsl.bash` — WSL ssh-agent interop (loaded only when `/mnt/c` is present)
- `apt.bash` — Debian/Ubuntu helpers
## Scripts
| Script | Purpose |
|--------|---------|
| `arch/update.sh` | Update uv, pacman, flatpak, and VS Code (`/opt/vscode`) |
| `arch/upgrade_vscode.sh` | Upgrade `/opt/vscode` tarball install when a newer release is available |
| `arch/fix_vscode.sh` | Create VS Code desktop entry and icon symlinks for `/opt/vscode` |
| `dolphin.sh` | Copy live Dolphin config into the repo and `stow dolphin` |
| `vscode-server/install-vscode-extensions.sh` | Install extensions from `extensions.txt` (local, remote, or both) |
| `vscode-server/install-fira-code-fonts.sh` | Install Fira Code fonts for VS Code |
### VS Code extensions
```bash
# Install remote (WSL) extensions from extensions.txt
bash ~/.dotfiles/vscode-server/install-vscode-extensions.sh
# Export currently installed extensions back to extensions.txt
bash ~/.dotfiles/vscode-server/install-vscode-extensions.sh --export
```
## Grok agents
The `agents` package stows `~/.grok/` with global agent configuration:
- `config.toml` — CLI settings, marketplace, and skills path
- `rules/` — global rules (e.g. `american-english.md`)
- `AGENTS.md` — pointer to project-specific rules in `.grok/rules/`
Skills are loaded from `~/.dotfiles/agents/.grok/.skills` (configured in `config.toml`).
## Stow layout
Each package follows the standard stow convention — files live under the home-directory paths they should symlink to:
```
~/.dotfiles/
├── bash/ ├── bash/
│ ├── .bashrc │ ├── .bashrc
│ └── .bashrc.d/ # everything here │ └── .bashrc.d/
├── nvim/ ├── nvim/
│ └── .config/nvim/ │ └── .config/nvim/
├── git/ ├── git/
│ └── .gitconfig │ └── .gitconfig
├── agents/
│ └── .grok/
└── ... └── ...
``` ```
3. stow it:
``` Stow creates symlinks from `$HOME` back into the repo and handles conflicts cleanly.
cd ~/dotfiles
stow bash
stow nvim
stow git
```
stow creates the symlinks automatically and handles conflicts nicely.
## WSL ## WSL
Resources:
* [ssh-agent-on-windows](https://medium.com/@wondrous_oxblood_cheetah_508/ssh-agent-on-windows-c74b90fb2e31)
### Install Resources:
[![OpenSSH](https://img.shields.io/badge/Windows-OpenSSH?style=flat-square&label=OpenSSH&color=blue
)](https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?tabs=powershell&pivots=windows-11) - [ssh-agent-on-windows](https://medium.com/@wondrous_oxblood_cheetah_508/ssh-agent-on-windows-c74b90fb2e31)
### Install OpenSSH
[![OpenSSH](https://img.shields.io/badge/Windows-OpenSSH?style=flat-square&label=OpenSSH&color=blue)](https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?tabs=powershell&pivots=windows-11)
```powershell ```powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*' Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
``` ```
```powershell ```powershell
# Install the OpenSSH Client # Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
@@ -45,6 +130,7 @@ Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server # Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
``` ```
```powershell ```powershell
# Start the sshd service # Start the sshd service
Start-Service sshd Start-Service sshd
@@ -65,3 +151,5 @@ if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyCon
Set-Service -Name 'ssh-agent' -StartupType Automatic Set-Service -Name 'ssh-agent' -StartupType Automatic
Start-Service ssh-agent Start-Service ssh-agent
``` ```
Once ssh-agent is running, `wsl.bash` aliases `ssh` and `ssh-add` to their Windows `.exe` counterparts so keys persist across WSL sessions.
+3
View File
@@ -0,0 +1,3 @@
# Global agent rules
Project-specific rules live in `.grok/rules/`.
+22
View File
@@ -0,0 +1,22 @@
[hints]
worktree_tip_dismissed = true
[cli]
installer = "internal"
[marketplace]
official_marketplace_auto_installed = true
[[marketplace.sources]]
name = "xAI Official"
git = "https://github.com/xai-org/plugin-marketplace.git"
[ui]
max_thoughts_width = 120
fork_secondary_model = "grok-build"
yolo = false
compact_mode = false
permission_mode = "always-approve"
[skills]
paths = ["~/.dotfiles/agents/.grok/.skills"]
+9
View File
@@ -0,0 +1,9 @@
# American English
Use American English for all generated text and code, including:
- User-facing messages, comments, documentation, and commit messages
- String literals, log messages, error text, and UI copy in code
- Variable and identifier names only when they are natural-language words (e.g. prefer `color` over `colour`, `initialize` over `initialise`)
British or other regional spellings are acceptable only when required by an existing API, library, protocol, or quoted external text.
Executable
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
step() {
echo
echo "==> $*"
}
step "uv"
uv self update
step "pacman"
sudo pacman -Syu
step "flatpak"
sudo flatpak update -y
step "vscode"
"${SCRIPT_DIR}/upgrade_vscode.sh"
+74
View File
@@ -0,0 +1,74 @@
#!/usr/bin/env bash
set -euo pipefail
VSCODE_DIR=/opt/vscode
PRODUCT_JSON="${VSCODE_DIR}/resources/app/product.json"
RELEASES_API='https://update.code.visualstudio.com/api/releases/stable'
installed_version() {
if [[ ! -f "${PRODUCT_JSON}" ]]; then
return 0
fi
python3 -c "import json; print(json.load(open('${PRODUCT_JSON}'))['version'])"
}
latest_version() {
curl -fsSL "${RELEASES_API}" | python3 -c 'import json, sys; print(json.load(sys.stdin)[0])'
}
vscode_arch() {
case "$(uname -m)" in
x86_64) echo linux-x64 ;;
aarch64) echo linux-arm64 ;;
*)
echo "unsupported architecture: $(uname -m)" >&2
exit 1
;;
esac
}
needs_upgrade() {
local installed="$1" latest="$2"
[[ -z "${installed}" ]] && return 0
[[ "${installed}" == "${latest}" ]] && return 1
[[ "$(printf '%s\n' "${installed}" "${latest}" | sort -V | head -n1)" == "${installed}" ]]
}
installed="$(installed_version || true)"
latest="$(latest_version)"
if ! needs_upgrade "${installed}" "${latest}"; then
if [[ -z "${installed}" ]]; then
echo "VS Code is not installed at ${VSCODE_DIR}"
else
echo "VS Code ${installed} is up to date"
fi
exit 0
fi
echo "Upgrading VS Code: ${installed:-not installed} -> ${latest}"
arch="$(vscode_arch)"
tmp="$(mktemp -d)"
trap 'rm -rf "${tmp}"' EXIT
archive="${tmp}/vscode.tar.gz"
curl -fsSL "https://update.code.visualstudio.com/${latest}/${arch}/stable" -o "${archive}"
tar -xzf "${archive}" -C "${tmp}"
extract_dir="$(find "${tmp}" -maxdepth 1 -type d -name 'VSCode-linux-*' -print -quit)"
if [[ -z "${extract_dir}" ]]; then
echo "failed to find extracted VS Code directory" >&2
exit 1
fi
mkdir -p "$(dirname "${VSCODE_DIR}")"
if [[ -d "${VSCODE_DIR}" ]]; then
rm -rf "${VSCODE_DIR}.old"
mv "${VSCODE_DIR}" "${VSCODE_DIR}.old"
fi
mv "${extract_dir}" "${VSCODE_DIR}"
rm -rf "${VSCODE_DIR}.old"
echo "VS Code upgraded to ${latest}"
+9
View File
@@ -7,6 +7,9 @@ fi
export TIME_STYLE="long-iso" export TIME_STYLE="long-iso"
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# User specific environment # User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]; then if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]; then
PATH="$HOME/.local/bin:$HOME/bin:$PATH" PATH="$HOME/.local/bin:$HOME/bin:$PATH"
@@ -16,6 +19,9 @@ export PATH
# Uncomment the following line if you don't like systemctl's auto-paging feature: # Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER= # export SYSTEMD_PAGER=
# Konsole-specific (optional)
export TERM=xterm-256color
# User specific aliases and functions # User specific aliases and functions
if [ -d ~/.bashrc.d ]; then if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do for rc in ~/.bashrc.d/*; do
@@ -30,3 +36,6 @@ unset rc
export PATH="$HOME/.grok/bin:$PATH" export PATH="$HOME/.grok/bin:$PATH"
[[ -r "$HOME/.grok/completions/bash/grok.bash" ]] && source "$HOME/.grok/completions/bash/grok.bash" [[ -r "$HOME/.grok/completions/bash/grok.bash" ]] && source "$HOME/.grok/completions/bash/grok.bash"
# <<< grok installer <<< # <<< grok installer <<<
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
+19
View File
@@ -0,0 +1,19 @@
## Alias
# Vibrant LS_COLORS for Catppuccin / dark themes
export LS_COLORS="di=38;5;51:fi=38;5;252:ln=38;5;117:pi=38;5;180:so=38;5;180:do=38;5;180:bd=38;5;180:cd=38;5;180:or=38;5;196:mi=38;5;196:ex=38;5;46:*.sh=38;5;46:*.bash=38;5;46:*.zsh=38;5;46:*.py=38;5;39:*.js=38;5;226:*.json=38;5;214:*.md=38;5;141:*.git=38;5;197:*.log=38;5;242:*.tar=38;5;204:*.gz=38;5;204:*.zip=38;5;204:*.png=38;5;213:*.jpg=38;5;213:*.jpeg=38;5;213:*.webp=38;5;213:*.mp4=38;5;170:*.mp3=38;5;170"
alias ls='ls --color=auto -al'
# Grep
export GREP_COLORS="mt=38;5;46:sl=38;5;252:cx=38;5;242:fn=38;5;117:ln=38;5;214:se=38;5;197"
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
# Quick recursive search
alias gr='grep -r --color=auto'
alias gri='grep -ri --color=auto' # case insensitive recursive
# Vim stuff
alias vim='nvim'
alias vi='nvim'
+36 -1
View File
@@ -1,4 +1,5 @@
# DNF aliases for apt/pacman muscle memory # Cross-distro package manager aliases (apt / dnf / pacman muscle memory)
if command -v dnf &>/dev/null; then
alias apt='sudo dnf' alias apt='sudo dnf'
alias apt-get='sudo dnf' alias apt-get='sudo dnf'
alias apt-update='sudo dnf update -y' alias apt-update='sudo dnf update -y'
@@ -13,3 +14,37 @@ alias pacman-upgrade='sudo dnf upgrade -y'
alias pacman-install='sudo dnf install -y' alias pacman-install='sudo dnf install -y'
alias pacman-remove='sudo dnf remove -y' alias pacman-remove='sudo dnf remove -y'
alias pacman-search='dnf search' alias pacman-search='dnf search'
elif command -v apt-get &>/dev/null; then
alias dnf='sudo apt'
alias dnf-get='sudo apt'
alias dnf-update='sudo apt update'
alias dnf-upgrade='sudo apt upgrade -y'
alias dnf-install='sudo apt install -y'
alias dnf-remove='sudo apt remove -y'
alias dnf-search='apt search'
alias pacman='sudo apt'
alias pacman-update='sudo apt update'
alias pacman-upgrade='sudo apt upgrade -y'
alias pacman-install='sudo apt install -y'
alias pacman-remove='sudo apt remove -y'
alias pacman-search='apt search'
elif command -v pacman &>/dev/null; then
alias apt='sudo pacman'
alias apt-get='sudo pacman'
alias apt-update='sudo pacman -Sy --noconfirm'
alias apt-upgrade='sudo pacman -Su --noconfirm'
alias apt-install='sudo pacman -S --noconfirm'
alias apt-remove='sudo pacman -Rns --noconfirm'
alias apt-search='pacman -Ss'
alias dnf='sudo pacman'
alias dnf-get='sudo pacman'
alias dnf-update='sudo pacman -Sy --noconfirm'
alias dnf-upgrade='sudo pacman -Su --noconfirm'
alias dnf-install='sudo pacman -S --noconfirm'
alias dnf-remove='sudo pacman -Rns --noconfirm'
alias dnf-search='pacman -Ss'
fi
+33
View File
@@ -0,0 +1,33 @@
# Ensure Fira Code is available for terminal apps (fontconfig)
_fonts_stamp="${XDG_STATE_HOME:-$HOME/.local/state}/fira-code-fonts"
_fonts_dir="$HOME/.local/share/fonts/FiraCode"
if ! fc-list 2>/dev/null | grep -qi 'fira code'; then
if [[ -f "$_fonts_stamp" ]] && ls "$_fonts_dir"/*.ttf &>/dev/null; then
fc-cache -f "$HOME/.local/share/fonts" 2>/dev/null
elif command -v dnf &>/dev/null; then
if sudo dnf install -y fira-code-fonts &>/dev/null; then
fc-cache -f 2>/dev/null
mkdir -p "${_fonts_stamp%/*}"
touch "$_fonts_stamp"
fi
fi
if ! fc-list 2>/dev/null | grep -qi 'fira code' \
&& command -v curl &>/dev/null && command -v unzip &>/dev/null; then
mkdir -p "$_fonts_dir"
_fonts_tmp=$(mktemp -d)
if curl -fsSL "https://github.com/tonsky/FiraCode/releases/download/6.2/Fira_Code_v6.2.zip" \
-o "$_fonts_tmp/FiraCode.zip" \
&& unzip -qo "$_fonts_tmp/FiraCode.zip" -d "$_fonts_tmp" \
&& cp -f "$_fonts_tmp/ttf/"*.ttf "$_fonts_dir/"; then
fc-cache -f "$HOME/.local/share/fonts" 2>/dev/null
mkdir -p "${_fonts_stamp%/*}"
touch "$_fonts_stamp"
fi
rm -rf "$_fonts_tmp"
unset _fonts_tmp
fi
fi
unset _fonts_stamp _fonts_dir
+14
View File
@@ -0,0 +1,14 @@
# Git + Colorful Prompt
if [ -f "/usr/share/git/completion/git-prompt.sh" ]; then
source /usr/share/git/completion/git-prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWSTASHSTATE=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_SHOWUPSTREAM="auto"
# Bright green user@host (what you liked)
PS1='\[\e[1;38;5;46m\]\u@\h\[\e[0m\] \[\e[38;5;51m\]\w\[\e[0m\]\[\e[90m\]$(__git_ps1 " (%s)")\[\e[0m\] \$ '
else
PS1='\[\e[1;38;5;46m\]\u@\h\[\e[0m\] \[\e[38;5;51m\]\w\[\e[0m\] \$ '
fi
+6
View File
@@ -0,0 +1,6 @@
if [[ -d ~/.config/MangoHud ]]; then
export MANGOHUD_CONFIGFILE=~/.config/MangoHud/MangoHud.conf
# Swap xbox for playstation
export SDL_GAMECONTROLLER_USE_BUTTON_LABELS=0
fi
+8
View File
@@ -0,0 +1,8 @@
# Ruff completion
if command -v ruff >/dev/null; then
if [[ -n ${ZSH_VERSION:-} ]]; then
eval "$(ruff generate-shell-completion zsh 2>/dev/null)"
else
eval "$(ruff generate-shell-completion bash 2>/dev/null)"
fi
fi
+6
View File
@@ -0,0 +1,6 @@
# VS Code extension install helper
vscode-ext-install() {
bash "${HOME}/.dotfiles/vscode-server/install-vscode-extensions.sh" "$@"
}
alias vscode-ext-list='vscode-ext-install --list'
+42
View File
@@ -0,0 +1,42 @@
# ~/.editorconfig
root = true
# Default for all files
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# Shell scripts: 2 spaces, no tabs
[*.sh]
indent_style = space
indent_size = 2
[*.bash]
indent_style = space
indent_size = 2
[*.zsh]
indent_style = space
indent_size = 2
[*.bats]
indent_style = space
indent_size = 2
[*.cmd]
indent_style = space
indent_size = 2
end_of_line = crlf
[*.bat]
indent_style = space
indent_size = 2
end_of_line = crlf
# Also apply to Makefile if you want (optional)
[Makefile]
indent_style = tab
indent_size = 4
+17
View File
@@ -0,0 +1,17 @@
[ContentDisplay]
UsePermissionsFormat=CombinedFormat
UseShortRelativeDates=false
[General]
Version=202
ViewPropsTimestamp=2025,11,23,1,8,59.346
[KFileDialog Settings]
Places Icons Auto-resize=false
Places Icons Static Size=22
[MainWindow]
MenuBar=Disabled
[PreviewSettings]
Plugins=appimagethumbnail,audiothumbnail,glycin-heif,comicbookthumbnail,cursorthumbnail,djvuthumbnail,ebookthumbnail,exrthumbnail,directorythumbnail,fontthumbnail,imagethumbnail,glycin-image-rs,jpegthumbnail,glycin-jxl,kraorathumbnail,windowsexethumbnail,windowsimagethumbnail,opendocumentthumbnail,glycin-svg,svgthumbnail,ffmpegthumbs
@@ -0,0 +1 @@
theme = Terminal Basic Dark
File diff suppressed because it is too large Load Diff
+1
View File
@@ -21,6 +21,7 @@
[core] [core]
excludesfile = /home/anoto/.gitignore_global excludesfile = /home/anoto/.gitignore_global
editor = code --wait editor = code --wait
symlinks = true
# pager = code --wait - # pager = code --wait -
[diff] [diff]
tool = vscode tool = vscode
+9
View File
@@ -0,0 +1,9 @@
# git config --global core.excludesfile ~/.gitignore_global
# Windows
Thumbs.db
Desktop.ini
# Python
uv.lock
@@ -0,0 +1,143 @@
[ColorEffects:Disabled]
Color=30, 30, 46
ColorAmount=0.30000000000000004
ColorEffect=2
ContrastAmount=0.1
ContrastEffect=0
IntensityAmount=-1
IntensityEffect=0
[ColorEffects:Inactive]
ChangeSelectionColor=false
Color=30, 30, 46
ColorAmount=0.5
ColorEffect=3
ContrastAmount=0
ContrastEffect=0
Enable=true
IntensityAmount=0
IntensityEffect=0
[Colors:Button]
BackgroundAlternate=137, 180, 250
BackgroundNormal=49, 50, 68
DecorationFocus=137, 180, 250
DecorationHover=137, 180, 250
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=137, 180, 250
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:Complementary]
BackgroundAlternate=17, 17, 27
BackgroundNormal=24, 24, 37
DecorationFocus=137, 180, 250
DecorationHover=137, 180, 250
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=137, 180, 250
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:Header]
BackgroundAlternate=17, 17, 27
BackgroundNormal=24, 24, 37
DecorationFocus=137, 180, 250
DecorationHover=137, 180, 250
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=137, 180, 250
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:Selection]
BackgroundAlternate=137, 180, 250
BackgroundNormal=137, 180, 250
DecorationFocus=137, 180, 250
DecorationHover=137, 180, 250
ForegroundInactive=17, 17, 27
ForegroundActive=17, 17, 27
ForegroundLink=17, 17, 27
ForegroundNegative=17, 17, 27
ForegroundNeutral=17, 17, 27
ForegroundNormal=17, 17, 27
ForegroundPositive=17, 17, 27
ForegroundVisited=17, 17, 27
[Colors:Tooltip]
BackgroundAlternate=17, 17, 27
BackgroundNormal=30, 30, 46
DecorationFocus=137, 180, 250
DecorationHover=137, 180, 250
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=137, 180, 250
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:View]
BackgroundAlternate=24, 24, 37
BackgroundNormal=30, 30, 46
DecorationFocus=137, 180, 250
DecorationHover=137, 180, 250
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=137, 180, 250
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:Window]
BackgroundAlternate=17, 17, 27
BackgroundNormal=24, 24, 37
DecorationFocus=137, 180, 250
DecorationHover=137, 180, 250
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=137, 180, 250
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[General]
ColorScheme=CatppuccinMochaBlue
Name=Catppuccin Mocha Blue
accentActiveTitlebar=false
shadeSortColumn=true
[KDE]
contrast=4
[WM]
activeBackground=30, 30, 46
activeBlend=205, 214, 244
activeForeground=205, 214, 244
inactiveBackground=17, 17, 27
inactiveBlend=166, 173, 200
inactiveForeground=166, 173, 200
@@ -0,0 +1,143 @@
[ColorEffects:Disabled]
Color=30, 30, 46
ColorAmount=0.30000000000000004
ColorEffect=2
ContrastAmount=0.1
ContrastEffect=0
IntensityAmount=-1
IntensityEffect=0
[ColorEffects:Inactive]
ChangeSelectionColor=false
Color=30, 30, 46
ColorAmount=0.5
ColorEffect=3
ContrastAmount=0
ContrastEffect=0
Enable=true
IntensityAmount=0
IntensityEffect=0
[Colors:Button]
BackgroundAlternate=148, 226, 213
BackgroundNormal=49, 50, 68
DecorationFocus=148, 226, 213
DecorationHover=148, 226, 213
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=148, 226, 213
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:Complementary]
BackgroundAlternate=17, 17, 27
BackgroundNormal=24, 24, 37
DecorationFocus=148, 226, 213
DecorationHover=148, 226, 213
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=148, 226, 213
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:Header]
BackgroundAlternate=17, 17, 27
BackgroundNormal=24, 24, 37
DecorationFocus=148, 226, 213
DecorationHover=148, 226, 213
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=148, 226, 213
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:Selection]
BackgroundAlternate=148, 226, 213
BackgroundNormal=148, 226, 213
DecorationFocus=148, 226, 213
DecorationHover=148, 226, 213
ForegroundInactive=17, 17, 27
ForegroundActive=17, 17, 27
ForegroundLink=17, 17, 27
ForegroundNegative=17, 17, 27
ForegroundNeutral=17, 17, 27
ForegroundNormal=17, 17, 27
ForegroundPositive=17, 17, 27
ForegroundVisited=17, 17, 27
[Colors:Tooltip]
BackgroundAlternate=17, 17, 27
BackgroundNormal=30, 30, 46
DecorationFocus=148, 226, 213
DecorationHover=148, 226, 213
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=148, 226, 213
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:View]
BackgroundAlternate=24, 24, 37
BackgroundNormal=30, 30, 46
DecorationFocus=148, 226, 213
DecorationHover=148, 226, 213
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=148, 226, 213
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[Colors:Window]
BackgroundAlternate=17, 17, 27
BackgroundNormal=24, 24, 37
DecorationFocus=148, 226, 213
DecorationHover=148, 226, 213
ForegroundActive=250, 179, 135
ForegroundInactive=166, 173, 200
ForegroundLink=148, 226, 213
ForegroundNegative=243, 139, 168
ForegroundNeutral=249, 226, 175
ForegroundNormal=205, 214, 244
ForegroundPositive=166, 227, 161
ForegroundVisited=203, 166, 247
[General]
ColorScheme=CatppuccinMochaTeal
Name=Catppuccin Mocha Teal
accentActiveTitlebar=false
shadeSortColumn=true
[KDE]
contrast=4
[WM]
activeBackground=30, 30, 46
activeBlend=205, 214, 244
activeForeground=205, 214, 244
inactiveBackground=17, 17, 27
inactiveBlend=166, 173, 200
inactiveForeground=166, 173, 200
@@ -0,0 +1,2 @@
For KDE Plasma Desktop
https://github.com/catppuccin/kde#for-kde-plasma-desktop
+8
View File
@@ -0,0 +1,8 @@
[Desktop Entry]
DefaultProfile=bash.profile
[General]
ConfigVersion=1
[UiSettings]
ColorScheme=
+3
View File
@@ -0,0 +1,3 @@
# konsole
Grab themes at https://github.com/catppuccin/konsole/
+11
View File
@@ -0,0 +1,11 @@
[Appearance]
ColorScheme=catppuccin-mocha
[General]
Icon=utilities-terminal-symbolic
Name=bash
Parent=FALLBACK/
TerminalColumns=128
[Keyboard]
KeyBindings=default
@@ -0,0 +1,96 @@
[Background]
Color=36,39,58
[BackgroundFaint]
Color=36,39,58
[BackgroundIntense]
Color=36,39,58
[Color0]
Color=110,115,141
[Color0Faint]
Color=110,115,141
[Color0Intense]
Color=110,115,141
[Color1]
Color=237,135,150
[Color1Faint]
Color=237,135,150
[Color1Intense]
Color=237,135,150
[Color2]
Color=166,218,149
[Color2Faint]
Color=166,218,149
[Color2Intense]
Color=166,218,149
[Color3]
Color=238,212,159
[Color3Faint]
Color=238,212,159
[Color3Intense]
Color=238,212,159
[Color4]
Color=138,173,244
[Color4Faint]
Color=138,173,244
[Color4Intense]
Color=138,173,244
[Color5]
Color=198,160,246
[Color5Faint]
Color=198,160,246
[Color5Intense]
Color=198,160,246
[Color6]
Color=145,215,227
[Color6Faint]
Color=145,215,227
[Color6Intense]
Color=145,215,227
[Color7]
Color=202,211,245
[Color7Faint]
Color=202,211,245
[Color7Intense]
Color=202,211,245
[Foreground]
Color=202,211,245
[ForegroundFaint]
Color=202,211,245
[ForegroundIntense]
Color=202,211,245
[General]
Blur=false
ColorRandomization=false
Description=Catppuccin Macchiato
Opacity=1
Wallpaper=
@@ -0,0 +1,96 @@
[Background]
Color=30,30,46
[BackgroundFaint]
Color=30,30,46
[BackgroundIntense]
Color=30,30,46
[Color0]
Color=108,112,134
[Color0Faint]
Color=108,112,134
[Color0Intense]
Color=108,112,134
[Color1]
Color=243,139,168
[Color1Faint]
Color=243,139,168
[Color1Intense]
Color=243,139,168
[Color2]
Color=166,227,161
[Color2Faint]
Color=166,227,161
[Color2Intense]
Color=166,227,161
[Color3]
Color=249,226,175
[Color3Faint]
Color=249,226,175
[Color3Intense]
Color=249,226,175
[Color4]
Color=137,180,250
[Color4Faint]
Color=137,180,250
[Color4Intense]
Color=137,180,250
[Color5]
Color=203,166,247
[Color5Faint]
Color=203,166,247
[Color5Intense]
Color=203,166,247
[Color6]
Color=137,220,235
[Color6Faint]
Color=137,220,235
[Color6Intense]
Color=137,220,235
[Color7]
Color=205,214,244
[Color7Faint]
Color=205,214,244
[Color7Intense]
Color=205,214,244
[Foreground]
Color=205,214,244
[ForegroundFaint]
Color=205,214,244
[ForegroundIntense]
Color=205,214,244
[General]
Blur=false
ColorRandomization=false
Description=Catppuccin Mocha
Opacity=1
Wallpaper=
+13
View File
@@ -0,0 +1,13 @@
[Appearance]
ColorScheme=catppuccin-mocha
[General]
Command=/usr/bin/zsh
Icon=utilities-terminal-symbolic
Name=zsh
Parent=FALLBACK/
StartInCurrentSessionDir=false
TerminalColumns=128
[Keyboard]
KeyBindings=default
+77
View File
@@ -0,0 +1,77 @@
################### File Generated by Goverlay ###################
legacy_layout=false
offset_x=0
offset_y=5 # move down a bit
horizontal=1
position=top-center
background_alpha=0.6
round_corners=10
background_alpha=0.6
background_color=000000
horizontal_stretch=0
font_size=24
text_color=FFFFFF
# position=top-center
toggle_hud=Shift_R+F4
pci_dev=0:01:00.0
table_columns=3
# frame_timing
gpu_text=GPU
gpu_stats
gpu_load_change
gpu_load_value=50,90
gpu_load_color=FFFFFF,FFAA7F,CC0000
gpu_temp
gpu_power
gpu_color=2E9762
cpu_text=CPU
cpu_stats
cpu_load_change
cpu_load_value=50,90
cpu_load_color=FFFFFF,FFAA7F,CC0000
cpu_temp
#cpu_power
cpu_color=2E97CB
# io_read
# io_write
# io_color=A491D3
time#
vram
vram_color=AD64C1
vram_color=AD64C1
ram
ram_color=C26693
# battery
# battery_color=00FF00
fps
# engine_version
engine_color=EB5B5B
frametime_color=FFFFFF
fps_limit_method=early
engine_short_names
toggle_fps_limit=Shift_L+F1
fps_limit=144
fps_color_change
fps_color=B22222,FDFD09,39F900
fps_value=30,60
# gpu_name
#offset=0
vsync=1
# gamemode
time_format=%F %T %Z
output_folder=/home/anoto/logs
log_duration=30
autostart_log=0
log_interval=100
blacklist=zenity,protonplus,lsfg-vk-ui,bazzar,gnome-calculator,pamac-manager,lact,ghb,bitwig-studio,ptyxis,yumex
+70
View File
@@ -0,0 +1,70 @@
################### File Generated by Goverlay ###################
legacy_layout=false
horizontal
background_alpha=0.6
round_corners=10
background_alpha=0.6
background_color=000000
font_size=24
text_color=FFFFFF
position=top-center
toggle_hud=Shift_R+F4
pci_dev=0:01:00.0
table_columns=3
gpu_text=GPU
gpu_stats
gpu_load_change
gpu_load_value=50,90
gpu_load_color=FFFFFF,FFAA7F,CC0000
gpu_temp
gpu_color=2E9762
cpu_text=CPU
cpu_stats
cpu_load_change
cpu_load_value=50,90
cpu_load_color=FFFFFF,FFAA7F,CC0000
cpu_temp
cpu_power
cpu_color=2E97CB
io_read
io_write
io_color=A491D3
vram
vram_color=AD64C1
vram_color=AD64C1
ram
ram_color=C26693
battery
battery_color=00FF00
fps
engine_version
engine_color=EB5B5B
gpu_name
vulkan_driver
frame_timing
frametime_color=FFFFFF
fps_limit_method=early
toggle_fps_limit=Shift_L+F1
fps_limit=0
fps_color_change
fps_color=B22222,FDFD09,39F900
fps_value=30,60
#offset=0
vsync=1
output_folder=/home/anoto/logs
log_duration=30
autostart_log=0
log_interval=100
toggle_logging=Shift_L+F2
blacklist=zenity,protonplus,lsfg-vk-ui,bazzar,gnome-calculator,pamac-manager,lact,ghb,bitwig-studio,ptyxis,yumex
@@ -0,0 +1,82 @@
################### File Generated by Goverlay ###################
legacy_layout=false
offset_x=0
offset_y=5 # move down a bit
horizontal=1
position=top-center
background_alpha=0.6
round_corners=10
background_alpha=0.6
background_color=000000
horizontal_stretch=0
font_size=24
text_color=FFFFFF
# position=top-center
toggle_hud=Shift_R+F4
pci_dev=0:01:00.0
table_columns=3
# frame_timing
gpu_text=GPU
gpu_stats
gpu_load_change
gpu_load_value=50,90
gpu_load_color=FFFFFF,FFAA7F,CC0000
gpu_temp
gpu_power
gpu_color=2E9762
cpu_text=CPU
cpu_stats
cpu_load_change
cpu_load_value=50,90
cpu_load_color=FFFFFF,FFAA7F,CC0000
cpu_temp
#cpu_power
cpu_color=2E97CB
# io_read
# io_write
# io_color=A491D3
vram
vram_color=AD64C1
vram_color=AD64C1
ram
ram_color=C26693
# battery
# battery_color=00FF00
fps
# engine_version
engine_color=EB5B5B
frametime_color=FFFFFF
fps_limit_method=early
engine_short_names
toggle_fps_limit=Shift_L+F1
fps_limit=144
fps_color_change
fps_color=B22222,FDFD09,39F900
fps_value=30,60
# gpu_name
time#
#offset=0
vsync=1
# gamemode
time_format=%F %T %Z
output_folder=/home/anoto/logs
log_duration=30
autostart_log=0
log_interval=100
blacklist=zenity,protonplus,lsfg-vk-ui,bazzar,gnome-calculator,pamac-manager,lact,ghb,bitwig-studio,ptyxis,yumex
+18
View File
@@ -0,0 +1,18 @@
-- Basic Neovim settings (converted from old .vimrc)
vim.opt.expandtab = true -- Convert tabs to spaces
vim.opt.tabstop = 4 -- Tab width
vim.opt.shiftwidth = 4 -- Indent width
vim.opt.softtabstop = 4 -- Backspace behavior
vim.opt.number = true -- Line numbers
vim.opt.cursorline = true -- Highlight current line
-- Quality of life
vim.opt.termguicolors = true
vim.opt.mouse = "a"
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.wrap = false
vim.opt.scrolloff = 8
vim.opt.signcolumn = "yes" -- Always show sign column
+65
View File
@@ -0,0 +1,65 @@
# https://github.com/astral-sh/ruff/blob/main/docs/configuration.md#shell-autocompletion
cache-dir = "~/.cache/ruff"
indent-width = 4
line-length = 128
target-version = "py314"
# Exclude a variety of commonly ignored directories.
exclude = [
"__pypackages__",
"_build",
".bzr",
".direnv",
".eggs",
".git-rewrite",
".git",
".hg",
".ipynb_checkpoints",
".mypy_cache",
".nox",
".pants.d",
".pyenv",
".pytest_cache",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
".vscode",
"buck-out",
"build",
"dist",
"node_modules",
"site-packages",
"venv",
]
[lint]
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default.
# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
# McCabe complexity (`C901`) by default.
select = ["E4", "E7", "E9", "F", "TC", "FAST", "TD", "I"]
ignore = []
# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []
[format]
# Like Black, use double quotes for strings.
quote-style = "double"
# Like Black, indent with spaces, rather than tabs.
indent-style = "space"
# Like Black, respect magic trailing commas.
skip-magic-trailing-comma = false
[lint.isort]
case-sensitive = true
combine-as-imports = true
force-single-line = true
force-sort-within-sections = true
lines-after-imports = 1
+6
View File
@@ -0,0 +1,6 @@
set expandtab " Convert tabs to spaces
set tabstop=4 " Display existing tab characters as 4 spaces wide
set shiftwidth=4 " Use 4 spaces for each indentation level (e.g., with >> or autoindent)
set softtabstop=4 " Pressing Tab inserts 4 spaces; Backspace deletes 4 spaces at once
set number
set cursorline
@@ -0,0 +1,98 @@
{
"workbench.editor.useModal": "off",
"workbench.settings.editor": "json",
"workbench.settings.useSplitJSON": false,
"editor.fontFamily": "Fira Code",
"editor.fontSize": 11,
"editor.fontLigatures": true,
"terminal.integrated.fontFamily": "Fira Code",
"terminal.integrated.profiles.linux": {
"grok": {
"path": "${userHome}/.grok/bin/grok",
"icon": "sparkle"
},
},
"terminal.integrated.defaultProfile.linux": "bash",
"terminal.integrated.inheritEnv": true,
"vsicons.dontShowNewVersionMessage": true,
"editor.minimap.enabled": false,
"workbench.iconTheme": "catppuccin-mocha",
"files.exclude": {
"**/__pycache__": true,
"**/.DS_Store": true,
"**/.git": true,
"**/.hg": true,
"**/.svn": true,
"**/CVS": true
},
"search.exclude": {
"**/__pycache__": true,
"**/.DS_Store": true,
"**/.git": true,
"**/.hg": true,
"**/.svn": true,
"**/CVS": true,
"**/.grok": true,
"**/.grok/worktrees": true,
"**/.grok/sessions": true,
"**/.grok/logs": true,
"**/.cursor": true,
"**/.cline": true,
"**/.continue": true,
"**/.aider*": true,
"**/.codex": true,
"**/.windsurf": true,
"**/.codeium": true,
"**/.roo": true,
"**/.openclaw": true,
"**/.factory": true,
"**/.augment": true
},
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": false
},
"ruff.lineLength": 128,
"git.blame.editorDecoration.enabled": true,
"git.blame.editorDecoration.template": "${subject}, ${authorName} (${authorDateAgo})",
"git.blame.statusBarItem.enabled": true,
"diffEditor.ignoreTrimWhitespace": false,
"editor.renderWhitespace": "all",
"files.trimTrailingWhitespace": true,
"files.trimFinalNewlines": true,
"files.autoSave": "afterDelay",
"telemetry.feedback.enabled": true,
"[properties]": {
"editor.tabSize": 2
},
"[shellscript]": {
"editor.defaultColorDecorators": "never",
"editor.tabSize": 2,
"files.eol": "\n"
},
"projectManager.showProjectNameInStatusBar": true,
"workbench.colorTheme": "Catppuccin Mocha",
"catppuccin.accentColor": "blue",
// use your accent (pink) on the statusBar as well
"catppuccin.customUIColors": {
"mocha": {
"statusBar.foreground": "accent",
},
},
"catppuccin-icons.hidesExplorerArrows": false,
"catppuccin-icons.specificFolders": true,
"projectManager.git.baseFolders": [
"~/git",
"~/.dotfiles"
],
"projectManager.git.ignoredFolders": [
"node_modules",
"out",
"typings",
"test",
".haxelib",
"__pycache__",
".grok"
],
"chat.titleBar.signIn.enabled": false
}
+23
View File
@@ -0,0 +1,23 @@
# VS Code extensions (one ID per line; # comments allowed)
# Install: bash ~/dotfiles/vscode-server/install-vscode-extensions.sh
# Remote / WSL (from settings)
ms-vscode-remote.remote-wsl
ms-python.python
ms-python.debugpy
ms-python.vscode-python-envs
charliermarsh.ruff
redhat.vscode-yaml
redhat.vscode-xml
ms-toolsai.jupyter
ms-toolsai.jupyter-renderers
ms-toolsai.vscode-jupyter-cell-tags
ms-toolsai.vscode-jupyter-slideshow
# UI
vscode-icons-team.vscode-icons
# Optional (uncomment if you use them)
# GitHub.copilot
# GitHub.copilot-chat
# formulahendry.acp-client
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
set -euo pipefail
# Fedora / WSL Linux
if command -v dnf >/dev/null 2>&1; then
sudo dnf install -y fira-code-fonts
fc-cache -f
fi
# Windows user fonts (when running under WSL)
if [[ -d /mnt/c/Users ]]; then
win_fonts="/mnt/c/Users/${USER}/AppData/Local/Microsoft/Windows/Fonts"
if [[ ! -d "$win_fonts" ]]; then
win_fonts="/mnt/c/Users/${USER}/AppData/Local/Microsoft/Windows/Fonts"
fi
tmp=$(mktemp -d)
curl -sL "https://github.com/tonsky/FiraCode/releases/download/6.2/Fira_Code_v6.2.zip" -o "$tmp/FiraCode.zip"
unzip -q "$tmp/FiraCode.zip" -d "$tmp"
cp -f "$tmp/ttf/"*.ttf "$win_fonts/"
rm -rf "$tmp"
echo "Installed Fira Code to $win_fonts"
fi
+159
View File
@@ -0,0 +1,159 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
EXT_FILE="${SCRIPT_DIR}/extensions.txt"
TARGET="remote"
FORCE=0
usage() {
cat <<'EOF'
Usage: install-vscode-extensions.sh [options]
Install VS Code extensions from extensions.txt.
Options:
--local Install to Windows VS Code only
--remote Install to WSL remote VS Code (default)
--both Install to both local Windows and WSL remote
--list Print installed extension IDs (remote by default)
--export Write installed IDs to extensions.txt
--file PATH Use a different extension list file
--force Reinstall even if already present
-h, --help Show this help
Examples:
bash install-vscode-extensions.sh
bash install-vscode-extensions.sh --both
bash install-vscode-extensions.sh --list
bash install-vscode-extensions.sh --export
EOF
}
while [[ $# -gt 0 ]]; do
case "$1" in
--local) TARGET="local" ;;
--remote) TARGET="remote" ;;
--both) TARGET="both" ;;
--list) TARGET="list" ;;
--export) TARGET="export" ;;
--file) shift; EXT_FILE="${1:?missing path for --file}" ;;
--force) FORCE=1 ;;
-h|--help) usage; exit 0 ;;
*) echo "Unknown option: $1" >&2; usage >&2; exit 1 ;;
esac
shift
done
find_code_cli() {
if command -v code >/dev/null 2>&1; then
command -v code
return 0
fi
local candidate
for candidate in /mnt/c/Users/*/AppData/Local/Programs/Microsoft\ VS\ Code/bin/code; do
if [[ -f "$candidate" ]]; then
echo "$candidate"
return 0
fi
done
return 1
}
remote_args() {
if [[ -n "${WSL_DISTRO_NAME:-}" ]]; then
printf '%s\0%s\0' --remote "wsl+${WSL_DISTRO_NAME,,}"
fi
}
run_code() {
"$CODE_CLI" "$@"
}
list_extensions() {
local scope=$1
local -a args=(--list-extensions)
if [[ "$scope" == "remote" ]]; then
local -a remote=()
while IFS= read -r -d '' arg; do
remote+=("$arg")
done < <(remote_args)
if [[ ${#remote[@]} -eq 0 ]]; then
echo "No WSL distro detected for remote listing." >&2
return 1
fi
args+=("${remote[@]}")
fi
run_code "${args[@]}"
}
install_extensions() {
local scope=$1
local -a remote=()
if [[ "$scope" == "remote" ]]; then
while IFS= read -r -d '' arg; do
remote+=("$arg")
done < <(remote_args)
if [[ ${#remote[@]} -eq 0 ]]; then
echo "No WSL distro detected; skipping remote install." >&2
return 0
fi
fi
local line id installed=0 skipped=0 failed=0
while IFS= read -r line || [[ -n "$line" ]]; do
line="${line%%#*}"
line="${line//[[:space:]]/}"
[[ -z "$line" ]] && continue
id="$line"
if [[ "$FORCE" -eq 0 ]] && list_extensions "$scope" | grep -Fxq "$id"; then
echo "skip [$scope] $id"
skipped=$((skipped + 1))
continue
fi
echo "install [$scope] $id"
if [[ "$scope" == "remote" ]]; then
if run_code --install-extension "$id" "${remote[@]}" --force; then
installed=$((installed + 1))
else
echo "failed [$scope] $id" >&2
failed=$((failed + 1))
fi
elif run_code --install-extension "$id" --force; then
installed=$((installed + 1))
else
echo "failed [$scope] $id" >&2
failed=$((failed + 1))
fi
done < "$EXT_FILE"
echo "done [$scope]: installed=$installed skipped=$skipped failed=$failed"
[[ "$failed" -eq 0 ]]
}
CODE_CLI=$(find_code_cli) || {
echo "VS Code CLI not found. Install VS Code and ensure 'code' is on PATH." >&2
exit 1
}
case "$TARGET" in
list)
list_extensions remote
;;
export)
list_extensions remote > "$EXT_FILE"
echo "Wrote $(wc -l < "$EXT_FILE" | tr -d ' ') extensions to $EXT_FILE"
;;
local)
install_extensions local
;;
remote)
install_extensions remote
;;
both)
install_extensions local
install_extensions remote
;;
esac
+1
View File
@@ -0,0 +1 @@
../../../../vscode-server/.vscode-server/data/Machine/settings.json
+39
View File
@@ -0,0 +1,39 @@
# .zshrc
[[ -f "$HOME/.var/app/com.visualstudio.code/data/../bin/env" ]] && . "$HOME/.var/app/com.visualstudio.code/data/../bin/env"
[[ -f "$HOME/.local/bin/env" ]] && . "$HOME/.local/bin/env"
export TIME_STYLE="long-iso"
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
if [[ ":$PATH:" != *":${HOME}/.local/bin:"* ]]; then
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH
# Konsole-specific (optional)
export TERM=xterm-256color
# User specific aliases and functions
if [[ -d ~/.zshrc.d ]]; then
for rc in ~/.zshrc.d/*(N); do
[[ -f "$rc" ]] && source "$rc"
done
fi
unset rc
# >>> grok installer >>>
export PATH="$HOME/.grok/bin:$PATH"
fpath=("$HOME/.grok/completions/zsh" $fpath)
# <<< grok installer <<<
# If not running interactively, don't do anything
[[ -o interactive ]] || return
# Delete key sends ESC[3~; without this binding zsh inserts "~" literally
[[ -n ${terminfo[kdch1]} ]] && bindkey "${terminfo[kdch1]}" delete-char
autoload -Uz compinit
compinit
+1
View File
@@ -0,0 +1 @@
../../bash/.bashrc.d/alias.bash
+1
View File
@@ -0,0 +1 @@
../../bash/.bashrc.d/apt.bash
+1
View File
@@ -0,0 +1 @@
../../bash/.bashrc.d/fonts.bash
+15
View File
@@ -0,0 +1,15 @@
# Git + colorful prompt
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=(precmd_vcs_info)
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:git:*' formats ' (%b%u%c)'
zstyle ':vcs_info:git:*' actionformats ' (%b%u%c)'
zstyle ':vcs_info:git:*' stagedstr ' +'
zstyle ':vcs_info:git:*' unstagedstr ' *'
setopt prompt_subst
# Bright green user@host (matches bash git.bash)
PROMPT='%B%F{46}%n@%m%b%f %F{51}%~%f%F{90}${vcs_info_msg_0_}%f $ '
+1
View File
@@ -0,0 +1 @@
../../bash/.bashrc.d/mango.bash
+1
View File
@@ -0,0 +1 @@
../../bash/.bashrc.d/ruff.bash
+1
View File
@@ -0,0 +1 @@
../../bash/.bashrc.d/vscode.bash
+1
View File
@@ -0,0 +1 @@
../../bash/.bashrc.d/wsl.bash