ラベル Gnome の投稿を表示しています。 すべての投稿を表示
ラベル Gnome の投稿を表示しています。 すべての投稿を表示

2024-07-28

GNOME デスクトップから自作アプリを起動

GNOME は、Wayland あるいは X Window System 上で動作するデスクトップ環境です。長年、Linux をメインの OS として愛用していますが、概ね Fedora Linux や RHEL など、Red Hat 系の Linux ディストロを使っているので、普段使いのデスクトップ環境はずっと GNOME です。

自分専用の GUI アプリを PySide6 (Qt for Python) で作成して使っていますが、アプリの起動にいちいち端末エミュレータを起動してディレクトリを移動して~…、なんていう操作をするのが面倒なので、ある程度アプリが出来上がったらデスクトップアプリとして GNOME のアプリ一覧の画面に登録しています。

今回は、自分専用アプリ(GUI アプリでなくと対応可能)を GNOME デスクトップへ登録する方法をまとめました。

今回のテーマ
  • 自分向けに作った GUI アプリを、ローカルアカウント内で GNOME デスクトップ・アプリとして登録して、アプリ一覧から起動できるようにする。
    • 配布するパッケージではないので、アプリの場所などをハードコーディングすることを許容するものとします。

なお、本ブログで説明する内容は、下記の Github のサイトからダウンロードできます。

スクショ用に下記の OS 環境で動作確認をしていますが、いまどきの GNOME デスクトップ環境であれば、同様に動作すると思います。

Fedora Workstation 40 x86_64
GNOME 46
Python 3.12.4

なお、KDE Plasma デスクトップ環境も GNOME 同様に FreeDesktop.org が策定する規格に準拠していますので、やはり同じように自作アプリを登録できます。

アプリの作成場所

アプリを開発する場所は人それぞれでしょうが、ここでは $HOME/MyProjects 以下に個々のアプリ用のディレクトリを作成するものとします。今回のアプリは、my_desktop_app というディレクトリを作成して、その中で作成します。

bitwalk@fedora:~$ cd MyProjects
bitwalk@fedora:~/MyProjects$ mkdir my_desktop_app
bitwalk@fedora:~/MyProjects$ cd my_desktop_app
bitwalk@fedora:~/MyProjects/my_desktop_app$ pwd
/home/bitwalk/MyProjects/my_desktop_app

最後に pwd コマンドで確認したように、GUI アプリを作成する場所は、ここでは /home/bitwalk/MyProjects/my_desktop_app になります。以降、このフルパスが随所に出現しますが、お使いの環境に応じて適宜読み替えるようにしてください。

GUI アプリは PySide6 で

ここでサンプルとして取り上げる GUI アプリは PySide6 で作成したものとします。メインプログラムかつ、今回は唯一のプログラムファイルは app.py です。デスクトップに登録するためのサンプルですので、ごく簡単に Hello World タイプのプログラムにしました。

app.py

今回利用する Python モジュールは PySide6 だけですが、requirements.txt に記載して pip コマンドで一括複数のモジュールをインストールできるようにしておきます。

requirements.txt
pyside6

アプリが使用するアイコンイメージは、とりあえず下記のイメージを利用しています。下記イメージを app.png という名前で /home/bitwalk/MyProjects/my_desktop_app 内に保存しておきます。

アイコンに使用する app.png(例)

Python の仮想環境 venv を利用

ここでは Python の仮想環境 venv を利用して pip コマンドで必要なモジュールをローカルディレクトリにインストールして利用することにします。pip モジュールも最新のバージョンにしておきます。

bitwalk@fedora:~/MyProjects/my_desktop_app$ python3 -m venv venv
bitwalk@fedora:~/MyProjects/my_desktop_app$ source venv/bin/activate
(venv) bitwalk@fedora:~/MyProjects/my_desktop_app$ pip install -r requirements.txt
Collecting pyside6 (from -r requirements.txt (line 1))
  Downloading PySide6-6.7.2-cp39-abi3-manylinux_2_28_x86_64.whl.metadata (5.3 kB)
...
(途中省略)
...
Downloading shiboken6-6.7.2-cp39-abi3-manylinux_2_28_x86_64.whl (188 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 189.0/189.0 kB 9.7 MB/s eta 0:00:00
Installing collected packages: shiboken6, PySide6-Essentials, PySide6-Addons, pyside6
Successfully installed PySide6-Addons-6.7.2 PySide6-Essentials-6.7.2 pyside6-6.7.2 shiboken6-6.7.2

[notice] A new release of pip is available: 23.3.2 -> 24.1.2
[notice] To update, run: pip install --upgrade pip
(venv) $ pip install --upgrade pip
Requirement already satisfied: pip in ./venv/lib64/python3.12/site-packages (23.3.2)
Collecting pip
  Downloading pip-24.1.2-py3-none-any.whl.metadata (3.6 kB)
Downloading pip-24.1.2-py3-none-any.whl (1.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 11.0 MB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 23.3.2
    Uninstalling pip-23.3.2:
      Successfully uninstalled pip-23.3.2
Successfully installed pip-24.1.2
(venv) bitwalk@fedora:~/MyProjects/my_desktop_app$ deactivate
bitwalk@fedora:~/MyProjects/my_desktop_app$

最後に、deactivate コマンドで Python の仮想環境から抜けます。

シェルスクリプトと desktop ファイル

アプリを起動するシェルスクリプトを用意します。

GUI アプリがバイナリ、あるいはシステムの Python (python3) で起動できるアプリであれば、このシェルスクリプトは不要で、次に説明する desktop ファイル Exec エントリに直接記載できます。

今回は、Python の venv 仮想環境を利用することを前提にしていますので、シェルスクリプトで一旦 venv のあるディレクトリ(=シェルスクリプトが存在するディレクトリ)へ移動して、仮想環境をアクティブにして、同じディレクトリにあるメインプログラム (app.py) を実行するようにしています。

app.sh
#!/bin/bash
cd "$(dirname ${0})" || exit
source venv/bin/activate
python app.py

GNOME のアプリ一覧に登録するための desktop ファイルを用意します。Exec エントリに、先に用意したシェルスクリプト app.sh、Icon エントリに、アプリ一覧に表示するアイコン画像 app.png をフルパスで指定しています。お使いの環境に応じて変更してください。

フルパスで指定しなくとも、せめて $HOME などの環境変数で一部を指定できないか試しましたが、うまくいきませんでした。やりかたが間違っているだけかもしれませんので、何か判ったら追記するようにします。

app.desktop
[Desktop Entry]
Name=Hello World!
Name[ja]=こんにちは、世界!
Comment=Sample GUI
Keywords=Hello World!;
Keywords[ja]=こんにちは、世界!;
Exec=/home/bitwalk/MyProjects/my_desktop_app/app.sh
Icon=/home/bitwalk/MyProjects/my_desktop_app/app.png
Terminal=false
Type=Application
StartupNotify=true
Categories=Utility;

GUI アプリでなく、コマンドラインでやりとりする CUI アプリの場合、あるいはデバッグ目的で出力する内容を確認したい場合は Terminal エントリを true にするとアプリの実行時に端末エミュレータが表示されます。アプリの実行が終了すると同時に端末エミュレータも閉じます。

シェルスクリプトの動作確認

先ほど作成したシェルスクリプトのファイル app,sh に実行権限を付与後、ホームディレクトリにワーキングディレクトリを移して、スクリプトの動作確認をします。

bitwalk@fedora:~/MyProjects/my_desktop_app$ chmod +x app.sh
bitwalk@fedora:~/MyProjects/my_desktop_app$ cd ~/
bitwalk@fedora:~$ MyProjects/my_desktop_app/app.sh

以下のような GUI アプリのウィンドウが表示されれば正しく動作しています。

app.sh の実行例

デスクトップアプリの登録

準備した desktop ファイルを所定の場所 $HOME/.local/share/applications/ 内にコピーすれば、アプリ一覧に登録されるのですが、desktop ファイルの内容を変更する度にコピーし直すのは面倒ですので、以下のようにシンボリックリンクを貼っておきます。

$ ln -s /home/bitwalk/MyProjects/my_desktop_app/app.desktop /home/bitwalk/.local/share/applications/app.desktop

問題がなければ、GNOME のアプリ一覧画面に直ちに反映されます。

アプリ一覧に追加された「こんにちは、世界!」

今回はサンプルということで desktop ファイル名を app.desktop としましたが、現実的には、いくつも登録することを考慮して一意なファイル名にする必要があります。

参考サイト

  1. そのシェルスクリプトのあるディレクトリに移動する #ShellScript - Qiita [2013-06-28]
  2. Desktop Entry Specification

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2024-04-03

GNOME OS Nightly を試す

参考サイト [1] によると、GNOME OS は、GNOME のバニラ・バージョン(改変・改修・カスタマイズなどが一切行われていない、原型を留めたままの状態)を搭載した、起動可能な OS で、主な用途は GNOME のテストが想定されています。GNOME OS は OSTree を使ってアップグレードすることができ、Flatpak アプリケーションをインストールすることができます。

言い換えると、GNOME プロジェクトが提供する素の状態の GNOME デスクトップ環境と言えるでしょう。

さらに GNOME OS Nightly の ISO イメージをダウンロードできるサイト [2] には、「これはプレリリースソフトウェアです。本番環境で使用すると問題が起きるかもしれません。実際のハードウェアまたは Flathub Box でのみ動作します。」とあります。Nightly とあるように、おそらく毎晩、その時点でのレポジトリにあるソースを自動ビルドした最新 GNOME OS のインストーラがダウンロードできるようになっているのでしょう。

今回、ダウンロードサイト [2] からダウンロードして試した ISO イメージは以下のファイルです(明確な記載はありませんでしたが x86_64 のみに対応していると思われます)。

gnome_os_installer_656476.iso

以前 GNOME Boxes で試して見たところ、インストール画面まで進みませんでしたが今回はうまくできました。

インストール

インストールは、アカウントの設定などが無いのでとても単純です。画面としては4ステップですが、実質的にインストール先を指定するだけでしょうか。

  1. Use existing version
    • インストールメディアの GNOME バージョンを指しているだけか?
  2. Select Disk
    • インストール先のメディア指定
  3. Reformatting
    • メディアをフォーマットしてインストール中
  4. Power Off
    • インストール完了、シャットダウン

インストール時のスクリーンショットを並べました。

 

最初の起動

GNOME OS のインストール後、最初の起動時にユーザーアカウントの設定等をおこないます。

最初に、表示する言語を選択します。

 

キーボードレイアウトや入力メソッドを選択します。

 

プライバシーの設定で位置情報サービスを利用するか設定します。

 

システムが使用するタイムゾーンを設定します。

 

ユーザー情報とパスワードを設定します。

 

以上で設定は終わりです。

GNOME OS を使い始める (S) ボタンをクリックすると、GNOME デスクトップ環境を使い始めることができるようになります。

 

しばらくすると、下記の「ツアー」アプリが表示されます。

 

GNOME 付属のアプリ

GNOME 付属のアプリの数は控えめです。アプリ一覧で表示されるアプリと Dash(ダッシュ)に登録されているアプリが、GNOME 標準のアプリだと考えてよいでしょう。

GNOME 付属のアプリ

GNOME Web / Epiphany

コードネーム Epiphany は、WebKit レンダリング・エンジンをベースにした GNOME ウェブ・ブラウザです [3]。

Epiphany で yahoo.co.jp にアクセスした例

Fedora Linux / RHEL や Ubuntu など、GNOME をデフォルトのデスクトップ環境に採用している Linux ディストロでは、デフォルトのウェブ・ブラウザに Mozilla Firefox を採用していることが多いように思いますが、なにかあるのでしょうか。別に Epiphany でもいいのではないかと思ってしまいます。

自分の場合、メインの環境 (Fedora Linux) では Google Chrome を使いたいので自分でインストールして利用しています。そのためデフォルトが何であっても構わないのですが、ちょっと気になります。

システムの更新

GNOME OS は OSTree を使ってシステムのバージョンを管理しています。システムの更新があると通知ポップアップで知らせてくれます。更新すれば、(プレリリース版ですが)常に最新の GNOME OS Nightly を利用することができます。

「ソフトウェア」によるシステムの更新

ちなみに「ソフトウェア」では Flathub のレポジトリにある Flatpak アプリを利用できるようになっています。

参考サイト

  1. GUADEC 2020 (22-July 28, 2020): GNOME OS on real hardware · GNOME Events (Indico) [2020-07-20]
  2. GNOME OS Nightly
  3. GNOME / Epiphany · GitLab

 

古いバージョンの GNOME OS ですが、わかりやすい説明です。

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2023-11-24

EuroLinux Desktop 9

ポーランドの EuroLinux Sp. z o. o.(以降、EuroLinux 社)は、RHEL 6 のころから RHEL 互換パッケージをリリースしていたようですが、CentOS 8 の開発終了がアナウンスされた後 [1]、EuroLinux 8.3 から無料でも公開されるようになりました。

いつもお世話になっている DistrtoWatch.com で EuroLinux 9.3 のアナウンスが載っていたので、最近の EuroLinux の状況を確認しようとサイトをいろいろ見ていると EuroLinux Desktop 9 という名前を見つけました。なにが違うのか見てみたくて、仮想環境にインストールしてみました。

下記の EuroLinux のダウンロードサイトから、Download EuroLinux 9 Desktop for x86_64 下の ISO with Live mode のボタンをクリックして (ELD-9-x86_64-latest-eld-live.iso) をダウンロードしました。

EuroLinux の iso イメージが公開されているサイト

GNOME Boxes 上で EuroLinux Desktop 9 の Live OS を起動して、インストーラを起動してインストールし、dnf コマンドでアップデートをしました。

EuroLinux Desktop 9.3

GNOME shell の画面左上のアクティビティボタンは不評なのでしょうか、外見だけは Microsoft Windows のデスクトップに近い雰囲気にしています。と言っても、右下の9点アイコンは、アクティビティボタンと同じで、クリックすると GNOME のアプリ一覧が表示されます(ショートカットは ⊞ Win + A)。

アプリケーション一覧 (EnroLinux Desktop)

EuroLinux Desktop では、以下のような eld- ではじまるパッケージが使われています。GNOME の拡張パッケージもあります。

[bitwalk@eurolinux ~]$ rpm -qa | grep eld
eld-release-9.2-1.el9.noarch
eld-backgrounds-90.2-5.el9.noarch
eld-gnome-shell-40.9-3.el9.x86_64
eld-gnome-shell-extension-appindicator-53-1.el9.noarch
eld-gnome-shell-extension-dash-to-panel-44-3.el9.noarch
eld-gnome-shell-extension-ding-47-1.el9.noarch
eld-gnome-shell-extension-night-theme-switcher-51-2.el9.noarch
eld-libreoffice-ribbon-1-2.el9.noarch
eld-setup-9.2-1.el9.noarch
[bitwalk@eurolinux ~]$ 

EuroLinux は Oracle Linux、Rocky Linux、Alma Linux、RHEL などのシステムと互換性があると言っているだけです [2]。互換性を維持しつつ、EuroLinux ならではの特徴を出すのはアリなのでしょう。もうすこし評価を続ける必要がありますが、利便性が高いディストリビューションであれば大歓迎です。

参考サイト

  1. CentOS Project shifts focus to CentOS Stream – Blog.CentOS.org [2020-12-08]
  2. What is EuroLinux?

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2023-11-23

PySide6 とダークモード

PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。

個人用途の GUI アプリはほとんどの場合 Python/PySide6 で作っていますが、ダークモードにした場合にそういったアプリの外観がどうなるのか、ちょっと調べました。

意識しだしたダークモード

いままで、デスクトップ環境のダークモードなんて気にしていませんでしたが、最近、個人用のノート PC を持ち歩くことが増えてきました。画面の明るさを適度に落とすことがバッテリーの消耗を抑えることに効くことが判っているので、更にバッテリーを長く使えるようにするには、黒基調の画面、すなわちダークモードで使えば効果的だろうと、今更ながらダークモードに注目するようになりました。

GNOME の場合

ダークモードにしても Python/PySide6 の GUI アプリには反映されません。

GNOME の「設定」→「外観」で、「暗い」(ダークモード)に設定

例えば、calculator.py というサンプルの場合です。

GNOME ダークモードでの calculator.py の実行例

残念ながらこのように Python/PySide6 のアプリの外観には反映されませんでした。GTK のアプリケーションでないので、しかたがないのかもしれません。

  • ちなみに、Python の PyGObject [2] モジュールを pip でインストール・ビルドして、簡単な GUI アプリを作って同じように GNOME デスクトップ環境下で試してみましたが、やはり GNOME のダークモードは反映されませんでした。

KDE Plasma の場合

ひょっとするとデスクトップ環境を変えると状況が変わるかもしれないと考え、試しにノート PC に Fedora KDE Desktop (KDE Plasma 5) をインストールして同じサンプルを実行してみました。

KDE Plasma の「KDE システム設定」→「外観」

デフォルトのライトモードで同じサンプルを実行すると下記のようになります。

KDE Plasma ライトモード (Breeze) での calculator.py の実行例

ダークモードのテーマに設定すると、Python/PySide6 のアプリの外観にも反映されました。😃

KDE Plasma ダークモード (Breeze Dark) での calculator.py の実行例

これは、アプリ側の CSS で明示的に色指定していない場合に有効のようです。

デスクトップ環境の KDE Plasma 5 は Qt ライブラリを利用していますが、Qt のバージョンは 5.15.11 です。一方、PySide6 (6.6.0) は Qt 6.6.0 を利用しています。そのため、直接的な依存関係はなさそうです。なにか環境変数でテーマが設定されているのかもしれないと env コマンドで調べましたが、ちょっと見ただけでは判りませんでした。

しくみが良く判っていないものの、Python/PySide6 のアプリの外観が、デスクトップ環境の外観の設定と同期するのはとても便利です。

それでは、いっそデスクトップ環境を KDE Plasma に変えてしまおうか、とはなかなかなりません(ちょっと、ぐらっときましたが…😅)。しかし、KDE Plasma をもう少し使ってみようかと考える動機にはなります。

動作環境と使用したサンプル

下記の OS 環境で動作確認をしています。

Fedora Workstation 39
Fedora KDE Desktop 39
x86_64
Python 3.11.6
PySide6 6.6.0

使用したサンプルは以下の通りです。敢えてアプリ側で色の指定をしないようにしています。

calculator.py

参考サイト

  1. Qt for Python - Qt Wiki
  2. Overview — PyGObject

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加