0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows から rofi を実行して WSL にある GUI アプリケーションを起動する

Posted at

はじめに

Linux の rofi というランチャーアプリケーションで、様々な計算をしてくれる rofi-calc を動かしたくなって導入したのだが、そこに選択肢としてアプリケーションが出てきたのならば、そこから起動したくなるのが人の常。(ランチャーとして使う気は全くなかった。)

しかし、選択されたアプリケーションは実行されずに rofi が終了してしまう。これは解決せねばならないと、闘志を燃やすことになる。

背景

GUI Application をインストールすると、親切にショートカットを作ってくれますが、Windows Terminal からシェルに入ったら、そこに入り浸っている人なので、普段からコマンドを打って起動しています。

また、アプリケーションは自分で build して最新版を使うことが多いので、すでにあるアプリケーションのショートカットを参考にして、新規にショートカットを作っています。

自動で作られるショートカットのコピペでは起動できない

理由は、Windows 側で対象のプロセスを立ち上げただけなので...以下略

WSLg というか、 WSL の仕組みを理解してないと、私が他人に説明することができない、と判断しましたので、飛ばします。

シェルの中で起動させる

シェルを起動させて、その中でターゲットのアプリケーション(プロセス)を起動させる。そうすれば、そのアプリケーションが、別のアプリケーションを起動させてから自身を終了しても、まだシェルの中にいるので、別のアプリケーションは動き続けることができる。

オペレーションシステムにおける、シェルの役割を理解しとくと、幸せになれるかもしれない。

どのように記述するのか

PowerShell で、試行錯誤した。

以下に結果だけ書きます。

PS > wslg.exe -d Ubuntu-22.04 --cd "~" -- sh -c -i "rofi -show drun -normal-window"

wslg.exe をパラメーター無しで起動すると、使い方のダイアログが出るので、読んでみてください。

sh と言っても、実態は dash (Ubuntu の場合) なので、 man dash してマニュアルを読んでください。 ちなみに、 man sh すると dash のマニュアルが表示されます。(私は、 --help するより man する人です。)

パスが通っているところに wslg.exe があるので、フルパスで書かなくてもよい。

このコマンドを、ショートカットにコピペして終了です。

お疲れ様でした。

おまけ

rofi を WSL から起動するときに -normal-windows をつけないと、挙動がおかしくなる。このオプションは設定ファイル (rasi) に入れることができなくて、起動するときのコマンドラインにつけるしかない。

Shell script を書く方法もあるのだが、 sh -c -i で済むことが多いので覚えておいて損はない。

読んでいただき、ありがとうございました。

参考文献

【Linux】sh/bash/sourceの違い,bash/dashの違い

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?