misc edits

This commit is contained in:
Matthew Ryan Dillon 2025-09-14 09:21:38 -04:00
parent 6d114c53dd
commit 7f09b9fab4
5 changed files with 127 additions and 346 deletions

View file

@ -1,40 +1,41 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXUUU4cUdkaUlwYTd1aFpl
dlBRZUgrMzJ0RmE0VUpNMW9DQ1ArVDJ0NjFFCmRvNkNjU3crbktoc1l6bjJpVUl4
M2NwWm9BdUhVaUZ2cHFhSWFTVVZYa00KLS0tIE5TQkw3aHl6TEoraXl0WThOS1ln
YzdpbldkcTRjeGNYSzV3YXVGR0pQYlEK59pMsvBsL7rw7yTfTAD244/jRr7orREM
4F6SjSc/8UqoaXa0F5aoQkUSj3HJ0OD4FV6/Ge//5Zn8h8Cv3nWIF1hQF8iweJXJ
U1RQSgnZlZuPpMVJw0/po8n9Sq6PtgEvENT3Ut42IosaJF4w9wVfAevnZgx6w3kM
x4VYGP1VfYIYQrwSD1ljgRNhiNWrUW0pNnUQ6eBsrPJlxsnhNw3TznYRMywY78uM
fcLn0MvyrNCBS7YTu14fDJdv5It67aatvsB0Z33srsOXsSWkN1Y8tCVw3WpkIAZN
KMwFOExFe01N9AixYQmZ1kCU58kGmNRvur8667mvtKMLZCltXHrPXgjDs7BHQs3S
Q0SBUacmKjsLB3XciMOTYoP3FQYBq7fUa2JxGq7LVzt7IYUvc8eo3AzCOHu4x2de
XAs3Kwy/V/6uZH3dY3Wk/n9RTc0A3KcUdhwgtSXzWLAQVcQvLytYWzpJcsGtldDG
iaUuWYI3grWIE0CGeAIzSy0ARZKztlL6xYZQqaAmG0aSt5gsIzoTOfsa7JfW3NzP
opjNXXBqmiJfigWy7cxT9FxvlJ6tBlSwuaGAm25HGVqDuqZ6W/C2y8wLYPuWmGYA
a7Of4KxVpVy3pRaQzk0rfJqInKgatUdW/Qx72WCMxe9CI5XDl/SWD/502gcPiMjN
bPlJvmCKeyN9kebhooi0kMm4zQypyTfan/P9nfKUIMClCqNVzlHMxYr8xAEpvSOT
gXUjA8QtGIG2LtRI7GiKYA6NSIT+UylrPd99HykoSeeRZisvnay0lFqxnI0pzwqV
esOG4+g55kgOp4GBOu4DlpBumgwTZeuBhxgeK0mt0zXcknyyRSHKdwiJ7K5IrD40
uGS0d9koWQ5hD4aagOYywHgFkX5eFIs9j/HfO8pdTwoi7885WUOXn+mUn8/q0WA4
spfVTlw49yYUBifYjOhcI1hbu5nNiVlJqDMJrRSMUWv17a/Eg2uNei6qZ9gs3rNs
4EnZGGUD1XEI51XnD3UV0Zn14BgTXHL+GHYSDn/RvXOltrHFllnRP6EnAZhKqfhZ
bpPckPIOIaM9TGXj6BRMtFLCza77sVhWbL5ZmbGjYLRKLXJByP3n7sIaAUjqP8Ul
3npKv3DSE/7G0p/IArmNBC8xE06qOuldOWo8c0K3aIpDFx9t4EZZhSDOqifiN3aE
awFGRv9DR8xqiOFPsVRbplYUE7tfvEK6uv1yF5Tk9rZCVXSX+exjgLN0d5DbC/1K
e1nTpVEaHJ3wumOWenFQuBms5dBCF6ygyZ+bY589vLCz0xAcOvWNNCBCAbia66gp
aAvNwh2UdxcGA3WFzkRYciaXtrIkQsKahGFNRuSopp1OF+w0RdLBqgiDeBP4BsP3
6jRY4EUhJkcfTw+S5VxH64pp2eWLQQVRdN7SMPj3e/MpeJ8xPdhwKBFAGf4UEE2d
8LvSmrYiC9Jj7rdyDHL2mjUtn0CZ/0XiHImA4/s0G2UlTtwmO/Jq4zFGtOF26tvD
p6C4Q7/qWXJTFdy9Fw/IgYlC5QgViaYVziOPAgzlYlhVHLE6xoEjUmU2SUQZJW+t
STeYdMvBWdyV9eXljOD+i7YaQpIkDySTEDM1p7duuL/AlWkF+Yv6gwYumUXiS8au
BTPT1MRVh+NWfIypNtZnAlwZjSyAuDv3+wZnJ5NtloOtx5BtS5sK4RDMWmzDScnX
XrEtYyBcmqZW0bOc5QgrBUwtJWQzWXP9HRqI5qOvwZ/moAZ71zwmpY8kUcDDAk9M
SMBhD0o79I10EgNKalLnNqfnbTF0d46q4Lf3lsIJsBPZ4FsY891LDH5X2fRP6LHA
Dm9tA9GgXSuwZIKVGVHF4MUlTdQEyySUeXlZdqPfVjNUjA5aC3Wc0nNShmDH8erS
gSv6pNLZBfiXdzQCCfscb21abwKG2PFYuWlDWG0g+WkToh8E/miZy9/UeOmSKpSA
1RazjtBiCJzKuzAyfmD+SCOmNo7AiVMDHJGug5mJQRvmAWbq7A6qwFmHwEjcWs+I
8/9bpcSPIIRrHrpK1JnvI+3vn/OQXeZYEcomgOXVSzWvCvljXTAl9C5Vz1TGnt9a
wx6mRbehoeKiuhqP++kGQkZGepdvKRVqsL1utf/nOgBbj86T/uYp07fX1B/XbRLC
WOOhdrGGewKiZodf4oObqPJQ9iGfwhR/U4s=
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpMzQ5MlhYT09rVmRTb3Nr
OUpyZTlqTUZOZlAwR01TWTg0THBQZUZtTzBZCjFxY3I5NXNIb2ZuUk0xbFVyMXpX
aC9iWm01bXNWZUVBRVdYdjRlb2ltV3MKLS0tIHJsbUo0WlNIK2dEcUhFOWNydlow
SXNzb05tSnAvUWloZVBOREdtdjNHMTQK3Zrd7C2sODbcZHN2ZF0C3sbD7zpEdY6V
O3bY1mPhIRd3mncob7DQuFVWv7Ih6XBnA7Fl6qQEN8JpwG5LGkgOWya/BVNwzTqr
kQXy5Zrp5o3/4/Je3hiXhRcxveHCs1FbLu02lCDiazRFsvsyxIY19f/Ba4H4D2LB
aYlK0vFZnepip+ZDCA3VCZfXgXDM/QTqwJmiZYKShF3P8px+cyr/YOa+D8uMioC5
YH+X+/HapEmH/6f7whrIXhYJx+hQDXbfnk8/hOQyprGzXSYYUXpks+2ogFwy/75v
jd7MIEqxxlyDX13JoDVV2dU7mu4LB26npjLjwFpzkA+TRzhQO9RBSET+E4izmG+t
cTJii8E4N8dwqV2+cu+5i50Ab0JxvLG3+eQP+vPxi6A54wxSsXZW3WUFTtdlblHw
+l8U05TPBmmQlHJhS1Rb4GM496yjgDxBwB06oaYA43PeNBESUFHPxsSOzmrL2+lE
SWkohCw0L93VT98iRVMlHn0DGdJvxtr9rFBz1k7oKjJeDyKrGNbRFdpPwX84jG6w
jAz/G1eeHZAWU9K9FemwCyUlaN689F2Sz5NH16TW/flreJnjzQojy/Fwrv0IVX1D
kx1c3BjqwZDoTFp763j+gSiwhjucj2RR7beoGMCOZ8T0OyALNGzUHWbGLFaooUoO
koGWKFLtJ5Wz4J1nUTdczF0oBsnhqoh9z+Q7Xg6HgBmD04Klc0k1TYH1JfhZjB75
EzQwzVGTwFZTGqdKbdksaH1SVWT9y6FQLCgSHklA5IocKgiqT/9ccKdwFZ8F2n4Q
1UhI/PhbrelCGqLSmztvwwHBGN5ANC3oB/BXIT23tF28jo1bC5eV87BS1h7/K/T2
R24JZGzwTRSmtdIszbqFmz0LoJQueXP3bTOnaCyvgrjio+5i5gS0Uzw5ElGtqRvw
e+lqtVuMBn42E6uR/LHTgzUaxJmO+I9XmFIXvc/1ySRSyRBzV0Ij9Tb/opREJJGT
GXOjYq6qRmypRJ/tICgsZVcB3xuWhmSWsuDrfG6d+npujeJGbYzapxk8enoIFcxJ
WjbpOfg+CrSzrHgWhpm3Ye3ZEhFyKWf6/EVqsuE+X6fRVgzf6CqgTJQr3YvafQaG
iGv3pHYsfEavbkpLnSX2g/lcL2qqYgpF03PQJ3ck54khlQl2T+Bi478otTPYgT9/
aljyqc+qKlVx4yn0WqgaB8eYfLWEL/OXaWo5lraQT0++4xPTjOTpsbsORM0J+XLt
DoQ20J7UGArjkHFfq22z1NKGxUVCzG+4WoKA5B8J0GJ0UQXLTCYvZEZEKsHqGGWM
5UI3uoEKpagrd8sPP+aGEXXQJfo4S09yc6/5O+VdAS1k4stHdzMCzaJulwCur8YG
JnJ3TwaoX0tp/PT7IXjNhmQsGHpjSptLAbDwoyHx2uZm/yd+zg2Rr6VtGkjlxe5q
rZQNg7raUCGQDIA8tvaGrJgqi7gxUjHRZXShSlK0gzJL88AyEu95ExNvd+AAnXzJ
c2x/zUtGHoNYpno3wELZ6oSbpgYnHVLrZRySm6Hf95kjPaSmhH+UBUO9Qd6lVGPu
E2ldl1iMS7kkXn7EGt+JlThJ9e7sPUjT1b+qjr1A/tCaDhQ+SLtzkJoVB9dYXeEc
CRbW+xorDYwmYXYW2ab1wGSaeVByB462Dkcmg+P+5wWIoQWFsfWL75iyEvr+nrsD
XMzaeCcwFTpGo5+7c+YNrCiat+Oj8/u/f0OKJ7kO79vPX9IuqEgGAfen36BATFWA
UDEKPrm54UAaUOCGrNGYS01qj/RtQaIDj6nqnk7MqLe+tO159ragOm9SMzdB7p8t
pWNPd+eYYEL+WPiTf4cIyF+AcdEaqx8Mxdajuc4lzjkU4eS5uQv2zLfRjHuMGSvp
TmgpZpOmVNw1NRsId7wq0gj9QLhQrjRA6dHrY2q5qMtHGtrM5ffIpXNEi4Dw9/qz
95txQZTXJf4Js8+W9A67QU0mTikLzpk774x+149qaVWlBC6GMHlAmmOKVHmkmMy7
uhIk0j3XanTLZvbKcX/K/omF+QLCXKTCfiNLS/Qa14Dbkmq7AAnr18weN788WFn9
NhgFhZfLEe2l7Rj5KWPEi+hn2BabTVvRDb4M8r/9a4uNuxavPLpO7CMbXEPd55YV
qdpDohWo7Un7arye5ew2JE05j257PXxfvbtVVQQrUlOJDvjFu8B3ddB953CHZ4wC
R7mAZF0R5VjZQ4DXBXSREjqLSDo=
-----END AGE ENCRYPTED FILE-----

View file

@ -1,66 +0,0 @@
#!/usr/bin/env bash
REPO_PATH="$1"
REMOTE_NAME="$2"
COMMIT_MESSAGE_TEMPLATE="$3"
cd "$REPO_PATH" || {
echo "Error: Cannot access repository at $REPO_PATH"
exit 1
}
if ! git rev-parse --git-dir > /dev/null 2>&1; then
echo "Error: Not a git repository"
exit 1
fi
sync_repo() {
echo "Starting git sync for $(pwd)"
# Check if there are any changes to commit
if [[ -n $(git status --porcelain) ]]; then
echo "Changes detected, committing..."
COMMIT_MESSAGE=$(eval echo "\"$COMMIT_MESSAGE_TEMPLATE\"")
git add .
git commit -m "$COMMIT_MESSAGE"
if [[ $? -eq 0 ]]; then
echo "Changes committed successfully"
else
echo "Error committing changes"
return 1
fi
else
echo "No changes to commit"
fi
# Fetch and pull from remote
echo "Fetching from remote..."
git fetch "$REMOTE_NAME"
if [[ $? -eq 0 ]]; then
echo "Pulling changes..."
git pull "$REMOTE_NAME" $(git branch --show-current) --rebase
if [[ $? -eq 0 ]]; then
echo "Pull completed successfully"
else
echo "Error during pull"
return 1
fi
else
echo "Error fetching from remote"
return 1
fi
# Push to remote
echo "Pushing to remote..."
git push "$REMOTE_NAME" $(git branch --show-current)
if [[ $? -eq 0 ]]; then
echo "Push completed successfully"
else
echo "Error during push"
return 1
fi
echo "Git sync completed successfully"
}
sync_repo

View file

@ -1,156 +0,0 @@
local preloadView = hs.webview.new({x=0, y=0, w=10, h=10}):html("<html></html>")
preloadView:hide()
hs.timer.doAfter(2, function() preloadView:delete() end) -- delete after 2 seconds
local GitSync = {}
GitSync.config = {
repoPath = "{{ .chezmoi.homeDir }}/notebook",
remoteName = "pingo",
syncInterval = 60,
commitMessage = "Auto-sync: $(date +\"%Y-%m-%d %H:%M:%S\") from $(hostname)"
}
GitSync.scriptPath = os.getenv("HOME") .. "/.hammerspoon/git-sync.sh"
GitSync.timer = nil
GitSync.caffeineWatcher = nil
function GitSync.runSync(reason)
reason = reason or "periodic"
print("Git sync triggered: " .. reason)
local task = hs.task.new(GitSync.scriptPath, function(exitCode, stdOut, stdErr)
if exitCode == 0 then
print("Git sync completed successfully (" .. reason .. ")")
if stdOut and stdOut ~= "" then
print("Output: " .. stdOut)
end
else
print("Git sync failed (" .. reason .. ") with exit code: " .. exitCode)
if stdErr and stdErr ~= "" then
print("Error: " .. stdErr)
end
end
end, {
GitSync.config.repoPath,
GitSync.config.remoteName,
GitSync.config.commitMessage
})
task:start()
end
function GitSync.startPeriodicSync()
if GitSync.timer then
GitSync.timer:stop()
end
GitSync.timer = hs.timer.doEvery(GitSync.config.syncInterval, function()
GitSync.runSync("periodic")
end)
print("Git periodic sync started (interval: " .. GitSync.config.syncInterval .. " seconds)")
end
function GitSync.stopPeriodicSync()
if GitSync.timer then
GitSync.timer:stop()
GitSync.timer = nil
print("Git periodic sync stopped")
end
end
function GitSync.handlePowerEvent(eventType)
if eventType == hs.caffeinate.watcher.systemWillSleep then
print("System going to sleep, running git sync...")
GitSync.runSync("pre-sleep")
elseif eventType == hs.caffeinate.watcher.systemDidWake then
print("System woke up, running git sync...")
-- Add a small delay to ensure network is available
hs.timer.doAfter(5, function()
GitSync.runSync("post-wake")
end)
end
end
function GitSync.startPowerEventMonitoring()
GitSync.caffeineWatcher = hs.caffeinate.watcher.new(GitSync.handlePowerEvent)
GitSync.caffeineWatcher:start()
print("Git power event monitoring started")
end
function GitSync.stopPowerEventMonitoring()
if GitSync.caffeineWatcher then
GitSync.caffeineWatcher:stop()
GitSync.caffeineWatcher = nil
print("Git power event monitoring stopped")
end
end
function GitSync.start()
GitSync.startPeriodicSync()
GitSync.startPowerEventMonitoring()
GitSync.runSync("initial")
print("Git auto-sync initialized")
print("Repository: " .. GitSync.config.repoPath)
print("Remote: " .. GitSync.config.remoteName)
print("Sync interval: " .. GitSync.config.syncInterval .. " seconds")
end
function GitSync.stop()
GitSync.stopPeriodicSync()
GitSync.stopPowerEventMonitoring()
print("Git auto-sync stopped")
end
GitSync.start()
if hs.menubar then
GitSync.menubar = hs.menubar.new()
GitSync.menubar:setTitle("🦖")
GitSync.menubar:setTooltip("Git Auto-Sync")
GitSync.menubar:setMenu({
{ title = "Sync Now", fn = function() GitSync.runSync("manual") end },
{ title = "Start Auto-Sync", fn = GitSync.start },
{ title = "Stop Auto-Sync", fn = GitSync.stop },
{ title = "-" },
{ title = "Repository: " .. GitSync.config.repoPath, disabled = true }
})
end
-- Make GitSync available globally for console access
_G.GitSync = GitSync
local filePath = "/Users/matthew.dillon/notebook/inbox.md"
hs.hotkey.bind({"cmd", "shift"}, "J", function()
local button, text = hs.dialog.textPrompt(
"Add To-Do",
"Enter your tasks (one per line):",
"",
"OK",
"Cancel"
)
if button == "OK" and text ~= "" then
-- Split input into lines
local lines = {}
for line in text:gmatch("[^\r\n]+") do
table.insert(lines, "- [ ] " .. line)
end
-- Concatenate lines with newlines
local formatted = table.concat(lines, "\n") .. "\n"
-- Append to file
local file = io.open(filePath, "a")
if file then
file:write(formatted)
file:close()
hs.alert.show("Tasks added!")
else
hs.alert.show("Failed to open file.")
end
end
end)

View file

@ -1,87 +1,90 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAza280UmpqZjBzWlF6eVg5
Vjh1OFZYMG5tejE4am1mWGNmTVprRzdjU3hFCjh1V05NQXhwWE5IQnZka05vZUMy
eUJkQXZCM1VuZ2ZpdUt3ekhMUEE5UVEKLS0tIEI4ZlN4R0xjYUpBLzVlWXNjZ0VO
OFpzN2dBektpM2NtMkkwaTRLaGpoRlkKBdUq1Wwk2B0b5XDXQ1e4C/4ja3ZQbkjn
nDNYyevmQrJ4MHXK27R3XK2HY5OUx9NdKQxfUbER07mv2ZywemdhLQOoKPkZiJU3
XfllBkHdce3GNT3gPwB0aOvoYV8cG+9lxAJEMGujqJwMosxJiPADbFSgEaHOEqga
0dF+7VCOLqWeUIvPLqar1j6QtKZVRC9zp5LFnoR2CRyobnEjZCnems+77mfWmeEM
jgOH15NP5vQyUZzZsQ/sRX2OVosqCZDy3RbUaIXtkTBlvPmCxUxEDlCgiXVL7bCD
qYOPwoOAp4TdWekpS28YTLnPm7S20wNamvzdPzunufQjxpkuuikZmcNLF2xxGAor
uIoLGRSVyOuCozz4ZdHN00gVElflCOE3V8GWE/mMMBYQ+ZuD0GijnBYIysvFU0UX
5E9LxZAa/BB+tw/9hAK91wa06Fs/g9jyBggSSQeKxpnKk5pZ4/b1nLL3YCvSKJqZ
B95NEi7Vc91O8oIyjGMNTjbCaLimUwmv2k1Xo833p+UTSO9oIHhkT26cwESxBsL9
L64excHap5zRAFT3CXhB+kSp1OXZJ2QF09XZOhtkLhM9H+AarEKH5BTpUhT7rOKh
O02k/kBiGl8fHnINlU2FCIBeWYSJ1j8bMGzBR1tlpOZ21GaXyuvCLvIDoNDBrRjy
nqAq8mUXqYwur3HCRGWhKKwIMHX7Ruqu5Mg7E/EZ/S/JaPnRM5oTxPSEWrEyRbnz
6+MQJ8zmUPPBVu9UTDvOUlkIV0pTDDMQDhv09xzhQiwndKbvGnt2CPHtIhZ+wQgN
QG4kPc2a8cFttWSkoJwx1hn2ORG833+EUkF0Y6j7X892mfSXW8c2/E5dsSYqDzar
4YbwDb1gmhgvYCGuKmQbquRiRADUckmX49ZFSSmqJBYyYXJeOUoAMAvsPWqieJ16
jRqBdFpSLZnbCRlsB6c3gBd9U2hwrc3Q8DW+WyOWUGMPeMBJzEAWCBOiW5t3HZQE
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
mPV02iEmBZa00r6F5nOvRgnMuLdyTTEqwP8SsKmgG1Xw2IO95TG3PwKy83MO1HM5
eAE0tFmZuxdwmCNdlFie43MbXif/+BR7AjxR3GnjzCj+7JhWyfSgchZk1Q5anzT/
4OuUzJr2STpCTzgQTTLpCi8pyF8SduwRUMHhzjSdDc1wy5npHcENT+af3Ly+X0iI
TqzKPfPgJH1JYrAQxieo8gm4Ole6wGai/pkOAWVM+MBOGM/AsHcmoyzMK/AIgpHd
ymASJP0yW/xSQfi5DL5vQUMGKfGGh1dG10EEYoYDssqi6e0+m2FLRHC8HGWT5eFw
mKkrQqisjYAJVaK8J/e+h19G3T9Y/xgTBD/2TGAcgqkfsLBjKz/ZHiyG6tioCr2I
bAdZKVaa2ObunrWAb/MWLrKOxTUM3ucygkklzI+wEChr6/LalWVKfO5fXHHEsU+Z
tdPInADFPEpgQ0fDECnoipNrxa/UOlRpMHXguR99foxgzj2Jwrmw9+PQE02RnAFi
rsK4Ll4AaX+crCZ01SYmc7fucN7PY7azgYRzxrH9Vs/YrBI=
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvVGF5ZE5KV1ZqajBMREFp
SlBWWlNVdnE1NWFkSStSNE16dGxsY1E3WUU0Cmg1aVYwU2tncFZqNEdpNnovUzRJ
b3I2Qms5cTNBL3BOMmJBVHJpQ0Y4amsKLS0tIC9JMlFZT1o2Tm00Qko2WEhvcWJt
VEp1eUwwRTFBRHR3TkJ4eU5MUnRLMFUKqtpY73n9s7/gkvNpPm0LtISYXPyau6Tv
rk5HgJ4WS7OgbT4v7401Ztvay5hFdjzVh8RWvgWB7Smap6gnrWpJJuN3vC0xUrmF
wrGHciLxOTCSW1EvOEA0euwYRs9RnNKzrTo5S9koS7fvuw/1Xy+/FdBMh4oGzall
lk9Ug0TtbfAq1BFsmvW4Y7gV2a74us7p82pwwp8mudQ9wcuD8Yt0Aq+V7EOevTQa
ej11U5Spo7nRwSQ5t7evG4fDzVN6sRTZenPr0R+b4E8+8GidEi/vZNIPVmwv/W7O
/nqufkGwbvkChEEVcuYziYhqz4Jwzj4XxaO9OgkzlaWUznCjT/fipCvhtySN2/zW
JTgWw5JAHkgDlsgSRjGIhYT2gsp4uyhU/ANqgkWodzovNBAmrj9FOV0ZmrJ8Vlfy
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
vrVZips=
-----END AGE ENCRYPTED FILE-----

View file

@ -18,7 +18,6 @@ brew install \
glow \
go \
golangci-lint \
hammerspoon \
helix \
inlyne \
jj \