-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(hammerspoon): add PomodoroTimer
- Loading branch information
Showing
2 changed files
with
73 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters