diff --git a/hammerspoon/.hammerspoon/init.lua b/hammerspoon/.hammerspoon/init.lua index 0396923..cd67772 100644 --- a/hammerspoon/.hammerspoon/init.lua +++ b/hammerspoon/.hammerspoon/init.lua @@ -8,7 +8,7 @@ local appNameToast = AppNameToast.new(config.appNameToast) local windowHighlight = WindowHighlight.new(config.windowHighlight, { onWindowFocused = function() if config.appNameToast.showOnFocus then - appNameToast:show() + appNameToast:showOnFocus() end end, }) diff --git a/hammerspoon/.hammerspoon/modules/app_name_toast.lua b/hammerspoon/.hammerspoon/modules/app_name_toast.lua index bc5f348..f34df3c 100644 --- a/hammerspoon/.hammerspoon/modules/app_name_toast.lua +++ b/hammerspoon/.hammerspoon/modules/app_name_toast.lua @@ -8,6 +8,7 @@ function AppNameToast.new(config) optionKeyDown = false, optionKeyWatcher = nil, shouldShow = nil, + focusedAppPid = nil, }, AppNameToast) end @@ -15,7 +16,7 @@ function AppNameToast:setShouldShow(predicate) self.shouldShow = predicate end -function AppNameToast:show() +function AppNameToast:_show(skipIfAppUnchanged) if not self.config.enabled then return end if self.shouldShow and not self.shouldShow() then return end @@ -23,6 +24,10 @@ function AppNameToast:show() local app = win and win:application() or nil if not app then return end + local appPid = app:pid() + if skipIfAppUnchanged and appPid == self.focusedAppPid then return end + self.focusedAppPid = appPid + if self.alertId then hs.alert.closeSpecific(self.alertId, 0) end @@ -35,6 +40,14 @@ function AppNameToast:show() ) end +function AppNameToast:show() + self:_show(false) +end + +function AppNameToast:showOnFocus() + self:_show(true) +end + function AppNameToast:start() if not self.config.showOnOption then return self end