ChienomiChienomiVPN(リバースフォワーディング)をアイコン操作にしてみる先日の多段SSHによる外出時のログインだが、外出時にリバースフォワーディングをオンにし、帰ってきたらオフにするのはちょっと面倒だし、忘れそうだ。そこで私は「システムトレイにアイコン出してもらって、クリックしたら閉じてくれるようにしたらいいじゃない」と考えた。「Linuxでシステムトレイにアイコン」と考えたらまずYadを考えて良い。ZenityやKDialogはシステムトレイをサポートしていない。hover>の形式でシステムトレイにアイコンを表示できる。--commandオプションをつかってクリック時の動作を指定することもできるし、--menuオプションで右クリックに対応させることもできる。--commandオプションを指定した場合は終了するかわりにそのコマンドを実行する。今回の場合クリックしたら終了を含む動作をさせたいので、特にコマンドは指定しない。そこでyadプロセスが終了したらクリックした後の動作をさせていけばよいわけだ。「トンネルを解除しない」という選択がありえることから、ループとし、当該ユニットが動作中であればアイコンを表示する方式にした。fidoneひとつめのyadはシステムトレイにアイコンを表示し、クリックされるのを待つものだ。これでクリックされるまではスクリプトはここでブロックされる。ふたつ目のyadだが、yadの場合zenityと違い、タイプを指定しないで起動するとシンプルなダイアログになる。アイコンとボタンのタイプはそれぞれ指定できる仕組みだ。このため、ZenityやKDialogにあるいくつかの動作オプションがまとめられている。ここではYes/Noダイアログを表示している。ボタンはボタンのあとに終了コードを書くようになっており、gtk-cancelも利用可能。それ以外は単にラベルとして使用される。ランチャーで使用するため、.desktopファイルも作っておいた。右クリックでの開始/停止もサポートしている。sshforward.serviceこれでわかりやすく、操作しやすくなった。SSHフォワーディングを行うスクリプトに含めるというのも手だが、そうすると他の手段が失われてしまう。Systemdユニットにした上で追加機能は別のスクリプトにするというのは良いアイディアだと思う。