なぜか、gnomeの「場所」からディレクトリを選ぶと、RhythmBoxが起動してしまう。しかしデスクトップなどでディレクトリをダブルクリックすると正常にディレクトリは開くことができ、そこから別のディレクトリにいくこともできる。
また、端末からnautilusを起動すると正常に起動できた。すなわち、gnome-openが諸悪の根源となっているらしい。というわけで、
gnome-open ~/Documents/
RhythmBoxが立ち上がった。どうやら関連付けが間違っているらしいので、今回は修正方法を調べた。
参考:Ubuntu 8.04でgnome-openの関連付けを変更する
ここに書いてあることがすべてだが、私の場合なぜか
.local/share/applications/mimeapps.list
というファイルに
inode/directory=rhythmbox.desktop
という設定が書いてあったのでこれを削除することで解決した。
このユーザは私のものではなかったので、きっと本人の誤操作でこういった関連付けの破壊が起こったのだろうと思うが、こういうことがあるにつけ、バックアップはとっておかないとな、と思うのであった。
2009年11月2日月曜日
2009年3月22日日曜日
Xdmxを使ったマルチディスプレイ
Xdmxを使うと、別々のコンピュータに接続されているディスプレイ同士を繋いでマルチディスプレイが実現できる。
試しに、普段使っていないサーバのディスプレイを活用してマルチディスプレイを実現した。
今回は、laptopでUbuntu8.04(Gnome)を、serverでDebian lenny(CUI)を実行しているものとする。
serverとlaptopをまたいで設定しなければならないので、serverを赤、laptopの端末を青で表記する。
サーバの設定
サーバに、Xを起動するためにxinit、X起動後の端末としてxterm、xhostでlaptopからのアクセスを許可するためにx11-xserver-utils、そして、X Window Systemのサーバであるxserver-xorg-coreをインストールする。
server% sudo aptitude install xinit xterm x11-xserver-utils xserver-xorg-core
そして起動するが、このコマンドはSSHなどではなく、serverのコンソール上で実行する必要がある。
でないと、以下の(失敗例)ように怒られる。
server% xinit -display :0
(失敗例) X: user not authorized to run the X server, aborting.
(成功すると、グラフィカル(笑)な表示に切り替わり、xtermのウィンドウが開く)
laptopからX Serverにアクセスできるように権限を追加(毎回やる必要があるらしい)
server% DISPLAY=:0 xhost +laptop
なお、サーバには環境変数をつけているが、X Serverで動いているxterm上で実行できる場合は必要ない。
私はサーバに接続するマウスを持っていないので、このようにディスプレイを指定した。
(マウスをxterm上に持っていかなければ、コマンドが打てない)
laptopの設定
Xdmxを、ウィンドマネージャを実際に動かすほう(laptop)にインストールする。ただじ、なぜかUbuntu8.04ではXdmxがリポジトリから削除されているので、以下のサイトからパッケージをダウンロードしてくる。
laptop% wget http://launchpadlibrarian.net/9590666/xdmx_1.3.0.0.dfsg-12ubuntu8_i386.deb
laptop% sudo dpkg -i xdmx_1.3.0.0.dfsg-12ubuntu8_i386.deb
dbusの権限を緩める
何かの用途でdbusを使っているようだが、設定されている制限がきつすぎることがあるらしい。
gnome-session後、以下のようなエラーが大量に出る。
** (nm-applet:5716): WARNING **:そういう場合は、/etc/dbus-1/system.d/nm-applet.confのdefaultセクションの「org.freedesktop.NetworkManagerInfo」のdenyになっているところをallowに変更し、デーモンを再起動。nma_dbus_init(): could not acquire its service. dbus_bus_acquire_service() says: 'Connection ":1.30" is not allowed to own the service "org.freedesktop.NetworkManagerInfo" due to security policies in the configuration file'
laptop% sudo nano /etc/dbus-1/system.d/nm-applet.confこれでほとんどのdbus関連のエラーは出なくなったのだが、dbusが使われている要所要所でエラーが起こっている。セキュリティの心配もあるので、要調査。
<policy context="default">
# <deny own="org.freedesktop.NetworkManagerInfo">
# <deny send_destination="org.freedesktop.NetworkManagerInfo">
# <deny send_interface="org.freedesktop.NetworkManagerInfo">
<allow own="org.freedesktop.NetworkManagerInfo">
<allow send_destination="org.freedesktop.NetworkManagerInfo">
<allow send_interface="org.freedesktop.NetworkManagerInfo">
</allow>
laptop% sudo /etc/init.d/dbus restart
参考
http://lists.freedesktop.org/archives/dbus/2007-January/006874.html
Xを終了
開いているディスプレイ番号を振っていけばいいので、本来こんな設定は必要ないのだが、GNOMEの場合は多重起動ができないそうなので、勝手にgnomeが立ち上がらないようにする必要がある。
Xfceなどを新たにインストールするのも手だが、とりあえずうまく動くか試してからのほうがロールバックが楽なので、Xを単に終了する。
sysv-rc-confは、各ランレベルで何を起動するかを指定することができるコマンドラインツールだが、「-」キーを押すとそのサービスが一時的に終了するようになっているので、これを利用する。
laptop% sudo aptitude install sysv-rc-conf
laptop% sudo sysv-rc-conf
gdmと書いてある行で-キーを押せばxが終了し、コンソールのログイン画面に飛ぶ。
デュアルディスプレイでgnomeを起動
二つのディスプレイを使ったX Serverの起動
以下のように、serverからlaptopのX Serverにアクセスできるようにしてから実行する
laptop% xhost +server
laptop% Xdmx :1 -display laptop:0 -display server:0 +xinerama &
エラーが出た場合、大抵の場合「〜オプションをつけたら?」といったメッセージが出ているので、それをつけて再度実行。
ちなみに、私は「-ignorebadfontpaths」をつけた。
gnome-screenを実行することで、二つの画面に渡ってgnomeが起動する。
laptop% gnome-session
もちろん、serverにはgnomeが入っている必要はない。
ちなみに、Xdmxを実行した時点でxtermなどがまったく立ち上がらないため、私は以下のようにしてgnomeを立ち上げた。
laptop% xhost +192.168.0.2 && Xdmx :1 -display localhost:0 -display 192.168.0.2:0 +xinerama -ignorebadfontpaths & sleep 5; gnome-sessionほか、自動起動スクリプトなどを書くべきだろうが、とりあえずはこれでよしとする。
所有しているVAIOのモニタをラップトップで使用しようとしたところ、コネクタが独自規格で接続できなかった。諦めていたのだが、Xdmxを使えば他のマシンのXサーバを使ってマルチディスプレイ環境を実現できることを知り、今回挑戦してみた。
また、今回は一度仮想マシンで実験して、うまくいってから実機で試してみた。当然だがこちらのほうがミスも少ないし、ドキュメントもより正確な物が書ける。今度からこれでテストをしよう、と思う。
一見うまくいったようだが、実はウィンドウを動かしたりするとかなり動作がもたつく(特に、SCIMの動きが絶望的)。さらにDirectXを使用したアプリケーションが動かない。まだクリアすべき問題は残されている。
2009年3月3日火曜日
動画からMP3を抜き出す
よくやることだけど、形式によってやりかたがまちまちで困る。そこで、こんなスクリプトを書いた。
動画の整理はnautilusでサムネイルを見ながらやるから、それだったら抜きだしもnautilusからやったほうが直感的で楽なのでは、と思って作った。意外と、形式を気にせずに抜き出せるので重宝している。
ちなみに、正常に動かすためには
#! /usr/bin/perlこれをnautilus-scriptsのディレクトリ(~/.gnome2/nautilus-scripts)に保存すると、右クリックで抜き出せる。swf, flv, mp4に対応している。
if($ARGV[0] =~ /\.swf$/){
system("swfextract -m $ARGV[0] -o $ARGV[0].mp3");
}
elsif($ARGV[0] =~ /\.(flv|mp4)$/){
system("ffmpeg -i $ARGV[0] -acodec copy $ARGV[0].mp3");
}
else{
print "なにこれぇ?"
}
動画の整理はnautilusでサムネイルを見ながらやるから、それだったら抜きだしもnautilusからやったほうが直感的で楽なのでは、と思って作った。意外と、形式を気にせずに抜き出せるので重宝している。
ちなみに、正常に動かすためには
# aptitude install ffmpeg swftoolsと実行して、必要なコマンドをインストールする必要がある(Ubuntu)。
登録:
投稿 (Atom)