const { Box, Icon, Label } = Widget; const { lookUpIcon } = Utils; import CursorBox from '../misc/cursorbox.ts'; // Types import { Application } from 'types/service/applications.ts'; export default (app: Application) => { const icon = Icon({ size: 42 }); const iconString = app.app.get_string('Icon'); if (app.icon_name) { if (lookUpIcon(app.icon_name)) { icon.icon = app.icon_name; } else if (iconString && iconString !== 'nix-snowflake') { icon.icon = iconString; } else { icon.icon = ''; } } const textBox = Box({ vertical: true, vpack: 'start', children: [ Label({ class_name: 'title', label: app.name, xalign: 0, truncate: 'end', }), Label({ class_name: 'description', label: app.description || '', wrap: true, xalign: 0, justification: 'left', }), Label(), ], }); return CursorBox({ hexpand: true, class_name: 'app', attribute: { app }, on_primary_click_release: () => { App.closeWindow('win-applauncher'); app.launch(); }, child: Box({ children: [ icon, textBox, ], }), }); };