GTK+ 3.20 GtkHeaderBar and CSS

GTK+ 3.20 で GtkHeaderBar を使う場合の注意。
GtkWindow のリサイズがクライアント領域に変更されたようです。
というか GtkHeaderBar があってもなくても同じ扱いということ。

let w = 320;
let h = 240;
/* under 3.18 in GtkHeaderBar
let diff_x = window.get_allocated_width() - window.vbox.get_allocated_width();
let diff_y = window.get_allocated_height() - window.vbox.get_allocated_height();
window.resize(w + diff_x, h + diff_y);
*/
window.resize(w, h); // 3.20

3.18 以前にも対応させるには振り分け処理が必要。
我がアプリは GtkShortcutWindow を使う予定なので 3.20 専用にする。

*****

GStreamer に変更があったのか他の要因か解らないけど。
皮肉なことに Y901x 1.1.3 で動画がリサイズできるようになった。
せっかく ClutterGst で丸ごと作り替えはじめたのにな。

ただ CSS の仕様が 3.20 で丸々変更されている。
3.18 以前で Style Properties を使っていた場合は WARNING だらけに。

gtk_style

こいつは 3.18 以前との振り分けは無理っぽいな。
詳しいことは今度調べる。

*****

Gjs で ARGV の仕様は変わっていないみたい。
相変わらず Clutter を使って多重起動すると落ちる。
つまり Gjs は筆者の解る範囲では何も変わっていない。

ClutterGst Aspect Rate | PaePoi

多重起動で不具合が出まくるなら原点に戻って多重起動防止だ!
って Totem も多重起動防止だった、知らなかった…

つか、多重起動って実は問題があるのよね。
設定を変更した時に既に起動しているウインドウへの適用をどうするか。
今の GNOME アプリは GSettings を使って見事に適用させている。
ini ファイルの奴でも手段はあるけど、ほぼ誰もやっていない。

まあそれはいいとして、大ボケに気が付いた。
y901x beta ではインストールする起動スクリプトをこうしていた。

#!/bin/sh
cd /usr/share/y901x
gjs y901main.js $*

これだと端末で cd 移動からの起動がおかしいジャン。
引数がファイル名だけだと[カレントディレクトリ + ファイル名]だよ。

#!/bin/sh
gjs /usr/share/y901x/y901main.js $*

に変更してソースには以下を追記。

imports.searchPath.unshift("/usr/share/y901x");

うん、大ボケはとりあえずなんとかなった。
もう少し調べて明日には 3.20 対応版を出そう。

Fedora 24 app

Fedora 24 は問題なく使えそうなのでアプリをボチボチ。

Google Chrome を入れたら依存関係で Python2 が入った。
使っていたのかよオマエ!

いや、構成部品に PLY とかがあるせいだろうけど。
もはや現代人必須アイテムなんだからもう少し部品点数を少く…

ならば MComix も入れちゃえ、これで PyGtk も入ってしまう。
あーあ元通り、cbz が見られるビューアが少ないからしかたがない。

Python2 恐るべし、気が付かない所でまだ使われている。
Linux で完全な非依存はまだ難しい。

***

H.264 デコーダーはよくワカランので結局 RPM Fusion のを入れた。
んで、こいつがよく解らないんだが。

codec

まさか Blu-ray が再生できるのか?
一応入れてみた、ディスクをドライブに入れると「オーディオディスク」に。
まあ無理だよな、再生できたところで画質は絶対にボロボロだろうし。

***

さて自作のアプリやプラグインはどうだ?
Gedit プラグインは動くけどキーボードアクセラレータが動作しない。
何故だろう、不具合が出るほうが嬉しいんですけど。

エラー内容を見ると action_name が Valid だとか。
アクション名からアンダーバーを消して全置換。
なんだこれだけか、私は何故ガッカリしているんだろう?

eog プラグインのほうは元々アンダーバーが無かったのでそのまんま動く。
つーことで Gedit Plugin だけ更新。

Gedit 及び Eye of Gnome プラグイン – L’Isola di Niente

アプリのほうの検証は休日にでも。

Fedora 24 Install (SSD)

起きたので ISO を焼いてインストール開始。
マシン構成は以下で作った Skylake の自作パソコン。
SKYLAKE on Fedora | PaePoi

今回はいきなり日本語になった、マジどうやって見分けたの?
インストール中に fedoraproject 関連の広告が、今迄あったかな?
ウブなんとかほどはウザくはない、まぁアッチは商売なわけで。

それ以外は今迄と何も変わらずインストール完了。
Fedora 23 Install (SSD) | PaePoi

さて起動、何が変わっているかな。
デフォルトフォントが変わって少し小さくなっている。
有線 LAN のアイコンがありがちなものに変わっている。

とっとと dconf-editor を入れて色々と確認。
デフォルトフォントは Cantarell のまま、あれ?
全部今迄どおりみたいだけど、気のせいなのかな。
つーか dconf-editor 変わり過ぎだろ、ShortcutWindow もあるし。

dconf_editor

フォントについては再起動したら何故か今迄と同じになった。
単なる初回起動の不具合だったみたい。

GtkShortcutWindow 追加での変更はどうだ。
Nautilus でコンテキストメニューを出すとショートカットキーが出る。
Gedit は完全に消したようだ、アプリによってバラバラみたい。

なんかデフォルトで入っている GUI アプリがえらく減ったような?
DevAssistant がとうとう消えた、イラネーし。
メモリは 8G になったし Boxes は使おうかな。

gnome-softwere でシェル拡張機能が入れられるようになった。
又三列になって見やすく、ちょっと嬉しい。
openh264 というデコーダーがあるけどライセンス問題をクリアしたのか。
H264 だけみたいですが、やはり RPM Fusion 追加は必須かも。

h264

んで、Sylpheed も KeePassX も検索で出てこないまんまと。
mono のゴミアプリをフィルターで隠す機能が付いたら嬉しいのに。

そんなことより、衝撃!

なんと Python2 が入っていない!
/usr/bin/dnf も Python3 に書き換えられている。
Fedora はとうとう Python2 への依存から脱却できたということか。

del_python2

逆に gcc は入っていた、GTK+ や Clutter のヘッダは無いけど。
perl, lua, gjs, jjs は今迄どおり使える。

以上、今のところ気が付いたこと。
遅番出勤いってきまーす。

Fedora 24 ISO Download

Fedora 24 正式公開したようです @ JPN 6.22.2016 1:00。
今回も初日には Get Fedora からは iso を落とせません。

日本はユーザー数の関係からマジで後回しにされているのか。
いや、今回は DistroWatch.com からのリンクも無いんですけど。

Torrent Server for the Fedora Project
BitTorrent でなんとかなった。

transmission

Transmission を初めて使ったけど。
自身のダウンロードが完了したら「ピーン」って音が鳴り通知領域に通知が来るのね。
マジで何事かと、初めて使ったアプリなのに未来を感じた。

torrent_ok

遅番なので今から寝る、インストールとレビューは起きたら、もしくは明日。

JXA NSString

久々に Mac で JavaScript(JXA) を。
JavaScript 文字列と NSString の相互変換が今まで解らなかった。

OS?X 10.10 Release Notes

公式の解説にて $() だけで NSString に変換できるのは理解。
でも逆がドコにも書いていないんですけど。
散々探してやっと以下を見つける。

Home ? dtinth/JXA-Cookbook Wiki ? GitHub
Shell and CLI Interactions ? dtinth/JXA-Cookbook Wiki ? GitHub

んと、ObjC.unwrap で NSArray を JavaScript 形式に変換できるのか。
ならば NSString もイケるかな?と適当にやったら出来ちゃった。
ということで JXA, NSString 関連の覚書。

ObjC.import("Cocoa");

console.log("日本語も大丈夫");
$.NSLog("%@ %@", $("NSString"), $("はこうする"));

var jsStr = "変数も $() で変換できる\n";
var nsStr = $(jsStr);
$.NSLog("%@", nsStr);

nsStr = $("NS* から JavaScript 形式へは ObjC.unwrap()");
jsStr = ObjC.unwrap(nsStr);
console.log(jsStr);

var saveStr = "保存します\n";
saveStr += "戻り値が表示されるので変数に入れています\n";
var data = $(saveStr).dataUsingEncoding($.NSUTF8StringEncoding);
var res = data.writeToFileAtomically("output.txt", true);

if (res) {
    var terminal = Application("Terminal");
    var fm = $.NSFileManager.defaultManager;
    var cwd = fm.currentDirectoryPath;
    var nil = terminal.doScript("cat " + ObjC.unwrap(cwd) + "/output.txt");
}

jxa_nsstring

よし日本語もこれでバッチリ(死語)
Cookbook は他にも色々試したいコードが沢山あって素晴らしい。

しかし Cookbook も var とセミコロンを全部書いているんだね。
JXA では不要と言われても無いとキモいのは皆同じようである。