libprintbackend-lpr's patch for gtk+-2.1x
CUPS ではなく lpr な印刷を使っているシステムで、 gtk-printbackends module を使っているアプリケーション(Gimp, Firefox3, ...)を利用すると、印刷ダイアログでプリンタリストを表示する事ができません。
一つの対処方法はプリンタリストを出してくれる CUPS を使うことですが、CUPS が使えない環境もあると思います。(うちの某 ICE システムがそのケース。)
というわけで、lpr な印刷システム用に gtk+-2.1x の libprintbackend-lpr に対する簡単なパッチを作成しました。これ→ gtk2147-printbackend-lpr.patch 以下のように gtk+ を展開して patch 当てをし、make & install します。
tar jxf gtk+-2.14.7.tar.bz2 cd gtk+-2.14.7 patch -p0 < ../gtk2147-printbackend-lpr.patch ./configure --prefix=/usr/local
この後、${prefix}/etc/gtk-2.0/ ディレクトリの中に lpr_list というテキストファイルを作成します。この lpr_list に lpr なプリンタ名のリストを以下のように記述します。
printer_a 0 printer_b 1 printer_c 1
一列目はプリンタ名、二列目は default プリンタか否かを表す数(0 なら default printer)を記述します。
一般性を持たせて /etc/printcap を参照するように patch を書いても良かったのですが、元々うちのシステム用に作ったので別ファイル(lpr_list)を参照するようにしています。あしからず。(気が向いたら /etc/printcap を参照する patch を作るかも。)
蛇足ですが、それから gtk printbackend module を使うアプリで、CUPS や lpr を使っているにも関わらず印刷ダイアログでプリンタのリストが出て来ない事があります。このような場合には ${prefix}/etc/gtk-2.0/gtkrc というファイルを作成し、その中に
gtk-print-backends = "lpr, cups, file"
のように記述します。このように明示的に記述してあると、 libprintbackend-cups や libprintbackend-lpr や libprintbackend-file の module を load してくれるようになるみたいです。
memo
http://library.gnome.org/devel/gtk/stable/GtkPrinter.html
http://library.gnome.org/devel/gtk/stable/GtkPrintSettings.html
Keyword(s):[Gtk] [printbackend]
References:[Linux関連その他] [Software] [glib2.3 上での firefox3 の build]