import { App, Gtk, Widget } from 'astal/gtk3'; import { register } from 'astal/gobject'; /* Types */ import AstalApps from 'gi://AstalApps'; type AppItemProps = Widget.BoxProps & { app: AstalApps.Application }; @register() export class AppItem extends Widget.Box { readonly app: AstalApps.Application; constructor({ app, hexpand = true, className = '', ...rest }: AppItemProps) { super({ ...rest, className: `app ${className}`, hexpand, }); this.app = app; const icon = ( ) as Widget.Icon; if (app.get_icon_name() && Widget.Icon.lookup_icon(app.get_icon_name())) { icon.icon = this.app.get_icon_name(); } else { const iconString = this.app.get_key('Icon'); App.add_icons(iconString); icon.icon = iconString; } const textBox = ( ); this.add(icon); this.add(textBox); } } export default (props: AppItemProps) => new AppItem(props);