ラベル デスクトップ環境 の投稿を表示しています。 すべての投稿を表示
ラベル デスクトップ環境 の投稿を表示しています。 すべての投稿を表示

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-07

【備忘録】Fedora Linux Workstation のデスクトップ環境

Fedora Linux は Red Hat 社が支援するコミュニティ Fedora Project で開発されている Linux ディストロです。このディストロは、最新の技術を積極的に取り込むことで知られています。Fedora Linux の開発成果は CentOS Stream に取り込まれます。ここでテストを経て最終的に Red Hat Enterprise Linux, RHEL へ反映されます。

Fedora Linux は、おおむね春と秋の年二回の頻度で新しい版がリリースされています。

技術評論社のサイトで、階戸アキラ氏の記事 [1] を読んでびっくりしました。将来、Fedora Linux Workstation のデフォルトのデスクトップ環境が GNOME から KDE Plasma 6 へ変更されるかもしれないとのことです。

この変更提案 [2] は 2025 年春にリリース予定の Fedora Linux 42 に向けたもので、現時点では FESCo (Fedora Engineering Steering Committee) の採決を経ていません。そのためどうなるかは判りませんが、今後の議論に注目したいです。

勝手な予想ですが、Fedora Atomic Desktops における Fedora Silverblue / Gnome と Fedora Kinoite / KDE Plasma のように、マーケティング的に Workstation と Spins が統合されて、なにかブランド名を付けるというあたりに落ち着くのではないでしょうか。

Fedora Linux 40 beta / KDE spin のデスクトップ画面

参考サイト

  1. KDE PlasmaをFedoraのデフォルトデスクトップに ―Budgie開発者らが変更を提案 | gihyo.jp [2024-04-05]
  2. Changes/FedoraPlasmaWorkstation - Fedora Project Wiki

 

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

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



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

2024-04-06

[Alpine Linux] Xfce4 デスクトップ環境の設定(改)

Alpine Linux は、セキュリティを向上させるため、ユーザー空間にあるすべてのバイナリを、スタックスマッシュ防止機能付きの位置非依存な実行可能ファイルとしてコンパイルしています。サイズが小さく、起動が速いため、ルーター、サーバー、NAS などのような組み込みデバイスの実ハードウェア上だけでなく、仮想マシン上でも、迅速な起動を必要とするコンテナ上でも使用されています。

Wikipedia より引用・翻訳、編集

Alpine Linux にインストールできるデスクトップ環境はいくつもありますが、Alpine Linux の大変コンパクトなサイズを活かすべく、最低限のデスクトップ環境を用意して日本語入力ができればとりあえず十分、という場合には Xfce4 のインストールがオススメです。

Alpine Linux のインストール方法は下記にまとめてあります。

さらにデスクトップ環境 Xfce4 の設定方法を下記にまとめました。

しかし、あとで読み直して見ると、OS のインストールが CUI ベースなのは仕方がないとしても、デスクトップ環境のインストール作業は面倒だと感じてしまいます。イマドキのデスクトップ用途の Linux ディストロのインストーラが GUI 化されていて、とっても簡単になっているせいでしょうか。

そこで、少しでも楽して Alpine Linux のデスクトップ環境を構築できるように、自動化できる部分をスクリプトにまとめてしまいました。

スクリプトを実行するための前提は以下のとおりです。

本記事は、下記の Alpine Linux が setup-alpine コマンドで既にインストールされているシステムでのデスクトップ設定例です。

 

alpine-standard-3.19.1-x86_64.iso

 

なお、bitwalk (Full name: Fuhito Suguri) というユーザーアカウントをインストール時に作成しています。ネットワークに接続されていることも前提になります。

なお、本スクリプトは CPU の種類に依存していませんが、動作確認ができたのは GNOME Boxes 仮想環境と古いノード PC(どちらも x86_64)だけです。

Xfce4 デスクトップ環境のインストールと設定

すでに Alpine Linux がインストールされており、ネットワークが利用可能なので、ここでは LAN 内の他の PC (fedora) から、Alpine Linux の作成しておいたユーザーアカウントへ ssh でログインして、su コマンドでスーパーユーザーになって作業することにします。

bitwalk@fedora:~$ ssh bitwalk@192.168.0.41
The authenticity of host '192.168.0.41 (192.168.0.41)' can't be established.
ED25519 key fingerprint is SHA256:vs5J+THCe+EUAN8pyktjVQ7Kd7K7uUdTytpivgnkzB4.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.41' (ED25519) to the list of known hosts.
bitwalk@192.168.0.41's password: 
Welcome to Alpine!

The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See .

You can setup the system with the command: setup-alpine

You may change this message by editing /etc/motd.

localhost:~$ su
Password: 
/home/bitwalk # 

git パッケージのインストールとスクリプトの入手

スクリプトを github から入手するため、まず git パッケージをインストールします。

/home/bitwalk # apk add git
fetch http://dl-cdn.alpinelinux.org/alpine/v3.19/main/x86_64/APKINDEX.tar.gz
(1/8) Installing ca-certificates (20240226-r0)
(2/8) Installing brotli-libs (1.1.0-r1)
(3/8) Installing c-ares (1.27.0-r0)
(4/8) Installing nghttp2-libs (1.58.0-r0)
(5/8) Installing libcurl (8.5.0-r0)
(6/8) Installing libexpat (2.6.2-r0)
(7/8) Installing pcre2 (10.42-r2)
(8/8) Installing git (2.43.0-r0)
Executing busybox-1.36.1-r15.trigger
Executing ca-certificates-20240226-r0.trigger
OK: 504 MiB in 91 packages
/home/bitwalk # 

github から git でスクリプトを clone します。

/home/bitwalk # git clone https://github.com/bitwalk123/alpine-jp.git
Cloning into 'alpine-jp'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 15 (delta 1), reused 6 (delta 0), pack-reused 0
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (1/1), done.
/home/bitwalk # 

スクリプトの実行

clone した alpine-jp にディレクトリを移し、setup-xfce-jp を実行します。

/home/bitwalk # cd alpine-jp
/home/bitwalk/alpine-jp # ls
README.md      setup-xfce-jp
/home/bitwalk/alpine-jp # ./setup-xfce-jp

### Enable community repository

    ...
    ...

Executing desktop-file-utils-0.27-r0.trigger
OK: 1485 MiB in 414 packages
 * service lightdm added to runlevel default

### Add /etc/ibus-conf file

### Completed! Please reboot.
/home/bitwalk/alpine-jp # 

.bashrc の準備

スーパーユーザーを抜けて、/etc/ibus-conf を自分のアカウント内に .bashrc ファイルとしてコピーします。

/home/bitwalk/alpine-jp # exit
localhost:~$ ls /etc/ibus-conf
/etc/ibus-conf
localhost:~$ cp /etc/ibus-conf ~/.bashrc
localhost:~$ cat .bashrc
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
localhost:~$ 

再びスーパーユーザーになって再起動します。

localhost:~$ su
Password: 
/home/bitwalk # reboot

再起動後、問題が無ければ、以下のようなログイン画面が表示されます。

lightdm のログイン画面

Alpine Linux のインストール時に作成したユーザーアカウントが表示されているので、設定したパスワードを入力してログインします。

Xfce4 のデスクトップ画面

キーボードのレイアウト設定

日本語キーボードを使用している場合は、Xfce4 のデスクトップのメニュー Applications → Settings → Keyboard を選んで、キーボード設定画面を開きます。

Layout タブ画面で Use system defaults をオフにします。

Keyboard layout の +Add ボタンをクリックして Keyboard layout selection のリストから Japanese を選択して OK ボタンをクリックして Layout のリストに追加します。

もともとあった English (US) は選択して −Remove ボタンをクリックしてリストから削除します。

キーボード・レイアウトの設定

Keyboard のウィンドウを × Close ボタンで閉じるとレイアウトが反映されます。

IBus の設定

メニューから Applications → Settings → Session and Startup を起動し、Applications Autostart タブで /usr/bin/ibus-daemon -drx コマンドがログイン時に実行されるように登録します。

Session and Startup のウィンドウ / Applications Autostart タブ

メニューから Applications → Settings → IBus Preferences を起動し、Input Method のタブで、インプットメソッドに Anthy を追加します。

IBus Preferences のウィンドウ / Input Method タブ

以上で 漢字 キーで入力を切り替えて(_A → あ)、日本語入力・漢字変換ができるようになります。

まとめ

Xdce4 のデスクトップ環境の表示は英語のままですし、ロケールもいじっていません。またエラーが生じた場合の処理なども一切考慮していません。なにか不具合があれば可能なかぎり対処していくつもりです。

参考サイト

  1. downloads | Alpine Linux
  2. Alpine setup scripts - Alpine Linux

 

ブログランキング・にほんブログ村へ 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技術ブログ オープンソースへ
にほんブログ村

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



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