Skip to content

Instantly share code, notes, and snippets.

View donaldguy's full-sized avatar

Donald Guy donaldguy

View GitHub Profile
@donaldguy
donaldguy / gh_starlists.sh
Last active November 8, 2025 04:30
GraphQL calls for adding repos to star lists
gh-starlists() {
gh api graphql --paginate --raw-field query='
query($endCursor: String) {
viewer {
lists(first: 100, after: $endCursor) {
nodes {
id
name
}
pageInfo {
@donaldguy
donaldguy / zap_yabai.zsh
Last active October 17, 2025 16:26
thorough yabai uninstaller
#!/bin/zsh --norcs
set -o NO_UNSET -o ERREXIT
if (! sudo -nv) {
echo "re-run after caching sudo in parent shell, by e.g. running:\n\t sudo -v" >&2
exit 1
}
autoload -Uz colors && colors
@donaldguy
donaldguy / com.mitchellh.ghostty.quick-terminal.plist
Last active July 19, 2025 23:54
~/Library/LaunchAgents/com.mitchellh.ghostty.quick-terminal.plist
<!--
vim: ft=xml ts=4 noet
-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.mitchellh.ghostty.quick_terminal</string>
<key>AssociatedBundleIdentifiers</key>
@donaldguy
donaldguy / ApplicationGroup_JXA.js
Created January 31, 2025 06:11
JXA sh template and group name fetch - I ended up throwing these away (and just globbing-ish in ~/Library/Group Containers)
let sh = (strs, ...subs) => {
const q = (s) => `${s}`.match(/^['"].*['"]$/) ? `${s}` : `'${s}'`
return app.doShellScript(
strs.flatMap((s,i) => subs[i] ? [s.trim(), q(subs[i])] : s.trim() ).join(" ")
)
}
let getAppGroup = (appName) => sh`codesign --display --entitlements - --xml 2> /dev/null
${Application("System Events").applicationProcesses[appName].applicationFile().posixPath()}
@donaldguy
donaldguy / com.surteesstudios.Bartender.plist
Last active September 25, 2024 05:11
Bartender 5.1.8 nicely formatted and ordered plist (also xml instead of binary obvs; but it'll happily read/convert it after `cp $this ~/Library/Preferences/com.surteesstudios.Bartender.plist`)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- General: -->
<!-- when set to default values these settings removed from the plist -->
<!-- "Show hidden menu bar items when:" -->
<key>ClickingMenuBarTogglesBartender</key> <integer>1</integer>
<key>ScrollingMenuBarShowsHiddenItems</key> <integer>1</integer>
<key>MouseOverMenuBarTogglesBartender</key> <integer>1</integer>
@donaldguy
donaldguy / shell_vars_from_json.jq
Last active June 8, 2024 03:50
Have you ever had a json object or array and wished it was a serious of zsh/bash variables? … yeah ¬_¬ , totally, me neither 😅 https://jqplay.org/s/biOH4MLXDfe
def declare: (
.t as $type | .var as $var |
{"array": "-a", "object": "-A"}[$type] as $arg |
"declare \($arg) \($var);"
);
def shellify: (
. as $container |
@donaldguy
donaldguy / version_endpoints_compare.sh
Created May 28, 2024 00:26
some pretty stupid roundabout bash
# cross-platform bash-3.2 compatible (thanks macos)
#
# examples:
#
# $ version_endpoints_compare "3.7.1" "<=4.3.1" "=4.3.4" ">=4.3.5" ">=4.4"
# <=4.3.1
# $ version_endpoints_compare "4.3.1" "<=4.3.1" "=4.3.4" ">=4.3.5" ">=4.4"
# <=4.3.1
# $ version_endpoints_compare "4.3.2" "<=4.3.1" "=4.3.4" ">=4.3.5" ">=4.4"
# other
@donaldguy
donaldguy / 0-eth0.network
Last active April 3, 2024 19:59
kubeadm stuff
[Match]
MACAddress=62:55:1b:5f:f7:d6
[Network]
IPForward=yes
DNS=9.9.9.9
Address=10.0.0.1/12
Gateway=10.15.0.1
[Route]
@donaldguy
donaldguy / bootstrap_podman_machine.sh
Last active February 1, 2024 06:56
boot messages during `podman machine start` (qemu)
#!/bin/bash
set -o errexit -o nounset -o pipefail
bootstrap_podman() {
if ! podman system info &>/dev/null; then
echo "!!podman not initialized: doing that" >&2
if ! podman machine inspect &>/dev/null; then
podman machine init --user-mode-networking
@donaldguy
donaldguy / userscript-app_hey_com-unread_and_autoadvance.js
Last active September 12, 2024 03:47
app.hey.com: add unread counts and auto-advance to the "Imbox" - very much a work in progress
// ==UserScript==
// @name Add counts to Hey.com Imbox (and contents)
// @run-at document-end
// @match https://app.hey.com/*
// @grant GM_getValue
// @grant GM_setValue
const BASE_URL_PATTERN = 'https://app\\.hey\\.com'
let UnreadCount = -1;