mirror of
https://github.com/jimeh/dotfiles.git
synced 2026-02-19 13:46:41 +00:00
Compare commits
51 Commits
e86ff34b2e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
919c5d48de | ||
|
d3ef296e84
|
|||
|
39f2d3094c
|
|||
|
e2d2e4ec13
|
|||
|
|
9bf0ffd5d7 | ||
|
|
ae207e49bd | ||
|
a76c67542f
|
|||
|
6900c31b3a
|
|||
|
|
83d043f186 | ||
|
eb3ecdce75
|
|||
|
9e5784d741
|
|||
|
051731d110
|
|||
|
c83cd5e62b
|
|||
|
54fac673e0
|
|||
|
e542560a67
|
|||
|
ca42166e11
|
|||
|
9c2e3b7343
|
|||
|
|
f5245da82a | ||
|
|
cc3dd3fe0e | ||
|
|
1c0f58ef55 | ||
|
|
220461bd9a | ||
|
|
e34efe233e | ||
|
|
3a14e2302f | ||
|
7911beee79
|
|||
|
c4924a8cfc
|
|||
|
e38a4f6b73
|
|||
|
|
f3bb188938 | ||
|
|
f1901b81ad | ||
|
|
ab9042fbae | ||
|
|
c0694b0494 | ||
|
cb72a6e190
|
|||
|
b38ab73624
|
|||
|
6dc701a4f7
|
|||
|
3ef428c5ea
|
|||
|
a6af299d8d
|
|||
|
|
a954f2b588 | ||
|
|
4f831ccd2e | ||
|
|
b72042cd1f | ||
|
|
75116ac623 | ||
|
f92e4b9646
|
|||
|
|
f7dd4b41fd | ||
|
4909c6a779
|
|||
|
eed33bf54c
|
|||
|
711b8f7678
|
|||
|
1822f82401
|
|||
|
7c04e49858
|
|||
|
3bb36f8b32
|
|||
|
4756212c32
|
|||
|
de6bb30eae
|
|||
|
079ec5177f
|
|||
|
666c60b89d
|
61
CLAUDE.md
Normal file
61
CLAUDE.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with
|
||||||
|
code in this repository.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Personal dotfiles repository for macOS and Linux. Configuration files are
|
||||||
|
symlinked to `$HOME` with a `.` prefix (e.g., `zshrc` becomes `~/.zshrc`).
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./install.sh # Install symlinks and initialize shell
|
||||||
|
./install.sh symlinks # Only install symlinks
|
||||||
|
./install.sh terminfo # Install terminfo entries
|
||||||
|
./install.sh launch-agents # Install macOS LaunchAgents
|
||||||
|
```
|
||||||
|
|
||||||
|
### Nix packages
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix-env -if ~/.dotfiles/default.nix # Install/update global Nix packages
|
||||||
|
nix flake update # Update nixpkgs lock
|
||||||
|
```
|
||||||
|
|
||||||
|
### Hammerspoon
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd hammerspoon && make install # Fetch Spoons and dependencies
|
||||||
|
cd hammerspoon && make update # Update all dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
- `install.sh` - Main installer, manages symlinks to `$HOME`
|
||||||
|
- `flake.nix` / `default.nix` - Nix package management (nixfmt, nil LSP)
|
||||||
|
- `zshrc` / `zshenv` / `zprofile` - ZSH configuration entry points
|
||||||
|
- `zsh/` - Modular ZSH configs loaded by topic (aliases, kubernetes, golang,
|
||||||
|
etc.)
|
||||||
|
- `zsh/zshrc.funcs.zsh` - Helper functions used throughout ZSH config
|
||||||
|
- `bin/` - Personal scripts added to PATH
|
||||||
|
- `config/` - XDG config files (ghostty, kitty, mise, starship, etc.)
|
||||||
|
- `hammerspoon/` - macOS automation with Hammerspoon
|
||||||
|
- `tmux/` - Tmux config and plugins (git submodules)
|
||||||
|
- `private/` - Private dotfiles (separate repo, gitignored)
|
||||||
|
|
||||||
|
## Shell Setup
|
||||||
|
|
||||||
|
- Uses [zinit](https://github.com/zdharma-continuum/zinit) for ZSH plugin
|
||||||
|
management
|
||||||
|
- Uses [mise](https://mise.jdx.dev/) for runtime version management
|
||||||
|
- Uses [starship](https://starship.rs/) for prompt
|
||||||
|
- PATH construction happens in `zshenv`, interactive setup in `zshrc`
|
||||||
|
|
||||||
|
## Code Style
|
||||||
|
|
||||||
|
Shell scripts: 2-space indent, bash-style (see `.editorconfig` for shfmt
|
||||||
|
settings).
|
||||||
60
bin/ollama-for-gitbutler
Executable file
60
bin/ollama-for-gitbutler
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Defaults
|
||||||
|
DEFAULT_BIND="127.0.0.1"
|
||||||
|
DEFAULT_PORT="11435"
|
||||||
|
DEFAULT_ORIGINS="*"
|
||||||
|
DEFAULT_KEEP_ALIVE="6h"
|
||||||
|
|
||||||
|
print-help() {
|
||||||
|
cat <<EOF
|
||||||
|
Usage: ollama-for-gitbutler [options]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-b, --bind <addr> The address to bind to (default: "${DEFAULT_BIND}")
|
||||||
|
-p, --port <port> The port to listen on (default: "${DEFAULT_PORT}")
|
||||||
|
-m, --models <dir> Override ollama's default models directory
|
||||||
|
-k, --keep-alive <duration> The duration that models stay loaded in memory (default: "${DEFAULT_KEEP_ALIVE}")
|
||||||
|
-h, --help Print this help message
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
BIND="${DEFAULT_BIND}"
|
||||||
|
PORT="${DEFAULT_PORT}"
|
||||||
|
KEEP_ALIVE="${DEFAULT_KEEP_ALIVE}"
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
-b | --bind)
|
||||||
|
BIND="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-p | --port)
|
||||||
|
PORT="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-m | --models)
|
||||||
|
export OLLAMA_MODELS="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-k | --keep-alive)
|
||||||
|
KEEP_ALIVE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-h | --help)
|
||||||
|
print-help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1" >&2
|
||||||
|
print-help >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
export OLLAMA_HOST="${BIND}:${PORT}"
|
||||||
|
export OLLAMA_KEEP_ALIVE="${KEEP_ALIVE}"
|
||||||
|
export OLLAMA_ORIGINS="${DEFAULT_ORIGINS}"
|
||||||
|
|
||||||
|
exec ollama serve "$@"
|
||||||
@@ -24,10 +24,12 @@ bun = true
|
|||||||
uvx = true
|
uvx = true
|
||||||
|
|
||||||
[settings.ruby]
|
[settings.ruby]
|
||||||
ruby_install = true
|
# Precompiled binaries causes issues with Ruby LSP.
|
||||||
|
compile = true
|
||||||
|
|
||||||
[tools]
|
[tools]
|
||||||
"aqua:AlexanderGrooff/mermaid-ascii" = "latest"
|
"aqua:AlexanderGrooff/mermaid-ascii" = "latest"
|
||||||
|
"aqua:svenstaro/miniserve" = "latest"
|
||||||
"aqua:tldr-pages/tlrc" = "latest"
|
"aqua:tldr-pages/tlrc" = "latest"
|
||||||
"cargo:bacon" = "latest"
|
"cargo:bacon" = "latest"
|
||||||
"cargo:cargo-audit" = "latest"
|
"cargo:cargo-audit" = "latest"
|
||||||
@@ -43,36 +45,39 @@ ruby_install = true
|
|||||||
"cargo:paper-terminal" = "latest"
|
"cargo:paper-terminal" = "latest"
|
||||||
"cargo:parallel-disk-usage" = { version = "latest", bin = "pdu" }
|
"cargo:parallel-disk-usage" = { version = "latest", bin = "pdu" }
|
||||||
"cargo:pastel" = "latest"
|
"cargo:pastel" = "latest"
|
||||||
"github:spinel-coop/rv" = "latest"
|
"cargo:riffdiff" = "latest"
|
||||||
"github:stacklok/toolhive" = "latest"
|
"github:stacklok/toolhive" = "latest"
|
||||||
"go:github.com/rakyll/hey" = "latest"
|
"go:github.com/rakyll/hey" = "latest"
|
||||||
"go:google.golang.org/grpc/cmd/protoc-gen-go-grpc" = "latest"
|
"go:google.golang.org/grpc/cmd/protoc-gen-go-grpc" = "latest"
|
||||||
"go:google.golang.org/protobuf/cmd/protoc-gen-go" = "latest"
|
"go:google.golang.org/protobuf/cmd/protoc-gen-go" = "latest"
|
||||||
"npm:@github/copilot-language-server" = "latest"
|
"npm:@github/copilot-language-server" = "latest"
|
||||||
"npm:@mermaid-js/mermaid-cli" = "latest"
|
"npm:@mermaid-js/mermaid-cli" = "latest"
|
||||||
"npm:@modelcontextprotocol/server-memory" = "latest"
|
|
||||||
"npm:@modelcontextprotocol/server-sequential-thinking" = "latest"
|
|
||||||
"npm:@openai/codex" = "latest"
|
"npm:@openai/codex" = "latest"
|
||||||
"npm:@prettier/plugin-php" = "latest"
|
"npm:@prettier/plugin-php" = "latest"
|
||||||
"npm:@upstash/context7-mcp" = "latest"
|
"npm:claude-plugins" = "latest"
|
||||||
|
"npm:convex" = "latest"
|
||||||
"npm:dockerfile-language-server-nodejs" = "latest"
|
"npm:dockerfile-language-server-nodejs" = "latest"
|
||||||
"npm:eslint" = "latest"
|
"npm:eslint" = "latest"
|
||||||
"npm:eslint-config-prettier" = "latest"
|
"npm:eslint-config-prettier" = "latest"
|
||||||
"npm:eslint-plugin-prettier" = "latest"
|
"npm:eslint-plugin-prettier" = "latest"
|
||||||
"npm:eslint_d" = "latest"
|
"npm:eslint_d" = "latest"
|
||||||
"npm:htmllint-cli" = "latest"
|
"npm:htmllint-cli" = "latest"
|
||||||
|
"npm:http-server" = "latest"
|
||||||
"npm:httpsnippet" = "latest"
|
"npm:httpsnippet" = "latest"
|
||||||
"npm:jsonlint" = "latest"
|
"npm:jsonlint" = "latest"
|
||||||
"npm:localtunnel" = "latest"
|
"npm:localtunnel" = "latest"
|
||||||
"npm:markdown-it" = "latest"
|
"npm:markdown-it" = "latest"
|
||||||
|
"npm:oxfmt" = "latest"
|
||||||
|
"npm:oxlint" = "latest"
|
||||||
"npm:prettier" = "latest"
|
"npm:prettier" = "latest"
|
||||||
"npm:prettier-plugin-toml" = "latest"
|
"npm:prettier-plugin-toml" = "latest"
|
||||||
"npm:prettier-pnp" = "latest"
|
"npm:prettier-pnp" = "latest"
|
||||||
|
"npm:skills" = "latest"
|
||||||
"npm:stylelint" = "latest"
|
"npm:stylelint" = "latest"
|
||||||
|
"npm:svgo" = "latest"
|
||||||
"npm:typescript" = "latest"
|
"npm:typescript" = "latest"
|
||||||
"npm:typescript-formatter" = "latest"
|
"npm:typescript-formatter" = "latest"
|
||||||
"npm:typescript-language-server" = "latest"
|
"npm:typescript-language-server" = "latest"
|
||||||
"npm:vibe-kanban" = "latest"
|
|
||||||
"npm:vscode-css-languageserver-bin" = "latest"
|
"npm:vscode-css-languageserver-bin" = "latest"
|
||||||
"npm:vscode-json-languageserver" = "latest"
|
"npm:vscode-json-languageserver" = "latest"
|
||||||
"npm:yaml-language-server" = "latest"
|
"npm:yaml-language-server" = "latest"
|
||||||
@@ -81,9 +86,9 @@ ruby_install = true
|
|||||||
"pipx:dmgbuild" = "latest"
|
"pipx:dmgbuild" = "latest"
|
||||||
"pipx:fonttools" = "latest"
|
"pipx:fonttools" = "latest"
|
||||||
"pipx:pipx" = "latest"
|
"pipx:pipx" = "latest"
|
||||||
|
"pipx:toml-sort" = "latest"
|
||||||
"pipx:yamllint" = "latest"
|
"pipx:yamllint" = "latest"
|
||||||
"ubi:rails/rails-new" = "latest"
|
1password = "latest"
|
||||||
1password-cli = "latest"
|
|
||||||
actionlint = "latest"
|
actionlint = "latest"
|
||||||
argo-rollouts = "latest"
|
argo-rollouts = "latest"
|
||||||
argocd = "latest"
|
argocd = "latest"
|
||||||
@@ -94,7 +99,7 @@ bat-extras = "latest"
|
|||||||
buf = "latest"
|
buf = "latest"
|
||||||
bun = "latest"
|
bun = "latest"
|
||||||
cargo-binstall = "latest"
|
cargo-binstall = "latest"
|
||||||
claude-code = "latest"
|
cloudflared = "latest"
|
||||||
crane = "latest"
|
crane = "latest"
|
||||||
ctop = "latest"
|
ctop = "latest"
|
||||||
difftastic = "latest"
|
difftastic = "latest"
|
||||||
@@ -104,6 +109,7 @@ dust = "latest"
|
|||||||
evans = "latest"
|
evans = "latest"
|
||||||
fd = "latest"
|
fd = "latest"
|
||||||
fzf = "latest"
|
fzf = "latest"
|
||||||
|
gemini = "latest"
|
||||||
gh = "latest"
|
gh = "latest"
|
||||||
gitu = "latest"
|
gitu = "latest"
|
||||||
go = "latest"
|
go = "latest"
|
||||||
@@ -118,8 +124,7 @@ helm = "latest"
|
|||||||
helmfile = "latest"
|
helmfile = "latest"
|
||||||
hexyl = "latest"
|
hexyl = "latest"
|
||||||
hivemind = "latest"
|
hivemind = "latest"
|
||||||
hugo-extended = "latest"
|
hwatch = "latest"
|
||||||
hwatch = "0.3.18"
|
|
||||||
jq = "latest"
|
jq = "latest"
|
||||||
jwt = "latest"
|
jwt = "latest"
|
||||||
jwtui = "latest"
|
jwtui = "latest"
|
||||||
@@ -132,13 +137,15 @@ kubelogin = "latest"
|
|||||||
kubens = "latest"
|
kubens = "latest"
|
||||||
kustomize = "latest"
|
kustomize = "latest"
|
||||||
lua = "latest"
|
lua = "latest"
|
||||||
|
lua-language-server = "latest"
|
||||||
markdownlint-cli2 = "latest"
|
markdownlint-cli2 = "latest"
|
||||||
node = "lts"
|
node = "lts"
|
||||||
|
opencode = "latest"
|
||||||
opentofu = "latest"
|
opentofu = "latest"
|
||||||
pnpm = "latest"
|
pnpm = "latest"
|
||||||
python = "latest"
|
python = "latest"
|
||||||
rclone = "latest"
|
rclone = "latest"
|
||||||
restish = "0.20.0"
|
restish = "latest"
|
||||||
ripgrep = "latest"
|
ripgrep = "latest"
|
||||||
ruby = "latest"
|
ruby = "latest"
|
||||||
rust = { version = "latest", components = "rust-analyzer,rust-src" }
|
rust = { version = "latest", components = "rust-analyzer,rust-src" }
|
||||||
@@ -161,6 +168,8 @@ uv = "latest"
|
|||||||
watchexec = "latest"
|
watchexec = "latest"
|
||||||
yj = "latest"
|
yj = "latest"
|
||||||
yq = "latest"
|
yq = "latest"
|
||||||
|
zig = "latest"
|
||||||
|
zls = "latest"
|
||||||
zoxide = "latest"
|
zoxide = "latest"
|
||||||
|
|
||||||
# Install ansible with passlib and bcrypt<4.1, as passlib is not compatible with
|
# Install ansible with passlib and bcrypt<4.1, as passlib is not compatible with
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# jimeh's Starship Config
|
# jimeh's Starship Config
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# Version: 0.4.0
|
# Version: 0.5.0
|
||||||
# URL: https://github.com/jimeh/dotfiles/blob/main/config/starship.toml
|
# URL: https://github.com/jimeh/dotfiles/blob/main/config/starship.toml
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# This is minimalistic Starship (https://starship.rs/) prompt setup with most
|
# This is minimalistic Starship (https://starship.rs/) prompt setup with most
|
||||||
@@ -9,7 +9,12 @@
|
|||||||
# picking of specific features to enable.
|
# picking of specific features to enable.
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# MARK: Format
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
add_newline = false
|
add_newline = false
|
||||||
|
|
||||||
format = """
|
format = """
|
||||||
$username\
|
$username\
|
||||||
$hostname\
|
$hostname\
|
||||||
@@ -20,15 +25,18 @@ $git_state\
|
|||||||
$git_metrics\
|
$git_metrics\
|
||||||
$git_status\
|
$git_status\
|
||||||
$hg_branch\
|
$hg_branch\
|
||||||
|
$fossil_branch\
|
||||||
|
$fossil_metrics\
|
||||||
|
$hg_state\
|
||||||
$line_break\
|
$line_break\
|
||||||
$character"""
|
$character"""
|
||||||
|
|
||||||
right_format = """
|
right_format = """
|
||||||
$localip\
|
$localip\
|
||||||
$shlvl\
|
$shlvl\
|
||||||
$singularity\
|
$singularity\
|
||||||
$kubernetes\
|
$kubernetes\
|
||||||
$vcsh\
|
$vcsh\
|
||||||
$fossil_branch\
|
|
||||||
$pijul_channel\
|
$pijul_channel\
|
||||||
$docker_context\
|
$docker_context\
|
||||||
$package\
|
$package\
|
||||||
@@ -43,6 +51,7 @@ $elixir\
|
|||||||
$elm\
|
$elm\
|
||||||
$erlang\
|
$erlang\
|
||||||
$fennel\
|
$fennel\
|
||||||
|
$fortran\
|
||||||
$gleam\
|
$gleam\
|
||||||
$golang\
|
$golang\
|
||||||
$guix_shell\
|
$guix_shell\
|
||||||
@@ -63,14 +72,17 @@ $php\
|
|||||||
$pulumi\
|
$pulumi\
|
||||||
$purescript\
|
$purescript\
|
||||||
$python\
|
$python\
|
||||||
|
$quarto\
|
||||||
$raku\
|
$raku\
|
||||||
$rlang\
|
$rlang\
|
||||||
$red\
|
$red\
|
||||||
$ruby\
|
$ruby\
|
||||||
$rust\
|
$rust\
|
||||||
$scala\
|
$scala\
|
||||||
|
$solidity\
|
||||||
$swift\
|
$swift\
|
||||||
$terraform\
|
$terraform\
|
||||||
|
$typst\
|
||||||
$vlang\
|
$vlang\
|
||||||
$vagrant\
|
$vagrant\
|
||||||
$zig\
|
$zig\
|
||||||
@@ -90,8 +102,11 @@ $custom\
|
|||||||
$cmd_duration\
|
$cmd_duration\
|
||||||
$status\
|
$status\
|
||||||
$line_break\
|
$line_break\
|
||||||
$direnv
|
$direnv\
|
||||||
|
$mise\
|
||||||
|
$nats\
|
||||||
$jobs\
|
$jobs\
|
||||||
|
$netns\
|
||||||
$shell\
|
$shell\
|
||||||
$sudo\
|
$sudo\
|
||||||
$battery\
|
$battery\
|
||||||
@@ -101,7 +116,7 @@ $container\
|
|||||||
$time"""
|
$time"""
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# Main left prompt components
|
# MARK: Left prompt
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
[username]
|
[username]
|
||||||
@@ -129,12 +144,12 @@ disabled = true
|
|||||||
[character]
|
[character]
|
||||||
success_symbol = '[❯](bold fg:118)'
|
success_symbol = '[❯](bold fg:118)'
|
||||||
error_symbol = '[❯](bold fg:46)'
|
error_symbol = '[❯](bold fg:46)'
|
||||||
vicmd_symbol = '[❮](bold fg:46)'
|
vimcmd_symbol = '[❮](bold fg:46)'
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# Source Control
|
# MARK: Source Control
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
#
|
|
||||||
[git_branch]
|
[git_branch]
|
||||||
format = '([$symbol$branch]($style))'
|
format = '([$symbol$branch]($style))'
|
||||||
style = 'fg:51'
|
style = 'fg:51'
|
||||||
@@ -176,9 +191,9 @@ symbol = ''
|
|||||||
truncation_length = 24
|
truncation_length = 24
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# Right prompt "status" components
|
# MARK: Right prompt
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
#
|
|
||||||
[shlvl]
|
[shlvl]
|
||||||
symbol = ' '
|
symbol = ' '
|
||||||
format = '( [$symbol$shlvl]($style))'
|
format = '( [$symbol$shlvl]($style))'
|
||||||
@@ -254,16 +269,18 @@ style = "bold fg:239"
|
|||||||
disabled = false
|
disabled = false
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# Languages
|
# MARK: Languages
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
#
|
|
||||||
[buf]
|
[buf]
|
||||||
symbol = ' '
|
symbol = ' '
|
||||||
format = '( [$symbol($version)]($style))'
|
format = '( [$symbol($version)]($style))'
|
||||||
disabled = false
|
disabled = false
|
||||||
|
|
||||||
[bun]
|
[bun]
|
||||||
|
symbol = ' '
|
||||||
format = '( [$symbol$version]($style))'
|
format = '( [$symbol$version]($style))'
|
||||||
|
style = 'bold blue'
|
||||||
disabled = false
|
disabled = false
|
||||||
|
|
||||||
[c]
|
[c]
|
||||||
@@ -294,7 +311,7 @@ disabled = false
|
|||||||
|
|
||||||
[deno]
|
[deno]
|
||||||
format = '( [$symbol$version]($style))'
|
format = '( [$symbol$version]($style))'
|
||||||
disabled = true
|
disabled = false
|
||||||
|
|
||||||
[dotnet]
|
[dotnet]
|
||||||
symbol = ' '
|
symbol = ' '
|
||||||
@@ -320,6 +337,10 @@ disabled = true
|
|||||||
format = '( [$symbol($version)]($style))'
|
format = '( [$symbol($version)]($style))'
|
||||||
disabled = true
|
disabled = true
|
||||||
|
|
||||||
|
[fortran]
|
||||||
|
format = '( [$symbol$version]($style))'
|
||||||
|
disabled = true
|
||||||
|
|
||||||
[gleam]
|
[gleam]
|
||||||
format = '( [$symbol($version)]($style))'
|
format = '( [$symbol($version)]($style))'
|
||||||
disabled = false
|
disabled = false
|
||||||
@@ -420,6 +441,10 @@ symbol = ' '
|
|||||||
format = '( [$symbol$version]($style))'
|
format = '( [$symbol$version]($style))'
|
||||||
disabled = true
|
disabled = true
|
||||||
|
|
||||||
|
[solidity]
|
||||||
|
format = '( [$symbol$version]($style))'
|
||||||
|
disabled = false
|
||||||
|
|
||||||
[swift]
|
[swift]
|
||||||
symbol = ' '
|
symbol = ' '
|
||||||
format = '( [$symbol$version]($style))'
|
format = '( [$symbol$version]($style))'
|
||||||
@@ -434,9 +459,9 @@ format = '( [$symbol$version]($style))'
|
|||||||
disabled = false
|
disabled = false
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# Tools
|
# MARK: Tools
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
#
|
|
||||||
[aws]
|
[aws]
|
||||||
symbol = ' '
|
symbol = ' '
|
||||||
format = '( [$symbol($profile)( \($region\))( \[$duration\])]($style))'
|
format = '( [$symbol($profile)( \($region\))( \[$duration\])]($style))'
|
||||||
@@ -485,7 +510,7 @@ format = '( [$symbol$account(@$domain)(\($region\))]($style))'
|
|||||||
disabled = true
|
disabled = true
|
||||||
|
|
||||||
[gradle]
|
[gradle]
|
||||||
fomat = '( [$symbol($version)]($style))'
|
format = '( [$symbol($version)]($style))'
|
||||||
disabled = true
|
disabled = true
|
||||||
|
|
||||||
[helm]
|
[helm]
|
||||||
@@ -501,6 +526,18 @@ disabled = false
|
|||||||
format = '( [$symbol$project]($style))'
|
format = '( [$symbol$project]($style))'
|
||||||
disabled = true
|
disabled = true
|
||||||
|
|
||||||
|
[mise]
|
||||||
|
format = '( [$symbol$health]($style))'
|
||||||
|
disabled = true
|
||||||
|
|
||||||
|
[nats]
|
||||||
|
format = '( [$symbol$name]($style))'
|
||||||
|
disabled = false
|
||||||
|
|
||||||
|
[netns]
|
||||||
|
format = '( [$symbol \[$name\]]($style))'
|
||||||
|
disabled = true
|
||||||
|
|
||||||
[nix_shell]
|
[nix_shell]
|
||||||
symbol = ' '
|
symbol = ' '
|
||||||
format = '( [$symbol$state(\($name\))]($style))'
|
format = '( [$symbol$state(\($name\))]($style))'
|
||||||
@@ -528,6 +565,10 @@ disabled = true
|
|||||||
format = '( [$symbol$stack]($style))'
|
format = '( [$symbol$stack]($style))'
|
||||||
disabled = true
|
disabled = true
|
||||||
|
|
||||||
|
[quarto]
|
||||||
|
format = '( [$symbol$version]($style))'
|
||||||
|
disabled = false
|
||||||
|
|
||||||
[singularity]
|
[singularity]
|
||||||
format = '( [$symbol\[$env\]]($style))'
|
format = '( [$symbol\[$env\]]($style))'
|
||||||
disabled = true
|
disabled = true
|
||||||
@@ -540,6 +581,10 @@ disabled = true
|
|||||||
format = '( [$symbol$workspace]($style))'
|
format = '( [$symbol$workspace]($style))'
|
||||||
disabled = false
|
disabled = false
|
||||||
|
|
||||||
|
[typst]
|
||||||
|
format = '( [$symbol$version]($style))'
|
||||||
|
disabled = false
|
||||||
|
|
||||||
[vagrant]
|
[vagrant]
|
||||||
format = '( [$symbol($version)]($style))'
|
format = '( [$symbol($version)]($style))'
|
||||||
disabled = false
|
disabled = false
|
||||||
|
|||||||
4
default.nix
Normal file
4
default.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
let
|
||||||
|
flake = builtins.getFlake "git+file://${builtins.toString ./.}";
|
||||||
|
in
|
||||||
|
flake.packages.${builtins.currentSystem}.default
|
||||||
27
flake.lock
generated
Normal file
27
flake.lock
generated
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1768302833,
|
||||||
|
"narHash": "sha256-h5bRFy9bco+8QcK7rGoOiqMxMbmn21moTACofNLRMP4=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "61db79b0c6b838d9894923920b612048e1201926",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
36
flake.nix
Normal file
36
flake.nix
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
description = "Global packages for dotfiles";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ self, nixpkgs }:
|
||||||
|
let
|
||||||
|
systems = [
|
||||||
|
"x86_64-darwin"
|
||||||
|
"aarch64-darwin"
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-linux"
|
||||||
|
];
|
||||||
|
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages = forAllSystems (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
default = pkgs.buildEnv {
|
||||||
|
name = "dotfiles-packages";
|
||||||
|
paths = [
|
||||||
|
pkgs.nil
|
||||||
|
pkgs.nixfmt
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
28
gitignore
28
gitignore
@@ -1,22 +1,34 @@
|
|||||||
|
**/._zinit/*
|
||||||
|
**/.agents/drafts/
|
||||||
|
**/.agents/plans/
|
||||||
|
**/.agents/reviews/
|
||||||
|
**/.claude/drafts/
|
||||||
|
**/.claude/plans/
|
||||||
|
**/.claude/reviews/
|
||||||
|
**/.claude/settings.local.json
|
||||||
|
**/.claude/worktrees/
|
||||||
|
**/.vscode/settings.json
|
||||||
|
**/.vscode/settings.local.json
|
||||||
|
**/chart/preprod-values.yaml
|
||||||
|
**/chart/production-values.yaml
|
||||||
|
**/chart/staging-values.yaml
|
||||||
|
**/log/*.bz2
|
||||||
|
**/log/*.gz
|
||||||
|
**/test/dummy/log/*.bz2
|
||||||
|
**/test/dummy/log/*.gz
|
||||||
|
**/vendor/bundle
|
||||||
.AppleDouble
|
.AppleDouble
|
||||||
.DS_Store
|
.DS_Store
|
||||||
._zinit/*
|
|
||||||
.bin
|
.bin
|
||||||
.bundle
|
.bundle
|
||||||
.byebug_history
|
.byebug_history
|
||||||
.dir-locals.el
|
.dir-locals.el
|
||||||
|
.envrc
|
||||||
.mise.*local.toml
|
.mise.*local.toml
|
||||||
.mise.local.toml
|
|
||||||
.projectile
|
.projectile
|
||||||
.stfolder
|
.stfolder
|
||||||
.stignore
|
.stignore
|
||||||
.vagrant
|
.vagrant
|
||||||
.vscode/settings.json
|
|
||||||
.zinitrc.zsh
|
.zinitrc.zsh
|
||||||
log/*.bz2
|
|
||||||
log/*.gz
|
|
||||||
mise.*local.toml
|
mise.*local.toml
|
||||||
routes.txt
|
routes.txt
|
||||||
test/dummy/log/*.bz2
|
|
||||||
test/dummy/log/*.gz
|
|
||||||
vendor/bundle
|
|
||||||
|
|||||||
@@ -11,12 +11,13 @@ local function init_hotkeys()
|
|||||||
hs.hotkey.bind({ 'cmd', 'alt', 'ctrl' }, 'S', apptoggle.showAppInfo)
|
hs.hotkey.bind({ 'cmd', 'alt', 'ctrl' }, 'S', apptoggle.showAppInfo)
|
||||||
|
|
||||||
apptoggle:bind({ 'cmd', 'alt', 'ctrl' }, 'A', { 'Activity Monitor' })
|
apptoggle:bind({ 'cmd', 'alt', 'ctrl' }, 'A', { 'Activity Monitor' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, '2', { 'Open WebUI' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, '1', { 'Codex' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, '4', { 'Claude' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, '2', { 'Claude' })
|
||||||
|
apptoggle:bind({ 'cmd', 'ctrl' }, '3', { 'Conductor' })
|
||||||
|
apptoggle:bind({ 'cmd', 'ctrl' }, '4', { 'ChatGPT Atlas' }, { 'ChatGPT' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'A', { 'Argo CD' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'A', { 'Argo CD' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'B', { 'TablePlus' }, { 'Lens' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'B', { 'TablePlus' }, { 'Lens' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'D', { 'Mail+ for Gmail' }, { 'Notion Mail' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'D', { 'Mail+ for Gmail' }, { 'Notion Mail' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'E', { 'Cursor' })
|
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'F', { 'GitButler' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'F', { 'GitButler' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'G', { 'Emacs', '/Applications/Emacs.app' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'G', { 'Emacs', '/Applications/Emacs.app' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'T', { 'TeamSpeak 3', '/Applications/TeamSpeak 3 Client.app' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'T', { 'TeamSpeak 3', '/Applications/TeamSpeak 3 Client.app' })
|
||||||
@@ -29,6 +30,7 @@ local function init_hotkeys()
|
|||||||
{ 'Google Calendar' }
|
{ 'Google Calendar' }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'E', { 'Cursor' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'W',
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'W',
|
||||||
{ 'Code - Insiders', '/Applications/Visual Studio Code - Insiders.app' },
|
{ 'Code - Insiders', '/Applications/Visual Studio Code - Insiders.app' },
|
||||||
{ 'Code', '/Applications/Visual Studio Code.app' }
|
{ 'Code', '/Applications/Visual Studio Code.app' }
|
||||||
|
|||||||
@@ -11,7 +11,10 @@ local function init_hotkeys()
|
|||||||
hs.hotkey.bind({ 'cmd', 'alt', 'ctrl' }, 'S', apptoggle.showAppInfo)
|
hs.hotkey.bind({ 'cmd', 'alt', 'ctrl' }, 'S', apptoggle.showAppInfo)
|
||||||
|
|
||||||
apptoggle:bind({ 'cmd', 'alt', 'ctrl' }, 'A', { 'Activity Monitor' })
|
apptoggle:bind({ 'cmd', 'alt', 'ctrl' }, 'A', { 'Activity Monitor' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, '4', { 'Claude' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, '1', { 'Codex' })
|
||||||
|
apptoggle:bind({ 'cmd', 'ctrl' }, '2', { 'Claude' })
|
||||||
|
apptoggle:bind({ 'cmd', 'ctrl' }, '3', { 'Conductor' })
|
||||||
|
apptoggle:bind({ 'cmd', 'ctrl' }, '4', { 'ChatGPT' }, { 'ChatGPT Atlas' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'A', { 'Messages' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'A', { 'Messages' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'B', { 'TablePlus' }, { 'Sequel Pro' }, { 'Lens' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'B', { 'TablePlus' }, { 'Sequel Pro' }, { 'Lens' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'D', { 'Mail+ for Gmail' }, { 'Mimestream' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'D', { 'Mail+ for Gmail' }, { 'Mimestream' })
|
||||||
@@ -22,14 +25,9 @@ local function init_hotkeys()
|
|||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'X', { 'Notion' }, { 'Obsidian' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'X', { 'Notion' }, { 'Obsidian' })
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'Z', { 'WhatsApp' })
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'Z', { 'WhatsApp' })
|
||||||
|
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, '2',
|
|
||||||
{ 'ChatGPT' },
|
|
||||||
{ 'ChatGPT Atlas' }
|
|
||||||
)
|
|
||||||
|
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'W',
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'W',
|
||||||
{ 'Code - Insiders', '/Applications/Visual Studio Code - Insiders.app' },
|
{ 'Code', '/Applications/Visual Studio Code.app' },
|
||||||
{ 'Code', '/Applications/Visual Studio Code.app' }
|
{ 'Code - Insiders', '/Applications/Visual Studio Code - Insiders.app' }
|
||||||
)
|
)
|
||||||
|
|
||||||
apptoggle:bind({ 'cmd', 'ctrl' }, 'C',
|
apptoggle:bind({ 'cmd', 'ctrl' }, 'C',
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ local wm = {
|
|||||||
animationDuration = 0.0,
|
animationDuration = 0.0,
|
||||||
gridSizes = { default = '30x20', interactive = '8x4' },
|
gridSizes = { default = '30x20', interactive = '8x4' },
|
||||||
gridTextSize = 50,
|
gridTextSize = 50,
|
||||||
margins = { w = 4, h = 4 }
|
margins = { w = 0, h = 0 }
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Initialize and register keybindings
|
-- Initialize and register keybindings
|
||||||
|
|||||||
@@ -87,6 +87,11 @@ install_private() {
|
|||||||
"$ROOT_PATH/$PRIVATE_PATH"
|
"$ROOT_PATH/$PRIVATE_PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
install_agentic() {
|
||||||
|
git_clone "git@github.com:jimeh/agentic.git" \
|
||||||
|
"$HOME/.config/agentic"
|
||||||
|
}
|
||||||
|
|
||||||
install_launch_agents() {
|
install_launch_agents() {
|
||||||
mkdir -p "$HOME/Library/LaunchAgents"
|
mkdir -p "$HOME/Library/LaunchAgents"
|
||||||
for file in $ROOT_PATH/launch_agents/*.plist; do
|
for file in $ROOT_PATH/launch_agents/*.plist; do
|
||||||
@@ -256,6 +261,7 @@ display_help() {
|
|||||||
echo ' info: Display target and source directory information.'
|
echo ' info: Display target and source directory information.'
|
||||||
echo ' emacs_config: Install Emacs configuration.'
|
echo ' emacs_config: Install Emacs configuration.'
|
||||||
echo ' private: Install private dotfiles.'
|
echo ' private: Install private dotfiles.'
|
||||||
|
echo ' agentic: Clone agentic repo to ~/.config/agentic.'
|
||||||
echo ' homebrew: Install Homebrew (Mac OS X only).'
|
echo ' homebrew: Install Homebrew (Mac OS X only).'
|
||||||
echo ' rbenv: Install rbenv, a Ruby version manager.'
|
echo ' rbenv: Install rbenv, a Ruby version manager.'
|
||||||
echo ' launch_agents: Install launchd plists to ~/Library/LaunchAgents/'
|
echo ' launch_agents: Install launchd plists to ~/Library/LaunchAgents/'
|
||||||
@@ -278,6 +284,9 @@ case "$1" in
|
|||||||
private)
|
private)
|
||||||
install_private
|
install_private
|
||||||
;;
|
;;
|
||||||
|
agentic)
|
||||||
|
install_agentic
|
||||||
|
;;
|
||||||
homebrew | brew)
|
homebrew | brew)
|
||||||
install_homebrew
|
install_homebrew
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -14,4 +14,7 @@ blanks-around-fences: # MD031
|
|||||||
line-length: # MD013
|
line-length: # MD013
|
||||||
# Allow lines up to 120 characters.
|
# Allow lines up to 120 characters.
|
||||||
line_length: 80
|
line_length: 80
|
||||||
|
code_blocks: true
|
||||||
|
ignore_code_blocks: true
|
||||||
|
code_block_line_length: 280
|
||||||
tables: false
|
tables: false
|
||||||
|
|||||||
287
userscripts/duckduckgo-old-school-blue.user.js
Normal file
287
userscripts/duckduckgo-old-school-blue.user.js
Normal file
@@ -0,0 +1,287 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name DuckDuckGo Old School Blue
|
||||||
|
// @description Dark theme inspired by Kagi's Old School dark theme.
|
||||||
|
// @version 1.0.0
|
||||||
|
// @namespace jimeh.me
|
||||||
|
// @downloadURL https://github.com/jimeh/dotfiles/raw/main/userscripts/duckduckgo-old-school-blue.user.js
|
||||||
|
// @updateURL https://github.com/jimeh/dotfiles/raw/main/userscripts/duckduckgo-old-school-blue.user.js
|
||||||
|
// @inject-into content
|
||||||
|
// @run-at document-end
|
||||||
|
// @match *://duckduckgo.com/*
|
||||||
|
// ==/UserScript==
|
||||||
|
(function () {
|
||||||
|
if (
|
||||||
|
window.location.hostname === "duckduckgo.com" &&
|
||||||
|
!window.location.pathname.startsWith("/duckduckgo-help-pages/")
|
||||||
|
) {
|
||||||
|
const css = `
|
||||||
|
/*
|
||||||
|
To be used with the following DuckDuckGo settings:
|
||||||
|
{"k18":"1","k21":"27293d","k7":"171824","k9":"8ab4f8","ka":"h","kaa":"c58af9","kae":"d","kj":"171824","km":"m","kt":"h","kx":"7aa1a8"}
|
||||||
|
|
||||||
|
These can be forcibly applied with the following JavaScript snippet:
|
||||||
|
Object.entries({18:"1",21:"27293d",7:"171824",9:"8ab4f8",a:"h",aa:"c58af9",ae:"d",j:"171824",m:"m",t:"h",x:"7aa1a8"}).forEach((([a,e])=>{document.cookie=\`\${a}=\${e};path=/;samesite=lax;expires=\${new Date(Date.now()+31536e6).toUTCString()}\`}));
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
--userstyle-bg-base: #171824;
|
||||||
|
--userstyle-bg-light-1: #1f2030;
|
||||||
|
--userstyle-bg-light-2: #27293D;
|
||||||
|
--userstyle-bg-light-3: #30334B;
|
||||||
|
--userstyle-bg-light-4: #373B57;
|
||||||
|
--userstyle-bg-light-5: #3F4464;
|
||||||
|
|
||||||
|
/* Search box background on results page */
|
||||||
|
--sds-color-background-01: var(--userstyle-bg-light-2);
|
||||||
|
|
||||||
|
/* Search box on landing page */
|
||||||
|
--theme-ai-searchbox-bg: var(--userstyle-bg-light-2);
|
||||||
|
--theme-ai-searchbox-bg--focused: var(--userstyle-bg-light-2);
|
||||||
|
|
||||||
|
--theme-col-bg-header: var(--userstyle-bg-base);
|
||||||
|
--theme-col-bg-page: var(--userstyle-bg-base);
|
||||||
|
--theme-col-bg-page-alt-1: var(--userstyle-bg-light-4);
|
||||||
|
--theme-col-bg-page-alt-2: var(--userstyle-bg-light-5);
|
||||||
|
--theme-col-bg-page-alt-3: var(--userstyle-bg-light-3);
|
||||||
|
|
||||||
|
--theme-assist-bg-chat-system: var(--userstyle-bg-light-2);
|
||||||
|
|
||||||
|
--theme-col-bg-button-secondary: var(--userstyle-bg-light-3);
|
||||||
|
--theme-col-bg-button-secondary-hover: var(--userstyle-bg-light-4);
|
||||||
|
--theme-col-bg-button-secondary-active: var(--userstyle-bg-light-5);
|
||||||
|
--theme-col-bg-button-secondary-disabled: var(--userstyle-bg-light-1);
|
||||||
|
|
||||||
|
--sds-color-background-utility: var(--userstyle-bg-light-3);
|
||||||
|
--sds-color-background-utility-state-01: var(--userstyle-bg-light-4);
|
||||||
|
--sds-color-background-utility-state-02: var(--userstyle-bg-light-5);
|
||||||
|
|
||||||
|
--sds-color-background-utility-alt: var(--userstyle-bg-light-2);
|
||||||
|
--sds-color-background-utility-alt-state-01: var(--userstyle-bg-light-3);
|
||||||
|
--sds-color-background-utility-alt-state-02: var(--userstyle-bg-light-4);
|
||||||
|
|
||||||
|
--sds-color-border-01: var(--userstyle-bg-light-3);
|
||||||
|
|
||||||
|
--theme-col-txt-title: #8ab4f8;
|
||||||
|
--theme-col-txt-title-visited: #c58af9;
|
||||||
|
|
||||||
|
--theme-col-txt-snippet: #cccccc;
|
||||||
|
--theme-col-txt-url: #7aa1a8;
|
||||||
|
--theme-col-txt-url-domain: #7aa1a8;
|
||||||
|
--theme-col-txt-url-path: var(--theme-col-txt-url-domain);
|
||||||
|
|
||||||
|
--sds-color-background-container-01: var(--userstyle-bg-light-2);
|
||||||
|
--sds-color-background-container-02: var(--userstyle-bg-light-2);
|
||||||
|
--theme-col-bg-ui: var(--userstyle-bg-light-2);
|
||||||
|
--theme-col-bg-ui-header: var(--userstyle-bg-light-2);
|
||||||
|
--theme-col-bg-card: var(--userstyle-bg-light-2);
|
||||||
|
--theme-col-bg-card-header: var(--userstyle-bg-light-2);
|
||||||
|
|
||||||
|
--theme-col-bg-button-ghost-hover: var(--userstyle-bg-light-4);
|
||||||
|
--theme-col-bg-button-ghost-active: var(--userstyle-bg-light-5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark .chip-select_root__xmFA3 {
|
||||||
|
--chip-select-bg: var(--userstyle-bg-light-1);
|
||||||
|
--chip-select-indicator-bg: var(--userstyle-bg-light-3);
|
||||||
|
--chip-select-indicator-bg--hover: var(--userstyle-bg-light-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-wrap {
|
||||||
|
box-shadow: 0 1px 0 var(--userstyle-bg-light-3);
|
||||||
|
background-color: var(--theme-col-bg-header) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-related-search-exp.dark-bg .related-searches__item {
|
||||||
|
background-color: var(--userstyle-bg-light-3);
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
.body--home,
|
||||||
|
.site-wrapper,
|
||||||
|
.region__body,
|
||||||
|
.badge-link,
|
||||||
|
.module--carousel__image-wrapper,
|
||||||
|
.result__image,
|
||||||
|
.vertical--map__sidebar,
|
||||||
|
.vertical--map__sidebar__header,
|
||||||
|
.page-chrome_newtab,
|
||||||
|
.zci--type--tiles:not(.is-fallback).is-full-page.is-expanded,
|
||||||
|
.zci--type--tiles:not(.is-fallback).is-full-page.is-expanded .metabar:not(.is-stuck) {
|
||||||
|
background-color: var(--theme-col-bg-page) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu,
|
||||||
|
.nav-menu--slideout {
|
||||||
|
background-color: var(--userstyle-bg-light-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical--map--sidebar-left .vertical--map__sidebar__header,
|
||||||
|
.vertical--map--sidebar-left .has-requery .vertical--map__sidebar__header,
|
||||||
|
.vertical--map__sidebar__header--mobile,
|
||||||
|
.map-requery-mobile,
|
||||||
|
.footer,
|
||||||
|
.footer--mobile {
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
background-color: var(--userstyle-bg-base);
|
||||||
|
box-shadow: 0 1px 0 var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-loc-tooltip__address,
|
||||||
|
.modal__header {
|
||||||
|
background: var(--userstyle-bg-light-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.module:not(.module--carousel):not(.module--placeholder):not(.module--translations):not(.module__chromeless),
|
||||||
|
.modal--popout .modal__box,
|
||||||
|
.modal__box,
|
||||||
|
.sidebar-modules .module,
|
||||||
|
.results--main .result:not(.result--ad).highlight,
|
||||||
|
.module .module--carousel__item,
|
||||||
|
.user-loc-cta,
|
||||||
|
.address-detail,
|
||||||
|
.modal--dropdown.modal--popout .modal__box,
|
||||||
|
.tile--info,
|
||||||
|
.place-detail,
|
||||||
|
.badge-link,
|
||||||
|
.atb-banner__bottom,
|
||||||
|
.multi-step-mobile-onboarding__step__content,
|
||||||
|
.is-mobile .results_links_deep,
|
||||||
|
.is-mobile .results_links,
|
||||||
|
.is-mobile .related-searches,
|
||||||
|
.user-loc-tooltip,
|
||||||
|
.anomaly-modal__modal {
|
||||||
|
border: 1px solid var(--userstyle-bg-light-3);
|
||||||
|
background: var(--userstyle-bg-light-2);
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal--dropdown--settings .settings-dropdown--section .frm__field .frm__select select {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal__list__link:hover,
|
||||||
|
.modal__list__link.is-active,
|
||||||
|
.modal__list__link.is-highlighted,
|
||||||
|
.modal--dropdown--region .modal__list__link.is-highlighted,
|
||||||
|
.highlight .result__image,
|
||||||
|
.switch,
|
||||||
|
.modal--dropdown--settings .settings-dropdown--section .frm__field .frm__switch .frm__switch__label.btn {
|
||||||
|
background-color: var(--userstyle-bg-base);
|
||||||
|
}
|
||||||
|
|
||||||
|
.search--home,
|
||||||
|
.search--header {
|
||||||
|
background-color: var(--userstyle-bg-light-2);
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.search__button:hover,
|
||||||
|
.search__button:focus,
|
||||||
|
.search--hover .search__button,
|
||||||
|
.search--hover .search__button:focus,
|
||||||
|
.search--header.has-text.search--hover .search__button,
|
||||||
|
.search--header.has-text.search--focus .search__button,
|
||||||
|
.search--header.has-text.search--hover .search__button:hover,
|
||||||
|
.search--header.has-text.search--focus .search__button:hover,
|
||||||
|
.search--home.has-text .search__button,
|
||||||
|
.search--home.has-text .search__button:focus,
|
||||||
|
.search--home.has-text .search__button:hover {
|
||||||
|
background-color: var(--userstyle-bg-light-4);
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acp-wrap,
|
||||||
|
.acp-footer {
|
||||||
|
background-color: var(--userstyle-bg-light-2);
|
||||||
|
border-color: var(--userstyle-bg-light-5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.acp--highlight {
|
||||||
|
background-color: var(--userstyle-bg-light-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.jyBaPv1HPGOoWrXSAjiu .T265XEcezvjUhK71U8pN {
|
||||||
|
box-shadow: 0 0 0 1px var(--userstyle-bg-light-3), 0 2px 3px 0 rgba(0, 0, 0, .06);
|
||||||
|
}
|
||||||
|
|
||||||
|
.set-head__menu .set-tab,
|
||||||
|
.set-tab:visited {
|
||||||
|
background-color: var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.set-head__menu .set-tab:hover {
|
||||||
|
background-color: var(--userstyle-bg-light-5);
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
code,
|
||||||
|
.set-bookmarklet__input,
|
||||||
|
.set-bookmarklet__data,
|
||||||
|
.btn,
|
||||||
|
.btn:visited,
|
||||||
|
.btn:active,
|
||||||
|
.btn.btn--primary,
|
||||||
|
.btn.btn--secondary,
|
||||||
|
.btn--primary:hover,
|
||||||
|
.btn.is-disabled,
|
||||||
|
.btn.is-disabled:hover,
|
||||||
|
input,
|
||||||
|
textarea,
|
||||||
|
.frm__input,
|
||||||
|
.frm__text,
|
||||||
|
.detail--xd .c-detail__btn,
|
||||||
|
.set-bookmarklet,
|
||||||
|
.set-reset,
|
||||||
|
.frm__select,
|
||||||
|
.frm__select select,
|
||||||
|
.zci--json_validator textarea,
|
||||||
|
.colorpicker,
|
||||||
|
.feedback-modal__submit.is-disabled,
|
||||||
|
.feedback-modal__submit.is-disabled:hover,
|
||||||
|
.feedback-modal__submit.is-disabled:active,
|
||||||
|
.feedback-modal__submit.is-disabled:focus,
|
||||||
|
.btn.btn--skeleton:hover {
|
||||||
|
background-color: var(--userstyle-bg-light-3);
|
||||||
|
border-color: transparent;
|
||||||
|
color: #eeeeee;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cloudsave,
|
||||||
|
.set-bookmarklet__detail,
|
||||||
|
.set-reset__detail {
|
||||||
|
background: var(--userstyle-bg-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.set-head,
|
||||||
|
.set-thumbnail__img,
|
||||||
|
.set-main-footer,
|
||||||
|
.region__header__section--current,
|
||||||
|
.badge-link,
|
||||||
|
.frm__color__swatch {
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.frm__hr {
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu--feedback,
|
||||||
|
[data-testid="feedback-prompt"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
let styleElm = document.createElement("style");
|
||||||
|
if (styleElm.styleSheet) {
|
||||||
|
styleElm.styleSheet.cssText = css; // Support for IE
|
||||||
|
} else {
|
||||||
|
styleElm.appendChild(document.createTextNode(css));
|
||||||
|
}
|
||||||
|
document.getElementsByTagName("head")[0].appendChild(styleElm);
|
||||||
|
}
|
||||||
|
})();
|
||||||
273
userstyles/duckduckgo-old-school-blue.user.css
Normal file
273
userstyles/duckduckgo-old-school-blue.user.css
Normal file
@@ -0,0 +1,273 @@
|
|||||||
|
/* ==UserStyle==
|
||||||
|
@name DuckDuckGo Old School Blue
|
||||||
|
@description Dark theme inspired by Kagi's Old School dark theme.
|
||||||
|
@version 1.0.0
|
||||||
|
@license CC0-1.0
|
||||||
|
@author Jim Myhrberg
|
||||||
|
@namespace jimeh.me
|
||||||
|
@homepageURL https://github.com/jimeh/dotfiles/blob/main/userstyles/duckduckgo-old-school-blue.user.css
|
||||||
|
@updateURL https://github.com/jimeh/dotfiles/raw/main/userstyles/duckduckgo-old-school-blue.css
|
||||||
|
|
||||||
|
==/UserStyle== */
|
||||||
|
@-moz-document regexp("https?:\\/\\/duckduckgo\\.com\\/(?!duckduckgo-help-pages\\/).*") {
|
||||||
|
|
||||||
|
/*
|
||||||
|
To be used with the following DuckDuckGo settings:
|
||||||
|
{"k18":"1","k21":"27293d","k7":"171824","k9":"8ab4f8","ka":"h","kaa":"c58af9","kae":"d","kj":"171824","km":"m","kt":"h","kx":"7aa1a8"}
|
||||||
|
|
||||||
|
These can be forcibly applied with the following JavaScript snippet:
|
||||||
|
Object.entries({18:"1",21:"27293d",7:"171824",9:"8ab4f8",a:"h",aa:"c58af9",ae:"d",j:"171824",m:"m",t:"h",x:"7aa1a8"}).forEach((([a,e])=>{document.cookie=`${a}=${e};path=/;samesite=lax;expires=${new Date(Date.now()+31536e6).toUTCString()}`}));
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
--userstyle-bg-base: #171824;
|
||||||
|
--userstyle-bg-light-1: #1f2030;
|
||||||
|
--userstyle-bg-light-2: #27293D;
|
||||||
|
--userstyle-bg-light-3: #30334B;
|
||||||
|
--userstyle-bg-light-4: #373B57;
|
||||||
|
--userstyle-bg-light-5: #3F4464;
|
||||||
|
|
||||||
|
/* Search box background on results page */
|
||||||
|
--sds-color-background-01: var(--userstyle-bg-light-2);
|
||||||
|
|
||||||
|
/* Search box on landing page */
|
||||||
|
--theme-ai-searchbox-bg: var(--userstyle-bg-light-2);
|
||||||
|
--theme-ai-searchbox-bg--focused: var(--userstyle-bg-light-2);
|
||||||
|
|
||||||
|
--theme-col-bg-header: var(--userstyle-bg-base);
|
||||||
|
--theme-col-bg-page: var(--userstyle-bg-base);
|
||||||
|
--theme-col-bg-page-alt-1: var(--userstyle-bg-light-4);
|
||||||
|
--theme-col-bg-page-alt-2: var(--userstyle-bg-light-5);
|
||||||
|
--theme-col-bg-page-alt-3: var(--userstyle-bg-light-3);
|
||||||
|
|
||||||
|
--theme-assist-bg-chat-system: var(--userstyle-bg-light-2);
|
||||||
|
|
||||||
|
--theme-col-bg-button-secondary: var(--userstyle-bg-light-3);
|
||||||
|
--theme-col-bg-button-secondary-hover: var(--userstyle-bg-light-4);
|
||||||
|
--theme-col-bg-button-secondary-active: var(--userstyle-bg-light-5);
|
||||||
|
--theme-col-bg-button-secondary-disabled: var(--userstyle-bg-light-1);
|
||||||
|
|
||||||
|
--sds-color-background-utility: var(--userstyle-bg-light-3);
|
||||||
|
--sds-color-background-utility-state-01: var(--userstyle-bg-light-4);
|
||||||
|
--sds-color-background-utility-state-02: var(--userstyle-bg-light-5);
|
||||||
|
|
||||||
|
--sds-color-background-utility-alt: var(--userstyle-bg-light-2);
|
||||||
|
--sds-color-background-utility-alt-state-01: var(--userstyle-bg-light-3);
|
||||||
|
--sds-color-background-utility-alt-state-02: var(--userstyle-bg-light-4);
|
||||||
|
|
||||||
|
--sds-color-border-01: var(--userstyle-bg-light-3);
|
||||||
|
|
||||||
|
--theme-col-txt-title: #8ab4f8;
|
||||||
|
--theme-col-txt-title-visited: #c58af9;
|
||||||
|
|
||||||
|
--theme-col-txt-snippet: #cccccc;
|
||||||
|
--theme-col-txt-url: #7aa1a8;
|
||||||
|
--theme-col-txt-url-domain: #7aa1a8;
|
||||||
|
--theme-col-txt-url-path: var(--theme-col-txt-url-domain);
|
||||||
|
|
||||||
|
--sds-color-background-container-01: var(--userstyle-bg-light-2);
|
||||||
|
--sds-color-background-container-02: var(--userstyle-bg-light-2);
|
||||||
|
--theme-col-bg-ui: var(--userstyle-bg-light-2);
|
||||||
|
--theme-col-bg-ui-header: var(--userstyle-bg-light-2);
|
||||||
|
--theme-col-bg-card: var(--userstyle-bg-light-2);
|
||||||
|
--theme-col-bg-card-header: var(--userstyle-bg-light-2);
|
||||||
|
|
||||||
|
--theme-col-bg-button-ghost-hover: var(--userstyle-bg-light-4);
|
||||||
|
--theme-col-bg-button-ghost-active: var(--userstyle-bg-light-5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark .chip-select_root__xmFA3 {
|
||||||
|
--chip-select-bg: var(--userstyle-bg-light-1);
|
||||||
|
--chip-select-indicator-bg: var(--userstyle-bg-light-3);
|
||||||
|
--chip-select-indicator-bg--hover: var(--userstyle-bg-light-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-wrap {
|
||||||
|
box-shadow: 0 1px 0 var(--userstyle-bg-light-3);
|
||||||
|
background-color: var(--theme-col-bg-header) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-related-search-exp.dark-bg .related-searches__item {
|
||||||
|
background-color: var(--userstyle-bg-light-3);
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
.body--home,
|
||||||
|
.site-wrapper,
|
||||||
|
.region__body,
|
||||||
|
.badge-link,
|
||||||
|
.module--carousel__image-wrapper,
|
||||||
|
.result__image,
|
||||||
|
.vertical--map__sidebar,
|
||||||
|
.vertical--map__sidebar__header,
|
||||||
|
.page-chrome_newtab,
|
||||||
|
.zci--type--tiles:not(.is-fallback).is-full-page.is-expanded,
|
||||||
|
.zci--type--tiles:not(.is-fallback).is-full-page.is-expanded .metabar:not(.is-stuck) {
|
||||||
|
background-color: var(--theme-col-bg-page) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu,
|
||||||
|
.nav-menu--slideout {
|
||||||
|
background-color: var(--userstyle-bg-light-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical--map--sidebar-left .vertical--map__sidebar__header,
|
||||||
|
.vertical--map--sidebar-left .has-requery .vertical--map__sidebar__header,
|
||||||
|
.vertical--map__sidebar__header--mobile,
|
||||||
|
.map-requery-mobile,
|
||||||
|
.footer,
|
||||||
|
.footer--mobile {
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
background-color: var(--userstyle-bg-base);
|
||||||
|
box-shadow: 0 1px 0 var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-loc-tooltip__address,
|
||||||
|
.modal__header {
|
||||||
|
background: var(--userstyle-bg-light-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.module:not(.module--carousel):not(.module--placeholder):not(.module--translations):not(.module__chromeless),
|
||||||
|
.modal--popout .modal__box,
|
||||||
|
.modal__box,
|
||||||
|
.sidebar-modules .module,
|
||||||
|
.results--main .result:not(.result--ad).highlight,
|
||||||
|
.module .module--carousel__item,
|
||||||
|
.user-loc-cta,
|
||||||
|
.address-detail,
|
||||||
|
.modal--dropdown.modal--popout .modal__box,
|
||||||
|
.tile--info,
|
||||||
|
.place-detail,
|
||||||
|
.badge-link,
|
||||||
|
.atb-banner__bottom,
|
||||||
|
.multi-step-mobile-onboarding__step__content,
|
||||||
|
.is-mobile .results_links_deep,
|
||||||
|
.is-mobile .results_links,
|
||||||
|
.is-mobile .related-searches,
|
||||||
|
.user-loc-tooltip,
|
||||||
|
.anomaly-modal__modal {
|
||||||
|
border: 1px solid var(--userstyle-bg-light-3);
|
||||||
|
background: var(--userstyle-bg-light-2);
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal--dropdown--settings .settings-dropdown--section .frm__field .frm__select select {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal__list__link:hover,
|
||||||
|
.modal__list__link.is-active,
|
||||||
|
.modal__list__link.is-highlighted,
|
||||||
|
.modal--dropdown--region .modal__list__link.is-highlighted,
|
||||||
|
.highlight .result__image,
|
||||||
|
.switch,
|
||||||
|
.modal--dropdown--settings .settings-dropdown--section .frm__field .frm__switch .frm__switch__label.btn {
|
||||||
|
background-color: var(--userstyle-bg-base);
|
||||||
|
}
|
||||||
|
|
||||||
|
.search--home,
|
||||||
|
.search--header {
|
||||||
|
background-color: var(--userstyle-bg-light-2);
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.search__button:hover,
|
||||||
|
.search__button:focus,
|
||||||
|
.search--hover .search__button,
|
||||||
|
.search--hover .search__button:focus,
|
||||||
|
.search--header.has-text.search--hover .search__button,
|
||||||
|
.search--header.has-text.search--focus .search__button,
|
||||||
|
.search--header.has-text.search--hover .search__button:hover,
|
||||||
|
.search--header.has-text.search--focus .search__button:hover,
|
||||||
|
.search--home.has-text .search__button,
|
||||||
|
.search--home.has-text .search__button:focus,
|
||||||
|
.search--home.has-text .search__button:hover {
|
||||||
|
background-color: var(--userstyle-bg-light-4);
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acp-wrap,
|
||||||
|
.acp-footer {
|
||||||
|
background-color: var(--userstyle-bg-light-2);
|
||||||
|
border-color: var(--userstyle-bg-light-5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.acp--highlight {
|
||||||
|
background-color: var(--userstyle-bg-light-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.jyBaPv1HPGOoWrXSAjiu .T265XEcezvjUhK71U8pN {
|
||||||
|
box-shadow: 0 0 0 1px var(--userstyle-bg-light-3), 0 2px 3px 0 rgba(0, 0, 0, .06);
|
||||||
|
}
|
||||||
|
|
||||||
|
.set-head__menu .set-tab,
|
||||||
|
.set-tab:visited {
|
||||||
|
background-color: var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.set-head__menu .set-tab:hover {
|
||||||
|
background-color: var(--userstyle-bg-light-5);
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
code,
|
||||||
|
.set-bookmarklet__input,
|
||||||
|
.set-bookmarklet__data,
|
||||||
|
.btn,
|
||||||
|
.btn:visited,
|
||||||
|
.btn:active,
|
||||||
|
.btn.btn--primary,
|
||||||
|
.btn.btn--secondary,
|
||||||
|
.btn--primary:hover,
|
||||||
|
.btn.is-disabled,
|
||||||
|
.btn.is-disabled:hover,
|
||||||
|
input,
|
||||||
|
textarea,
|
||||||
|
.frm__input,
|
||||||
|
.frm__text,
|
||||||
|
.detail--xd .c-detail__btn,
|
||||||
|
.set-bookmarklet,
|
||||||
|
.set-reset,
|
||||||
|
.frm__select,
|
||||||
|
.frm__select select,
|
||||||
|
.zci--json_validator textarea,
|
||||||
|
.colorpicker,
|
||||||
|
.feedback-modal__submit.is-disabled,
|
||||||
|
.feedback-modal__submit.is-disabled:hover,
|
||||||
|
.feedback-modal__submit.is-disabled:active,
|
||||||
|
.feedback-modal__submit.is-disabled:focus,
|
||||||
|
.btn.btn--skeleton:hover {
|
||||||
|
background-color: var(--userstyle-bg-light-3);
|
||||||
|
border-color: transparent;
|
||||||
|
color: #eeeeee;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cloudsave,
|
||||||
|
.set-bookmarklet__detail,
|
||||||
|
.set-reset__detail {
|
||||||
|
background: var(--userstyle-bg-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.set-head,
|
||||||
|
.set-thumbnail__img,
|
||||||
|
.set-main-footer,
|
||||||
|
.region__header__section--current,
|
||||||
|
.badge-link,
|
||||||
|
.frm__color__swatch {
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.frm__hr {
|
||||||
|
border-color: var(--userstyle-bg-light-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu--feedback,
|
||||||
|
[data-testid="feedback-prompt"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,12 +3,12 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
if command-exists cursor-agent; then
|
if command-exists cursor-agent; then
|
||||||
alias cu="cursor-agent"
|
|
||||||
|
|
||||||
setup-completions cursor-agent "$(command-path cursor-agent)" \
|
setup-completions cursor-agent "$(command-path cursor-agent)" \
|
||||||
cursor-agent shell-integration zsh
|
cursor-agent shell-integration zsh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command-exists cursor; then
|
if command-exists cursor; then
|
||||||
export EDITOR="cursor -w"
|
export EDITOR="cursor -w"
|
||||||
|
alias cu="cursor"
|
||||||
|
alias e="cursor -w"
|
||||||
fi
|
fi
|
||||||
|
|||||||
7
zsh/iterm2.zsh
Normal file
7
zsh/iterm2.zsh
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#
|
||||||
|
# iTerm2 environment setup.
|
||||||
|
#
|
||||||
|
|
||||||
|
if [ -f "${HOME}/.iterm2_shell_integration.zsh" ]; then
|
||||||
|
source "${HOME}/.iterm2_shell_integration.zsh"
|
||||||
|
fi
|
||||||
@@ -63,6 +63,7 @@ install_ruby_global_packages() {
|
|||||||
ruby-lsp
|
ruby-lsp
|
||||||
ruby-lsp-rails
|
ruby-lsp-rails
|
||||||
ruby-lsp-rspec
|
ruby-lsp-rspec
|
||||||
|
steep
|
||||||
syntax_tree
|
syntax_tree
|
||||||
syntax_tree-haml
|
syntax_tree-haml
|
||||||
yard
|
yard
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ if command-exists batman; then
|
|||||||
alias man="batman"
|
alias man="batman"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if command-exists batdiff; then
|
||||||
|
alias biff="batdiff"
|
||||||
|
fi
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# completions
|
# completions
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ if command-exists zoxide; then
|
|||||||
cached-eval "$(command-path zoxide)" zoxide init --cmd zox zsh
|
cached-eval "$(command-path zoxide)" zoxide init --cmd zox zsh
|
||||||
|
|
||||||
# Use functions to allow regular zsh completion for cd to work.
|
# Use functions to allow regular zsh completion for cd to work.
|
||||||
cd() { __zoxide_z "$@"; }
|
if command-exists __zoxide_z; then
|
||||||
alias cdi='__zoxide_zi'
|
cd() { __zoxide_z "$@"; }
|
||||||
|
fi
|
||||||
|
if command-exists __zoxide_zi; then
|
||||||
|
alias cdi='__zoxide_zi'
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
10
zshenv
10
zshenv
@@ -354,6 +354,10 @@ fi
|
|||||||
# Use custom tmux install if available
|
# Use custom tmux install if available
|
||||||
path_prepend "/opt/tmux/bin"
|
path_prepend "/opt/tmux/bin"
|
||||||
|
|
||||||
|
# pnpm setup
|
||||||
|
export PNPM_HOME="$HOME/.local/share/pnpm"
|
||||||
|
path_prepend "$PNPM_HOME"
|
||||||
|
|
||||||
# Rust setup
|
# Rust setup
|
||||||
export RUSTUP_HOME="$HOME/.rustup"
|
export RUSTUP_HOME="$HOME/.rustup"
|
||||||
export CARGO_HOME="$HOME/.cargo"
|
export CARGO_HOME="$HOME/.cargo"
|
||||||
@@ -383,12 +387,18 @@ path_prepend "$HOME/.orbstack/bin"
|
|||||||
# Google Cloud SDK setup
|
# Google Cloud SDK setup
|
||||||
source-if-exists "${HOMEBREW_PREFIX}/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc"
|
source-if-exists "${HOMEBREW_PREFIX}/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc"
|
||||||
|
|
||||||
|
# Antigravity setup
|
||||||
|
path_prepend "$HOME/.antigravity/antigravity/bin"
|
||||||
|
|
||||||
# Windsurf setup
|
# Windsurf setup
|
||||||
path_prepend "$HOME/.codeium/windsurf/bin"
|
path_prepend "$HOME/.codeium/windsurf/bin"
|
||||||
|
|
||||||
# LM Studio setup
|
# LM Studio setup
|
||||||
path_prepend "$HOME/.cache/lm-studio/bin"
|
path_prepend "$HOME/.cache/lm-studio/bin"
|
||||||
|
|
||||||
|
# ToolHive setup
|
||||||
|
path_prepend "$HOME/.toolhive/bin"
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# Local Overrides
|
# Local Overrides
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|||||||
20
zshrc
20
zshrc
@@ -16,10 +16,12 @@
|
|||||||
# Cursor's agent setup, which is used when the agent runs terminal commands.
|
# Cursor's agent setup, which is used when the agent runs terminal commands.
|
||||||
# Though it does also set a proper `TERM` value sometimes, hence the check for
|
# Though it does also set a proper `TERM` value sometimes, hence the check for
|
||||||
# `CURSOR_AGENT` as well.
|
# `CURSOR_AGENT` as well.
|
||||||
|
# - Claude Code's shell sessions, identified by `CLAUDECODE=1`.
|
||||||
#
|
#
|
||||||
if [[ -n "$VSCODE_RESOLVING_ENVIRONMENT" ]] ||
|
if [[ -n "$VSCODE_RESOLVING_ENVIRONMENT" ]] ||
|
||||||
[[ "$TERM" == "dumb" ]] ||
|
[[ "$TERM" == "dumb" ]] ||
|
||||||
[[ "$CURSOR_AGENT" == "1" ]]; then
|
[[ "$CURSOR_AGENT" == "1" ]] ||
|
||||||
|
[[ "$CLAUDECODE" == "1" ]]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -56,6 +58,9 @@ fi
|
|||||||
echo &&
|
echo &&
|
||||||
git clone --depth=1 "https://github.com/zdharma-continuum/zinit.git" "${ZINIT[BIN_DIR]}"
|
git clone --depth=1 "https://github.com/zdharma-continuum/zinit.git" "${ZINIT[BIN_DIR]}"
|
||||||
|
|
||||||
|
# Remove any stale Zinit plugin paths before loading to avoid issues.
|
||||||
|
path=("${(@)path:#${ZINIT[HOME_DIR]}/plugins/*}")
|
||||||
|
|
||||||
# Load Zinit
|
# Load Zinit
|
||||||
source "${ZINIT[BIN_DIR]}/zinit.zsh"
|
source "${ZINIT[BIN_DIR]}/zinit.zsh"
|
||||||
|
|
||||||
@@ -257,11 +262,18 @@ MISE_HOME="$HOME/.local/share/mise"
|
|||||||
export MISE_INSTALL_PATH="$HOME/.local/bin/mise"
|
export MISE_INSTALL_PATH="$HOME/.local/bin/mise"
|
||||||
|
|
||||||
if ! command-exists mise; then
|
if ! command-exists mise; then
|
||||||
read -q 'REPLY?mise is not installed, install with `curl https://mise.run | sh`? [y/N]:' &&
|
read -qr 'REPLY?mise is not installed,' \
|
||||||
|
'install with "curl https://mise.run | sh"? [y/N]:' &&
|
||||||
echo && curl https://mise.run | sh
|
echo && curl https://mise.run | sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command-exists mise; then
|
if command-exists mise; then
|
||||||
|
# Remove any stale mise install paths before activation to ensure it correctly
|
||||||
|
# activates. This ensures any tooling that starts shells with an existing set
|
||||||
|
# of cached env vars will not cause issues. I'm looking at you, direnv for
|
||||||
|
# VSCode.
|
||||||
|
path=("${(@)path:#${MISE_HOME}/installs/*}")
|
||||||
|
|
||||||
# Activate mise. We cannot use cached-eval here as the activation script
|
# Activate mise. We cannot use cached-eval here as the activation script
|
||||||
# dynamically adjusts how it modifies PATH on each invocation.
|
# dynamically adjusts how it modifies PATH on each invocation.
|
||||||
eval "$("$MISE_INSTALL_PATH" activate zsh)"
|
eval "$("$MISE_INSTALL_PATH" activate zsh)"
|
||||||
@@ -275,7 +287,8 @@ fi
|
|||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|
||||||
if ! command-exists starship && [ -f "$MISE_INSTALL_PATH" ]; then
|
if ! command-exists starship && [ -f "$MISE_INSTALL_PATH" ]; then
|
||||||
read -q 'REPLY?starship is not installed, install with `mise use -g starship`? [y/N]:' &&
|
read -qr 'REPLY?starship is not installed,' \
|
||||||
|
'install with "mise use -g starship"? [y/N]:' &&
|
||||||
echo && "$MISE_INSTALL_PATH" use -g starship
|
echo && "$MISE_INSTALL_PATH" use -g starship
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -321,6 +334,7 @@ source "$DOTZSH/nix.zsh"
|
|||||||
source "$DOTZSH/restish.zsh"
|
source "$DOTZSH/restish.zsh"
|
||||||
source "$DOTZSH/tldr.zsh"
|
source "$DOTZSH/tldr.zsh"
|
||||||
source "$DOTZSH/tmux.zsh"
|
source "$DOTZSH/tmux.zsh"
|
||||||
|
source "$DOTZSH/iterm2.zsh"
|
||||||
source "$DOTZSH/vscode.zsh"
|
source "$DOTZSH/vscode.zsh"
|
||||||
source "$DOTZSH/zoxide.zsh"
|
source "$DOTZSH/zoxide.zsh"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user