Files
custum-hyprpanel/modules/bar/window_title/index.js

43 lines
1.2 KiB
JavaScript

const hyprland = await Service.import("hyprland");
const filterTitle = (titleString) => {
const windowTitleMap = [
["(.*) - NVIM", " NeoVim"],
["(.*) - nvim", " NeoVim"],
["(.*) - VIM", " NeoVim"],
["(.*)vim (.*)", " NeoVim"],
["(.*) — Mozilla Firefox", "󰈹 Firefox"],
["(.*) - Microsoft(.*)Edge", "󰇩 Edge"],
["(.*) - Discord", " Discord"],
["(.*) — Dolphin", " Dolphin"],
["Plex", "󰚺 Plex"],
["(.*) Steam", " Steam"],
[" ", "󰇄 Desktop"],
["(.*) Spotify Free", "󰓇 Spotify"],
["(.*)Spotify Premium", "󰓇 Spotify"],
["Spotify", "󰓇 Spotify"],
[" ~", " Terminal"],
["(.*) - Obsidian(.*)", "󱓧 Obsidian"],
["(.+)", `󰣆 ${titleString.charAt(0).toUpperCase() + titleString.slice(1)}`],
["(.*)", `󰣆 Desktop`],
];
const foundMatch = windowTitleMap.find((wt) =>
RegExp(wt[0]).test(titleString),
);
return foundMatch ? foundMatch[1] : titleString;
};
const ClientTitle = () => {
return {
component: Widget.Label({
class_name: "window_title",
label: hyprland.active.client.bind("title").as((v) => filterTitle(v)),
}),
isVisible: true,
};
};
export { ClientTitle };