世界を動かす技術を、日本語で。

FyneDesk: Go言語で書かれたLinux用のフルデスクトップ環境

概要

  • FyneDesk は、Linux/Unix向けの シンプルなデスクトップ環境
  • Go言語Fyneツールキット で構築、開発・利用が容易
  • 必要な 依存ツールインストール手順 を紹介
  • 開発者向け のデバッグ・実行方法も解説
  • ディストリビューションへの組み込み時の 注意点 も記載

FyneDesk の特徴

  • Material Design 思想に基づく、直感的なユーザーインターフェース
  • Fyneツールキット を利用したクロスプラットフォーム開発
  • Go言語 ベース、拡張性と開発のしやすさ
  • オープンソース、コミュニティからの貢献やフィードバック歓迎
  • 軽量動作、初心者から上級者まで幅広いユーザー層を想定

依存関係と必要ツール

  • Fyne 本体と同様の依存関係(詳細はGetting Startedドキュメント参照)
  • デスクトップ体験向上のための外部ツール
    • arandr :ディスプレイ設定変更用
    • xbacklight または brightnessctl :ノートPCの明るさ調整
    • connman-gtk :Wi-Fi設定管理
    • compton :コンポジタ(合成処理)サポート
  • これらツールがなくても動作するが、体験は限定的

インストール・起動手順

  • Go標準ツール でのインストール
    • go get fyshos.com/fynedesk/cmd/fynedesk
    • $GOPATH(通常は~/go/bin)に追加される
  • プレビュー起動:通常のFyneアプリとして実行可能
  • 本格的なデスクトップ環境として利用するには追加設定が必要

デスクトップ環境としてのセットアップ

  • ログインマネージャ(例:LightDM)で選択可能なデスクトップ環境に設定
    • git clone https://github.com/fyshos/fynedesk
    • cd fynedesk
    • make
    • sudo make install
  • ログアウト後、ログイン画面でFyneDeskを選択可能

デバッグ・テスト方法

  • Xephyr ツールを使った埋め込みXウィンドウでのテスト
    • make embedコマンドで起動
    • 既存のウィンドウマネージャが動作中、または非対応OS(Windows/macOS)ではUIテストモードで起動
    • ウィンドウ制御以外の全機能テストが可能

安定性向上のためのRunnerユーティリティ

  • fynedesk_runner ユーティリティによるクラッシュ時の自動復旧
    • go get fyshos.com/fynedesk/cmd/fynedesk_runnerでインストール
    • テストや事前リリース版利用時は、通常のfynedeskコマンドの代わりに実行
    • 予期せぬクラッシュ時もアプリケーションデータの損失を最小限に抑制

デザインと壁紙

  • Jost Grant によるデザインコンセプトと抽象壁紙の提供

ディストリビューションへの組み込み・配布時の注意

  • ライブラリや依存関係 の同梱は不要
  • 推奨追加アプリ
    • fingithub.com/fyshos/fin):FyneDeskのデザインに合うディスプレイマネージャ
  • FyneDeskをパッケージ化した場合は、公式へ連絡推奨(公式サイトからリンク掲載可能)

Hackerたちの意見

これ、全く新しい開発にしてはかなり良さそうだね。僕は縦型ドックの大ファンだけど、その縦型の時間…

マスターの最後の更新は去年で、開発はあまり進んでないみたい。始まったのは7年前のようだね。

新しい?Waylandをサポートしてるようには見えないけど。

開発ブランチの最後のコミットは3日前だったから、まだ開発は続いてるみたい。ただ、メインへの最後のマージは2024年3月だったけど。

マスターはリリース専用に使ってるんじゃないかな。開発ブランチはアクティブに作業されていて、マスターより100以上もコミットが進んでるから、全然活発だよ。2024年3月のフルリリースも全然問題ないし、みんな開発ブランチからビルドできるしね。

誰かの努力に対するいつもの受動攻撃的なHNコメント。

僕にとっては、OberonやInferno系のオペレーティングシステムのユーザー体験の現代的な解釈の基盤になりそう。Goがどうやって生まれたかを考えると、LimboやOberon-2のミックスで。デスクトップ環境もあって、Goのダイナミックリンクに対するスタンス(ちょっと放置気味のプラグインパッケージ)を考えると、OberonやInfernoのコマンドやアプリケーション拡張のダイナミックな動作をD-Busやnet/rpcで置き換えられるかも。ただ、デスクトップの断片化の状態を考えると、努力する価値はないかもね、どんな感じになるかを知るためだけに。

僕の目標は、開発者やコーディングを学んでる人にとって最高のデスクトップになることだよ。FyshOSにアプリエディタを統合していて、(今は名前が変わって https://apptrix.ai になってるけど)昔の動画でプレビューとして見ることができるよ:https://youtu.be/XXmDmn-et4E?si=5n1Ao-V6dKurXzS6(主に15:30から)

Goのダイナミックリンクに関する立場(そしてちょっと放置されたプラグインパッケージ)を考えると、Goプラグインの代わりに有望な選択肢があるよ。これはオベロンシステムに似ていて、コンパイラが生成したオブジェクトファイルを直接読み込んで実行するんだ: https://github.com/pkujhd/goloader。

今のところ、Waylandは絶対に必要だね。サポートが始まったら、ちゃんと試してみるつもり。

次の大きなリリースの後に、その作業が始まると思うよ。今は上流のライブラリの修正を待ってるところ。

正直な質問なんだけど、なんで?しばらくWaylandを試してみたけど、ユーザーとして何が違うのか分からなかった。

今週末に絶対試してみるよ。Pop!_OS 22で気をつけるべき変なところってある?

残念ながら、X11ベースなんだよね。Waylandベースのデスクトップに完全に移行したから、Waylandに基づいてるならFyneDeskを試してみたいな。フルWaylandサポートに取り組んでるみたいで、v5.0で実現する予定だって。ETAはいつ?最後のリリースから1.5年経ってるよ! > 0.4ブランチのリリースは、X11のネイティブ実装の終わりを示してるよ。これから0.5のためにWayland(とXWayland)に移行するから。 > https://github.com/FyshOS/fynedesk/releases

君のコメント、ちょっと傲慢に感じるよ。準備が整ったら、君が手伝えばもっと早くなるよ。

次のメジャーリリースの後にWaylandでの作業が始まる予定です。今は上流のライブラリの修正を待っています。 - 作者

Waylandの下でX11を動かすためのシームレスな互換レイヤーがあるって聞いてたんだけど、どうなの?

外部要因で計画が変わったんだ。次のリリースはX11になるけど、その後(今年後半)にWaylandへの移行作業が始まる予定。理想的には移行中に両方をサポートできるけど、今のところは不明だね。

他に気になってる人がいたら、ちょっと調べたら、ウィンドウの装飾やボタンを右側に変更できることが確認できたよ。0.2バージョンで追加されたみたい。

うわー、これめっちゃ面白そう!試してみるかも。Fyneをいじってみてるけど、結構好きなんだよね。カスタマイズできるデスクトップ環境をいじりたいけど、設定が面倒で嫌になっちゃう。Goのおかげでなんとかできそう。

ぜひ試してみて!デスクトップ環境の開発を超簡単に始められるように頑張ってるんだ。例えば、パネルやデスクトップのモジュールは基本的にfyne.CanvasObjectを返す関数だから、Fyneアプリでパネルを作るのとほとんど同じだよ :)

Fyneは面白いライブラリだと思う。デスクトップではいい仕事をすると思うけど、前回試したときはモバイル(私の場合はAndroid)での動きが「微妙」だったからちょっとがっかりした。動くには動くけど、プロトタイピングツールか社内アプリを作るためのツールって感じ。ちょっと遅いし、Androidの他の部分とグラフィックが一致してないし、フォアグラウンドサービスやカメラなどの機能のサポートもほとんどない。改善してくれるといいんだけど、リソースも資金も限られてるし、範囲も広いから、もっと複雑なプロジェクトに対応できるようになるかはわからない。とにかく、開発者たちに幸運を祈るよ!

v2.7.0をチェックしてみて!モバイル向けの最適化がすごいよ。カメラやサービスは次のリリースで来る予定で、作業が始まってる。ほとんど資金がない中でこれだけのことができたのはすごいよね。もし誰かがスポンサーになってくれたら、本当に素晴らしいものが届けられると思う :)

誰がこれを作ってるのか、そしてその動機は何なのか理解しようとしてるんだけど。趣味で開発してるのか、営利目的のプロジェクトなのか、大学がスポンサーの学術プロジェクトなのか、どうなんだろう?見つけた中で一番の情報は親のGithubアカウントで、ユーザーが二人いるみたいだよ:https://github.com/FyshOS

このプロジェクトは、存在すべきだと思っているので、ボランティアのオープンソースプロジェクトとして開発されています。チームには4人のコアメンバーがいますが、コミュニティからの貢献も大歓迎です。スポンサーシップを常に探していて、もちろん商業パートナーシップもあれば嬉しいですね!