2021-03-31

AlmaLinux 8.3 リリース

AlmaLinux は、2020 年末に RHEL 互換の Linux ディストロ、CentOS の開発打ち切るというアナウンスを受けて、米 CloudLinux 社が立ち上げたオープンソースのプロジェクトです。CentOS に代わるディストロという位置付けで、RHEL と 1:1 でバイナリ互換のあるフォークを目指しています。

3 月 30 日に RHEL 8.3 に対応する AlmaLinux 8.3 がリリースされました。

AlmaLiux 8.3 のリリースアナウンス

iso イメージ(x86_64 のみ)は下記からダウンロードできます。

AlmaLiux 8.3 のダウンロードサイト

CentOS から AlmaLinux へ移行するツールが公開されています。

CentOS から AlmaLiux へ移行するツール
AlmaLinux 8.3 のデスクトップ画面
画面ロック状態のスクリーン

長期間プロジェクトを維持する難しさ

RHEL クローンである CentOS はもともと有志のボランティアによって 2004 年に始まったプロジェクトです。

10 年後の 2014 年に Red Hat 社は CentOS の支援を表明し、CentOS の開発者を Red Hat 社に雇い入れました。それは、ボランティアのプロジェクトは、無料ということで多くの需要があるにも関わらず、資金難のため活動を続けることが難しかったからです。Red Hat 社は、自社 OS のクローンを開発するオープンソースのプロジェクトに手を差し伸べるという利益相反するような支援をして、株主などのステークホルダーから理解を得られるのだろうかと、当時は不思議に思っていました。

CentOS の開発中止の発表は、IBM 社の傘下となった Red Hat 社がついに CentOS を手放したか、という印象でした。

この発表に怒った CentOS のユーザのことが話題になりましたが、個人的には、突然の発表であたふたしたものの、むしろ今までありがとうと CentOS には感謝し、RHEL 8.3 に切り替えてしまいました。

CentOS をベースにカスタマイズした自社ブランドの OS でビジネスを展開している CloundLinux 社が、CentOS の開発中止の発表を受けて、同等な RHEL クローン AlmaLinux をオープンソースプロジェクトとして立ち上げたことは、よくぞやったと喝采を送りたくなります。

一方、以前 CentOS を立ち上げた一人、Gregory Kurtzer 氏が、CentOSの初期の目標を達成するために Rocky Linux という RHEL クローン OS を開発するプロジェクトを立ち上げました。こちらは有志のボランティアによるプロジェクトです。かつての CentOS プロジェクトのように資金難に陥ることのないことを願っています。

参考サイト

  1. AlmaLinux OS - Forever-Free Enterprise-Grade Operating System
  2. CentOS代替目指す「AlmaLinux OS」がGAに、非営利団体設立も発表 | OSDN Magazine [2021-03-31]
  3. CloudLinux、「CentOS」の代替OS「AlmaLinux」の一般提供を開始 - ZDNet Japan [2021-03-31]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

2021-03-28

QWebEngineView を使う (PySide2)

Qt for Python (PySide2) は、Qt の Python バインディングを提供するプロジェクトで、オープンソース版の Qt と同じく、LGPLv3 / GPLv3Qt commercial license(商用ライセンス)が適用されています。最近はクロスプラットフォーム用の GUI ライブラリとして使うことが多くなりました。

QWebEngineView は Chromium をベースにした、ウェブブラウザのエンジンのクラスです [1]。このクラスを使って自分だけのウェブブラウザを作るっていうのもアリですが、アプリケーションのヘルプ文書などを表示することに応用できそうです。

本ブログ記事では下記の OS 環境で動作確認をしています。

Fedora 34 (Workstation Edition Prerelease) x86_64
- python3-3.9.2-1
- python3-pyside2-5.15.2-3

参考サイト [3] ではインターネットブラウザのような機能を実装する例を紹介していますが、ここではそのうちほんの一部、サイトを表示するだけの部分を PyQt5 から PySide2 に直して紹介します。

qt_webengineview.py
qt_webengineview.py の実行例

参考サイト

  1. Qt WebEngine Overview | Qt WebEngine 5.15.3
  2. QWebEngineView — Qt for Python
  3. Create your own web browser in Python with Qt — Hands-on guide to Python GUI programming with Qt

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

Fedora 34 の変更点 (2)

Fedora は Red Hat 社が支援するコミュニティ Fedora Project で開発されている Linux ディストリビューションで、最新の技術を積極的に取り込むことで知られています。また、Fedora の開発成果が後にリリースされる Red Hat Enterprise Linux, RHEL に取り込まれています。Fedora は、おおむね春と秋の年二回の頻度で新しい版がリリースされています。

2021 年 3 月 23 日に Fedora 34 のベータ版がリリースされました。

Fedora 34 (Workstation Edition Prerelease) のでデスクトップ画面

Fedora 34 の新機能

以前、本ブログ記事 [1] でまとめた Fedora 34 の変更点から内容が変わっていますので、あらためて Fedora 34 ChangeSet から引用して :[2]、ざっと翻訳しました。

1. システム全体に影響する変更

1.1Binutils 2.35binutils パッケージをバージョン 2.34 から 2.35 へリベース。
1.2Enable btrfs
transparent zstd compression
by default
btrfs をデフォルトのファイルシステムとして使用している場合、zstd を使用して透過的な圧縮を有効にします。圧縮はスペースを節約し、同時に書き込みの量を減らすことになるため、フラッシュベースのメディアの寿命を大幅に延ばすことができます。また、読み書きのパフォーマンスを向上させることもできます。
1.3Route all Audio to PipeWireこの変更案は、PulseAudioJACK からのすべてのオーディオを、デフォルトで PipeWire Audio デーモンにルーティングするというものです。
1.4Enable systemd-oomd
by default for all variants
systemd-oomd をデフォルトで有効にすることで、out-of-memory (OOM) になった時の状況を改善します。
1.5Boost 1.75 upgradeBoost 1.75 にアップグレードされました。
1.6Changes/MinGW environment
and toolchain update
MinGW のベース環境とツールチェーンを最新のアップストリーム安定版リリースに更新します。
1.7GNU Toolchain update
(gcc 11, glibc 2.33)
Fedora 34 GNU Toolchain を gcc 11, binutils 2.35, glibc 2.33 に切り替えます。
1.8Golang 1.16Go コンパイラを 1.16 に更新し、すべての golang パッケージをリビルドしました。
1.9IBus 1.5.24IBus は GTK4 IM モジュールを提供し、入力メソッド名をより簡単に検索できるように ibus-setup を強化します。
1.10ibus-anthy
for default Japanese IME
現在の日本語 IME(入力メソッドエンジン)のデフォルトは ibus-kkc ですが、より効率的に日本語 IME を開発するために ibus-anthy に変更します。
1.11Use ibus-m17n as the default IME
for Sinhala
現在のシンハラ語のデフォルトの入力方法は ibus-sayura です。これを ibus-m17n の入力メソッド "m17n:si:sayura - sayura (m17n)" に変更する必要があります。
1.12Use ibus-unikey as the default IME
for Vietnamese
現在のベトナム語のデフォルトの入力方法は ibus-bogo です。これを ibus-unikey に変更する必要があります。
1.13Ignore Anaconda kernel boot parameters
without 'inst.' prefix
現在、Anaconda は 'inst' prefix (inst.stage2=) を持つブートオプションと、持たないブートオプション (stage2=) 両方の使用できますが、inst.プレフィックスを含まない Anaconda カーネルブートパラメータの使用を無視するようになります。
1.14LLVM 12Fedora のすべての llvm サブプロジェクトをバージョン 12 にアップデートします。
1.15NSS CK_GCM_PARAMS changePKCS #11 v3.0 で PKCS #11 の仕様が変更されたため、NSS は CK_GCM_PARAMS 構造体の定義をソース互換性のない方法で変更する必要があります。Upstream は NSS 3.52 でこの変更を行いました。この変更は ABI には影響しません。古いバージョンの NSS でコンパイルされた古いプログラムはまだ動作します。NSS を使用して AES GCM を直接呼び出すパッケージのみが影響を受けます。
1.16OpenLDAP without
Non-threaded Libraries
OpenLDAP はスレッド化されていないバージョンの libldap を試用しません。代わりに、ランタイムライブラリが動作し続けるためのシンボリックリンクが提供され、libldap で構築されたソフトウェアはすべて実質的に libldap_r で構築されます。
1.17Remove make from BuildRootこの変更により、Kojimock のデフォルトのビルドルートから make が削除されます。
1.18Remove support for
SELinux runtime disable
SELinux ランタイムのサポートを無効にして、初期化後の読み込みのみの保護で LSM フックを強化できるようにしました。
1.19Restart services
at end of rpm transaction
各 rpm パッケージで再起動すべき各サービスを再起動するためのスクリプトレットは、ユニットファイル内の宣言と、最後に発生する rpm トランザクショントリガーで置き換えられ、すべてのサービスが再起動されます。
1.20Ruby 3.0Ruby 3.0 は Ruby の最新安定版です。ますます多様化・拡大する Ruby の需要に対応するために、多くの新機能や改善が含まれています。Fedora 33 の Ruby 2.7 から Fedora 34 の Ruby 3.0 へのメジャーアップデートにより、Fedora は優れた Ruby 開発プラットフォームとなりました。
1.21Rust Crate Packages
For Release Branches
Rust の Crate パッケージは、現在 Fedora Rawhide(Fedora の開発ツリーで、ローリングリリースモデルを採用)でしか利用できないので、Fedora リリースブランチ用に Rust アプリケーションをパッケージ化するのが難しく、通常よりも多くのステップを必要とします。この変更提案は、Rust のパッケージングを Fedora の通常のパッケージングワークフローと一致させることを目的としています。
1.22Unify the GRUB configuration files location
across all supported architectures
この変更により、GRUB 設定ファイルのレイアウトがサポートされているすべてのアーキテクチャで一貫したものになりました。現在 EFI は特殊なケースで、GRUB 設定ファイルと環境変数ブロックはブートパーティション (ブートパーティションが使用されていない場合は /boot ディレクトリ) の代わりに EFI システムパーティション (ESP) に格納されています。
1.23Wayland by Default
for KDE Plasma Desktop
X11 ベースのセッションよりも Wayland ベースの KDE Plasma Desktop セッションを優先するように、SDDM のデフォルトのセッション選択を変更します。
1.24Xwayland
as a standalone package
Xwayland を安定版ブランチではなく、現在のコードから構築されたスタンドアロンパッケージに移動。

2. 自己完結型の変更

2.1AArch64 KDE Plasma Desktop imageFedora 34 の配布セットに AArch64 KDE Plasma Desktop のスピンイメージを追加しました。
2.2uEFI for ARMv7ARMv7 で armhfp で生成されたすべてのイメージに UEFI をデフォルトで使用するようにしました。
2.3BIND 9.16BIND 9 は次期安定版 BIND 9.16 に更新されます。
2.4Move deprecated
bluetooth utilities
to subpackage
非推奨の bluez bluetooth ユーティリティをサブパッケージに移動します。
2.5Comp Neuro Container ImageCompNeuro Lab イメージと同じ計算神経科学ソフトウェアを含む Comp Neuro コンテナイメージを提供します。これにより、ユーザは Podman/Docker を使ってソフトウェアを利用できるようになります。
2.6Compress Kernel Firmwareカーネルファームウエアを圧縮して使用するディスクサイズを節約します。
2.7Deprecate xemacs,
xemacs-packages-base,
xemacs-packages-extra,
and neXtaw
xemacs, xemacs-packages-base, xemacs-packages-extra, neXtaw パッケージは非推奨になります。
2.8Deprecate nscdこの提案は、名前付きサービスのための nscd キャッシュを廃止することを意図しています。Fedora は既にデフォルトで hosts データベースのキャッシュに systemd-resolved を使用していますが、sssd デーモンは他の名前付きサービスのキャッシュを提供しています。
2.9Deprecate python-mockpython-mock (python3-mock) パッケージは Fedora 34 で非推奨になります。このパッケージは古い Pythons 用の標準ライブラリのバックポートで、Fedora パッケージは代わりに unittest.mock を使うべきです。しかし、多くのパッケージはまだ mock に依存しているので、まだ削除することはできません。パッケージが利用可能になったら unittest.mock に切り替えるようにアップストリームと協力することを推奨します。下流の一時的な (あるいは恒久的な) 解決策として、単純な sed を %prep に適用することができます。
2.10Disable Python 2 Dist RPM Generators
and Freeze Python 2 Macros
python2.7dist() と python2dist() の自動生成された Python-rpm-generators の provides/require は自動生成されなくなり、Fedora で動作するパッケージでは使用されなくなります。python(abi) = 2.7 の自動提供/要求は維持されます。
2.11Enable HarfBuzz in FreeTypeこの機能の目的は、FreeType で HarfBuzz を使用して、より複雑なテキスト整形を必要とする言語のグリフのヒントを改善できるようにすることです。
2.12fbrnchFedora に fbrnch パッケージャーツールを追加します。
2.13i3 Spin人気の i3 ウィンドウマネージャを搭載した公式の Fedora Spin をリリースします。この Spin は、従来のデスクトップ環境の代わりに動的タイル型ウィンドウマネージャを搭載した、最初の Fedora Spin となります。
2.14GitRepos-master-to-mainこの変更により、Fedora の git リポジトリが "master" ではなく "main" をデフォルトの git ブランチとして使用するようになります。特定のリポジトリは手動で移動され、新しいプロジェクトのデフォルトの git ブランチは "main" を使用するように設定されます。
2.15GNOME 40Fedora 34 には最新のアップストリーム GNOME リリースである GNOME 40 が含まれます
2.16kasumi-unicodekasumi-unicode は、kasumi プロジェクト内の kasumi.spec で新たに生成されます。
2.17Localization measurement
and tooling
エンドユーザーや貢献者のために、Fedora Workstation の翻訳の進捗状況や翻訳者のための便利なファイル(例: 翻訳記録)を含む公開のウェブサイトを提供します。
2.18LXQt 0.16.0LXQt を 0.16.0 にアップデート。
2.19Make selinux-policy up-to-date
with the latest kernel
新しいパーミッション、クラス、および機能を selinux ポリシーに追加し、システムがそれらを認識し、エラーメッセージなしで起動できるようにし、制限されたサービスのための実際のポリシーでそれらを使用できるようにします。
2.20MariaDB 10.5Fedora の MariaDB ('mariadb'パッケージ) を 10.4 から 10.5 にアップデート。
2.21Policy for Modules
in Fedora and Fedora ELN
ユーザーとパッケージャーの最適な体験を保証するために、Fedora の Modular コンテンツのためのルールを確立します。現在のところ、これらのルールは Fedora ELN にのみ適用されますが、将来、別の変更提案を通して Fedora と EPEL で再利用できるように作成されます。
2.22Stop Shipping
Individual Nodejs Library Packages
Nodejs パッケージは下記のみになります。
  • インタプリタ、開発用ヘッダ/ライブラリ、プロジェクトレベルのインストールを管理するツール(NPM, yarn など)。
  • ユーザーがシェルで使いたいと思うようなバイナリを提供するパッケージ。
  • コンパイル済み/バイナリの nodejs モジュール (現在のところ)
2.23ntp replacementntp パッケージが ntpsec に置き換えられます。
2.24Reduce installation media size
by eliminating the intermediate
EXT4 filesystem in the SquashFS
インストールイメージの構築プロセスを変更し、ネットインストールや DVD ISO イメージに存在する Squash ファイルシステムイメージに EXT4 ファイルシステムイメージが含まれないようにします。この変更を実装した結果、ファイルは SquashFS に直接格納されるようになります。
2.25PostgreSQL 13PostgreSQL (postgresql と libpq コンポーネント) をバージョン 12 からバージョン 13 に更新しました。
2.26Python Upstream Architecture NamesFedora の Python エコシステムでは、以前にパッチが適用された Fedora の名前ではなく、(主にファイル名で)CPython のアップストリームアーキテクチャの名前を使用してください。例えば、/usr/lib64/python3.9/lib-dynload/array.cpython-39-powerpc64le-linux-gnu.so の代わりに /usr/lib64/python3.9/lib-dynload/array.cpython-39-ppc64le-linux-gnu.so とします。これにより、Python 自体のパッケージ化は少し厄介になりますが、Fedora の Python をアップストリームに近づけ、ppc64le manylinux wheels との相互運用性の問題を解決しました。この変更は ppc64le と armv7hl にのみ影響します(koji.feedoraproject.org で構築されたアーキテクチャを考慮しています)。ファイル名に常に %{_arch}-linux%{_gnu} が含まれていると仮定しているパッケージに適応させる必要があります。
2.27Ruby on Rails 6.1Ruby on Rails 6.1 は Ruby で書かれた有名な Web フレームワークの最新版です。
2.28Scale ZRAM to Full Memory SizeFedora 33 ではデフォルトで zram を有効にしました。仮想スワップデバイスのサイズは、圧縮スワップページに使用されるメモリ量が典型的なシナリオでは物理メモリの 4 分の 1 に制限されるように設定されていました。このサイズは現在、物理メモリの半分に増加しています(zram-fraction は 1.0 になり、max-zram-size は 8 GiB になります)。これにより、小容量のシステムでも Anaconda インストーラや他のプログラムを正常に起動できるようになりました。
2.29Stratis 2.2.0Stratis 2.2.0 では、Stratis ファイルシステムのシンボリックリンクが /stratis ではなく /dev/stratis に置かれるようになりました。Stratis はシンボリックリンクを、以前のように stratisd を介して直接ではなく、 udev ルールを使って作成し、維持します。stratisd 2.2.0 では /stratis ディレクトリは作成されず、使用されません。
2.30Xfce-4.16Xfce 4.16 安定版リリースへアップデート。
2.31X.org Utility Deaggregationコレクションパッケージ xorg-x11-{apps,font-utils,res-utils,server-utils,utils,xkb-utils} は破棄され、その中の個々のユーティリティは個別にパッケージ化されます。

RHEL 9 へ

まだ正式リリース前ですが、Fedora 34 の成果は、今後リリースされる RHEL 9 に取り込まれるようなので、RHEL 9 の新機能をある程度推測できることになります。

Fedora と RHEL との関係, Diagram licensed CC-SA: https://creativecommons.org/licenses/by-sa/4.0/

参考サイト

  1. bitWalk's: Fedora 34 の変更点 [2021-01-01]
  2. Releases/34/ChangeSet - Fedora Project Wiki
  3. CentOS Stream is Continuous Delivery – Blog.CentOS.org
  4. devel-announce

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

2021-03-27

ぐるぐる回らない QDial (PySide2)

Qt for Python (PySide2) は、Qt の Python バインディングを提供するプロジェクトで、オープンソース版の Qt と同じく、LGPLv3 / GPLv3Qt commercial license(商用ライセンス)が適用されています。最近はクロスプラットフォーム用の GUI ライブラリとして使うことが多くなりました。

QDial は、QtWidgets.QAbstractSlider を継承した。スライダー系ですが、形状は丸くてダイヤル状のウィジェットです。

参考サイト [1] を参考に QDialog を試してみたところ、マウスでドラッグしてぐるぐる回すことが出来ます。これは QDial の仕様のようです。

そういう使い方で良い場合もあるでしょうが、下限上限を設定している以上、その範囲内だけで動いて欲しい用途もあります。誰かが範囲内で QDial のウィジェットを動かすサンプルを作っているに違いないと思って探しましたが、PyQt や PySide2 で探し出せなかったので自分で作ってみました。

本ブログ記事では下記の OS 環境で動作確認をしています。

Fedora 34 (Workstation Edition Prerelease) x86_64
- python3-3.9.2-1
- python3-pyside2-5.15.2-3

以下が、参考サイト [1] をベースに、上限下限の値の間でしか回らない QDialog のサンプルです。

qt_dial.py
qt_dial.py の実行例

QDial のウィジェットをいくつも使う場合は、カスタムダイアログのクラスを作る方が良いかもしれません。

参考サイト

  1. PyQt5 QDial Example With valueChanged Signal Codeloop
  2. QDial — Qt for Python

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

2021-03-26

Ubuntu 21.04 (Hirsute Hippo) の壁紙

Ubuntu (/ˈʊbʊntuː/) は、Debian をベースにした Linux ディストリビューションであり、主にフリーおよびオープンソースのソフトウェアで構成されています。Ubuntu は正式には デスクトップ、サーバおよび IoT 向けの 3 つのエディションでリリースされています。Ubuntu 17.10 以降、デフォルトのデスクトップは GNOME です。

Wikipedia より引用・翻訳、編集

4 月 22 日にリリースが予定されている、次期 Ubuntu 21.04 'Hirsute Hippo'(毛深いカバ)の壁紙がようやく公開されました。参考サイト [1] で新しい壁紙の記事が出ましたが、一日ぐらい経って Daily Build (development bransh) に反映されましたので紹介します。

Ubuntu 21.04 (Hirsute Hippo) の壁紙

ディストリビューションが違うので比較しても仕方がありませんが、同じ時期にリリースされる予定の Fedora 34 ではもっと早い段階でデフォルトの壁紙が更新されていたので、Ubuntu 21.04 開発版の壁紙がゴリラからカバへ変わるのが何時になるのか気を揉んでいました。カバの壁紙は毛むくじゃらが気味悪いのですが、遠目にはすいぶん柔らかい雰囲気がします。😄

参考サイト

  1. Ubuntu 21.04 Unveils a Hairy New Default Wallpaper - OMG! Ubuntu! [2021-03-25]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

2021-03-25

GNOME 40 リリース

2021 年 3 月 24 日に、GNOME 40 がリリースされました。Fedora 34 (Workstation Edition Prerelease) [3] で GNOME 40.0 が反映されましたので、スクリーンショットを紹介します。

GNOME 40 リリース関連サイト
Fedora 34 (Workstation Edition Prerelease) (1)
Fedora 34 (Workstation Edition Prerelease) (2)
Fedora 34 (Workstation Edition Prerelease) (3)
GNOME ヘルプ

参考サイト

  1. GNOME 40 Released - Slashdot [2021-03-24]
  2. Here are GNOME 40's Best New Features - OMG! Ubuntu! [2021-03-24]
  3. Test Results:Fedora 34 Branched 2021XXXX.n.0 Installation - Fedora Project Wiki

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

2021-03-24

【備忘録】QPrograssBar と QThread (PySide2)

Qt for Python (PySide2) は、Qt の Python バインディングを提供するプロジェクトで、オープンソース版の Qt と同じく、LGPLv3 / GPLv3Qt commercial license(商用ライセンス)が適用されています。最近はクロスプラットフォーム用の GUI ライブラリとして使うことが多くなりました。

GUI のボタンなどをクリックして時間が掛かる処理をする場合、進捗を表示する QProgressBar を使いたくなります。こういう時はマルチスレッドにして GUI を表示するプログラムと、時間が掛かる処理を分離します。そうしないと処理中に GUI が固まってしまうからです。

参考サイト [1] をベースにして、自分が使いやすいようにアレンジしたサンプルを備忘録にしました。

本ブログ記事では下記の OS 環境で動作確認をしています。

Fedora 34 (Workstation Edition Prerelease) x86_64
- python3-3.9.2-1
- python3-pyside2-5.15.2-3

qt_progressbar.py

このサンプルでは QThread を継承した TaskThread クラス(インスタンス)で、「時間が掛かる処理」をしています。この処理ではダミーで sleep(0.1) を 101 回ループさせており、ループが終わったらスレッドを終了しています。

qt_progressbar.py の実行例

QProgressBar の見映えは、Windows 上ではちょっと異なります。

参考サイト

  1. python - Implement QThread with QProgressBar in PySide (or PyQt) during calculation - Stack Overflow [2019-11-28]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

2021-03-22

【備忘録】エンコードされた画像を使う (PySide2)

Qt for Python (PySide2) は、Qt の Python バインディングを提供するプロジェクトで、オープンソース版の Qt と同じく、LGPLv3 / GPLv3Qt commercial license(商用ライセンス)が適用されています。最近はクロスプラットフォーム用の GUI ライブラリとして使うことが多くなりました。

GUI を作成するとき、画像ファイルを読み込んでウィジェットに表示することがありますが、あらかじめ画像ファイルを文字列にエンコードしておき、それをスクリプト内に記載しておいて、バイナリにデコードして利用することもできます。PySide2 での例を備忘録にしました。

本ブログ記事では下記の OS 環境で動作確認をしています。

Fedora 34 (Workstation Edition Prerelease) x86_64
- python3-3.9.2-1
- python3-pyside2-5.15.2-3

まず、画像を Base64 形式にエンコード(変換)するプログラムです。

image_encoder.py

実行して出力された文字列をコピーして使用します。

/usr/bin/python3 /home/bitwalk/Projects/PySide2_sample/image_encoder.py
b'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'

Process finished with exit code 0

Base64 形式の文字列をデコードしてラベルウィジェットに表示するプログラムです。

qt_label_image_base64.py
qt_label_image_base64.py の実行例

参考サイト

  1. python - How to set QLabel using Base64 string or byte array - Stack Overflow [2018-11-11]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

2021-03-21

ようこそ GNOME 40

GNOME 3 がリリースされたのは 2011 年のことです。このリリースではデスクトップインターフェイスが GNOME パネルから GNOME Shell へ一新されました。この変更は大きかったため賛否を呼びましたが、開発は一貫して続けられました。

そして 10 年後の今年、2021 年 3 月末に、次のメジャーバージョン GNOME 40 のリリースが予定されています [1]。GNOME 40.0 のリリース候補が 3 月 19 日に公開され [2]、Fedora 34 のプレリリース版に反映されました。

使用した OS は下記の通りです。

Fedora 34 (Workstation Edition Prerelease) x86_64

ログイン直後はアクティビティ・オーバービューが表示されます。ログインして、さあ何を起動する?と催促されているような印象を受けます。😅

ログイン後の GNOME 40 rc.0(Fedora 34 Workstation Edition Prerelease 版)

画面下に水平に配置されたダッシュの右端の「アプリケーションを表示する」ボタンをクリックすると、アプリケーションの一覧が表示されます。

アプリケーションの一覧

GNOME の設定画面は、GNOME3.38 から大きな変更はなさそうです。

GNOME の設定画面

GNOME ヘルプは日本語の翻訳がいまひとつですが、

GNOME 3 はユーザーインターフェースを徹底的に見直しました。ユーザーにあれこれ干渉せず、邪魔なものをできるだけ取り除き、ユーザーが作業を片付けるのに役立つように設計されています。最初にログインしたときは、何もない空っぽのデスクトップとトップバーが見えます。

とあるように、デスクトップ環境に多彩な機能を追求するよりは、ユーザーにとって本当に必要な機能に絞ろうとするミニマリストであることを目指しているように見受けられます。

GNOME ヘルプ

今後、深刻な問題が発見されない限り、4 月末に正式リリースされる予定の Fedora 34 のデフォルトのデスクトップ環境に採用されますので、GNOME 40 の操作、ショートカットなどについてまとめ始めようと思っています。

参考サイト

  1. Forty - GNOME Wiki!
  2. GNOME 40.rc released! [2021-03-19]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村