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

Shell Extension

GNOME 3 は Shell Extension というものが使える。
作り方は下記の人が日本語でまとめてくれている。
GNOME Shell Extension を調べてみた – ふとしの日記

サンプルを見たい人や「自分で作るって、どこかに無い?」な人は下記。
GNOME Shell Extensions

って、全部いらネェ…

なんか UserMenu に gnome-terminal のランチャを仕込むのとかあるし。

cmd

#!/bin/sh
gnome-terminal &

なんてスクリプトを書いて $HOME/bin に突っ込んで Alt+F2 のほうが便利だろ。
余計なメニューやアイコンも増えないし三文字でイケる。

私は余計なものが無い GNOME 3 が気に入ったので Fedora を使っているのだし…
とはいえそのうち何か斬新なモノが現れるかもしれないから覚書っと。

********************

インストールしたい Extention をクリックして左上のスイッチを On にする。
するとダイアログが出てインストールするかどうかを質問される。

[インストール] を選択すると即座にインストールされ有効になる。

具体的には
$HOME/.local/share/gnome-shell/extensions/
以下に extension.js 等が展開され、更に gsettings の
org.gnome.shell enabled-extensions
に登録された状態になる。

削除は同じページの [Installed extensions] をクリック。
バッテンマークのアイコンをクリックするとファイルが削除される。
gsettings は再ログインで消えるけど残った場合は手動で消す。

gnome-shell-extension-prefs コマンドで設定もできるみたい。
簡単ですね。

面白いのはコレを絶賛するブログ主は GNOME 2 の再現ばかりやっている。
タスクバー代わりは Alt+F1 もしくは Windows キーを押せばいいし、ダイナミックワークスペースは Ctrl+Alt+上下矢印キーで切り替えできて超便利だし、メニューに至っては Alt+F2 と Tab キーを使わないの?だし。
古くさい UI に戻すためにこんな拡張方法を用意したわけじゃないだろうに。
更に gnome-tweak なんとかを必ず使っているとかetc…

********************

は、どうでもよくて。

つまり Web から $HOME のファイルにアクセスできている、驚いた。
それどころか gsettings まで弄くれてしまうってことじゃないの。

これってセキュリティ的にはどうなんだろう。
「ユーザーが明示的にボタンを押す」等の制限はあるのか?
root は保護されているだろうけど悪用は可能だよね。

よし悪用のため、ではなく…
seemex の Web 版を HTML5 で作ろうとして断念したが「方法はある」ということかも。
いや、見ての通り現在は Chrome メインなんだけど Opera はメーラーとして活躍中w
とにかく Ctrl+u でソースを調べる、Opera と同じキーなので乗り換えしやすい。

require.js を使っている、調べれば解るけどややこしい…
data-main 属性なんて無いけど main.js は見つかったので表示して…
なんとか extensions.js なるアヤシイものを見つける。

https://extensions.gnome.org/static/js/extensions.js

正直、今の私ではほとんど理解できないというオチが。
とにかく dbus を使えばこんなことが可能になるみたい。
勘違いかもしれないけど。

Web から local の設定変更とかが可能になれば色々と思いつくよね。
ということで Shell Extension とは全然関係ないお話でした。

but_active 3.0.1

意表を突いて Gedit Plugin を更新しました。

Gedit が 3.4 になって but_active が使えなくなったのは知っていた。
我ながら不便だけど多分バグでそのうち Gedit 側が対応すると思い放置。
しかしいつまでたっても…

もう仕様変更だとしか思えない、3.4 のソースをダウンロード。
gedit

3.4 には NotebookPopup 定義が無いジャン!
ソース側に移動したのかと思い grep コマンド。
関数名は見つかるけどメニュー用の定義はやっぱり無い。

gedit-notebook-popup-menu.c を見ると都度作成になっている。
マジで仕様変更だった、あーあ作り直ししなきゃ。
てゆーかもっと早く気がつけよ俺!

ドキュメントメニューに入れるように変更、他はそのまんま。
で普通に動くようになった、入らないなら例外を吐いてくれよ…

けどメニューがこの位置では使いにくいお。
ええい、キーボードショートカットを使えにしてしまえ。
Shift+Ctrl+Alt+W しか選べないな、まあいいや。
ダウンロードとスクリーンショットは以下に。

Gedit 及び Eye of Gnome プラグイン

今度から動かなくなったら早めに調べよう。
そういえば Eye of GNOME 3 のプラグインは使えるようになったかな?
使えるようならそろそろ GNOME3 対応版を作りたいな、今度調べる。

WebM binary

意表を突いて Y901x を更新しました。
PyGtk のままだよ、当然 GTK2 だよ、もう古いよ過去の異物だよ。
とはいえ Google Chrome なんかも GTK2 だったりするのだが。

とりあえず再生速度変更の方法を何故か見つけたのでやってみようと。
Basic tutorial 13: Playback speed – GStreamer SDK documentation – GStreamer SDK documentation

一番目引数に 1.0 をデフォルト値に上下した float 値を入れた seek_event を作る、それを playbin2 に投げただけでアッサリ。
ただ再生停止したりファイルを切り替えするとリセットされて困った。
GST_MESSAGE_STATE_CHANGED で都度投げる方法でなんとかした。
こんなんで大丈夫かな…

ボタンを付けたかったけどスペースが無いのよね。
VLC とかみたく小さくしたくてもできないウインドウでは嫌だもの。

それと気になっていたけど放置していたところをまとめて。
Linux アプリ作りは本当にイイなぁ。
どうせ自分しか使っていないだろうから好き勝手にできるし。

VLC と違って音程は過去の遺物である Y901 同様変化する。
つか私は変化したほうが自然だと思うんだけど。
ま、これで YouTube から拾ったけど早すぎてどうやっているのかが全然解らなかったバイクのスゴテク動画をスローでじっくり検証できるようになったぞと。
倍速側なんてオマケだ、どんな場合の時に使うかワカラン。

しかーし

YouTube は最近 Flash, MPEG-4 AVC から HTML5, WebM になったのね。
これはキャッシュからコピーするスクリプトを作り替えしなければ。
というわけで今まで使っていた Nautilus スクリプトを改造した。

のだが…

YouTube の動画はいつのまにかキャッシュに残らなくなっている。
検索してゲゲッ、最近拾ってなかったので気がつかなかった…
FLASH のままな Opera キャッシュでも拾えない、お手上げだ!
あきらめて拡張を使おう、個人製作のバイク動画くらい拾わせてくれよ。

使えないけどせっかくやったので Python 覚書。

ちなみに Fedora 17 でファイルの拡張子が無い場合は
/usr/share/magic (/usr/share/misc/magic へのリンク)
の指定で見分けている、一応拡張子優先であるが。

とにかく /usr/share/magic を Gedit で開いてみる。
「エンコードが不明!」とか出るけど無視して「強制的に編集する」ボタンをば。
Ctrl+F で webm と打ち込み検索する、強制編集状態でも探せるよ。

WebM って Matroska のサブセットなんだ、今頃知った。
てか日本ではネクラでキモチワルイ奴しか今まで縁がなかったでしょコレ。
ftypwebm なんて指定で MP4 じゃダメだったのかな?

Linux の場合リポジトリからまとめてコーダーとデコーダー(あえてコーデックとは書かない)を入れられるからあんまり気にしないのよね。
MOV, RM, WebM なんかも普通に Nautilus でサムネイルできるし。
私の知る限り GStreamer で再生できないのは WMV3 だけだ。

それはどうでもよくて。

0x4282 が含まれている否かで通常 Matroska と見分けているみたい。
ま、実質先頭バイナリ4つだけ見れば動画であることは解るわな。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

TEST_FILE = "test.webm"
WEBM = "\x1a\x45\xdf\xa3"

for a in WEBM:
    print ord(a),

print "\n-----"

o = open(TEST_FILE, "rb")
bin_array = o.read(4)
for a in bin_array:
    print ord(a),
o.close()

print "\n-----"

print bin_array == WEBM

この方法で拡張子が無くても先頭バイナリで判別が可能になる。
使い道は無かったけど、きっといつかは勉強して良かったになるはず!

実は Gio を使ったほうが簡単なんだけどね。
拡張子を取っ払ってこんなコードを試せば解るよ。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from gi.repository import Gio

# Create GLocalFile
# Remove File Extenshon
f = Gio.file_new_for_path("test")
# Create GFileInfo
info = f.query_info(
    Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
    Gio.FileQueryInfoFlags.NONE,
    None )

print info.get_content_type() == "video/webm"

実は Python コードを書くのも久々だったり。
とにかく半年以上間が開いたけどアプリの更新。
年金を貰える歳まで絶対に生き残ってやる!

org.gnome.shell.overrides

GNOME Shell について今頃知った。
gsettings コマンドを使ってもいいけど dconf-editor のほうが簡単。

org.gnome.shell.overrides

を開いて

attach-modal-dialogs
を false にすると「情報」等のモーダルダイアログがタイトルバーからニョキッと出るのが普通のダイアログになる。

button-layout
:minimize,maximize,close と書けば Windows と同じボタン配列に。
コロン ‘:’ より左に書けば Ubuntu のような左寄せにもできる。

dinamic-workspaces
を false にすると動的ではない昔ながらな4つのワークスペースに。

edge-tiling
を false にするとタイトルバーを掴んで画面上部に持っていくと最大化するあのムカつく動作を行わず GNOME2 同様なスナップになる。

workspaces-only-on-primary
は多分マルチモニタでなければ関係ない。

デフォルトに戻したい場合は右下ボタンで一発。
いやいや、やはりタイトルバーを掴んでの移動はスナップのほうが使いやすい。

Fedora 17 64bit Install (HDD)

あぁ Fedora インストールから半年経ってしまった。
恒例の OS 更新の季節がやってきた、メンドクセエ…

ということで。

久々の blog 更新ですがマジで全然プログラミングしていなかった。
二月にスマホを Android に変更して新しい OS にドップリはまり
何故かバイクの免許が欲しくなり取りにいき 250cc のバイクを買い
スマホと GPS と Google Map の組み合わせは最強だ!と思い知る。

こんなのがライバルではデスクトップ Linux なんて流行るわけがない…

今後デスクトップ OS は仕事用以外はクリエイターしか使わなくなるかと。
とはいえ絵描き、動画編集、プログラミング等とクリエイターにも色々ある。
結局何か作りたいならデスクトップ OS が必要になるはず。

そんなこんなで恒例の Fedora インストール。
基本的に前回と同じだが細かく違いがある。

Fedora 16 64bit Install (HDD) | PaePoi

マシン構成は前回と同じ、新規 HDD に入れて旧 HDD はバックアップ。
ただ Fedora 17 からは「いますぐダウンロード」が 64bit になった。

Oh no! Something has gone wrong.
A Problem has occurred and the system can’t recover.
Prease log out and try again.

ライブ CD を試そうとすると上記の警告が何度も出る。
一度ログアウトしてログインのやりなおし(以下再ログイン)をすると消える。
インストール CD に不具合があるのは毎度のことだ。

インストールボタンがあるウインドウが初期状態で出るようになった。
でもそのまま選択するとやはり英語でインストールというオチになる。
やはり System Settings から Language を変更して再ログイン。
するとボタン付きウインドウも日本語化されるのでこの状態からインストール。
後は指示に従いお好みに、私は英語キーボードなのでほぼデフォルト。

問題なくインストールできたけど終了しようとしたらいきなりエラー。
即座にアップデートをかけたほうがいい。

出たばかりなのにコレか、まるで Ubuntu みたいだ。

毎度のように旧 HDD をスレーブ接続でデータコピー。
今回はどういうわけか HDD マウントで所有者が自分になった。
これなら Nautilus からコピペのみでいいのでファイルコピーも楽チン。
いくつかは SE Linux ポリシーの変更が必要になると思うけど。

RPM Fusion と Flash YUM と Google Chrome だけを狐でダウンロード。
いつまでこの激重で使いにくくて未来が無い狐がデフォルトなんだよ!
Opera とかは Chrome で落とす、狐を使うことはもう無い。

てか現在大量増殖しているスマートフォンは WebKit なんだよね。
他は私を含む一部のマニアが Opera Mobile を併用しているだけだと思う。
Windows8 の空気っぷりを考えると多分 IE と狐は消える運命だろうね。

Google Chrome の SELinux ブロックが今のところ無い。
改良してくれたのかな、もし出ても前回と同じ回避策でいいと思うけど。

てゆーかいいかげんにデスクトップにものが置けるのをデフォルトにしてほしい。
つか dconf-editor は必須なのだから最初から入れてくれよ…

我がアプリ Y901x, clipoli, memopoli はまだ全部動く。
PyGtk や GStreamer 静的バインディングはそのうち消えると解っているが。
GI 動的バインディングの情報がもっと集まらないと動けないのよね。

# 削除したもの

ibus-hangul
libhangul

メリケン供には日本人とチョンの区別ができないようです。

# Fedora 16 との違い。

Fedora 17 SourceForge.JP Magazine

/bin, /sbin, /lib, /lib64 などのディレクトリが/usr以下に
って移動してシンボリックリンク貼っているのでは結局同じことだろうに。

リムーバブルメディアのマウント先が /media/ から /run/media/$USER/ か。
あぁだからスレーブ接続した旧 HDD が自分所有になったのね。

他はデスクトップ利用ではあまり関係無いな。

見た目では GTK3 アプリのみだが非アクティブ化したウインドウのフォントやチェックボタンまで色が薄くなるようになった。
ますます GTK2 アプリが古くさく感じてしまうわな。
これはテーマ側だろうけどスクロールバーやスピンボタンも変わっている。
ボタン自体を大きくしたかったのだろうけどこれは…

それより、右下のリサイズグリップが消えた!

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from gi.repository import Gtk

class Win(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        self.set_title("Fedora 17")
        self.connect("delete-event", Gtk.main_quit)
        self.show_all()
    
if __name__ == "__main__":
    Win()
    Gtk.main()

デフォルトで付かなくなったということみたい。
これではリサイズがやりにくい、何か設定はあるのだろうか?

リサイズグリップ以外は今のところ不満無く使えている。
しかし初期状態で Gedit にまったく問題が無いのって初めてかもしれないw
プログラミング関係は次回、次回があったらだが。