Skip to content

Commit 3edbaa9

Browse files
committed
2026-05-29
1 parent 038899b commit 3edbaa9

20 files changed

Lines changed: 806 additions & 45 deletions

config-editor/.config/zed/settings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,19 @@
9393
},
9494
},
9595
},
96+
"jupyter": {
97+
"enabled": true,
98+
},
9699
"terminal": {
97100
// https://github.com/zed-industries/zed/issues/14543#issuecomment-2260593838
98101
// https://github.com/zed-industries/zed/issues/21387
99102
"dock": "bottom",
100103
"option_as_meta": true,
104+
"detect_venv": {
105+
"on": {
106+
"conda_manager": "mamba",
107+
},
108+
},
101109
},
102110
"soft_wrap": "editor_width",
103111
"agent": {

config-shell/.bashrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
# Ensure ~/.profile is read for non-login shells.
1010
# Bash only reads ~/.profile on login shells when invoked as sh.
1111
[ -f ~/.profile ] && source ~/.profile
12+
# shellcheck disable=SC2181
1213
(( $? != 0 )) && _util_print_source_error '~/.profile'
1314

1415
# Use frameworks.

config-shell/bash-ble.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ install.any() {
1212
install.configure() {
1313
util.write_shellfile 'ble' \
1414
--bash "
15-
source \"$g_dir/out/ble.sh\""
15+
source \"$g_dir/out/ble.sh\" || :"
1616
}
1717

1818
install.installed() {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

22
#[Changelog Update] Fix, Support, Implement
33
#[Changelog Update] docs, perf
4-
#[Changelog Ignore] Format, Refactor, Restructure, Revert, Upgrade
4+
#[Changelog Ignore] Format, Refactor, Restructure, Move, Revert, Upgrade
55
#[Changelog Ignore] test, ci, build

config/setup.sh

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ fi
55

66
# Source libraries.
77
source ~/.dotfiles/config/xdg.sh
8-
for _f in \
9-
~/.dotfiles/vendor/bash-core/pkg/**/*.sh \
10-
~/.dotfiles/vendor/bash-term/pkg/**/*.sh; do
8+
SETUPSH_SKIP_VENDOR_SOURCE=1 # Use the versions vendored in this repository.
9+
for _f in ~/.dotfiles/vendor/bash-{core,term}/pkg/*.sh; do
1110
source "$_f"
1211
done
1312
unset -v _f

hk.pklold

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
amends "package://github.com/jdx/hk/releases/download/v1.45.0/hk@1.45.0#/Config.pkl"
2+
3+
hooks {
4+
["commit-msg"] {
5+
steps {
6+
["commitlint"] {
7+
check = "pnpx commitlint --edit {{commit_msg_file}}"
8+
}
9+
}
10+
}
11+
["pre-commit"] {
12+
fix = true
13+
steps {
14+
["build-and-test"] {
15+
check = "./bake build && ./bake test"
16+
}
17+
["check-spelling"] {
18+
check = "cspell-cli lint ."
19+
}
20+
["check-formatting"] {
21+
shell = "bash -o errexit -c"
22+
check = #"./node_modules/.bin/prettier --ignore-path <(printf '%s\n' './vendor') --check ."#
23+
}
24+
["check-linting"] {
25+
check = "./node_modules/.bin/eslint ."
26+
}
27+
["check-shellscript-format"] {
28+
check = #"find . \( -name vendor -prune \) -o \( -name .git -prune \) -o \( -name .data -prune \) -o \( -name shell.d -prune \) -o -name '*.sh' -exec shfmt --diff --language-dialect bash --binary-next-line {} +"#
29+
fix = #"find . \( -name vendor -prune \) -o \( -name .git -prune \) -o \( -name .data -prune \) -o \( -name shell.d -prune \) -o -name '*.sh' -exec shfmt --write --language-dialect bash --binary-next-line {} +"#
30+
}
31+
["check-shellscript-lint"] {
32+
check = #"find . \( -name vendor -prune \) -o \( -name .git -prune \) -o \( -name .data -prune \) -o \( -name shell.d -prune \) -o -name '*.sh' -exec shellcheck --format gcc {} + | grep -v '\(g_disable\|_shell_original_path\|_private\).*SC2154'"#
33+
}
34+
["check-yaml-format"] {
35+
check = #"find . \( -name vendor -prune \) -o \( -name .git -prune \) -o \( -name .data -prune \) -o \( -name shell.d -prune \) -o -name '*.yaml' -o -name '*.yml' -exec yamlfmt -lint {} +"#
36+
fix = #"find . \( -name vendor -prune \) -o \( -name .git -prune \) -o \( -name .data -prune \) -o \( -name shell.d -prune \) -o -name '*.yaml' -o -name '*.yml' -exec yamlfmt {} +"#
37+
}
38+
["check-yaml-lint"] {
39+
check = #"find . \( -name vendor -prune \) -o \( -name .git -prune \) -o \( -name .data -prune \) -o \( -name shell.d -prune \) -o -name '*.yaml' -o -name '*.yml' -exec yamllint --strict {} +"#
40+
}
41+
["check-github-actions-lint"] {
42+
shell = "bash -o errexit -c"
43+
check = #"zizmor --strict-collection --min-confidence=low --min-severity=informational --persona=pedantic --config <(printf "rules:\n anonymous-definition:\n disable: true\n undocumented-permissions:\n disable: true\n") .github"#
44+
}
45+
["check-toml-format"] {
46+
check = "tombi format --check"
47+
}
48+
["check-toml-lint"] {
49+
check = "tombi lint --error-on-warnings"
50+
}
51+
}
52+
}
53+
}

setup-other/pass.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ install_native_extension() {
9191
mkdir -p "${HOME}/.mozilla/native-messaging-hosts"
9292
ln -sfv "$install_dir/lib/browserpass/hosts/firefox/$app_id" "${HOME}/.mozilla/native-messaging-hosts/$app_id"
9393

94+
# LibreWolf
95+
mkdir -p "${HOME}/.config/librewolf/librewolf/native-messaging-hosts"
96+
ln -sfv "$install_dir/lib/browserpass/hosts/firefox/$app_id" "${HOME}/.config/librewolf/librewolf/native-messaging-hosts/$app_id"
97+
9498
core.print_warn "Not installing browserpass-extension, only the native client"
9599
}
96100

userscripts/improved-canvas.user.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
// ==UserScript==
22
// @name Improved Canvas
3-
// @namespace Violentmonkey Scripts
3+
// @namespace com.edwinkofler
44
// @match https://*.instructure.com/*
55
// @grant none
6-
// @version 0.2
6+
// @version 0.2.1
77
// @author Edwin Kofler
8-
// @description 7/20/2025, 10:14:51 AM
8+
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkAQMAAABKLAcXAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRFAAAA5gMFU0+ykQAAAAJ0Uk5TANWAKutjAAABcElEQVR4nK2UsW3EMAxFKahQ6RE0ila5MVJF12Utp7o1NIJKFcYx/KTshM4hwB3iRniGzU+R/CSSJzAPOp7MzNfn6bII0cUgdKUZNYLutBktIwkFnjFGZN7CjFMGcgm8KtVBzD1yU+KNKrfI3VLeqPA1WuJRKN31kCfZEUUScjuxpbwTBIv8HgbuD8EqFDcQBFETiSnUlTpIT3tnNDRWU6qIHRELVEAJOqCMZISWVRTKApL8chP1+qGX4FFU6FPVl9VozVamSfQsZQSrWtw3RMUHcoFG9egipTa/2P+o60Gl0Sy/NqSTld8aInTMTQBtjyn+pvtiGiUpZdOQUoCKafDtP6jeHig49b/y9Dfyt/WVcFXyFfTVfT+AUjt1hVzH6NW+5316CuLIZCGmTFbfp66jENt5Iv20+kn2U+4d4N1xco53lXecd6N3qnexdzjcnw/3+80wt0aYDfEbxW8bv4liTz+2lN9gfru9vCO/N+0Xy8HVRTq8+A0AAAAASUVORK5CYII=
99
// ==/UserScript==
10+
(function () {
11+
'use strict';
12+
1013
const sheet = new CSSStyleSheet();
1114
sheet.replaceSync(`
1215
#announcements-link, #syllabus-link {
@@ -25,4 +28,5 @@ sheet.replaceSync(`
2528
padding-block: 7px !important;
2629
}
2730
`);
28-
document.adoptedStyleSheets.push(sheet);
31+
document.adoptedStyleSheets.push(sheet);
32+
})();
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// ==UserScript==
2+
// @name Improved Codeforces
3+
// @namespace com.edwinkofler
4+
// @version 0.2.1
5+
// @description Improvements for Codeforces
6+
// @author Edwin Kofler
7+
// @match https://codeforces.com/*
8+
// @run-at document-end
9+
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABPCAMAAAAqV5CTAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAJZQTFRFAAAAGY/NF4rKGpTRuhwkFYXHth0lvhwksh0lFIHF+9Zv9sVA+c9b98pO+MxU+dFh+tRo98hHG5jTFIDE+9hzwRwkwRwksR4mtx0lFYbI+tRo98pNF4nJ98lKGI/NtR0ltx0lFIHEvhwkGZHPuhwk+tJk+9dw98dFG5bSuxwk+9dw9sU/GI7Ntx0l9sVA9sZE9sZD+9Vs9xzUIQAAADJ0Uk5TAP//////////////////////u3eHOuVmUlVVU+EtkuwLDCBUySniDQ+yBdo2g4m567QkVzKVAAABaklEQVR4nO3Za2+CMBSAYTaHXAQUVOROQS5zgtP//+cGwhRGmzTxuCzLeb8WeEK/9VQQuErcKBBF8bXt5dossPbvfC9zlrgtMUaaIlDFVRQaAqokAQMJKjikUhjILIJD1kzEQgQRRBBBBJFbZRl25X0f4Eh4OpumruuGYWiatlwuV6vVxYNFwuPCnCBqMVQeRhqDhqjF5r5nDyOnBR1RixwOObIQ9b5hDyMLJrJB5KlIWmfx/NpblxRndQqKEOcgy/Mx0nTYQiJOLI8R6YpIdgqIZLJM+xNJqgkYspVZSJaCIQ4TsbdgyA6RX0eUf/MniCCCCCKIIIIIIogggshfRXimRC7HnRb7YNqcfnnmXQkT2d+eITELORCuyZ0QMRBrcM9Ys5B27uGfqYg3nKgmERUZGgKpYxpi79rF0v+cIhdvPLVN1sEUicZXmcTJpkjmkH659L/zunJhWuX27bsqypUscX6UUj70pL4AXxmrOcwVT6EAAAAASUVORK5CYII=
10+
// ==/UserScript==
11+
(function () {
12+
'use strict';
13+
14+
const sheet = new CSSStyleSheet();
15+
sheet.replaceSync('.sidebox { margin-bottom: 1em !important; }');
16+
document.adoptedStyleSheets.push(sheet);
17+
18+
const captions = document.querySelectorAll('.roundbox.sidebox .caption.titled');
19+
for (const caption of captions) {
20+
if (!caption.textContent.includes('About Contest')) continue;
21+
if (caption.querySelector('.sidebar-caption-icon')) continue;
22+
23+
const icon = document.createElement('i');
24+
icon.className = 'sidebar-caption-icon las la-angle-right';
25+
const topLinks = caption.querySelector('.top-links');
26+
if (topLinks) {
27+
caption.insertBefore(icon, topLinks);
28+
} else {
29+
caption.appendChild(icon);
30+
}
31+
32+
const siblings = [];
33+
let sibling = caption.nextElementSibling;
34+
while (sibling) {
35+
siblings.push(sibling);
36+
sibling = sibling.nextElementSibling;
37+
}
38+
if (siblings.length === 0) continue;
39+
40+
for (const s of siblings) s.style.display = 'none';
41+
42+
icon.addEventListener('click', function (e) {
43+
e.preventDefault();
44+
icon.classList.toggle('la-angle-down');
45+
icon.classList.toggle('la-angle-right');
46+
const collapsed = icon.classList.contains('la-angle-right');
47+
for (const s of siblings) s.style.display = collapsed ? 'none' : '';
48+
});
49+
}
50+
})();
Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
// ==UserScript==
22
// @name Improved CSUMB Dashboard
3-
// @namespace Violentmonkey Scripts
3+
// @namespace com.edwinkofler
44
// @match https://my.csumb.edu/dashboard*
55
// @grant none
6-
// @version 0.2
6+
// @version 0.2.1
77
// @author Edwin Kofler
8-
// @description 8/21/2025, 9:40:32 PM
8+
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkAQMAAABKLAcXAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRF/P39ZXN/iSt1aAAAAb9JREFUeJzt0jFL5EAUAOA3SdApxCRYXATZXVcLi4Nbm6vE6CoWNoK/YEWwvS0txMnJwp2CLDYWNquVlbWlEQWFK078Axu1FVytosa8e7NJ3NnG7jpfEd6XeZk3kxmAz/ggKirysa8I8akDMx5EryMPfnRK1wF6gwxMZt88Vfms1JSJ20o1SS1AhO/SETBTFYwSw5d0EvpsguGzpypMJtXppcPwMenf336Ku2RsKNnUaaDI9KtpAxm9XrIYL1VF2b4OJVCj2qVWlwIl17rF1Mr+zasspZYL278z0YIfDi8zTQE/Oj7vNN6M4tlMDuysxsVMOWaH8+8y9RFfl2JvrfgVb0XoIp2arg+wLR0xIvlgsO+wp5EEYgAcRnlOq6dyVr9OfjH/NCKUss7Hijafr0fY/BtAoTY2YvPF+hs2LgIY/nU/fsOvpWhsGAxHS0QdpkHr0ZzdBrZVpv6aVWvLI4G/0ZabqFK2annRdGWl2bTmbEOqQXJ2+Ird55Lo3sxYB3xlnLvixKXrtHSzH87lHJThQ+G0UC33WYhC7rakFeEMCihI9LuMZfbT83EdpcxQPNClk4rohANYgwn4jP8R/wAbHMszCIu7vwAAAABJRU5ErkJggg==
99
// ==/UserScript==
10-
const sheet = new CSSStyleSheet();
10+
(function () {
11+
'use strict';
12+
13+
const sheet = new CSSStyleSheet();
1114
sheet.replaceSync(`
1215
.dashboard-node .node-leaf {
1316
max-width: 1400px !important;
@@ -17,4 +20,5 @@ sheet.replaceSync(`
1720
margin: 4px !important;
1821
}
1922
`);
20-
document.adoptedStyleSheets.push(sheet);
23+
document.adoptedStyleSheets.push(sheet);
24+
})();

0 commit comments

Comments
 (0)