node.js应用程序中的系统托盘图标

时间:2012-10-19 17:50:52

标签: javascript node.js user-interface icons system-tray

这是我在node.js应用程序中需要的:

  • 系统托盘图标
  • 在申请工作期间更改此图标
  • 单击图标后的
  • 菜单
  • 创建包含登录/密码和确认按钮字段的窗口

这是我发现的:

你有什么建议吗?我需要可靠易于安装以及尽可能跨系统

//修改

自11月6日起,Appjs提供基本的托盘图标支持。

3 个答案:

答案 0 :(得分:10)

对于其他任何人来说,请查看https://github.com/rogerwang/node-webkit - 一个很棒的软件包,它允许您使用自己喜欢的工具(如JavaScript)创建桌面应用程序,支持本机shell访问,托盘图标等等。

更新: 该应用程序已移至NWjs.io,但它是同样出色的概念。

答案 1 :(得分:4)

看看Node-QT(https://github.com/arturadib/node-qt)可能会有所帮助。

答案 2 :(得分:0)

我在Linux上使用过systray。它也有望在macOS和Windows上运行。但是我没有测试。

官方文档中的示例

import SysTray from 'systray'

const systray = new SysTray({
    menu: {
        // you should using .png icon in macOS/Linux, but .ico format in windows
        icon: "<base64 image string>",
        title: "标题",
        tooltip: "Tips",
        items: [{
            title: "aa",
            tooltip: "bb",
            // checked is implement by plain text in linux
            checked: true,
            enabled: true
        }, {
            title: "aa2",
            tooltip: "bb",
            checked: false,
            enabled: true
        }, {
            title: "Exit",
            tooltip: "bb",
            checked: false,
            enabled: true
        }]
    },
    debug: false,
    copyDir: true, // copy go tray binary to outside directory, useful for packing tool like pkg.
})
 
systray.onClick(action => {
    if (action.seq_id === 0) {
        systray.sendAction({
            type: 'update-item',
            item: {
            ...action.item,
            checked: !action.item.checked,
            },
            seq_id: action.seq_id,
        })
    } else if (action.seq_id === 1) {
        // open the url
        console.log('open the url', action)
    } else if (action.seq_id === 2) {
        systray.kill()
    }
})

它不提供

创建带有登录/密码和确认按钮字段的窗口

但是我认为这项任务是单独的。因此,此答案对只需要systray图标的其他人很有帮助。