hammerspoon config & drop taskwarrior

This commit is contained in:
Matthew Ryan Dillon 2025-07-11 07:24:13 -04:00
parent d0930f097a
commit c762b6bb81
6 changed files with 291 additions and 86 deletions

View file

@ -0,0 +1,66 @@
#!/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

@ -0,0 +1,156 @@
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 = "/Users/matthew.dillon/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,65 +1,65 @@
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWTnpXNllPa2JmNGY5QXFL YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzbFpuVTQxckd0NFRhVTU5
K3hGd3NQTTJXQ2x1WFFwdjdwbDJES1IrRWlvCmVUNE9WWHNQbU9YdjhjT01aSUhL NjA5NUJJQko0aFJUeDNvVm52SHR2U3FBVkQwClRYY2sxUzFPQm5MaUozM0IyeDds
eEVvNnRUM3UxYmo1bkVSZHN1YTAxUFUKLS0tIGpveWd0RkRyS2FSMW9rREFhRGx3 TkRaN1VhQkUzaU1lSVljS3JNRDcvSnMKLS0tIENoQTM3VWpZVnNwZnZnLytEbURE
VHAxcWJWYVF3Nlc1dUlRR3dHdjNXaWMKzj2pT5MhWvBwXplqgbJ2hcXhxNoKDRUa VVVqcURtSWdTMCtVSk5ET0tTeGVzZ1EKnyvWVnGxA8tCO/6bsC1ViKWft69Bym0+
jKlUepKkG6/V74cSaAOCez7hgKRhQlvGS/JLTY3kHgtcKYgHQZyBqRcjgw8CZdKI AelFEQuZHP379i2nzvv/gGcSXftajV94euTFEUds7bSUU/euPFc3MAClOb30rSP+
bDOA0Zg4Uss/kFSPgAKkcHn+/1CqUXDO6dG+FfuE20N7ecB+//jmq6UUAFzpC+Kd NWACnZ37FdsQf6vunFlDko8dUeOSVMjUUxQ706b1EXHq4DtJzUsOcrvS1VHSemQq
tcHl3MlmyZPtiBjoIvDd4N6DaNAVnRchEuHeUn2ekwZBNT+Oqm/zf9Ht44A7Nb/J FLBhW/fu2NRipJm5kdUpaUQHAODP7jeOjvxkbT0erHsdwWwEbqXNAMO32X546w0/
AJPq1TQvn1NlXQhZxPGdyOTMPH2YHHqOFrLsSuHlAs86gS85oXLILTb0cVFou4Vw UeRHZQ0UGderh6Kl9AnWj843laOxYQzSTCmvTKlL00Lp44sV9Mf9aRL908V66gy4
jcHTiV0dCxXTyPKLmXA9+pnoyzAx/wqoRK5/rsL8eIj9mz8GObHBWseh+kZKqvEI KUGbxsOFw3BaRBHp9mXjPrYEUG8hHhtTjkxgFHHqfTmhD+jOoR80k7NFcmM9J0It
Im0Jv2zDcrvu5MRRL9ybiE6LNhBLgOpC/5wk4l9oXNc2kM7QEyvLLcospmwmrwOd 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
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----

View file

@ -3,9 +3,11 @@ name = {{ .name | quote }}
email = {{ .email_personal | quote }} email = {{ .email_personal | quote }}
[git] [git]
push-bookmark-prefix = "{{ .github_personal }}_jj_"
private-commits = "description(glob:'private:*') | bookmarks('merge')" private-commits = "description(glob:'private:*') | bookmarks('merge')"
[templates]
git_push_bookmark = '"{{ .github_personal }}_jj_" ++ change_id.short()'
[colors] [colors]
"diff removed token" = { fg = "red", underline = false } "diff removed token" = { fg = "red", underline = false }
"diff added token" = { fg = "green", underline = false } "diff added token" = { fg = "green", underline = false }
@ -22,5 +24,5 @@ diff-formatter = ":git"
--when.repositories = ["~/Klaviyo", "~/.klaviyocli"] --when.repositories = ["~/Klaviyo", "~/.klaviyocli"]
[--scope.user] [--scope.user]
email = {{ .email_work | quote }} email = {{ .email_work | quote }}
[--scope.git] [--scope.templates]
push-bookmark-prefix = "2025_{{ .github_work }}_jj_" git_push_bookmark = '"2025_{{ .github_work }}_jj_" ++ change_id.short()'

View file

@ -1,18 +0,0 @@
data.location={{ .chezmoi.homeDir }}/.task
news.version=3.4.1
# must be specified bc taskrc not in default ~/.taskrc location
data.location=~/.local/share/task
hooks.location=~/.config/task/hooks
include solarized-dark-256.theme
report.list.columns=id,start.age,depends.indicator,priority,project,tags,recur.indicator,scheduled.countdown,due,until.remaining,description.count
report.list.labels=id,active,d,p,project,tags,r,sch,due,until,description
report.next.columns=id,start.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description
report.next.labels=id,active,deps,p,project,tag,recur,s,due,until,description
sync.server.url={{ .task_url }}
sync.server.client_id={{ .task_client_id }}
sync.encryption_secret={{ .task_encryption_secret }}

View file

@ -18,6 +18,7 @@ brew install \
glow \ glow \
go \ go \
golangci-lint \ golangci-lint \
hammerspoon \
helix \ helix \
inlyne \ inlyne \
jj \ jj \
@ -29,8 +30,6 @@ brew install \
presenterm \ presenterm \
ripgrep \ ripgrep \
sqlite \ sqlite \
task \
taskwarrior-tui \
tree \ tree \
watch \ watch \
wget \ wget \