nixos-configs/devices/wim/config/ags/js/quick-settings/slider-box.js

67 lines
2.1 KiB
JavaScript

import Audio from 'resource:///com/github/Aylur/ags/service/audio.js';
import { Box, Slider, Icon, EventBox } from 'resource:///com/github/Aylur/ags/widget.js';
import { SpeakerIcon } from '../misc/audio-icons.js';
export default () => Box({
className: 'slider-box',
vertical: true,
hpack: 'center',
children: [
Box({
className: 'slider',
vpack: 'start',
hpack: 'center',
children: [
Icon({
size: 26,
className: 'slider-label',
binds: [['icon', SpeakerIcon, 'value']],
}),
Slider({
connections: [[Audio, slider => {
if (Audio.speaker)
slider.value = Audio.speaker.volume;
}, 'speaker-changed']],
onChange: ({ value }) => Audio.speaker.volume = value,
max: 0.999,
draw_value: false,
}),
],
}),
Box({
className: 'slider',
vpack: 'start',
hpack: 'center',
children: [
Icon({
className: 'slider-label',
icon: 'display-brightness-symbolic',
}),
EventBox({
onHover: box => box.child._canChange = false,
onHoverLost: box => box.child._canChange = true,
child: Slider({
properties: [
['canChange', true],
],
onChange: ({ value }) => {
Brightness.screen = value;
},
connections: [[Brightness, slider => {
if (slider._canChange)
slider.value = Brightness.screen;
}, 'screen']],
draw_value: false,
}),
}),
],
}),
],
});