Linux」カテゴリーアーカイブ

Fedora 31 Upgrade

Fedora 31 が出たので 30 からアップグレード。
方法はいつもと同じなので省略。

gnome-terminal の HeaderBar にあった妙な違和感が消え一般的になった。
python のリンクが python3 になった、今更感が凄い。
どうしても python2 が使いたいなら python2 と指定。
いや、デフォルトでは python2 は入っていないんだけど。

しかし Gedit は python の shebang を python2 と認識するまま。
#/usr/bin/env python3 と書かないと python3 と認識しない。

Super+A でのアプリケーションメニューのまとめが少し変わった。
サブ項目が「ユーティリティ」という一箇所にまとめられた。
多分 macOS の真似。

firewall-config と dconf-editor だけ Sundry にまとめられた。
システムに関するものをデフォルトと後入れに分けたみたいね。
iPhone みたいにドラッグして自分でまとめられるからどうでもいいかも。

Wayland でフルスクリーンから戻る時がスムースになった、気がする。
戻る時に表示が崩れることが多々あったけど今のところ起きていない。

後は、何も変わった気がしないなぁ。
一部のデフォルトアイコンや設定の配置が少し変わったけど別にって感じ。
後は GtkCheckButton の色が少し濃くなった程度しか解らない。

筆者の公開アプリやプラグインは全部そのまま問題なく動くし。
macOS と違って httpd.conf のカスタムなんかは引き継ぎされるし。
Celluloid がアップデートしていないのに落ちなくなったのは意図的?
最近の Fedora upgrade は問題が出なさすぎて面白くないや。

Celluloid

Fedora でアプリケーション一覧、あれ?
Celluloid というインストールした覚えのない GUI アプリがあるんだけーが。
というか gnome-mpv が無いぞ。

Celluloid

gnome-mpv が知らない間に変名していたのか。
そりゃ使おうと思うまで気が付かないよ、普段鑑賞用途は自作して使っているんだから。
試しに gnome-mpv を dnf から指定してみたらリンクなのか変名版が出て来た。
つまりパッケージマネージャは変名 Update にも普通に対応しているようだ、へー。

ただ現行版は Fedora でメニューボタンを押すと落ちるんだが、アップデートを待つか。

それと初期化で動画の元サイズにリサイズせず固定にできないものか。
筆者自作のプレイヤーも以前はそうしていたけどスマホが普及した今となっては合わない。
スマホの縦動画や 4k 等々で元サイズが豊富になった現状では MPV 方式はイラッとする。

動画プレイヤーの自作をやっていて良かった、自分に必要な機能に絞ったものが手に入る。
それも不満がサイズ関連だけで良かった、サイズ固定ならむしろ簡単なんだからさ!

有名アプリだとか複数人が開発に関わっていると基本動作を変更するのは超難問だ。
Windows 日本語版が cp932 から脱却できないなのもソレ、依存していた大多数の顧客を失う。
その理由で Windows を完全に使わなくなった人は筆者を含めて 1% にも満たないと思う。
mpv 系の場合はオプションで対応できる、と思うけど筆者の知らない色々があるのかなと。

そんなこんなで。
上記リンク先から Celluloid のソースコードに辿り着けるだろう。
プログラミングに興味を持つのは現状に不満がある、ことがキッカケなのだから。

Fedora 30 Upgrade

Fedora 30 来ました。
下は [ダウンロード] ボタンを押した状態、今回はアップグレードです。

UnitedRPMs リポジトリを一時的に Disable にしないと更新できないエラーが出る。
無効にして再開、[インストール] ボタンが出るので押してパスワード。
しばらく待っていると Fedora 30 になっていた、アップグレードおしまい。

見た目の変更点とかはインストールだけなブロガーが書くだろうから無視して。
ずっと使ってプログラミングしている人しか解らない変更点なんかを。
てか、Linux ってプログラミングしない人には不便なだけの OS なんだけど。

何より、Gedit てか GtkSourceView が改善された!
タブのアクティブ毎にカーソル位置へ勝手にスクロールするのがウザかった。
それが何か打ち込むまで勝手にスクロールをしなくなった、マジで嬉しい。

Gedit のタブをドラッグして別ウインドウ時のアニメーションが復活。
前に戻っただけじゃんというのは置いておいて。
Nautilus は何故コレをできなくしてしまったのだろう?

Nautilus でファイルのドラッグ移動が失敗する場合があるのは変わっていないな。
ただ筆者はドラッグがスゲェやり辛い Macbook Air 2018 を併用しているということで。
command+X, command+V で移動が普通になっているので Ctrl+X でのファイル移動に苦は無い。

デフォルトじゃないけど Geary(メーラー) の起動が死ぬほど遅くなった。
追記: アップデートで普通になった
何故だろう、思いっきり GTK3 アプリなのに。
Google Chrome, KeepassXC, GNOME MPV 等は問題無し。

一番気になるアプリケーションメニューの廃止。
ハンバーガーメニューにする前の Comipoli 0.3.4 を起動してみる。

ココに出るだけか、あわてて作り変える必要は無かったな。

GNOME アプリは元の位置に「新しいウインドウを開く」が出る。
我がアプリではココが空になる、どうやるか後で調べる必要があるな。
「詳細を表示する」を選ぶと gnome-softwere の該当ページが開く、これ必要か?
ちなみに我がアプリ等の自前インストールは「見つかりません」と出る。

設定のアプリケーションって何かと開いたら我がアプリまで。
*.desktop ファイルを解析している、というか *.desktop を編集できるってか。
追加ができないのではあまり意味は無いと思うんですけど。

後は特に変わったような気がしない、何か気が付いたら又。

そうそう、我がアプリの Comipoli はハンバーガーメニュー化だけで問題無し。
Y901x は引数付き起動ができなくなっていた!
Gjs, Clutter, GStreamer のドレが原因か解らないけどなんとかしなきゃ。

二時間くらい調べてなんとか原因が判明。
ClutterGstVideoSink で得る GstPad が null になっている。
別の手段で動画のオリジナルサイズを得る必要があるなと。

ClutterGstTypes: Clutter Gst 3.0.24 Reference Manual

ClutterGstVideoResolution 構造体に width, height があるな。
だったらこうすればサイズが得られるのかも?

var Y901xWindow = GObject.registerClass({
    GTypeName: 'Y901xWindow'
}, class Y901xWindow extends Gtk.ApplicationWindow {
    _init(app) {
        super._init({application: app});
        // etc...
        this.player = new ClutterGst.Playback();
        // Ready
        this.player.connect('ready', (player)=> {
            this.player.set_playing(false);
            // Get Origin Size
            let vsink = player.get_video_sink();
            /* old
            let it = vsink.iterate_pads();
            it.foreach((pad)=> {
                let caps = pad.get_current_caps();
                let struct = caps.get_structure(0);
                this.src_width = struct.get_int('width')[1];
                this.src_height = struct.get_int('height')[1];
            });*/
            // new (Fedora 30)
            let frame = vsink.get_frame();
            this.src_width = frame.resolution.width;
            this.src_height = frame.resolution.height;

イケた!

ということで Comipoli 0.3.5, Y901x 1.2.1 公開。
Linux アプリケーション – L’Isola di Niente

Y901x のほうは変更点が多いけど解説すると長くなるのでまた今度。

ところで Fedora 29 の時に勘違いしていたけど GTK+ の 2 年枚更新は前回だったのね。
だから少し仕様が変わっていたのか、次の仕様変更は Fedora 33 なのね。
筆者はそれに合わせてクリーンインストールする予定。

30

Fedora 30 が予定通りに出ている!
Get Fedora: download our Linux-based OS for developer desktops, running containers, and more

絶対にまた遅れると思っていたのに。
でも更新通知は来ていない、面倒だから今回はアップデートでいくつもり。

手動更新ボタンを押したらこんなの出た。
gnome-softwere を更新しなきゃいけないのかな?
さっそく入れたけどやはり通知はこない。
あーもう、更新は明日にしよう。

ところで Y901x はもう更新をヤメようかと思ったけれど。
コレをヤメたら JavaScript を勉強する道具が無くなると気がつく。
comipoli は Python に戻しちゃったし、しょーがないから更新を続けるわ。
というか今日は雨だし一日中やっていた。
細かいことは Fedora 30 での動作確認の後で。

Gedit Bottom Panel Close Plugin

Wayland 環境で Gedit を使うと Ctrl+F9 が動かない。
下方パネルの表示を切り替えするキーだが微妙に不便。

Gedit でスクリプトを debug – L’Isola di Niente
で主に使う、出すのは勝手に出るので問題ない
だけど非表示にするためだけにマウスに手をのばす必要がある。
キー一発で非表示にすること”だけ”できればいいんだけどなぁ。

だったら自分で非表示にするだけのプラグインを作ればよくね?
キーを何にするか、Esc が妥当だと思うけど単キーでは動かない。
gnome-terminal の終了同様な Ctrl+D は一行削除だ。
とりあえず Ctrl+Esc にしてみた、これはお好みで。

[Plugin]
Loader=python3
Module=bottom_panel_close
IAge=3
Name=Close a Bottom Panel
Name[ja]=ボトムパネルを閉じる
Description=Close a Bottom Panel
Description[ja]=ボトムパネルを閉じる
Authors=sasakima-nao <sasakimanao@gmail.com>
Copyright=Copyright © 2018 sasakima-nao <sasakimanao@gmail.com>
Website=http://palepoli.skr.jp/

bottom_panel_close.plugin

#!/usr/bin/env python3

#    Gedit bottom_panel_close plugin version 3.30.0
#    Copyright © 2011-2018 sasakima-nao <sasakimanao@gmail.com>

import gi
gi.require_version("Gtk", "3.0")
gi.require_version("Gedit", "3.0")
gi.require_version("Peas", "1.0")

from gi.repository import GObject, Gedit, Gtk, Gio

class BottomPanelCloseAppActivatable(GObject.Object, Gedit.AppActivatable):
    """
        Set GMenu and Accelerator
    """
    app = GObject.Property(type=Gedit.App)
 
    def __init__(self):
        GObject.Object.__init__(self)
 
    def do_activate(self):
        self.app.set_accels_for_action("win.bottomclose", ["<Control>Escape"])
        self.menu_ext = self.extend_menu("tools-section")
        item = Gio.MenuItem.new("Close Bottom Panel",  "win.bottomclose")
        self.menu_ext.append_menu_item(item)
 
    def do_deactivate(self):
        self.app.remove_accelerator("win.bottomclose", None)

class BottomPanelClosePlugin(GObject.Object, Gedit.WindowActivatable):
    __gtype_name__ = "BottomPanelClosePlugin"
    window = GObject.Property(type=Gedit.Window)
    def __init__(self):
        GObject.Object.__init__(self)

    def do_activate(self):
        self.action = Gio.SimpleAction.new("bottomclose", None)
        self.action.connect('activate', self.on_bottom_panel_close_activate)
        self.window.add_action(self.action)

    def do_deactivate(self):
        self.window.remove_action("bottomclose")

    def on_bottom_panel_close_activate(self, action, param):
        panel = self.window.get_bottom_panel()
        panel.props.visible = False

bottom_panel_close.py

Ctrl+Esc で閉じることができるようになった。
これでちょっぴりプログラミングが捗る。

@ 21:51
タイトルの bottom が buttom になっていたので書き換え。