Initial commit of Hammerspoon config

This commit is contained in:
Franco Pellicciotti
2026-05-14 18:59:23 -04:00
commit 8a9f5c37ff
683 changed files with 180195 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
local obj = {}
-- Helper to handle the UI automation for creating and pasting into a new page
local function createAndPaste(content)
hs.alert.show("Sending to AFFiNE...", 1.5)
-- 1. Open/Focus the AFFiNE Desktop App
hs.urlevent.openURL("affine://")
-- 2. Wait for the app to come to the front and settle
hs.timer.doAfter(1.2, function()
local affine = hs.application.get("AFFiNE")
if affine then
affine:activate()
-- Create a new page (Cmd+N)
hs.eventtap.keyStroke({"cmd"}, "n")
hs.timer.usleep(1000000) -- Wait 1s for the editor to load
-- Move from Title to Body (Return)
hs.eventtap.keyStroke({}, "return")
hs.timer.usleep(500000)
-- Set the clipboard to our note and paste (Cmd+V)
hs.pasteboard.setContents(content)
hs.timer.usleep(300000)
hs.eventtap.keyStroke({"cmd"}, "v")
hs.alert.show("Note Created ✅", 1.5)
else
hs.alert.show("AFFiNE App not found! ❌", 3)
end
end)
end
-- Function to get multi-line text input
local function getNoteInput()
local script = [[
tell application "System Events"
activate
set prompt to "Enter your quick note:"
set theResponse to display dialog prompt default answer " " with title "AFFiNE Quick Note" buttons {"Cancel", "Send"} default button "Send"
return text returned of theResponse
end tell
]]
local ok, result = hs.applescript(script)
if ok and result and result ~= "" then
createAndPaste(result)
end
end
function obj.init()
if not hyper then return end
-- 1. Hyper + N: Manual text input dialog
hs.hotkey.bind(hyper, "N", function()
getNoteInput()
end)
-- 2. Hyper + V: Instantly send current clipboard contents to a new page
hs.hotkey.bind(hyper, "V", function()
local clipboard = hs.pasteboard.getContents()
if clipboard and clipboard ~= "" then
createAndPaste(clipboard)
else
hs.alert.show("Clipboard is empty!")
end
end)
end
return obj