« 萌え時計(WSL上での動作) | トップページ | MacBookAir Mid 2011にLinuxMint Xfceエディションをインストール »

透過するカレンダー(完結?)

苦心惨憺。

透過するカレンダーが、どうにか形になりました。

これまで透過していたメインウィンドウが、どんな設定をしても透過しなくなってしまったのが苦労の原因です。

どうやら、Gtk.Builderで作成したトップレベルウィンドウには透過設定(CSS含む)が適用されないようで、Gtk.Windowを自前で作成し、そこにGladeで作成したカレンダーの中身をaddすることで、期待通りの動作になりました。

 

このへん、特にドキュメントが見当たらなかったので、バグの可能性もありますが、まあ、それはどうでもいいことで。

結果がすべてですから。

_20191008_210019

これが無事に透過したカレンダーのスナップです。

以前とそんなに変わりないですね?

この状態を取り戻すために苦労していたのです。

なお、Gladeでトップレベルウィンドウを作成してもCairoリージョンによるウィンドウマスクは問題なく動作します。

CSSも「透過以外は」正常に適用されていました。

ワタクシが実現したい「透過」だけがNGだったのです。

もはや誰かの陰謀を疑うようなピンポイントの責めでした。

問題解決のいとぐちとしては、「シンプルな透過ウィンドウのサンプル」を発見したことにあります。

これです。

このページの下の方にあるPythonサンプルを実行して、ウィンドウが透過するかどうかを確認したのです。

そうしたら、なんということでしょう!

普通にウィンドウが透過するではありませんか!!

なので、ここから推測して、違いはなにか、ということを追求していきました。

まあ、結果はGladeを使ってるかどうか、なわけですが。

なので、Gtk.Builder内部でなんらかの処理が行われて、Gladeでトップレベル指定されているウィンドウが透過しないようになっているとしか思えません。

#ワタクシは英語力が貧困なので、英語のドキュメントを漁っても「トップレベルウィンドウは自分で破棄してね♡」という記述しか見つけられませんでした。

 

とはいえ、GUI構築のためにGladeを使わない選択肢はありえません。

#まあ、いまXamarinやってるから、案外Gladeなしでも行けるかも知れん、とも思いますけれども。

そこで考えついたのが、前述の「トップレベルウィンドウは自前で用意。そこにGladeで構築したコンテナをぶちこむ」だったわけです。

うまく行った時には小躍りしそうになりました。

#踊ってませんよ?

まあ、需要があるかどうかは知りませんし、今後もメンテしていくかどうかは解りませんが、いちおうGithubに公開しておきます。

https://github.com/kaorin/gcalcal

んでもまあ、これもdeb作らないと、設定とかめんどうなんだろうなぁ。

依存関係にgcalcliが入ってくるし、そっちの設定はそれなりに手がかかるので、ワタクシは知らん、と放置したいところではあります。

では今夜はこのへんで。

|

« 萌え時計(WSL上での動作) | トップページ | MacBookAir Mid 2011にLinuxMint Xfceエディションをインストール »

Linux」カテゴリの記事

コメント

この記事へのコメントは終了しました。