【失敗】ScreenletsをPython3向けに調整

 

今どきのIT系学生に追いつくべくPythonを少し勉強しました!。while文にelseがあるのはびっくりですが、まぁそれは使わないでしょう。センスを失う前に、古いPythonでコーディングされているScreenletsをPython3対応にしてみます。この作業のきっかけは、RHEL9でPython2を切り捨てたためです。

作業はVirtualBoxで作ったOracle Linux 9で行います。うまくいくかどうかは???

 

オペレーションメモ

 

① 必要物のインストール/入手

② 初期調整

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の対応で、はまりました。

  • GTKAPIの変更が多すぎて、力づくでは対応しきれず。
  • GTK2to3 converterを探しましたが、発見できず。
  • GTK2にダウングレード指定しても、他の実装との整合がとれず。

ここで力尽きました ... _| ̄|◯ 

 

似たことにチャレンジしている人は多そうですが、このstackoverflow記事に示されている内容をしっかり理解してとりかからないと難しそうです。dialogやwiptailといったCUI系は得意なんですけど、GUI系はセンスも経験も無く、ちょっと難儀な道のりになっています。
Screenletsに似たConkyというメジャーで安定した実装もあるのですが、私はScreenletsの方がお気に入りです。近日中に再度チャレンジします。とある適用において、これがうまくいけばOracle Linux 9、だめならUbuntu 22.04という感じになります。なお、私のホビーマシンはUbuntu Studio + Xubuntu 22.04 LTSですが、Scrennletsが正常に起動しています。

[2023年3月] ChatGPT先生に相談してみました・・・さすがの見解です。