feat(workspace): map client classes to application icons (#368)

* feat(workspace): map client classes to application icons

* refactor: extract app icon detection

* feat: hide duplicate icons per workspace

* feat: use dedicated icons for empty workspace and fallback

* provide default icons

* feat: title or class matcher can no provided as regex

* style: change option description

* style: use more descriptive param name

* style: fix comment

* fix(lint): missing return type

* refactor: move type definitions into separate file

* feat: defined default app icon set

* docs: change option subtitles

* style: change icons

* fix: add missing default variant

---------

Co-authored-by: Jas Singh <jaskiratpal.singh@outlook.com>
This commit is contained in:
Daniel Pfefferkorn
2024-10-28 04:11:42 +01:00
committed by GitHub
parent 25753e5f17
commit 4e2a774c7e
7 changed files with 186 additions and 5 deletions

View File

@@ -261,6 +261,34 @@ export const BarSettings = (): Scrollable<Gtk.Widget, Gtk.Widget> => {
title: 'Map Workspaces to Icons',
type: 'boolean',
}),
Option({
opt: options.bar.workspaces.showApplicationIcons,
title: 'Map Workspaces to Application Icons',
subtitle: "Requires 'Map Workspace to Icons' to be enabled",
type: 'boolean',
}),
Option({
opt: options.bar.workspaces.applicationIconOncePerWorkspace,
title: 'Hide Duplicate App Icons',
type: 'boolean',
}),
Option({
opt: options.bar.workspaces.applicationIconMap,
title: 'App Icon Mappings',
subtitle: "Use the class/title output of 'hyprctl clients' to match against",
type: 'object',
}),
Option({
opt: options.bar.workspaces.applicationIconFallback,
title: 'Fallback App Icon',
subtitle: 'Fallback icon to display if no specific icon is defined for the application',
type: 'string',
}),
Option({
opt: options.bar.workspaces.applicationIconEmptyWorkspace,
title: 'App Icon for empty workspace',
type: 'string',
}),
Option({
opt: options.bar.workspaces.workspaceIconMap,
title: 'Workspace Icon Mappings',