pikabar/pika-hyprland-settings/etc/skel/.config/ags/modules/activewindow.js

57 lines
1.7 KiB
JavaScript
Raw Normal View History

2024-11-17 15:45:46 +01:00
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 || '';
}]]
})
],
});