From 824dc3093125fdfd39b16e47534b6c43b80d8221 Mon Sep 17 00:00:00 2001 From: nedia Date: Tue, 18 Jan 2022 17:22:57 +1300 Subject: [PATCH 1/8] dunstctl: script, module & preview images --- polybar-scripts/dunst-controller/README.md | 29 +++++++++++++++ polybar-scripts/dunst-controller/dunstctl | 33 ++++++++++++++++++ .../dunst-controller/dunstctl-0.png | Bin 0 -> 441 bytes .../dunst-controller/dunstctl-1.png | Bin 0 -> 832 bytes .../dunst-controller/dunstctl-2.png | Bin 0 -> 15904 bytes polybar-scripts/dunst-controller/dunstctl.ini | 7 ++++ 6 files changed, 69 insertions(+) create mode 100644 polybar-scripts/dunst-controller/README.md create mode 100755 polybar-scripts/dunst-controller/dunstctl create mode 100644 polybar-scripts/dunst-controller/dunstctl-0.png create mode 100644 polybar-scripts/dunst-controller/dunstctl-1.png create mode 100644 polybar-scripts/dunst-controller/dunstctl-2.png create mode 100644 polybar-scripts/dunst-controller/dunstctl.ini diff --git a/polybar-scripts/dunst-controller/README.md b/polybar-scripts/dunst-controller/README.md new file mode 100644 index 00000000..a66605b9 --- /dev/null +++ b/polybar-scripts/dunst-controller/README.md @@ -0,0 +1,29 @@ +# dunstctl, a dunst controller script & module + +This script is written in [`fish`](https://fishshell.com/), and displays a bell +icon that can be used to interact with [`dunst`](https://github.com/dunst-project/dunst) +via `dunstctl`, and utilises `dunstify` to send notifications. + +Click to show historic notifications, middle-click to mute/unmute notifications, +and right-click to dismiss all. + +`chmod +x $HOME/.config/polybar/scripts/dunstctl` (or the path of your choice.) + +## Preview + +![dunst](dunstctl-0.png) +![dunst-pause](dunstctl-1.png) + +![dunst-notif](dunstctl-2.png) + +## Example module + +```ini +[module/dunstctl] +click-left = dunstctl history-pop +click-middle = $HOME/.config/polybar/scripts/dunstctl toggle +click-right = dunstctl close-all +exec = $HOME/.config/polybar/scripts/dunstctl +interval = 1.6 +type = custom/script +``` diff --git a/polybar-scripts/dunst-controller/dunstctl b/polybar-scripts/dunst-controller/dunstctl new file mode 100755 index 00000000..a757cd3f --- /dev/null +++ b/polybar-scripts/dunst-controller/dunstctl @@ -0,0 +1,33 @@ +#! /usr/bin/env fish + +function mute + dunstctl set-paused false && \ + dunstify 'dunst' 'Unmuted notifications.' -u low & +end + +function unmute + dunstify 'dunst' 'Muting notifications...' -u low & + # We're about to mute notifications, so the above notification will + # effectively not show, since set-paused hides notifications. So, sleep + # for 3 seconds. + sleep 2 + # Close all to prevent notification from showing up once we unmute. + dunstctl close-all + dunstctl set-paused true +end + +if test (dunstctl is-paused) = "true" + switch $argv[1] + case 'toggle' + mute + case '*' + echo ' '(dunstctl count waiting) + end +else + switch $argv[1] + case 'toggle' + unmute + case '*' + echo '' + end +end diff --git a/polybar-scripts/dunst-controller/dunstctl-0.png b/polybar-scripts/dunst-controller/dunstctl-0.png new file mode 100644 index 0000000000000000000000000000000000000000..3470775ea55b5c00b89ce147045c33e308f24cf0 GIT binary patch literal 441 zcmV;q0Y?6bP)dVAKVpE*N#euyFy0Lrw3VYJD!s zT)@mPAV|6{MnPTYin^o>CuwO79Y=kUe~<27d-dx-y3hS#YGGmirmNe1lBf|+K zx`2`2!C4)9U^B9rI2(wN?gY|Yz-{86VZnyO7Di4Bzbq3DQe8kodB7rL-Pspr#?OSy zpNvf0I>us;4xYXFiG;$5_%LAPQB=|3N7(-V@83Td7BTY687Oj+6cvnQw$@qH%DMw| zv~{h;ng2c67Vf{~+#hm`VIa3&U|{(7?#?$E6LBUMrq}B`m#%&AgS<+Cf&4I_9vIr~ jgHacZx?t1=!^;H#DKJ3A5h5V_00000NkvXXu0mjf5*NNM literal 0 HcmV?d00001 diff --git a/polybar-scripts/dunst-controller/dunstctl-1.png b/polybar-scripts/dunst-controller/dunstctl-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b67297933bd3f9c2e5c024bfb8d9c988922eca01 GIT binary patch literal 832 zcmV-G1Hb%5j5>%A7nR8ApW>Sh0GcL8nxQCI0 zgPR%6J^w#k+?L0`95|&B?yfxH1g`0|NuY-^b@~@OwmRznTafF3BV{IZ=}Sz<>?ok z@%Hciy5{NfwUI0LWpMv~e|guk{5kjj;!umbU}WSnOe&m}t?~ENs?4%2=Rf^tU{NdU z4$#rowH9ao_hehR|B`cm@Op zdVS~8wGVy}m6S;YMAl{W14F(&L~}6eAVOf&L4?4lg9w2^=O6$iit^ibLYwaZ0000< KMNUMnLSTXr?27#W literal 0 HcmV?d00001 diff --git a/polybar-scripts/dunst-controller/dunstctl-2.png b/polybar-scripts/dunst-controller/dunstctl-2.png new file mode 100644 index 0000000000000000000000000000000000000000..b063f6fc677a9a3d7564dac7e171145ed37976cf GIT binary patch literal 15904 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 literal 0 HcmV?d00001 diff --git a/polybar-scripts/dunst-controller/dunstctl.ini b/polybar-scripts/dunst-controller/dunstctl.ini new file mode 100644 index 00000000..57e29aca --- /dev/null +++ b/polybar-scripts/dunst-controller/dunstctl.ini @@ -0,0 +1,7 @@ +[module/dunstctl] +click-left = dunstctl history-pop +click-middle = $HOME/.config/polybar/scripts/dunstctl toggle +click-right = dunstctl close-all +exec = $HOME/.config/polybar/scripts/dunstctl +interval = 1.6 +type = custom/script From eb2dde4858f5e40c54b6f18e3bc943ff5a98b96f Mon Sep 17 00:00:00 2001 From: nedia Date: Tue, 18 Jan 2022 17:40:36 +1300 Subject: [PATCH 2/8] feat: add show-all on double-click --- polybar-scripts/dunst-controller/dunstctl | 18 +++++++++++++++--- polybar-scripts/dunst-controller/dunstctl.ini | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/polybar-scripts/dunst-controller/dunstctl b/polybar-scripts/dunst-controller/dunstctl index a757cd3f..ae024b26 100755 --- a/polybar-scripts/dunst-controller/dunstctl +++ b/polybar-scripts/dunst-controller/dunstctl @@ -2,24 +2,34 @@ function mute dunstctl set-paused false && \ - dunstify 'dunst' 'Unmuted notifications.' -u low & + dunstify 'dunst' 'Unmuted notifications.' -i polari -u low & end function unmute - dunstify 'dunst' 'Muting notifications...' -u low & + dunstify 'dunst' 'Muting notifications...' -i polari -u low & # We're about to mute notifications, so the above notification will # effectively not show, since set-paused hides notifications. So, sleep - # for 3 seconds. + # for 2 seconds. sleep 2 # Close all to prevent notification from showing up once we unmute. dunstctl close-all dunstctl set-paused true end +function pop_all + set ids (dunstctl history | jq -r '.data[][].id.data') + for id in $ids + dunstctl history-pop $id + end +end + if test (dunstctl is-paused) = "true" switch $argv[1] case 'toggle' mute + case 'show-all' + unmute + pop_all case '*' echo ' '(dunstctl count waiting) end @@ -27,6 +37,8 @@ else switch $argv[1] case 'toggle' unmute + case 'show-all' + pop_all case '*' echo '' end diff --git a/polybar-scripts/dunst-controller/dunstctl.ini b/polybar-scripts/dunst-controller/dunstctl.ini index 57e29aca..70987968 100644 --- a/polybar-scripts/dunst-controller/dunstctl.ini +++ b/polybar-scripts/dunst-controller/dunstctl.ini @@ -2,6 +2,7 @@ click-left = dunstctl history-pop click-middle = $HOME/.config/polybar/scripts/dunstctl toggle click-right = dunstctl close-all +double-click-left = $HOME/.config/polybar/scripts/dunstctl show-all exec = $HOME/.config/polybar/scripts/dunstctl interval = 1.6 type = custom/script From ab4e92772407dd81168e52cd2c5eab310fc742b2 Mon Sep 17 00:00:00 2001 From: nedia Date: Tue, 18 Jan 2022 17:43:28 +1300 Subject: [PATCH 3/8] fix: unmute & mute were mixed up --- polybar-scripts/dunst-controller/dunstctl | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/polybar-scripts/dunst-controller/dunstctl b/polybar-scripts/dunst-controller/dunstctl index ae024b26..9fd98cbc 100755 --- a/polybar-scripts/dunst-controller/dunstctl +++ b/polybar-scripts/dunst-controller/dunstctl @@ -1,11 +1,11 @@ #! /usr/bin/env fish -function mute +function unmute dunstctl set-paused false && \ dunstify 'dunst' 'Unmuted notifications.' -i polari -u low & end -function unmute +function mute dunstify 'dunst' 'Muting notifications...' -i polari -u low & # We're about to mute notifications, so the above notification will # effectively not show, since set-paused hides notifications. So, sleep @@ -17,8 +17,7 @@ function unmute end function pop_all - set ids (dunstctl history | jq -r '.data[][].id.data') - for id in $ids + for id in (dunstctl history | jq -r '.data[][].id.data') dunstctl history-pop $id end end @@ -26,7 +25,7 @@ end if test (dunstctl is-paused) = "true" switch $argv[1] case 'toggle' - mute + unmute case 'show-all' unmute pop_all @@ -36,7 +35,7 @@ if test (dunstctl is-paused) = "true" else switch $argv[1] case 'toggle' - unmute + mute case 'show-all' pop_all case '*' From a985a959b4d5d3990358666d84647b43a28d25df Mon Sep 17 00:00:00 2001 From: nedia Date: Wed, 19 Jan 2022 06:32:07 +1300 Subject: [PATCH 4/8] feat: include a sh/bash version of the script --- polybar-scripts/dunst-controller/dunstctl.sh | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 polybar-scripts/dunst-controller/dunstctl.sh diff --git a/polybar-scripts/dunst-controller/dunstctl.sh b/polybar-scripts/dunst-controller/dunstctl.sh new file mode 100755 index 00000000..b2de3369 --- /dev/null +++ b/polybar-scripts/dunst-controller/dunstctl.sh @@ -0,0 +1,50 @@ +#! /usr/bin/env sh + +unmute() { + dunstctl set-paused false && \ + dunstify 'dunst' 'Unmuted notifications.' -i polari -u low & +} + +mute() { + dunstify 'dunst' 'Muting notifications...' -i polari -u low & + # We're about to mute notifications, so the above notification will + # effectively not show, since set-paused hides notifications. So, sleep + # for 2 seconds. + sleep 2 + # Close all to prevent notification from showing up once we unmute. + dunstctl close-all + dunstctl set-paused true +} + +pop_all() { + for id in $(dunstctl history | while jq -r '.data[][].id.data'); do + dunstctl history-pop $id + done +} + +if [ "$(dunstctl is-paused)" = 'true' ]; then + case $1 in + toggle) + unmute + ;; + show-all) + unmute + pop_all + ;; + *) + echo " $(dunstctl count waiting)" + ;; + esac +else + case $1 in + toggle) + mute + ;; + show-all) + pop_all + ;; + *) + echo '' + ;; + esac +fi From 74d1e9b404b4fb43ae4094565c6f1416b4fedb73 Mon Sep 17 00:00:00 2001 From: nedia Date: Wed, 19 Jan 2022 16:52:54 +1300 Subject: [PATCH 5/8] fix: use shell script instead of fish script --- polybar-scripts/dunst-controller/dunstctl.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/polybar-scripts/dunst-controller/dunstctl.ini b/polybar-scripts/dunst-controller/dunstctl.ini index 70987968..dd2e115c 100644 --- a/polybar-scripts/dunst-controller/dunstctl.ini +++ b/polybar-scripts/dunst-controller/dunstctl.ini @@ -1,8 +1,8 @@ [module/dunstctl] click-left = dunstctl history-pop -click-middle = $HOME/.config/polybar/scripts/dunstctl toggle +click-middle = $HOME/.config/polybar/scripts/dunstctl.sh toggle click-right = dunstctl close-all -double-click-left = $HOME/.config/polybar/scripts/dunstctl show-all -exec = $HOME/.config/polybar/scripts/dunstctl +double-click-left = $HOME/.config/polybar/scripts/dunstctl.sh show-all +exec = $HOME/.config/polybar/scripts/dunstctl.sh interval = 1.6 type = custom/script From 17ae3fbf71300533233017751c9ee4374050018f Mon Sep 17 00:00:00 2001 From: nedia Date: Sun, 23 Jan 2022 21:02:59 +1300 Subject: [PATCH 6/8] fix: fix pop_all() in sh script Co-authored-by: Emanuele Torre --- polybar-scripts/dunst-controller/dunstctl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polybar-scripts/dunst-controller/dunstctl.sh b/polybar-scripts/dunst-controller/dunstctl.sh index b2de3369..10f5e180 100755 --- a/polybar-scripts/dunst-controller/dunstctl.sh +++ b/polybar-scripts/dunst-controller/dunstctl.sh @@ -17,8 +17,8 @@ mute() { } pop_all() { - for id in $(dunstctl history | while jq -r '.data[][].id.data'); do - dunstctl history-pop $id + dunstctl history | jq '.data[][].id.data' | while IFS= read -r id; do + dunstctl history-pop "$id" done } From e4a4b7cd995cea4a9efb4353147abe4cf455a4f9 Mon Sep 17 00:00:00 2001 From: nedia Date: Sun, 23 Jan 2022 21:06:14 +1300 Subject: [PATCH 7/8] fix: update README to reflect dunstctl.ini --- polybar-scripts/dunst-controller/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/polybar-scripts/dunst-controller/README.md b/polybar-scripts/dunst-controller/README.md index a66605b9..4ba0beac 100644 --- a/polybar-scripts/dunst-controller/README.md +++ b/polybar-scripts/dunst-controller/README.md @@ -21,9 +21,10 @@ and right-click to dismiss all. ```ini [module/dunstctl] click-left = dunstctl history-pop -click-middle = $HOME/.config/polybar/scripts/dunstctl toggle +click-middle = $HOME/.config/polybar/scripts/dunstctl.sh toggle click-right = dunstctl close-all -exec = $HOME/.config/polybar/scripts/dunstctl +double-click-left = $HOME/.config/polybar/scripts/dunstctl.sh show-all +exec = $HOME/.config/polybar/scripts/dunstctl.sh interval = 1.6 type = custom/script ``` From 4fdaffc9de4c278b275f7b9f86b0c37b557af989 Mon Sep 17 00:00:00 2001 From: nedia Date: Sun, 23 Jan 2022 21:07:51 +1300 Subject: [PATCH 8/8] chore: include a note re double click in README --- polybar-scripts/dunst-controller/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polybar-scripts/dunst-controller/README.md b/polybar-scripts/dunst-controller/README.md index 4ba0beac..c5670516 100644 --- a/polybar-scripts/dunst-controller/README.md +++ b/polybar-scripts/dunst-controller/README.md @@ -5,9 +5,9 @@ icon that can be used to interact with [`dunst`](https://github.com/dunst-projec via `dunstctl`, and utilises `dunstify` to send notifications. Click to show historic notifications, middle-click to mute/unmute notifications, -and right-click to dismiss all. +and right-click to dismiss all. Double left click will show all notification history. -`chmod +x $HOME/.config/polybar/scripts/dunstctl` (or the path of your choice.) +`chmod +x $HOME/.config/polybar/scripts/dunstctl.sh` (or the path of your choice.) ## Preview