您好我正在为linux(ubuntu)编写一个java应用程序,它有托盘应用程序和守护程序应用程序服务。
我能够使用yajsw作为守护进程执行主应用程序,在用户登录系统时我想要通知服务已经实现(我已编写脚本并放在/etc/profile.d/
文件夹中脚本是从那里开始执行我使用TCP套接字连接连接到主应用程序并传递登录的用户名)
现在,从主应用程序中,我想在当前登录的用户桌面中启动托盘应用程序,该桌面将显示托盘图标(SystemTray
的{{1}})和弹出菜单。我为托盘申请创建了单独的java.awt
文件。
答案 0 :(得分:1)
一种方法是在另一个过程中启动托盘应用程序
Process p = Runtime.
getRuntime().
exec(new String[]{"bash","-c","java -jar /path/to/yourjar"});
或者,您可以使用操作系统。 Gnome,KDE和Unity都支持在登录时自动启动应用程序。例如,在Gnome上,登录时会自动启动~/.config/autostart/
中的脚本。
就个人而言,我认为最好的方法是
答案 1 :(得分:0)
在/etc/X11/Xsession.d/98script下添加了脚本文件,该文件将在创建会话后在用户登录时调用,以便您可以获取$ DISPLAY值,这对于Java托盘应用程序启动非常重要。会话。 从名为daemon的java应用程序脚本中侦听tcp端口 从守护进程java应用程序执行startapp脚本传递登录的用户名和他的DISPLAY在startapp脚本中导出DISPLAY并导出USERNAME并执行托盘应用程序,该应用程序将在用户会话中启动并且托盘显示在同一显示区域