Ubuntuで、Groovyを使って常駐アプリ作る・その1

2019-02-12Groovy, Java, Ubuntu

以前も書いたとおり、windowsからubuntuに移行してきたばかりです。
以前しようしていたクリップボード管理アプリが動かないので gcliper を入れてみたのですが、マシン起動時に毎回エラーで落ちてしまいます。
勉強がてら自分で作ってみることにしました。

System Trayという難易度高め?の機能を利用してみる

jdk1.6からは、javaでもSystemTrayという標準クラスを利用して常駐アプリを作成可能のようです。したがってSystemTrayの簡単なアプリから作成してみました。

早速難題にぶち当たる

簡単なアプリを作成。僕のスキルでは一人で一からは無理なので、 SystemTrayを使う を参考にさせていただきました。
以下、ソース。

import java.awt.*
import java.awt.event.ActionEvent
import java.awt.event.ActionListener

if (!SystemTray.isSupported()) {
    System.out.println("SystemTray is not supported!")
    return
}

SystemTray tray = SystemTray.getSystemTray()
Image image = Toolkit.getDefaultToolkit().getImage(args[0])

PopupMenu popup = new PopupMenu()
MenuItem defaultItem = new MenuItem("mustang")
defaultItem.addActionListener({ ActionEvent ev ->
    System.out.println("popup action")
} as ActionListener)

popup.add(defaultItem)

TrayIcon trayIcon = new TrayIcon(image, "Tray Demo", popup)
trayIcon.addActionListener({ ActionEvent ev ->
    System.out.println("trayIcon action")
} as ActionListener)

tray.add(trayIcon)

おお、結構簡単じゃん!いける・・・と思ってたのですが・・・まったく動きません。
SystemTray is not supported! と表示されてしまい、どうやら動きません。やはりUbuntuじゃ無理??

希望の光

もしかしてUbuntu(Linux?)では動かないのかな??と思って諦めながら調べてみると、 Bug #139177 is not in Ubuntu: “Java 6 system tray not working in Gutsy Tribe 6” というサイトにたどり着く。
Java1.6でも、Ubuntuでは動作しないのね。・・・でも最後の書き込みに、「俺は1.6.0_10で動作確認したら動いたよー」という書き込みがありました。

早速1.6.0_10をインストール、パスを通すと・・・いけた!!
なんかそれっぽいの動きました。すごいよ!!!これでクリップボード管理アプリの第一歩踏み出せたよ!!

ひとこと

便利なのできたら会社のWindows、家のUbuntuの両方で使えるし、Groovyで作ってあるからメンテも楽だし。わくわく。

2019-02-12Groovy, Java, Ubuntu