雑記 - libprintbackend-lpr's patch for gtk+-2.1x Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

CUPS ではなく lpr な印刷を使っているシステムで、 gtk-printbackends module を使っているアプリケーション(Gimp, Firefox3, ...)を利用すると、印刷ダイアログでプリンタリストを表示する事ができません。

一つの対処方法はプリンタリストを出してくれる CUPS を使うというものですが使うことですが、CUPS が使えない環境もあると思います。(うちの某 ICE システムがそのケース。)

というわけで、lpr な印刷システム用に gtk+-2.1x の libprintbackend-lpr に対する簡単なパッチを作成しました。これ→ {{attach_anchor('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
てな具合にして make & install します。この後、${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]]