2020.04.30vscodeのremote-containerでelectronのGUIアプリを作る環境を整える。remote-containerはdevcontainerとも呼ぶ。(勝手に呼んでいる)結論から言うと次の2点で実用には遠いと感じた。日本語が文字化けする。Electronアプリから他のアプリを起動できない。1つ目は解決できるかもしれないが、2つ目は許容できない問題だ。Electronアプリからブラウザを起動するのはよくあることなので、これができないと、かなり使いづらくなってしまう。したら解決できるのかもしれないが、再び問題にぶち当たりそうで探したくない。環境構築については、一応まとめておこうと思ってここに残すことにした。起動確認あとがきまずはコンテナの作成すでに、Electronアプリがある前提で進める。なくても、構築後にチュートリアルアプリでもclone/pullしてくれば問題ないと思う。remote-containerは準備が必要だったと思うので、準備する。ms-vscode-remote.remote-containersのエクステンションをローカルのvscodeに入れておけば、vscodeを起動した時に、ウィンドウの左下に新しいアイコンが表示されているのが確認できると思う。containerをクリックすれば、指定したフォルダをDockerコンテナで開ける。12のイメージをコンテナに利用した。この時、自動的に.devcontainerフォルダが作成され、中に2つのファイルが作成される。devcontainer.jsonとDockerfileの2つ。remote-containerの設定はこの2つのファイルをいじればいい。コンテナの設定まずは、Dockerfileから。以下のような設定をする。Qiita日本語の設定をしてもElectronアプリ中の日本語は文字化けしてしまっていた。次に、devcontainer.jsonの方。Xサーバ(ホスト側)のソケットをDockerコンテナ側にマウントする。--privilegedがないとエラーが出る。rootだと`--no-sandbox`オプションが必要と言われる。}注意すべきは、mountsとrunArgsとremote-userだろう。runなどで指定するものと同じ。detailsを見ればよくわかる。mountsはホスト側のXサーバのドメインソケットを確認して、それをコンテナにマウントすればいい。runで指定するオプションと同じ。--privilegedは特権を持たせる。permittedこのようなエラーが表示される。remoteUserは上のコメントにもあるように、rootでElectronアプリを実行すると、--no-sandboxオプション無しのルート実行はサポートしていない。ようなメッセージが表示されてしまうため。このファイルは、root所有で4755権限じゃないといけないよ、的なエラーが出た気がする。node_modules/electron/dist/chrome-sandboxをリモートコンテナのシェルで行う。上のようなコンテナ設定が済んだら、ホスト側、つまりXサーバ側での設定を行う。自環境はmacosなので、XサーバとしてはXQuartzを使用した。caskでインストールできたりする。インストールして、ログインアウトすれば、DISPLAY環境変数が勝手に設定される。次にxhostコマンドでクライアント(コンテナ)のアクセスコントロールを設定する。ソケットを渡しているので、実質自分(ホスト)となる。これで確認可能を行なっておけばいい。起動確認Xウィンドウシステムの確認だけなら、vscodeのターミナル(リモートコンテナのシェル)で。xcalcなどで、確認できる。startなどで起動すればいい。エラーが発生する場合は、エラーメッセージをそのまま(ある程度短くして)検索エンジンに投げればいい。(丸投げ)あとがきローカル環境を汚さないというメリットがあるが、GUIアプリのためにここまでするのはちょっと面倒。外部ブラウザとの連携も面倒というか起動しないので、この点は全く頼りにできない。日本語問題はなんとかできるのかもしれないが、上の問題のせいで解決する気も無くしてしまった。気が向いたときにでも解決に取り組んでみようかと思う。エディタで不可視な文字(制御文字)を表示させるVSCodeで入力中に、不可視な文字が挿入される問題が、たまに起こっていた。Ankerの外付けキーボードからの入力限定で起こる様子。原因はよくわかってない。VSCodeのリモートコンテナ(devcontainer)からRustでbevyなGUIアプリを表示することができたのでその構築のための...雑ローカル2台でFTPのやり取りをするときに詰まったことなどローカルの2台でFTPを使う時のこと。片方からもう片方へFTP接続できない問題があった。defenderのファイアウォールが邪魔をする。defenderが有効になっているPCへのpingが届かないの...DockerDockerのコンテナを実行可能ファイルのように使うdockerコンテナを実行可能ファイルとして扱う。paramsで単一の処理を行いたいということです。hubでよくある形式だと思います。composeのyamlファイル(docker-compose.yml)で指定した環境変数をcronで使いたい。設定値をハードコードしておくのは書き換えが多い場合は非...electronelectron-forgeでpreloadスクリプトを設定するtypescript+webpackなelectron-forgeで、preloadスクリプトを読み込もうと思った。typescriptではあんまり意味はないです。私の設定が下手なだけかもしれませんが。結局、セキュリティを考えつつ、...PythonのMockと@patchのメモCSS読込後ならDOMContentLoadedでなくloadを使うホームelectronikapper主にITなどのアウトプットをしています。ご連絡等はTwitterの@ikapperへ。ikapblog.メニューホーム文字in画像QRIPアドレス確認ホーム検索トップサイドバータイトルとURLをコピーしました。