refactor: (ags bar): make hover revs more consistent
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
0e60d1d098
commit
3b4a541d2e
24 changed files with 289 additions and 378 deletions
|
@ -1,53 +0,0 @@
|
||||||
import Audio from 'resource:///com/github/Aylur/ags/service/audio.js';
|
|
||||||
|
|
||||||
import { Label, Box, EventBox, Icon, Revealer } from 'resource:///com/github/Aylur/ags/widget.js';
|
|
||||||
|
|
||||||
import { SpeakerIcon } from '../../misc/audio-icons.js';
|
|
||||||
import Separator from '../../misc/separator.js';
|
|
||||||
|
|
||||||
const SPACING = 5;
|
|
||||||
|
|
||||||
|
|
||||||
export default () => {
|
|
||||||
const icon = Icon({
|
|
||||||
icon: SpeakerIcon.bind(),
|
|
||||||
});
|
|
||||||
|
|
||||||
const hoverRevLabel = Revealer({
|
|
||||||
transition: 'slide_right',
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
|
|
||||||
children: [
|
|
||||||
Separator(SPACING),
|
|
||||||
|
|
||||||
Label().hook(Audio, (self) => {
|
|
||||||
if (Audio.speaker?.volume) {
|
|
||||||
self.label =
|
|
||||||
`${Math.round(Audio.speaker?.volume * 100)}%`;
|
|
||||||
}
|
|
||||||
}, 'speaker-changed'),
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
const widget = EventBox({
|
|
||||||
on_hover: () => {
|
|
||||||
hoverRevLabel.reveal_child = true;
|
|
||||||
},
|
|
||||||
on_hover_lost: () => {
|
|
||||||
hoverRevLabel.reveal_child = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
class_name: 'audio',
|
|
||||||
|
|
||||||
children: [
|
|
||||||
icon,
|
|
||||||
hoverRevLabel,
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
};
|
|
|
@ -1,58 +0,0 @@
|
||||||
import Bluetooth from 'resource:///com/github/Aylur/ags/service/bluetooth.js';
|
|
||||||
|
|
||||||
import { Label, Box, EventBox, Icon, Revealer } from 'resource:///com/github/Aylur/ags/widget.js';
|
|
||||||
|
|
||||||
import Separator from '../../misc/separator.js';
|
|
||||||
|
|
||||||
const SPACING = 5;
|
|
||||||
|
|
||||||
|
|
||||||
export default () => {
|
|
||||||
const icon = Icon().hook(Bluetooth, (self) => {
|
|
||||||
if (Bluetooth.enabled) {
|
|
||||||
self.icon = Bluetooth.connected_devices[0] ?
|
|
||||||
Bluetooth.connected_devices[0].icon_name :
|
|
||||||
'bluetooth-active-symbolic';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
self.icon = 'bluetooth-disabled-symbolic';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const hoverRevLabel = Revealer({
|
|
||||||
transition: 'slide_right',
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
|
|
||||||
children: [
|
|
||||||
Separator(SPACING),
|
|
||||||
|
|
||||||
Label().hook(Bluetooth, (self) => {
|
|
||||||
self.label = Bluetooth.connected_devices[0] ?
|
|
||||||
`${Bluetooth.connected_devices[0]}` :
|
|
||||||
'Disconnected';
|
|
||||||
}, 'notify::connected-devices'),
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
const widget = EventBox({
|
|
||||||
on_hover: () => {
|
|
||||||
hoverRevLabel.reveal_child = true;
|
|
||||||
},
|
|
||||||
on_hover_lost: () => {
|
|
||||||
hoverRevLabel.reveal_child = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
class_name: 'bluetooth',
|
|
||||||
|
|
||||||
children: [
|
|
||||||
icon,
|
|
||||||
hoverRevLabel,
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
};
|
|
|
@ -1,48 +0,0 @@
|
||||||
import { Box, EventBox, Icon, Label, Revealer } from 'resource:///com/github/Aylur/ags/widget.js';
|
|
||||||
|
|
||||||
import Brightness from '../../../services/brightness.js';
|
|
||||||
import Separator from '../../misc/separator.js';
|
|
||||||
|
|
||||||
const SPACING = 5;
|
|
||||||
|
|
||||||
|
|
||||||
export default () => {
|
|
||||||
const icon = Icon({
|
|
||||||
icon: Brightness.bind('screenIcon'),
|
|
||||||
});
|
|
||||||
|
|
||||||
const hoverRevLabel = Revealer({
|
|
||||||
transition: 'slide_right',
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
|
|
||||||
children: [
|
|
||||||
Separator(SPACING),
|
|
||||||
|
|
||||||
Label().hook(Brightness, (self) => {
|
|
||||||
self.label = `${Math.round(Brightness.screen * 100)}%`;
|
|
||||||
}, 'screen'),
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
const widget = EventBox({
|
|
||||||
on_hover: () => {
|
|
||||||
hoverRevLabel.reveal_child = true;
|
|
||||||
},
|
|
||||||
on_hover_lost: () => {
|
|
||||||
hoverRevLabel.reveal_child = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
class_name: 'brightness',
|
|
||||||
|
|
||||||
children: [
|
|
||||||
icon,
|
|
||||||
hoverRevLabel,
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
};
|
|
|
@ -1,80 +0,0 @@
|
||||||
import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js';
|
|
||||||
|
|
||||||
import { Box, EventBox, Icon, Label, Revealer } from 'resource:///com/github/Aylur/ags/widget.js';
|
|
||||||
|
|
||||||
import Separator from '../../misc/separator.js';
|
|
||||||
|
|
||||||
const DEFAULT_KB = 'at-translated-set-2-keyboard';
|
|
||||||
const SPACING = 4;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {import('types/widgets/label').default} self
|
|
||||||
* @param {string} layout
|
|
||||||
* @param {string} _
|
|
||||||
*/
|
|
||||||
const getKbdLayout = (self, _, layout) => {
|
|
||||||
if (layout) {
|
|
||||||
if (layout === 'error') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const shortName = layout.match(/\(([A-Za-z]+)\)/);
|
|
||||||
|
|
||||||
self.label = shortName ? shortName[1] : layout;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// At launch, kb layout is undefined
|
|
||||||
Hyprland.sendMessage('j/devices').then((obj) => {
|
|
||||||
const kb = Array.from(JSON.parse(obj).keyboards)
|
|
||||||
.find((v) => v.name === DEFAULT_KB);
|
|
||||||
|
|
||||||
layout = kb['active_keymap'];
|
|
||||||
|
|
||||||
const shortName = layout
|
|
||||||
.match(/\(([A-Za-z]+)\)/);
|
|
||||||
|
|
||||||
self.label = shortName ? shortName[1] : layout;
|
|
||||||
}).catch(print);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export default () => {
|
|
||||||
const hoverRevLabel = Revealer({
|
|
||||||
transition: 'slide_right',
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
|
|
||||||
children: [
|
|
||||||
Separator(SPACING),
|
|
||||||
|
|
||||||
Label({ css: 'font-size: 20px;' })
|
|
||||||
.hook(Hyprland, getKbdLayout, 'keyboard-layout'),
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
const widget = EventBox({
|
|
||||||
on_hover: () => {
|
|
||||||
hoverRevLabel.reveal_child = true;
|
|
||||||
},
|
|
||||||
on_hover_lost: () => {
|
|
||||||
hoverRevLabel.reveal_child = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
css: 'padding: 0 10px; margin-right: -10px;',
|
|
||||||
|
|
||||||
children: [
|
|
||||||
Icon({
|
|
||||||
icon: 'input-keyboard-symbolic',
|
|
||||||
size: 20,
|
|
||||||
}),
|
|
||||||
|
|
||||||
hoverRevLabel,
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
};
|
|
|
@ -1,69 +0,0 @@
|
||||||
import Network from 'resource:///com/github/Aylur/ags/service/network.js';
|
|
||||||
|
|
||||||
import { Label, Box, EventBox, Icon, Revealer } from 'resource:///com/github/Aylur/ags/widget.js';
|
|
||||||
|
|
||||||
import Separator from '../../misc/separator.js';
|
|
||||||
|
|
||||||
const SPACING = 5;
|
|
||||||
|
|
||||||
|
|
||||||
export default () => {
|
|
||||||
const indicator = Icon().hook(Network, (self) => {
|
|
||||||
if (Network.wifi.internet === 'connected' ||
|
|
||||||
Network.wifi.internet === 'connecting') {
|
|
||||||
self.icon = Network.wifi.icon_name;
|
|
||||||
}
|
|
||||||
else if (Network.wired.internet === 'connected' ||
|
|
||||||
Network.wired.internet === 'connecting') {
|
|
||||||
self.icon = Network.wired.icon_name;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
self.icon = Network.wifi.icon_name;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const label = Label().hook(Network, (self) => {
|
|
||||||
if (Network.wifi.internet === 'connected' ||
|
|
||||||
Network.wifi.internet === 'connecting') {
|
|
||||||
self.label = Network.wifi.ssid || 'Unknown';
|
|
||||||
}
|
|
||||||
else if (Network.wired.internet === 'connected' ||
|
|
||||||
Network.wired.internet === 'connecting') {
|
|
||||||
self.label = 'Connected';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
self.label = 'Disconnected';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const hoverRevLabel = Revealer({
|
|
||||||
transition: 'slide_right',
|
|
||||||
child: Box({
|
|
||||||
children: [
|
|
||||||
Separator(SPACING),
|
|
||||||
label,
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
const widget = EventBox({
|
|
||||||
on_hover: () => {
|
|
||||||
hoverRevLabel.reveal_child = true;
|
|
||||||
},
|
|
||||||
on_hover_lost: () => {
|
|
||||||
hoverRevLabel.reveal_child = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
class_name: 'network',
|
|
||||||
|
|
||||||
children: [
|
|
||||||
indicator,
|
|
||||||
|
|
||||||
hoverRevLabel,
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
};
|
|
|
@ -1,59 +0,0 @@
|
||||||
import App from 'resource:///com/github/Aylur/ags/app.js';
|
|
||||||
|
|
||||||
import { Box, Label } from 'resource:///com/github/Aylur/ags/widget.js';
|
|
||||||
|
|
||||||
import Audio from './audio.js';
|
|
||||||
import Bluetooth from './bluetooth.js';
|
|
||||||
import Brightness from './brightness.js';
|
|
||||||
import KeyboardLayout from './keyboard-layout.js';
|
|
||||||
import Network from './network.js';
|
|
||||||
|
|
||||||
import CursorBox from '../../misc/cursorbox.js';
|
|
||||||
import Separator from '../../misc/separator.js';
|
|
||||||
|
|
||||||
const SPACING = 4;
|
|
||||||
|
|
||||||
|
|
||||||
export default () => CursorBox({
|
|
||||||
class_name: 'toggle-off',
|
|
||||||
|
|
||||||
on_primary_click_release: (self) => {
|
|
||||||
// @ts-expect-error
|
|
||||||
App.getWindow('notification-center').attribute.set_x_pos(
|
|
||||||
self.get_allocation(),
|
|
||||||
'right',
|
|
||||||
);
|
|
||||||
|
|
||||||
App.toggleWindow('quick-settings');
|
|
||||||
},
|
|
||||||
|
|
||||||
setup: (self) => {
|
|
||||||
self.hook(App, (_, windowName, visible) => {
|
|
||||||
if (windowName === 'quick-settings') {
|
|
||||||
self.toggleClassName('toggle-on', visible);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
child: Box({
|
|
||||||
class_name: 'quick-settings-toggle',
|
|
||||||
vertical: false,
|
|
||||||
children: [
|
|
||||||
Separator(SPACING),
|
|
||||||
|
|
||||||
KeyboardLayout(),
|
|
||||||
|
|
||||||
Brightness(),
|
|
||||||
|
|
||||||
Audio(),
|
|
||||||
|
|
||||||
Bluetooth(),
|
|
||||||
|
|
||||||
Network(),
|
|
||||||
|
|
||||||
Label(' '),
|
|
||||||
|
|
||||||
Separator(SPACING),
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
});
|
|
22
devices/wim/config/ags/js/bar/hovers/audio.js
Normal file
22
devices/wim/config/ags/js/bar/hovers/audio.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import Audio from 'resource:///com/github/Aylur/ags/service/audio.js';
|
||||||
|
|
||||||
|
import { Label, Icon } from 'resource:///com/github/Aylur/ags/widget.js';
|
||||||
|
|
||||||
|
import { SpeakerIcon } from '../../misc/audio-icons.js';
|
||||||
|
import HoverRevealer from './hover-revealer.js';
|
||||||
|
|
||||||
|
|
||||||
|
export default () => HoverRevealer({
|
||||||
|
class_name: 'audio',
|
||||||
|
|
||||||
|
icon: Icon({
|
||||||
|
icon: SpeakerIcon.bind(),
|
||||||
|
}),
|
||||||
|
|
||||||
|
label: Label().hook(Audio, (self) => {
|
||||||
|
if (Audio.speaker?.volume) {
|
||||||
|
self.label =
|
||||||
|
`${Math.round(Audio.speaker?.volume * 100)}%`;
|
||||||
|
}
|
||||||
|
}, 'speaker-changed'),
|
||||||
|
});
|
27
devices/wim/config/ags/js/bar/hovers/bluetooth.js
Normal file
27
devices/wim/config/ags/js/bar/hovers/bluetooth.js
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
import Bluetooth from 'resource:///com/github/Aylur/ags/service/bluetooth.js';
|
||||||
|
|
||||||
|
import { Label, Icon } from 'resource:///com/github/Aylur/ags/widget.js';
|
||||||
|
|
||||||
|
import HoverRevealer from './hover-revealer.js';
|
||||||
|
|
||||||
|
|
||||||
|
export default () => HoverRevealer({
|
||||||
|
class_name: 'bluetooth',
|
||||||
|
|
||||||
|
icon: Icon().hook(Bluetooth, (self) => {
|
||||||
|
if (Bluetooth.enabled) {
|
||||||
|
self.icon = Bluetooth.connected_devices[0] ?
|
||||||
|
Bluetooth.connected_devices[0].icon_name :
|
||||||
|
'bluetooth-active-symbolic';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.icon = 'bluetooth-disabled-symbolic';
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
|
||||||
|
label: Label().hook(Bluetooth, (self) => {
|
||||||
|
self.label = Bluetooth.connected_devices[0] ?
|
||||||
|
`${Bluetooth.connected_devices[0]}` :
|
||||||
|
'Disconnected';
|
||||||
|
}, 'notify::connected-devices'),
|
||||||
|
});
|
17
devices/wim/config/ags/js/bar/hovers/brightness.js
Normal file
17
devices/wim/config/ags/js/bar/hovers/brightness.js
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import { Icon, Label } from 'resource:///com/github/Aylur/ags/widget.js';
|
||||||
|
|
||||||
|
import Brightness from '../../../services/brightness.js';
|
||||||
|
import HoverRevealer from './hover-revealer.js';
|
||||||
|
|
||||||
|
|
||||||
|
export default () => HoverRevealer({
|
||||||
|
class_name: 'brightness',
|
||||||
|
|
||||||
|
icon: Icon({
|
||||||
|
icon: Brightness.bind('screenIcon'),
|
||||||
|
}),
|
||||||
|
|
||||||
|
label: Label().hook(Brightness, (self) => {
|
||||||
|
self.label = `${Math.round(Brightness.screen * 100)}%`;
|
||||||
|
}, 'screen'),
|
||||||
|
});
|
42
devices/wim/config/ags/js/bar/hovers/hover-revealer.js
Normal file
42
devices/wim/config/ags/js/bar/hovers/hover-revealer.js
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
import { Box, Revealer } from 'resource:///com/github/Aylur/ags/widget.js';
|
||||||
|
|
||||||
|
import Separator from '../../misc/separator.js';
|
||||||
|
import CursorBox from '../../misc/cursorbox.js';
|
||||||
|
|
||||||
|
|
||||||
|
export default ({
|
||||||
|
class_name,
|
||||||
|
icon,
|
||||||
|
label,
|
||||||
|
spacing = 5,
|
||||||
|
}) => {
|
||||||
|
const hoverRevLabel = Revealer({
|
||||||
|
transition: 'slide_right',
|
||||||
|
|
||||||
|
child: Box({
|
||||||
|
|
||||||
|
children: [
|
||||||
|
Separator(spacing),
|
||||||
|
|
||||||
|
label,
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const widget = CursorBox({
|
||||||
|
on_hover: () => {
|
||||||
|
hoverRevLabel.reveal_child = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
child: Box({
|
||||||
|
class_name,
|
||||||
|
|
||||||
|
children: [
|
||||||
|
icon,
|
||||||
|
hoverRevLabel,
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return widget;
|
||||||
|
};
|
51
devices/wim/config/ags/js/bar/hovers/keyboard-layout.js
Normal file
51
devices/wim/config/ags/js/bar/hovers/keyboard-layout.js
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js';
|
||||||
|
|
||||||
|
import { Icon, Label } from 'resource:///com/github/Aylur/ags/widget.js';
|
||||||
|
|
||||||
|
import HoverRevealer from './hover-revealer.js';
|
||||||
|
|
||||||
|
const DEFAULT_KB = 'at-translated-set-2-keyboard';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {import('types/widgets/label').default} self
|
||||||
|
* @param {string} layout
|
||||||
|
* @param {string} _
|
||||||
|
*/
|
||||||
|
const getKbdLayout = (self, _, layout) => {
|
||||||
|
if (layout) {
|
||||||
|
if (layout === 'error') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const shortName = layout.match(/\(([A-Za-z]+)\)/);
|
||||||
|
|
||||||
|
self.label = shortName ? shortName[1] : layout;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// At launch, kb layout is undefined
|
||||||
|
Hyprland.sendMessage('j/devices').then((obj) => {
|
||||||
|
const kb = Array.from(JSON.parse(obj).keyboards)
|
||||||
|
.find((v) => v.name === DEFAULT_KB);
|
||||||
|
|
||||||
|
layout = kb['active_keymap'];
|
||||||
|
|
||||||
|
const shortName = layout
|
||||||
|
.match(/\(([A-Za-z]+)\)/);
|
||||||
|
|
||||||
|
self.label = shortName ? shortName[1] : layout;
|
||||||
|
}).catch(print);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default () => HoverRevealer({
|
||||||
|
class_name: 'keyboard',
|
||||||
|
spacing: 4,
|
||||||
|
|
||||||
|
icon: Icon({
|
||||||
|
icon: 'input-keyboard-symbolic',
|
||||||
|
size: 20,
|
||||||
|
}),
|
||||||
|
label: Label({ css: 'font-size: 20px;' })
|
||||||
|
.hook(Hyprland, getKbdLayout, 'keyboard-layout'),
|
||||||
|
});
|
38
devices/wim/config/ags/js/bar/hovers/network.js
Normal file
38
devices/wim/config/ags/js/bar/hovers/network.js
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
import Network from 'resource:///com/github/Aylur/ags/service/network.js';
|
||||||
|
|
||||||
|
import { Label, Icon } from 'resource:///com/github/Aylur/ags/widget.js';
|
||||||
|
|
||||||
|
import HoverRevealer from './hover-revealer.js';
|
||||||
|
|
||||||
|
|
||||||
|
export default () => HoverRevealer({
|
||||||
|
class_name: 'network',
|
||||||
|
|
||||||
|
icon: Icon().hook(Network, (self) => {
|
||||||
|
if (Network.wifi.internet === 'connected' ||
|
||||||
|
Network.wifi.internet === 'connecting') {
|
||||||
|
self.icon = Network.wifi.icon_name;
|
||||||
|
}
|
||||||
|
else if (Network.wired.internet === 'connected' ||
|
||||||
|
Network.wired.internet === 'connecting') {
|
||||||
|
self.icon = Network.wired.icon_name;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.icon = Network.wifi.icon_name;
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
|
||||||
|
label: Label().hook(Network, (self) => {
|
||||||
|
if (Network.wifi.internet === 'connected' ||
|
||||||
|
Network.wifi.internet === 'connecting') {
|
||||||
|
self.label = Network.wifi.ssid || 'Unknown';
|
||||||
|
}
|
||||||
|
else if (Network.wired.internet === 'connected' ||
|
||||||
|
Network.wired.internet === 'connecting') {
|
||||||
|
self.label = 'Connected';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.label = 'Disconnected';
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
});
|
80
devices/wim/config/ags/js/bar/items/quick-settings.js
Normal file
80
devices/wim/config/ags/js/bar/items/quick-settings.js
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
import App from 'resource:///com/github/Aylur/ags/app.js';
|
||||||
|
|
||||||
|
import { Box, Label } from 'resource:///com/github/Aylur/ags/widget.js';
|
||||||
|
|
||||||
|
import Audio from '../hovers/audio.js';
|
||||||
|
import Bluetooth from '../hovers/bluetooth.js';
|
||||||
|
import Brightness from '../hovers/brightness.js';
|
||||||
|
import KeyboardLayout from '../hovers/keyboard-layout.js';
|
||||||
|
import Network from '../hovers/network.js';
|
||||||
|
|
||||||
|
import CursorBox from '../../misc/cursorbox.js';
|
||||||
|
import Separator from '../../misc/separator.js';
|
||||||
|
|
||||||
|
const SPACING = 4;
|
||||||
|
|
||||||
|
|
||||||
|
export default () => {
|
||||||
|
const hoverRevealers = [
|
||||||
|
KeyboardLayout(),
|
||||||
|
|
||||||
|
Brightness(),
|
||||||
|
|
||||||
|
Audio(),
|
||||||
|
|
||||||
|
Bluetooth(),
|
||||||
|
|
||||||
|
Network(),
|
||||||
|
];
|
||||||
|
|
||||||
|
return CursorBox({
|
||||||
|
class_name: 'toggle-off',
|
||||||
|
|
||||||
|
on_primary_click_release: (self) => {
|
||||||
|
// @ts-expect-error
|
||||||
|
App.getWindow('notification-center').attribute.set_x_pos(
|
||||||
|
self.get_allocation(),
|
||||||
|
'right',
|
||||||
|
);
|
||||||
|
|
||||||
|
App.toggleWindow('quick-settings');
|
||||||
|
},
|
||||||
|
|
||||||
|
setup: (self) => {
|
||||||
|
self.hook(App, (_, windowName, visible) => {
|
||||||
|
if (windowName === 'quick-settings') {
|
||||||
|
self.toggleClassName('toggle-on', visible);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
attribute: {
|
||||||
|
hoverRevealers: hoverRevealers.map(
|
||||||
|
// @ts-expect-error
|
||||||
|
(rev) => rev.child.children[1],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
on_hover_lost: (self) => {
|
||||||
|
self.attribute.hoverRevealers.forEach(
|
||||||
|
/** @param {import('types/widgets/revealer').default} rev */
|
||||||
|
(rev) => {
|
||||||
|
rev.reveal_child = false;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
child: Box({
|
||||||
|
class_name: 'quick-settings-toggle',
|
||||||
|
vertical: false,
|
||||||
|
children: [
|
||||||
|
Separator(SPACING),
|
||||||
|
|
||||||
|
...hoverRevealers,
|
||||||
|
|
||||||
|
Label(' '),
|
||||||
|
|
||||||
|
Separator(SPACING),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
};
|
|
@ -2,16 +2,16 @@ import { Window, CenterBox, Box } from 'resource:///com/github/Aylur/ags/widget.
|
||||||
|
|
||||||
import Separator from '../misc/separator.js';
|
import Separator from '../misc/separator.js';
|
||||||
|
|
||||||
import Battery from './buttons/battery.js';
|
import Battery from './items/battery.js';
|
||||||
import Clock from './buttons/clock.js';
|
import Clock from './items/clock.js';
|
||||||
import CurrentWindow from './buttons/current-window.js';
|
import CurrentWindow from './items/current-window.js';
|
||||||
import Heart from './buttons/heart.js';
|
import Heart from './items/heart.js';
|
||||||
import NotifButton from './buttons/notif-button.js';
|
import NotifButton from './items/notif-button.js';
|
||||||
import OskToggle from './buttons/osk-toggle.js';
|
import OskToggle from './items/osk-toggle.js';
|
||||||
import QsToggle from './buttons/quick-settings.js';
|
import QsToggle from './items/quick-settings.js';
|
||||||
import SysTray from './buttons/systray.js';
|
import SysTray from './items/systray.js';
|
||||||
import TabletToggle from './buttons/tablet-toggle.js';
|
import TabletToggle from './items/tablet-toggle.js';
|
||||||
import Workspaces from './buttons/workspaces.js';
|
import Workspaces from './items/workspaces.js';
|
||||||
|
|
||||||
import BarReveal from './fullscreen.js';
|
import BarReveal from './fullscreen.js';
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,8 @@
|
||||||
|
|
||||||
.audio,
|
.audio,
|
||||||
.bluetooth,
|
.bluetooth,
|
||||||
.brightness {
|
.brightness,
|
||||||
|
.keyboard {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
margin-right: -10px;
|
margin-right: -10px;
|
||||||
|
|
Loading…
Reference in a new issue