generated from wm-packages/pika-hyprland-settings
57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
|
const { Widget } = ags;
|
||
|
const { lookUpIcon } = ags.Utils;
|
||
|
import { gohypr } from '../services/gohypr.js';
|
||
|
|
||
|
const substitutes = [
|
||
|
{ from: 'code-url-handler', to: 'code' },
|
||
|
];
|
||
|
|
||
|
export const ActiveWindow = () => Widget.Box({
|
||
|
valign: 'center',
|
||
|
halign: 'fill',
|
||
|
className: 'active-window',
|
||
|
children: [
|
||
|
Widget.Icon({
|
||
|
className: 'progicon progiconicon',
|
||
|
connections: [[gohypr, icon => {
|
||
|
if (!gohypr.state) {
|
||
|
return;
|
||
|
}
|
||
|
let classIcon = gohypr.state.activewindow.class;
|
||
|
let titleIcon = gohypr.state.activewindow.title;
|
||
|
substitutes.forEach(({ from, to }) => {
|
||
|
if (classIcon === from)
|
||
|
classIcon = to;
|
||
|
|
||
|
if (titleIcon === from)
|
||
|
titleIcon = to;
|
||
|
});
|
||
|
|
||
|
const hasTitleIcon = lookUpIcon(titleIcon, 128);
|
||
|
const hasClassIcon = lookUpIcon(classIcon, 128);
|
||
|
|
||
|
if (hasClassIcon)
|
||
|
icon.icon_name = classIcon;
|
||
|
|
||
|
if (hasTitleIcon)
|
||
|
icon.icon_name = titleIcon;
|
||
|
|
||
|
icon.visible = hasTitleIcon || hasClassIcon;
|
||
|
}]],
|
||
|
}),
|
||
|
Widget.Label({
|
||
|
className: 'txt txt-norm progicon',
|
||
|
justify: 'left',
|
||
|
halign: 'start',
|
||
|
maxWidthChars: 40,
|
||
|
ellipsize: 3,
|
||
|
connections: [[gohypr, label => {
|
||
|
if (!gohypr.state) {
|
||
|
return;
|
||
|
}
|
||
|
label.label = gohypr.state.activewindow.title || '';
|
||
|
}]]
|
||
|
})
|
||
|
],
|
||
|
});
|