試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

gtk-recordMyDesktopやqt-recordMyDesktopでウィンドウ選択ができない件とJACK使用時にポートが一覧に出ない件について、およびそれらの対処

ウィンドウ選択ができない件

Mandriva Linuxに乗り換えた後gtk-recordMyDesktopをインストールして起動したところ、対象ウィンドウの選択ボタンが動作していないことに気づいた。端末から起動してみると

$ gtk-recordMyDesktop
(ウィンドウの選択を行うボタンを押す)
Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/recordMyDesktop/rmdSimple.py", line 239, in __select_window__
    width+=x
TypeError: unsupported operand type(s) for +=: 'NoneType' and 'NoneType'

というメッセージが出ていた。上のメッセージはGTK+ 2版のもので、Qt4版も同様にダメだったが、以前Gentooを使用していたときには見なかったエラーだった。
ソース(GTK+ 2版)の該当部分を見ると
[引用]ファイル名: /usr/lib/python2.5/site-packages/recordMyDesktop/rmdSimple.py より

class simpleWidget(object):
(中略)
    def __select_window__(self,button):
        xwininfo_com=['xwininfo','-frame']
        if self.values[21]==1:
            xwininfo_com=['xwininfo']
        (stdin,stdout,stderr)=os.popen3(xwininfo_com,'t')
        wid=stdout.readlines()
        stdin.close()
        stdout.close()
        stderr.close()
        x=y=width=height=None
        for i in wid:
            if i.lstrip().startswith('Absolute upper-left X:'):
                x=int(i.split(' ')[len(i.split(' '))-1])
            elif i.lstrip().startswith('Absolute upper-left Y'):
                y=int(i.split(' ')[len(i.split(' '))-1])
            elif i.lstrip().startswith('Width:'):
                width=int(i.split(' ')[len(i.split(' '))-1])
            elif i.lstrip().startswith('Height:'):
                height=int(i.split(' ')[len(i.split(' '))-1])
        if x<0:
            width+=x
            x=0
(以下略)

エラーになった部分の手前(上)において外部プロセスのxwininfo*1を呼び出してその結果を解析しているようだったので、パッケージのインストール状態を確認すると、案の定「xwininfo」が未インストールだった。これをインストールした後で再び試したところ、無事に動作した。Qt4版も同様に動作した。

JACKを使用しているのにポートが見えない件

上の件とは別に、JACK Audio Connection Kitを使用しての音声取り込みのポート選択ができなかった。ポート一覧には

jack_lsp returned no ports.
Make sure that jackd is running.

と出ているが、実際にはjackdデーモンは動作している。
色々調べた結果、Mandriva Linuxの「jackit」パッケージには、JACKの利用可能ポート一覧を表示するjack_lspコマンドが含まれておらず、「jackit-example-clients」という別パッケージに分かれていたのが原因と分かり、これをインストールすることでこの問題は解決した。

関連記事:

使用したバージョン:

  • gtk-recordmydesktop 0.3.8-1mdv2009.0
  • qt-recordmydesktop 0.3.7.2-4mdv2009.0
  • recordmydesktop 0.3.8-1mdv2009.0
  • xwininfo 1.0.4-1mdv2009.0
  • jackit 0.116.1-1.1mdv2009.0
  • jackit-example-clients 0.116.1-1.1mdv2009.0

*1:選択したウィンドウの座標とサイズを取得するのに使用している