From fb4711a5e807c9b020ea9af10d6cdc57aad0b099 Mon Sep 17 00:00:00 2001 From: Josh Sherman Date: Wed, 1 Jun 2022 21:21:03 -0500 Subject: [PATCH] Slack notification menubar, and other stuff --- .gitignore | 1 + macos/.hammerspoon/images/homebrew-color.png | Bin 0 -> 7272 bytes macos/.hammerspoon/images/homebrew-color.svg | 16 ++++ macos/.hammerspoon/images/homebrew-white.png | Bin 0 -> 3310 bytes macos/.hammerspoon/images/homebrew-white.svg | 79 +++++++++++++++++++ macos/.hammerspoon/images/slack-color.png | Bin 0 -> 15110 bytes macos/.hammerspoon/images/slack-color.svg | 1 + macos/.hammerspoon/images/slack-white.png | Bin 0 -> 8391 bytes macos/.hammerspoon/images/slack-white.svg | 78 ++++++++++++++++++ macos/.hammerspoon/init.lua | 50 +++++++++++- 10 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 macos/.hammerspoon/images/homebrew-color.png create mode 100644 macos/.hammerspoon/images/homebrew-color.svg create mode 100644 macos/.hammerspoon/images/homebrew-white.png create mode 100644 macos/.hammerspoon/images/homebrew-white.svg create mode 100644 macos/.hammerspoon/images/slack-color.png create mode 100644 macos/.hammerspoon/images/slack-color.svg create mode 100644 macos/.hammerspoon/images/slack-white.png create mode 100644 macos/.hammerspoon/images/slack-white.svg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/macos/.hammerspoon/images/homebrew-color.png b/macos/.hammerspoon/images/homebrew-color.png new file mode 100644 index 0000000000000000000000000000000000000000..d0bc201fe50f69024d8b5cec343d20620aa468c4 GIT binary patch literal 7272 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 literal 0 HcmV?d00001 diff --git a/macos/.hammerspoon/images/homebrew-color.svg b/macos/.hammerspoon/images/homebrew-color.svg new file mode 100644 index 0000000..ebe27a9 --- /dev/null +++ b/macos/.hammerspoon/images/homebrew-color.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/macos/.hammerspoon/images/homebrew-white.png b/macos/.hammerspoon/images/homebrew-white.png new file mode 100644 index 0000000000000000000000000000000000000000..397786978042892978fcbc118f2a653bbf194b5e GIT binary patch literal 3310 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 literal 0 HcmV?d00001 diff --git a/macos/.hammerspoon/images/homebrew-white.svg b/macos/.hammerspoon/images/homebrew-white.svg new file mode 100644 index 0000000..eeb1f37 --- /dev/null +++ b/macos/.hammerspoon/images/homebrew-white.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + diff --git a/macos/.hammerspoon/images/slack-color.png b/macos/.hammerspoon/images/slack-color.png new file mode 100644 index 0000000000000000000000000000000000000000..b6dc3aafd35f58eb33dce099fad4fa18c59a3d8a GIT binary patch literal 15110 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 syK=Df>;ty;!st(KzB3s-xd \ No newline at end of file diff --git a/macos/.hammerspoon/images/slack-white.png b/macos/.hammerspoon/images/slack-white.png new file mode 100644 index 0000000000000000000000000000000000000000..89252b35332825b6269f04e4a1cf68463d1f2ca5 GIT binary patch literal 8391 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 QbaVhs)dwoo%GNLc7yf&{fB*mh literal 0 HcmV?d00001 diff --git a/macos/.hammerspoon/images/slack-white.svg b/macos/.hammerspoon/images/slack-white.svg new file mode 100644 index 0000000..da1d12b --- /dev/null +++ b/macos/.hammerspoon/images/slack-white.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + diff --git a/macos/.hammerspoon/init.lua b/macos/.hammerspoon/init.lua index 35387a0..6fce839 100644 --- a/macos/.hammerspoon/init.lua +++ b/macos/.hammerspoon/init.lua @@ -66,7 +66,12 @@ end) -- Homebrew Update Indicator -------------------------------------------------------------------------------- +local homebrewIconWhite = hs.image + .imageFromPath('~/.hammerspoon/images/homebrew-white.png') + :setSize(hs.geometry.size(16, 16)) + local homebrewMenubar = hs.menubar.new() +homebrewMenubar:setIcon(homebrewIconWhite) homebrewMenubar:setClickCallback(function() hs.applescript.applescript([[ @@ -82,12 +87,53 @@ function updateHomebrewMenubar() local _, numOutdated = outdated:gsub('\n', '\n') if numOutdated > 0 then - homebrewMenubar:setTitle(string.format('🍺 %s', numOutdated)) + homebrewMenubar:setTitle(string.format(' %s', numOutdated)) homebrewMenubar:setTooltip(outdated) else - homebrewMenubar:delete() + homebrewMenubar:setTitle('') + homebrewMenubar:setTooltip('Up to date') end end updateHomebrewMenubar() hs.timer.doEvery(3600, updateHomebrewMenubar) + +-------------------------------------------------------------------------------- +-- Slack Message Indicator +-------------------------------------------------------------------------------- + +local slackIconWhite = hs.image + .imageFromPath('~/.hammerspoon/images/slack-white.png') + :setSize(hs.geometry.size(16, 16)) + +local slackMenubar = hs.menubar.new() +slackMenubar:setIcon(slackIconWhite) + +slackMenubar:setClickCallback(function() + hs.application.launchOrFocus('Slack') +end) + +function updateSlackMenubar() + local dock = hs.axuielement.applicationElement('Dock') + local children = dock:attributeValue('AXChildren') + + if children and children[1] and children[1]:attributeValue('AXRole') == 'AXList' then + local list = children[1]:attributeValue('AXChildren') + for _, v in pairs(list) do + if v:attributeValue('AXTitle') == 'Slack' then + local label = v:attributeValue('AXStatusLabel') or '0' + + if label == '0' then + slackMenubar:setTitle('') + slackMenubar:setTooltip('No unread messages') + else + slackMenubar:setTitle(string.format(' %s', label)) + slackMenubar:setTooltip(string.format('%s unread message(s)', label)) + end + end + end + end +end + +updateSlackMenubar() +hs.timer.doEvery(60, updateSlackMenubar)