feat(ags): add notif button
This commit is contained in:
parent
d19e251440
commit
ce236f8750
7 changed files with 208 additions and 1 deletions
49
config/ags/bin/notif-toggle.sh
Executable file
49
config/ags/bin/notif-toggle.sh
Executable file
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
on () {
|
||||||
|
swaync-client -op
|
||||||
|
|
||||||
|
eww open closer-notif1
|
||||||
|
eww open closer-notif2
|
||||||
|
eww open closer-notif3
|
||||||
|
eww open closer-notif4
|
||||||
|
|
||||||
|
eww update notif-panel-state=true
|
||||||
|
}
|
||||||
|
|
||||||
|
off () {
|
||||||
|
swaync-client -cp
|
||||||
|
|
||||||
|
eww update notif-panel-state=false
|
||||||
|
|
||||||
|
eww close closer-notif1
|
||||||
|
eww close closer-notif2
|
||||||
|
eww close closer-notif3
|
||||||
|
eww close closer-notif4
|
||||||
|
}
|
||||||
|
|
||||||
|
toggle() {
|
||||||
|
if [[ $(eww get notif-panel-state) == "true" ]]; then
|
||||||
|
echo "Off"
|
||||||
|
off > /dev/null
|
||||||
|
else
|
||||||
|
echo "On"
|
||||||
|
on > /dev/null
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
state() {
|
||||||
|
if [[ $(eww get notif-panel-state) == "true" ]]; then
|
||||||
|
echo "Off"
|
||||||
|
else
|
||||||
|
echo "On"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ "$1" == "toggle" ]] && toggle
|
||||||
|
if [[ "$1" == "state" ]]; then
|
||||||
|
while true; do
|
||||||
|
state
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
fi
|
30
config/ags/bin/notif.sh
Executable file
30
config/ags/bin/notif.sh
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
state () {
|
||||||
|
if [[ $(hyprctl layers | grep swaync-control-center) == "" ]]; then
|
||||||
|
if [[ $(eww get notif-panel-state) == "true" ]]; then
|
||||||
|
eww update notif-panel-state=false
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
icon () {
|
||||||
|
COUNT=$(swaync-client -c)
|
||||||
|
|
||||||
|
if [[ $(swaync-client -D) == "true" ]]; then
|
||||||
|
echo " "
|
||||||
|
elif [[ $COUNT == "0" ]]; then
|
||||||
|
echo "$COUNT "
|
||||||
|
else
|
||||||
|
echo "$COUNT "
|
||||||
|
fi
|
||||||
|
state
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ $1 == "icon" ]]; then
|
||||||
|
while true; do
|
||||||
|
sleep 0.01
|
||||||
|
icon
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
39
config/ags/bin/qs-toggle.sh
Executable file
39
config/ags/bin/qs-toggle.sh
Executable file
|
@ -0,0 +1,39 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
on () {
|
||||||
|
eww open closer &&
|
||||||
|
|
||||||
|
eww open quick-settings-reveal;
|
||||||
|
eww update showqs=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
off () {
|
||||||
|
eww update showqs=false;
|
||||||
|
eww close quick-settings-reveal;
|
||||||
|
}
|
||||||
|
|
||||||
|
toggle() {
|
||||||
|
if [[ $(eww get showqs) == "true" ]]; then
|
||||||
|
echo "Off"
|
||||||
|
off > /dev/null
|
||||||
|
else
|
||||||
|
echo "On"
|
||||||
|
on > /dev/null
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
state() {
|
||||||
|
if [[ $(eww get showqs) == "true" ]]; then
|
||||||
|
echo "Off"
|
||||||
|
else
|
||||||
|
echo "On"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ "$1" == "toggle" ]] && toggle
|
||||||
|
if [[ "$1" == "state" ]]; then
|
||||||
|
while true; do
|
||||||
|
state
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
fi
|
|
@ -7,6 +7,7 @@ import { OskToggle } from './osk-toggle.js';
|
||||||
import { Heart } from './heart.js';
|
import { Heart } from './heart.js';
|
||||||
import { TabletToggle } from './tablet-toggle.js';
|
import { TabletToggle } from './tablet-toggle.js';
|
||||||
import { QsToggle } from './quick-settings.js';
|
import { QsToggle } from './quick-settings.js';
|
||||||
|
import { NotifButton } from './notif-button.js';
|
||||||
|
|
||||||
export const Bar = Window({
|
export const Bar = Window({
|
||||||
name: 'left-bar',
|
name: 'left-bar',
|
||||||
|
@ -51,6 +52,10 @@ export const Bar = Window({
|
||||||
Box({
|
Box({
|
||||||
halign: 'end',
|
halign: 'end',
|
||||||
children: [
|
children: [
|
||||||
|
NotifButton,
|
||||||
|
|
||||||
|
Separator(12),
|
||||||
|
|
||||||
QsToggle,
|
QsToggle,
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
|
|
45
config/ags/js/bar/notif-button.js
Normal file
45
config/ags/js/bar/notif-button.js
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
const { Box, Label } = ags.Widget;
|
||||||
|
const { subprocess } = ags.Utils;
|
||||||
|
import { EventBox } from '../common.js';
|
||||||
|
const deflisten = subprocess;
|
||||||
|
|
||||||
|
deflisten(
|
||||||
|
['bash', '-c', '/home/matt/.nix/config/ags/bin/notif.sh icon'],
|
||||||
|
(output) => {
|
||||||
|
NotifButton.child.children[0].label = ' ' + output;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
deflisten(
|
||||||
|
['bash', '-c', '/home/matt/.nix/config/ags/bin/notif-toggle.sh state'],
|
||||||
|
(output) => {
|
||||||
|
print(output)
|
||||||
|
if (output == 'On') {
|
||||||
|
NotifButton.toggleClassName('toggle-on', false);
|
||||||
|
} else {
|
||||||
|
NotifButton.toggleClassName('toggle-on', true);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
export const NotifButton = EventBox({
|
||||||
|
className: 'toggle-off',
|
||||||
|
onPrimaryClickRelease: function() {
|
||||||
|
subprocess(
|
||||||
|
['bash', '-c', '/home/matt/.nix/config/ags/bin/notif-toggle.sh toggle'],
|
||||||
|
(output) => {
|
||||||
|
print(output)
|
||||||
|
if (output == 'On') {
|
||||||
|
NotifButton.toggleClassName('toggle-on', true);
|
||||||
|
} else {
|
||||||
|
NotifButton.toggleClassName('toggle-on', false);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Box({
|
||||||
|
className: 'notif-panel',
|
||||||
|
vertical: false,
|
||||||
|
child: Label({
|
||||||
|
label: "",
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
});
|
39
config/ags/js/bar/quick-settings.js
Normal file
39
config/ags/js/bar/quick-settings.js
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
const { Box, Label } = ags.Widget;
|
||||||
|
const { subprocess } = ags.Utils;
|
||||||
|
import { EventBox } from '../common.js';
|
||||||
|
const deflisten = subprocess;
|
||||||
|
|
||||||
|
deflisten(
|
||||||
|
['bash', '-c', '/home/matt/.nix/config/ags/bin/qs-toggle.sh state'],
|
||||||
|
(output) => {
|
||||||
|
print(output)
|
||||||
|
if (output == 'On') {
|
||||||
|
QsToggle.toggleClassName('toggle-on', false);
|
||||||
|
} else {
|
||||||
|
QsToggle.toggleClassName('toggle-on', true);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
export const QsToggle = EventBox({
|
||||||
|
className: 'toggle-off',
|
||||||
|
onPrimaryClickRelease: function() {
|
||||||
|
subprocess(
|
||||||
|
['bash', '-c', '/home/matt/.nix/config/ags/bin/qs-toggle.sh toggle'],
|
||||||
|
(output) => {
|
||||||
|
print(output)
|
||||||
|
if (output == 'On') {
|
||||||
|
QsToggle.toggleClassName('toggle-on', true);
|
||||||
|
} else {
|
||||||
|
QsToggle.toggleClassName('toggle-on', false);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Box({
|
||||||
|
className: 'quick-settings-toggle',
|
||||||
|
vertical: false,
|
||||||
|
child: Label({
|
||||||
|
label: " ",
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
});
|
|
@ -1,5 +1,5 @@
|
||||||
(defwidget closer []
|
(defwidget closer []
|
||||||
(eventbox :onclick "$EWW_PATH/close-opened.sh && eww close closer")
|
(eventbox :onclick "$EWW_PATH/close-opened.sh && eww close closer; eww update showqs=false")
|
||||||
)
|
)
|
||||||
(defwindow closer :monitor 0
|
(defwindow closer :monitor 0
|
||||||
:geometry (geometry :width "100%"
|
:geometry (geometry :width "100%"
|
||||||
|
|
Loading…
Reference in a new issue