Fedora」タグアーカイブ

D-Bus Application Launch

gnome-weather は Gjs 製。
その desktop ファイルの名前。

org.gnome.Weather.Application.desktop

これだけでも変だけど、その Exec キー。

gapplication launch org.gnome.Weather.Application

何ですかコレ?

/usr/share に org.gnome.Weather ディレクトリがある。
その中に org.gnome.Weather.Application ファイルがある。
中身は Gjs である、シバンがあるので Gjs で起動できるのは解る。

肝心の JavaScript ソースは同一ディレクトリでバイナリ化されている。
ワカガワカラナイヨ、こんなの見たことがない。

色々検索してみると、どうも DBus 関連らしい。
HowDoI/DBusApplicationLaunching – GNOME Wiki!
コレみたいだが全然ワカランぞ!

Gjs 関連は後日思い立ったら調べるとして。
とりあえず gapplication コマンドは何をしているかを試してみる。

gapplication launch org.gnome.Documents

gapp

普通に起動できるんだね、list-apps で表示されるもの以外に

/usr/share/dbus-1/services

にあるサービスなら何でも起動できるようです。
中身は普通の ini ファイルなんですけど。

ならばこんなディレクトリを作り、念の為再ログイン。

~/.local/share/dbus-1/services

org.madoka.Magika.service という名前で以下のファイルを。
残念ながら ~ や $HOME は使えないのでフルパスで。

[D-BUS Service]
Name=org.madoka.Magika
Exec=/home/sasakima-nao/test.py  --gapplication-service

起動するファイル、上記 Exec の指定位置に保存。
+x パーミッションを忘れずに。

#!/usr/bin/env python3

import sys
from gi.repository import Gtk, Gio

class App(Gtk.Application):
    """
        org.madoka.Magika App
    """
    def __init__(self):
        Gtk.Application.__init__(
                self,
                application_id="org.madoka.Magika",
                flags=Gio.ApplicationFlags.FLAGS_NONE )
 
    def do_activate(self):
        self._win = Gtk.ApplicationWindow.new(self)
        self._win.set_title(self.props.application_id)
        self._win.show()

app = App()
app.run(sys.argv)

さあどうだ。

gapplication launch org.madoka.Magika

dbus_launch

なるほど、あのコマンドで実行できる仕組みはコレか。

コマンドの処理が戻ってきているから最初から転送扱いみたい。
application_id が一致しないと起動はできるけど終了しない。
–gapplication-service 引数を書かないと何故か2つ起動する

ここまで解ったけど使わないかも。
セッションバスに追加されるようなので何か思いついたらne!

Web Application Icon for GNOME

Web アプリケーションを使っている人は多い。
タブレットではアイコン化して普通のアプリのように使えて便利。
実は GNOME 3.14 では既に同様に使えるようです。

ただタッチパネルデバイスの OS が自由にならないと宝の持ち腐れ…
は置いておいて、パソコンでも使える範囲で使う方法を。

Google Chrome は書くまでもない。

chrome

epiphany も可能。
Fedora はメニューには無いけどコマンドで起動できます。

epiphany

判り易い所で epiphany にて apple 公式サイトで試してみます。

apple

apple-touch-icon ?も普通に取得してメニューになりました。
起動してみます、最大化でサイトが表示されたはずです。
どうやら epiphany で作るものは完全にタブレット向け。

menu

メニューに追加されたのでつまり desktop ファイルが作られた。
desktop ファイルはどんな内容になっているのかを確認。
~/.local/share/applications にあるはず。

desktop

何故かシンボリックリンクになっているけど気にしない。
Exec キーを見てのとおり epiphany のサブセットで動かすようだ。
epiphany レンダリングエンジンは WebKit なので問題無し。
JavaScript エンジンが Seed であることがチョッピリ懸念。

Google Chrome で作るとウインドウになるのが解る。
コチラの Exec はもちろん Chrome になっている。
V8 でないとうまくいかない場合はこちらを利用しよう。

つまるところ。
WebApplication といっても desktop ファイルを作っているだけ。
apple-touch-icon は流石にダウンロードして適用のようです。

コレらを全部削除して再度ログインすればキレイサッパリ。
いや、epiphany で作ると gnome-softwere に登録されるけど。
[削除]を押しても上手くいかない、流石にこれはバグだよな。

しかし、パソコンならブックマークで充分なんですけど。
タブレットで普通に Linux を使う日がきたら多分便利yo!

Ctrl+G

たまには小ネタ。

今日も Google Chrome でコードを求めて海外 Web をページ内検索。
[次を検索]でうっかり Ctrl+G を、ソレ Gedit や!

でも普通に次を検索した、Shift+Ctrl+G も使えた、あれ?
もしやと思って Firefox でも試したら同じであった。

F3 だけじゃなかったのか、今迄使い分けしていた筆者って…

話は変わるが、GNOME 3.14 を使っている人なら解るだろうけど。
Gedit や Nautilus の新規タブペインが Ctrl+T になっている。
以前は F3 だった、gnome-terminal は +Shift が必要ですが。

google-chrome や Firefox に合わせたのだろう。
グローバル化は三本線のメニューボタンだけでは無いようです。

せっかくなので GNOME アプリのキーボード操作を少し。

Web ブラウザのタブペイン移動は Ctrl+PageDown ですね。
GNOME アプリでタブペインの移動は Ctrl+Alt+PageDown です。
実は GTK+ が提供しているので作り手側は何もせず実装される。

終了の Ctrl+Q は逆に google-chrome が +Shift。

タブペインを閉じるのは全部 Ctrl+W。
gnome-terminal では Shift を追加すると覚えておけばいい。

Ctrl+L のロケーションバーへ移動は Nautilus でも使える。

フルスクリーンは全部 F11。
Windows しか使えない人は Alt+Enter だと信じているようです。
Alt+Enter は Nautilus でファイルのプロパティシート。

メインメニューのドロップも全部 F10。
これは GTK+ が提供していないことは GUI アプリを自作すれば解る。
作り手側が合わせようとしなければコレらは実現しない。

Ctrl+A|S|Z|X|C|V は書くまでもない。
Home, End は Gedit では +Ctrl。

ついでにマウス操作。
Shift を押しながらウインドウを移動すると画面角に簡単に貼り付けできる。

GNOME アプリは昨今の Web ブラウザと同じ感覚で扱える素敵な環境になった。
なのに GNOME3 は何故か評判が悪い、理由は老害達だけどNE。

dos2unix

改行コードの変換と上書きモードについて。あるいは iconv と nkf に見る思想の違い – 玉虫色に染まれ!

iconv と g_convert については以前書いたけど
そういえば改行コードを考えていなかった。
g_convert | PaePoi

SHIFT-JIS じゃなく CP932…
は置いておいて、コードでヤルなら自力しか無さそうだ。

しかし dos2unix なんて便利なコマンドがあったのね。

よくわかんないので早速 man を見てみる。
どうやら基本的に CRLF を LF に置き換えるコマンドらしい。
特定の文字コードは変換もするっぽいけど CP932 は当然無いな。

–remove-bom が default で有効のようだ。
うっ、コレも考えていなかった。
UTF-8 に BOM を付けるあの Windows の最悪仕様を忘れていた!
BOM を付けると PHP が動かないとか色々あるのよ。

本当に BOM を削除してくれるか試してみよう。
使い方はパイプで渡すと標準出力へ、引数に渡すと上書きみたい。

SeeMe というアプリを C# で作っていた頃のファイルを引っ張り出して。
そう、Visual Studio やメモ帳は勝手に BOM を付けてしまうんです。
特にメモ帳は BOM の有無のみで UTF-8 を見分ける糞っぷり。

dos2unix

見事 CRLF が LF になり BOM が削除された。
上書きなのでワイルドカードでまとめて変換も簡単、これはいい。
つか Windows はいいかげん BOM をヤメろよと。

しかし nkf ってマジで今でもメンテされているんですね。
nkf Network Kanji Filter プロジェクト日本語トップページ – SourceForge.JP

GTK+ Inspector

海外の GTK+ 関連 Blog を見ていると GTK+ Inspector というものをよく見かける。
Projects/GTK+/Inspector – GNOME Wiki!
どうも Visual Studio 付属の spy++ のようなものみたい、実は何かよく知らなかった。
GPL ばかりの Linux ではソースを見ればいいのであまり興味も無かった。

が、今日なにげに Ctrl+Shift+I を押したら立ち上がってマジ驚いた!
キーボード設定を見てもそんな設定なんかしていないんですけど。
ちなみに Ctrl+Shift+D でもいい、Fedora ではデフォルトで使えるの?
てゆーか何故いままで気が付かなかったのだ?

もしかしたら gcc, gtk3-devel, gtk3-devel-doc が必要かもしれない。
GTK+ ヘッダとヘルプね、筆者は新規インストール直後にコレは入れるので。

使い方を検索してもやはり日本語情報は皆無か。
せっかくなので自分で少し使ってみよう。

とにかく GTK3 で作られているアプリを立ち上げ上記のキーを押す。
Python 製でも GTK3 ならいける、GTK2 の Firefox, Gimp はスルーされた。
Qt の KeepassX や独自 SDK の Libre Office でも当然立ち上がらない。
下記は Totem がアクティブ状態で Ctrl+Shift+I を押した状態。

gtk_inspector

OK ボタンで解析開始。
やはり spy++ みたいなものですがリアルタイムでプロパティを弄ることもできる。
たとえば Visual のタブでダークテーマの切り替えなんかも即時おこなえる。

カスタム CSS まで即時、ちなみに GTK+ Inspector 側にも適用される。
CSS で見た目の微調節をしたい場合なんかに凄く便利そう。

gtk_inspector_css

肝心の解析は左ペインで Widget の階層が解る、spy++ より判り易い。
本体から知りたい部分をクリックするとその Widget 部にフォーカスが移る。
初心者の頃他人のアプリを見て「こんなに積み上がってるの!」と驚いた。

他に Properties の Defined At が参考になるかな。
Totem 3.14 の動画表示部は GtkClutterEmbed をインプリメントしているね。
つーことは Clutter を使わない Ubuntu は次バージョンも古いアプリのままだなw

gtk_inspector_props

これ以上は各自で。
GTK+ でアプリを作る人以外は必要無いしさほど重要でもないアプリですけど。
せっかく Fedora なら即使えるので試してみるのもいいでしょう。