月別アーカイブ: 2018年11月

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 になっていたので書き換え。

Macbook Air 2018

Macbook Air が届いたので軽くレビュー。
第一印象、あれ?小さい。
旧型に比べベゼルが削減されているだけなので画面の感じは変わらない。

Touch ID の所は電源ボタンを兼ねているのね、押せる。
初回起動時に Touch ID や Siri や ApplePay の設定が出る。
なんかもうマジで iPhone みたい。

OS 起動時はパスワードのみ、スリープ復帰は Touch ID で。
うん iPhone と同じ、若い人達にも自然に受け入れられると思う。

起動して使えるようになるまでの時間は半分くらいに。
だってそりゃ 2011 モデルとの比較だし、新しいって凄い。

キーボードは、ウルセェ!
第三世代バタフライって音が小さくなったんじゃなかったの?
前世代ってドンだけウルさかったんだよ。

そんなことより。
command+space と control+space が逆だ!

MacのUSキーボードでcontrol + spaceの日本語入力と英字入力の切り替えをcommand + spaceに変更する設定方法

Yosemite から新規はこうだったのか。
筆者はデフォルトのまま使う主義なので慣れで…
って無理だ、指が勝手に動く!

だって Fedora(GNOME) も真似して Super+Space なんだもん。
スーパーキー (キーボード) – Wikipedia
素直に変更させて頂きます。

Fedora との共有は samba で以下のように。
ディスクの暗号化は選択しなかった、という前提で。

gcc, clang, swift 等のコマンドが最初からある、けど。

使おうとすると超バカデカい Xcode 一式を落とさせようとする。
java どころか jjs まであった、こっちは当然 JDK を落とさせようとする。

python は 2.7、もういかげん python3 にしてくれ!
Fedora デフォルトに python2 は入らない、Linux のほうが進んでいる。

ruby は無いみたいだけど、homebrew が使うはずだけど。
って筆者は homebrew も Xcode も使わないんだけーが。

jxa は自作の comipoli.js が動かなかった。

むーやることがまた増えてしまった。
第一印象ここまで、また何か気が付いたら。

Fedora 29 OpenJDK

Fedora 29 では OpenJDK が 1.8 から 11 になった。
いきなり凄いバージョンアップだよなぁ、って違う!
IcedTea ベースの今までと違い Oracle のソースになったみたい。

Java 11正式版がリリース、本バージョンからOracle JDKのサポートは有償に。OpenJDKで無償の長期サポート提供は現時点で期待薄 ? Publickey

なんか色々あるようだけど。
RHEL の先行開発版である Fedora には RHEL 用のそのままが使われると思う。
サポート切れや脆弱性については後ろに RedHat がいるので何も問題ない。

それはいいとして。
jjs は 29 でも実行できるけどアップグレードされていないので es6 は使えない。
GraalVM は dnf list でも出てこない、うーん。

とりあえず Java 11 はコンパイルなしで実行できるらしいので試してみよう。

JEP 330: Launch Single-File Source-Code Programs

なんとシバンが使えるようだ。
つまり Java 言語のまま普通のスクリプトとして使える、よし早速。

#!/usr/bin/java --source 11
// -*- Mode: Java -*-

public class Hoge {
    public static void main(String[] args) {
        System.out.printf("%s\n", "ほげ");
    }
}

動いたけど…

結論、インタプリタ実行しているのではない。
メモリ上にコンパイルしてソレを実行しているだけのようだ。
つまり javac が必要、Fedora デフォルトには入っていない。

sudo dnf install java-11-openjdk-devel

それと、シバンを使う時は拡張子を取っ払う必要がある。
Gedit で色分けできないのでモードラインを使いましょう。

*.java 拡張子をつけたまま usr/bin/java に渡すこともできる。
この時はシバンがあるとエラーになる、なんかもどかしい。

ようするに拡張子が無い場合は一行目を無視する、って感じの単純な実装みたい。
macOS ならそれでいいんだけどね。

enable_emoji_completion

Fedora 29 の GTK+ は 3.24 のままだ。
開発者、システム管理者向けの新規事項

だけど上記に書いてある(英語)とおりチョッピリ追加機能がある。
GtkEntry に enable-emoji-completion property が追加されたようだ。
早速試してみよう。

#!/usr/bin/gjs

imports.gi.versions.Gtk = "3.0";
const Gtk = imports.gi.Gtk;
Gtk.init(null);

let w = new Gtk.Window();
w.connect("delete-event", ()=>Gtk.main_quit());
let e = new Gtk.Entry();
e.enable_emoji_completion = true;
w.add(e);
w.show_all();
Gtk.main()

たとえば sushi の絵文字が使いたいな、ってなった時。
コロンの後に打ち込んでいくと

と出て来るので上下矢印キーかマウスで選択して流し込む。
最後まで打ち込んでコロンを打つでは無視されてしまうので注意。

ぶっちゃけコレ GtkTextView でもできないと意味がないような。。。。。
Gtk4 ではどうなるのかな。

ところで今回からこの手の投稿は GTK+ 等のライブラリ名タグに変更します。
gir はどんな言語でも同じだものね。
今迄 Python とか言語名で作ったページの変更をするかどうかは未定。

Gedit 3.30 Auto Scroll is Bad!

Gedit 3.30 の仕様変更にまいった。

とりあえずカーソル位置からスクロールしてタブを切り換える。
そのタブをアクティブにするとカーソル位置まで勝手にスクロールしてしまう。
他のソースを参考にしながらコードを書いている時に超イライラする。

同じく Ctrl+Z で Undo するとその前の編集箇所に勝手にカーソル移動とスクロール。
これはありがたく思えるけど実際に使うと超迷惑。

それでいて gsettings のどこにも無効にする設定が見つからない。
ソースの参考は別ウインドウにする逃げ道があるけど Undo が困る。

タブを枠外にドラッグで別ウインドウにする時のアニメーションが無くなった。
相変わらず Wayland では Ctrl+F9 が使えない。

Xed にでも乗り換えようかな、と思ったらまったく同じ現象が。
どうやら GtkSourceView 自体の仕様変更のようだ、とっとと削除。
カーソル位置を見失なわないよう配慮したんだろうけど、困った。

、、、、、、、、、、

検索しまくったけど、海外すら誰もこれに気がついていないのか?
無効にする手段は見つからなかったけどこんな面白いのを見つけた。

GitHub – hardpixel/gedit-scroll-past: Gedit 3 plugin to allow scrolling past the end of file.

ファイルの終わりを過ぎてスクロールできるようにする Gedit プラグイン。
おぉ Visual Studio Code みたくできるんだ、作ってくれた人ありがとう!

、、、、、、、、、、

そんなこんなで自作アプリを更新、イライラしながら。

application.run([System.programInvocationName].concat(ARGV));

Y901x はこう書き替えただけで問題なく使えたのでとっとと出した。
gnome-mpv のサイズが完全固定できればこんなの作らなくてもいいのになぁ。

comipoli は何をやってもフルスクリーンがおかしい。
Y901x とまったく同じ処理に書き換えてさえおかしい、意味ワカラン。
早く動くようにしないとエロマンガが見られないジャン!

もう Clutter はあきらめて GtkDrawingArea に書き換えすることに。
macOS 版 comipoli のソースをコピペして cairo に書き換える。

このくらい同じなほうがお互いのメンテが楽でいいよね。
てゆーか滅茶苦茶軽くなったんだが、Clutter 遅かったのね。
作っていてよかった jxa 版。