端末からでない実行

GUIのプログラム実行のしくみ

実行にあたり端末からコマンドをキーボードで打たなければならないのはGUIの流れに反しています。メニューからプログラムを選択したり、アイコンをダブルクリックしたりして実行するのが一般的です。

デスクトップにランチャを作る

ランチャーとは日本語ではミサイルやロケットの発射台だがコンピュータでプログラムをダブルクリックなど少ない操作で起動できるようにするものをいう。ここではLinuxのX-Window(正確にはXのデスクトップ環境の一種であるGNOME)での作成例となる。

デスクトップで右クリックすると「ランチャの生成」を選ぶことができる。

ダイアログの中に必要なものを入力する

今回の例は、javaというフォルダの中のTwoButtonsというjavaプログラムを実行するものです。

種類
アプリケーションのままにする
名前
好みの名前をつけて良い。アイコンの下に表示される
コマンド
java -classpath java TwoButtons
と入力する。今回は「参照」から選択できない
コメント
短い説明文を入れる
アイコンを選択できる

[OK]でデスクトップにランチャができます。ダブルクリックでTwoButtonsが起動します。

修正できます。ランチャを右クリックして「プロパティ」を選ぶと下記のように入力項目が表示され変更することもできます。

結構大切なカレントディレクトリの理解

ランチャをダブルクリックしたときに「コマンド」の内容が実行されます。これは端末から

「コマンド」の欄には端末に書いてCUIで実行するときと同じコマンドが使えます。ただし今まで端末で実行していたときにはカレントディレクトリがjavaというフォルダでした。実行するTwoButtonsというクラスファイルもjavaというフォルダにあるので

java TwoButtons

で良かったのです。

ランチャのダブルクリックで実行する場合、カレントディレクトリはユーザーホームになります。TwoButtonsというクラスファイルはカレントディレクトリに無いので、javaというフォルダにあることを示す必要があります。これが -classpath java の意味です。

java -classpath java TwoButtons

.desktopファイル

ランチャの実体はテキストファイルです。アイコンの下の名前はファイル名でなく「名前」の欄に入れた文字列です。

本当のファイル名は TwoButtons.desktop ですが、別のファイル名にしても TwoButtons と表示されます。内容は次のようになっています。

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[ja_JP]=gnome-panel-launcher
Name[ja_JP]=TwoButtons
Exec=java -classpath java TwoButtons
Comment[ja_JP]=クリック数を数えます
Name=TwoButtons
Comment=クリック数を数えます
Icon=gnome-panel-launcher

1行目の #!/usr/bin/env xdg-open はなくても動作します。freedesktop.orgのHowto_desktop_filesの解説には次のような例が出ています。

[Desktop Entry]
Name=Foo
Comment=An amazingly useful program
Exec=foo
Icon=foo
Type=Application
Categories=Graphics;3DGraphics;

Execが実行するコマンド。javaプログラムでなければこのような単純な書き方も可能です。

Name, Comment, Icon は国や言語別(ロケールといいます)の指定がないときの表示。[ja_JP]は「日本語_日本」の意味です。ここにいろいろな言語での表記を書いておけば環境に応じて選択して表示する仕組みになっています。

.desktopファイルは初めからエディタで編集しても作ることができます。

SanTakuFでも.desktopから実行可能

たくさんのclassからなるSanTakuFでも -classpath の指定で問題なく実行できます。やり方は全く同じ

デスクトップで右クリックすると「ランチャの生成」を選び、

ダイアログの中に必要なものを入力する

今回の例は、javaというフォルダの中のSanTakuFというjavaプログラムを実行するものです。

種類
アプリケーションのままにする
名前
好みの名前をつけて良い。アイコンの下に表示される
コマンド
java -classpath java SanTakuF
と入力する。今回は「参照」から選択できない
コメント
短い説明文を入れる
アイコンを選択できる。今回はdebianに用意されているgdu-emblem-raid3.svgを使った。別のもののために用意されているものだが無断で流用。こういった画像にも著作権はあるが今回は配布するわけではないので問題はない。

[OK]でデスクトップにランチャができます。ダブルクリックでSanTakuFが起動します。

.desktopファイルで実行するとカレントディレクトリがユーザーホームになるので、ファイル選択はユーザーホームからスタートします。

SanTakuFでもclassファイルがユーザーホームのjavaフォルダにあることを示すため -classpath java が必要です。

課題

1.

上記 ランチャ(TwoButtonsとSanTakuF)をつくり、実行してみなさい


Javaプログラミング
聖愛中学高等学校
http://www.seiai.ed.jp/
Sep.2012