今どきのIT系学生に追いつくべくPythonを少し勉強しました!。while文にelseがあるのはびっくりですが、まぁそれは使わないでしょう。センスを失う前に、古いPythonでコーディングされているScreenletsをPython3対応にしてみます。この作業のきっかけは、RHEL9でPython2を切り捨てたためです。
作業はVirtualBoxで作ったOracle Linux 9で行います。うまくいくかどうかは???
オペレーションメモ
① 必要物のインストール/入手
- sudo dnf install 2to3 python3-pyxdg python-beautifulsoup4 GConf2 python3-keyring
- wget https://gitlab.gnome.org/GNOME/pygobject/-/raw/master/tools/pygi-convert.sh?inline=false
② 初期調整
tar xaf screenlets-0.1.7.tar.bz2
cd screenlets-0.1.7/
## Tabを8スペースに変換
find . -name "*.py" | xargs -IFILE sh -c 'expand -t8 FILE > temp;mv temp FILE'
## 2to3でPython3へ変換
find . -name "*.py" | xargs 2to3 -w
## giに関する変換
find . -name "*.py" | xargs <path>/pygi-convert.sh
③ Pango,RSVG,GTKの調整
pygi-convertではやってくれなかった部分の調整
python - Using PangoCairo with PyGObject API - Stack Overflow
migration - migrating from python-gtk2 to python-gi - Stack Overflow
import gi
from gi.repository import Pango
gi.require_version('Rsvg', '2.0')
from gi.repository import Rsvg
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject
gi.require_version("Wnck", "3.0")
from gi.repository import Wnck
Wnck.set_client_type(Wnck.ClientType.PAGER)
④ BeautifulSoup
## 短い名前になっている
from bs4 import BeautifulStoneSoup
⑤ keyringの調整
## 以前からうまくいっていない様子なので、後日調整する。下記だけではNG。
Use gnomekeyring module with Python and GTK3 on Ubuntu 14.04 - Stack Overflow
⑥ アイコンの調整
cd /usr/share/icons
sudo ln -s hicolor/scalable/apps/screenlets.svg
sudo ln -s hicolor/scalable/apps/screenlets-tray.svg
・・・今の状況
Python2=>3 ではなく、Pythonコードに埋め込まれたGTK2=>3の対応で、はまりました。
ここで力尽きました ... _| ̄|◯
似たことにチャレンジしている人は多そうですが、このstackoverflow記事に示されている内容をしっかり理解してとりかからないと難しそうです。dialogやwiptailといったCUI系は得意なんですけど、GUI系はセンスも経験も無く、ちょっと難儀な道のりになっています。
Screenletsに似たConkyというメジャーで安定した実装もあるのですが、私はScreenletsの方がお気に入りです。近日中に再度チャレンジします。とある適用において、これがうまくいけばOracle Linux 9、だめならUbuntu 22.04という感じになります。なお、私のホビーマシンはUbuntu Studio + Xubuntu 22.04 LTSですが、Scrennletsが正常に起動しています。
・
・
・
[2023年3月] ChatGPT先生に相談してみました・・・さすがの見解です。