Skip to content

Commit

Permalink
feat(hammerspoon): add PomodoroTimer
Browse files Browse the repository at this point in the history
  • Loading branch information
einverne committed Sep 6, 2024
1 parent 7b4caca commit 51a015c
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 0 deletions.
64 changes: 64 additions & 0 deletions hammerspoon/Spoons/PomodoroTimer.spoon/init.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
local obj = {}
obj.__index = obj

-- Metadata
obj.name = "PomodoroTimer"
obj.version = "1.0"
obj.author = "Ein Verne"
obj.homepage = "https://github.com/einverne/dotfiles"
obj.license = "MIT - https://opensource.org/licenses/MIT"

-- 设置默认值
obj.workDuration = 25 * 60 -- 25分钟工作时间
obj.breakDuration = 5 * 60 -- 5分钟休息时间
obj.timer = nil
obj.isWorking = true

obj.startSound = hs.sound.getByName("Submarine") -- 开始声音
obj.endSound = hs.sound.getByName("Glass") -- 结束声音

function obj:toggle()
if self.timer == nil then
self:start()
log.d("PomodoroTimer started")
else
self:stop()
log.d("PomodoroTimer stopped")
end
end

function obj:start()
log.d("PomodoroTimer start")
hs.alert.show("番茄时钟已启动", 2)
self.startSound:play() -- 播放开始声音
self:startTimer()
end

function obj:startTimer()
local duration = self.isWorking and self.workDuration or self.breakDuration
self.timer = hs.timer.doAfter(duration, function()
self.endSound:play() -- 播放结束声音
if self.isWorking then
hs.alert.show("工作时间结束,开始休息!", 5)
hs.notify.new({title="番茄时钟", informativeText="工作时间结束,开始休息!"}):send()
self.isWorking = false
else
hs.alert.show("休息时间结束,开始工作!", 5)
hs.notify.new({title="番茄时钟", informativeText="休息时间结束,开始工作!"}):send()
self.isWorking = true
end
self:startTimer() -- 开始下一个计时周期
end)
end

function obj:stop()
if self.timer then
self.timer:stop()
self.timer = nil
end
self.isWorking = true -- 重置为工作状态
hs.alert.show("番茄时钟已停止", 2)
self.endSound:play() -- 播放结束声音
end

return obj
9 changes: 9 additions & 0 deletions hammerspoon/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ if not hspoon_list then
"WifiNotifier",
"WinRectangle",
"Caffeine",
"PomodoroTimer",
}
end

Expand Down Expand Up @@ -543,6 +544,14 @@ if spoon.wifiNotifier then
spoon.wifiNotifier:start()
end

log.d("PomodoroTimer Spoon loaded successfully")
if spoon.PomodoroTimer then
hs.hotkey.bind({"cmd", "ctrl"}, "0", function()
log.d("PomodoroTimer hotkey pressed")
spoon.PomodoroTimer:toggle()
end)
log.d("PomodoroTimer hotkey bound")
end

----------------------------------------------------------------------------------------------------
-- Register browser tab typist: Type URL of current tab of running browser in markdown format. i.e. [title](link)
Expand Down

0 comments on commit 51a015c

Please sign in to comment.