DOSBOXを高解像度V-TEXTにする方法

 非常にマニアックな記事といえばその通り。

 DOSエミュレーターの中でDOSBOXは既設のディレクトリーをマウントできるなど、扱いやすい特徴があるものの、こいつを日本語環境にして、つまりDOS/V化して使うとなると、

  • DBCSベクター周りの実装に誤りがある
  • 日本語キーボード(106とか)に対応していない

という点で困ることになる(DOSBOXの開発部隊はゲームに関係しないところはとことんやらない主義)。まあ、日本だとNEC PC-9800シリーズと互換機が絶対的多数で、少数FMR/FM-TOWNSがあった程度で、IBM系の資産がある人はPS/55やJ-3100を使っていたとか、HP-95/100/200LX、InterTop、DOSモバを使っていた層が大部分であるのだけど。

 まず、DBCSベクターについては、DR DOS以外の互換DOS(例えばPTS)で共通する問題で、こいつはDISPV (Lepton氏、http://www.hmsoft.co.jp/lepton/software/dosv/dispv.htm)に付属するvesapat.exeを/jpオプション付きで起動することで回避できる。

 次に、日本語キーボードについては、Windows版ではパッチが当たったものがあるものの、*BSD/Linuxだと諦めて英語キーボードにするというのが現実的な解である。

単純にDOS/V

 話が逸れた。単純にDOSBOXをDOS/V化するだけであれば、フォントドライバーとディスプレイドライバー、言語切り替えソフトを用意してやれば良い。これらソフトウェアを挙げると、

が一般的なところであろう。フォントドライバーとしてはFONTX2 (Lepton氏、http://www.hmsoft.co.jp/lepton/software/dosv/fontx.htm)が一般的であるものの、autoexecで起動できる点から代わりとして軟式で公開されているFONTNX (https://www.nanshiki.co.jp/software/index.html?etcdos)を使用した。また、DISPVの代わりのディスプレイドライバーとしてはDspVV (Torry氏、https://www.vector.co.jp/soft/dos/hardware/se012544.html)がある。DISPVはグラフィックモードへ対応していないため、グラフィックモードを使用する場合はDspVV/DspSSを使うことになる。

 なお、通常のDOSを日本語化するのであれば、http://izumilib.web.fc2.com/drdos/docs/drinst.htmlを参照するとよい。

フォント入手先

 なお、この他にフォントが必要である。最低限必要なのは

  • ANK 8x16 dot
  • ANK 8x19 dot
  • 日本語16x16 dot

の3種類である。新たにX11用のbdfフォントを変換してもよいものの、入手元を下記する。(出水は自作、東雲などのX11用は以前変換したもの)

izumilib.web.fc2.com izumilib.web.fc2.com izumilib.web.fc2.com izumilib.web.fc2.com

また、平木敬太郎氏のサイトでもFONTX2形式のフォントを公開している。

hp.vector.co.jp

設定

 これらのフォントファイルを適当なディレクトリー(ここではc:\font)に置いた後、fontn.iniを作成する。下記は出水ゴシック16ドット(JIS2004版、izmg1604.fnt)とANKフォントを使用した例である。

[CODE]
[FONT] ; Install font file.
UNVHN16X.FNT
UNVHN19X.FNT
izmg1604.fx2

ここまで準備できれば、

C:\> c:\path\vesapat.exe /jp
C:\> c:\path\fontnx.exe /p=c:\font\
C:\> c:\path\dispva.exe /hs=on /fc=0
C:\> c:\path\chej vt // jpでもよい

とすることでVGA画面で日本語が表示できるようになる。必要に応じこの辺の内容をdosbox-0.74.confの[autoexec]の中に入れてやれば、起動時に自動的に日本語環境にすることができる。

高解像度V-TEXT化

 ここまでが前フリである(長かった……)。

 実はDOSBOXはディスプレイアダプターを変えられるようになっており、標準ではsvga_s3である。DISPVやDspSSのようなSVGA用のディスプレイドライバーで800x600 pxで使用する分にはこの設定のままでよいものの、DOSBOXで使用できるディスプレイアダプターに適合するディスプレイドライバーがあればSVGA以上の解像度を扱うことができる。

 S3に関してはLepton氏のDISPS3が存在するものの、確認したところうまく行かなかった。市販ソフトのDOS/Vスーパードライバーズ/DOS/Vスーパードライバーズ32の中にもS3用ドライバーがあるものの、所有していないので確認できていない。

 その他のディスプレイアダプターとしては、hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbeがあり、この中でSVGA以上の解像度を提供するのはsvga_s3, svga_et3000, svga_et4000, svga_paradiseである。この中でフリーなディスプレイドライバーが存在するのはS3を除くとsvga_et4000である。

 ET4000にはChaN氏(http://elm-chan.org/)の作成したドライバーがあり、下記で入手できる。

www.vector.co.jp

こいつをディスプレイドライバー(DspVVの方がよい)の後にTSRとして起動してやることで大画面環境を得ることができる。

FFmpegビルドのメモ。

 FFmpegARIB字幕対応版を改めて導入したので、そのときのコマンド内容を備忘のためメモ。

 FFmpegARIB字幕対応版自体は下記に公開されており、gitか何かで拾ってくる。

github.com

 ビルドする前に必要なライブラリーを入れておく。まあ、BSDならports / pkgsrcで一回ffmpegのビルドしてみるとか(一回FreeBSDportsでビルドしているので、この辺はいい加減)、Debianならapt-get build-dep ffmpegあたりか。そして適当にビルドする。

% ./configure --enable-gpl --enable-nonfree --enable-libbluray --enable-libcodec2 --enable-libdc1394 --enable-libfreetype --enable-libmp3lame --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libspeex --enable-libass --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid
% make
# make install

 configureのオプションは削れそうな気もしなくもない。

動画の煮るなり焼くなりのメモ

 相変わらず動画関係で苦労している今日この頃。ということで忘れがちなコマンドを備忘的にメモ。

動画ソフト全般的な話

 Debianの場合、non-freeなライセンスのものは含まない方針であるので、FFmpegのような動画関係のソフトウェアにはつらいものがある。よって、debian-multimediaなどの外部リポジトリーを導入したり、あるいは自分のところでビルドすることになる。

 大抵はFFmpegを自分でビルドするか? とか、一部作業をHandBrakeのような他のソフトでやる、果てはwineでWindowsなソフトを動かすということが迫られるわけで。

 あと、DebianだとFFmpegが一時期avconvになっていた関係で、コマンドラインの記述が現在と違うことが結構ある。最新版と書いてあっても十年前の情報ということすらあるので、確認しながら行うと良い。

字幕(ソフトサブ)関係

 字幕関係、特にARIB字幕はFFmpegの公式版ではできないので、以下の中のarib-ts2assでass形式にして抽出してからFFmpegか何かでsrtに変換するとよい。ただ、FFmpegでソフトサブを埋め込めるコンテナー形式が例えばmkvなど限られたり、mp4だとmov_textしか入らないので、外部運用するなど考えないとならず。

github.com

 arib-ts2assは出力ファイル名に制限があるようなので、ASCIIなファイル名にで出力するようにするとよい。

% arib-ts2ass in.ts -o mid.ass

 FFmpegでの字幕形式の変換はこんな感じ。

% ffmepg -i mid.ass -scodec srt out.srt

 ちなみに、FFmpegには次のARIB字幕対応版が存在している。

github.com

ロゴ消し

 FFmpegにはdelogoとremovelogoの二つのフィルターが用意されており、あらかじめロゴ画像が用意できるならremovelogoを用いる。delogoはロゴがある座標範囲で周りの色と合わせてぼかすもの。removelogoで綺麗に消えない場合はその後にunsharpフィルターをかけるか、あるいはdelogoの方が綺麗に消える場合がある。

removelogoで消す場合

 removelogoフィルター用の画像は元の動画と同じ大きさで、ロゴしか入っていない黒地のPNG画像が望ましい。

 ロゴ画像を手動で作成するなら、VLC辺りのプレーヤーでスナップショットを撮って画像処理ソフト(ペイントでもよい)で整える。ただ、地デジのような1440x1080 pxをアスペクト比16:9の1920x1080 pxに引き伸ばしている動画だとスナップショットが1920x1080 pxになるので、幅を縮小することになる。

% ffmpeg -i in.mp4 -vf removelogo=logo.png (中略) out.mp4

 ロゴ画像をコマンドラインで作成する場合は、以下を参照するとよい。

nico-lab.net

delogoで消す場合

 一方、delogoの場合は次のようになる。

% ffmpeg -i in.mp4 -vf delogo=x=1322:y=954:w=46:h=66 (中略) out.mp4

ここでx=1322とy=954はロゴの左上座標が左から1322 px、上から954 pxであることを、w=46とh=66はロゴの幅が41 px、高さが66 pxであることを示している。ロゴ座標を簡単に調べる方法としては、comskipをかけたときにできるlogo.txtを参照するのが手っ取り早い。

Crop

 FFmpegでの動画の画面範囲の切り抜きはcropを用いる。例えば元動画が1920x1080 pxで4:3な動画がピラーボックスになっている場合は、左右両側を240 px取り除いて真ん中の1440x1080 pxを切り抜く形になるので、こんな感じになる。

% ffmpeg -i in.mp4 -vf crop=1440:1080:240:0 (中略) out.mp4

ここで1440:1080は切り抜く動画の大きさで、240:0は左端から240 px、上から0 pxであることを示している。地デジな1440x1080 pxでピラーボックスの場合だと、1880x1880 pxを切り抜くことになるので、crop=1880:1880:180:0となる。これだと画素が正方でないので、正方にするなら、-aspect 4:3 -s 1440x1080で1440幅に引き伸ばしてやることになる。

 また、SD放送の720x480 pxだと、同様に540x480を切り抜く形となりcrop=540:480:90:0、さらに画素を正方にする場合は-aspect 4:3 -s 640x480と幅方向に引き伸ばすことになる。

動画のアスペクト比の変更

 FFmpegだと、-aspect 16:9なりで指定する。通常は-s 1920x1080のように画面の大きさも同時に指定してやると良い。

CMカット

 comskipを用いる。前回書いているので省略。

yu-izumi.hatenablog.com

動画周りこもごも。

 録画環境を作ってしまうと、恐ろしい勢いでディスクを消費してしまう。8 TBなハードディスク何台買ったっけ……。

 ちなみに、px4_drvでPX-Q3U4は問題なく認識。しっかし、熱に弱いのは確かで、ケースばらして運用してたり。

 録画データの後処理としてComskipを入れてみたり。UNIX系OSへのComskipの移植はいくつかあるけれど、ffmpegとの兼ね合いからErikkashoek版を使用した。

github.com

 ただ、こいつ単体だと扱い辛いので、Nagata氏のラッパースクリプトを今のffmpegに合わせて修正して使用した。まあ、変更点なんてconcat周りとかパイプ周りとかなので、知識があれば対した内容でないので省略。

github.com

 こんな風にCMカットは省力化したものの、まあ、精度が低いのは確かなので、ファイルの大きさを見て、可否を判断している感じであったりする。

 問題と言えば、ffmpegARIB字幕の書き出しに対応していないので、字幕が吹っ飛ぶことか。ロゴ消しはできても、ねぇ。

DPT-S1を買ってしまった。

 あははは。

 発売当初に香港の店頭で買いかけたBOOX NOTEと同じくらいの値段(在庫なかったので買えなかったけど)だけど、画面がA4相当というのが最大の理由。大きいのは正義。

 10インチなタブレットならあるし、似た大きさのe-inkならPocketBook Pro903があるしで、振り返ればBOOX NOTEはいらなかったのでした……。

 ただ、ファイル形式がPDFしか扱えないので、論文やら規格のデータはともかくとして、CBZ/CBRやらテキストファイルの扱いは考えどころ。せめてテキストファイルくらいはと思わずにいられない。

 そこでCBZ/CBRからpdfへの変換はこんな感じでやった。この例はCBZで内部がjpgなものの場合。

$ for f in *.cbz ; do mkdir .cbzconv ;cd .cbzconv ; unar ../"$f" ; mv ./*/* .; mogrify -format pdf *.jpg ; pdftk *.pdf output ../"${f%*.cbz}.pdf" ; cd ../; rm -rf .cbzconv; done

 説明しておくと、unarはzipの文字化け対策、その次の移動はdebianのunarの-no-directoryオプションがまともに働かないために行っている。また、ImageMagicでのpdfへの変換はconvertで一気に単一ファイルにしてしまうと、オンメモリーでやろうとして恐ろしい量のメモリーを消費するので、mogrifyで画像をそれぞれpdfにしてからpdftkで結合している。

 さすがに回転とか解像度合わせとかをやりだすと大変なので、アーカイブ形式を変えるだけ。

Ryzen 5 2400Gでの環境構築

 相当放置していた環境構築について、ケースを買ったことからようやく重い腰を上げる。

 まず、不本意なことにOSがUbuntu 18.04LTE。後述するドライバーまわりの都合でLinuxカーネルバージョン4.15以上かつメジャーなディストリビューションとなってしまうため。

 ちなみにハードウェア構成はこんな感じ。

  • APU: AMD Ryzen 5 2400G
  • RAM: 32GB
  • M/B: ASRock AB350 Pro4
  • HDD: SAMSUNG HD204UI(転がっていたのを流用。かなり古い)
  • Optical: HL-DT-ST DVDRAM GH20NS10(上に同じ)
  • Tuner: PLEX PX-Q3U4
  • 接触ICカードリーダー

 結論から言うと地雷だらけ。もうちょっと枯れたハードを遣いましょう。

インストール

まず、起動に一苦労

 まず、内蔵DVDドライブから起動させようとするも、つなぐポートがASRockで追加したSATAポートだったので起動せず。

 付け替えるのも面倒なので外付けDVDドライブから起動させてみるも、途中で止まる。

画面がまともに映らず

 今度はUSBメモリーにUbuntu日本語remixを入れて起動するも……画面の1/4程度しか映らず。構わずインストールを続けるも、途中でカーネルイメージのバージョンが違うと宣い止まる。

 本家のイメージにして起動するも、今度はACPIあたりで刺さる。

別機体・エミュレーターでインストール

 仕方ないので、別機体にUSB経由で接続して、VirtualBoxの中でインストールする。物理HDDを認識させるため、

# VBoxManage internalcommands createrawvmdk -filename sdg.vmdk -rawdisk /dev/sdg

という具合にVMDKファイルを作成してSATA1にしておき、光学ドライブUbuntu本家のインストールイメージを指定してインストールする。

表示問題

 先にBIOSのアップデートをかける。SSDは遣わない構成だけど、気休め。

 実機にHDDを移して起動させる。今度は画面がまともに映った……と思いきや、今度は画面の左右端が映り、真ん中が間延び。まともに映るときとそうでないときがあり、まともに映らないことの方が多い。

 仕方ないので、プロプライエタリーなドライバーを導入。方法は下記を参照した。

gihyo.jp

 相変わらずACPIが悪さをしてて、ソフトウェア的に再起動やシャットダウンができない状態なものの、まあまあ動く状態にはなった。

 あと、GNOMEなんて遣ってられないのでWindowMaker+WDMGNUStepにする。これでほぼDebianと同様の環境になった。

PX-Q3U4ドライバー導入

 最近、公式ドライバーが公開されたことから、それを導入してみるも、vermagicで撥ねられる。こいつはバイナリーを編集して何とかした。

 非公式ドライバーはPX-Q3PE4まで対応が進んでいるみたいだけど、PX-Q3U4はまだ。待ちですな。

github.com

BDAVの作り方

 地球の裏側から弾丸で行って帰ってきてクラクラしていたり。

 最近ようやくFreeBSD/LinuxBDAVを焼けるようになったのでメモ。といいつつも、まあ、DLNA経由でPS3なりBDP-150から鑑賞できるのだけど。しかもほとんどwine上での作業。何というべきか。

 wineでの作業になったのは、

  1. chotBDAV
  2. ImgBurn

といったツールがWindows用のため。前者はBDAV化するのに必要、後者はUDF 2.5/2.6のディスクイメージ作成に必要。今のところDebianだとUDF 2.5/2.6の作成ができず、一方でプレーヤーの中にはUDFバージョンを決め打ちしている代物もあるので、ImgBurnでイメージを作成してgrowisofsで書き込む。

 それ以外のバケットサイズの変更(BD2FWなど)くらいならFreeBSD/Linuxでもできるし、タイトルを変更しないならrplsTOOLSとかも遣わずとも良いものの、まあ手抜き・不便極まりないのでやはりwineから動かす。

 動作はPS3で確認。

XPSの表示・変換。

 今や廃れた感のあるMicrosoftXPS。今のWindows 10には標準でPDF仮想プリンターがついているので遣う機会が少なくなってきているものの、Windows 7だと標準でPDFを作れないので、PDF代わりとなっていることがある。

 PSファイルで配布? WindowsではAcrobatだのGhostscriptなどのソフトウェアRIPなんて入っていることがそもそも珍しい(せいぜい仕事の都合でとかTeXしているとか)し、今時PSプリンターなんて組版屋くらいしか持っていない。

 閑話休題

 BSDMac含む)とかLinuxとかでは、XPSなんて渡されても扱いに困ってしまうわけだけど、MuPDFはXPSに対応していたりする。mupdfをライブラリーとして遣っているソフトウェアでも同様に表示できる。

% mupdf in.xps

 また、mutoolの1.10以降を遣えばPDFに変換することもできる。

% mutool convert -F pdf -o output.pdf input.xps

 ただしDebian 9だと1.9なので、libgxps-utilsの中のxpstopdfを用いる。

# apt-get install libgxps-utils
% xpstopdf input.xps output.pdf

 この手のファイルで表示できなくて困るファイル形式は、あとはMDIくらいだけど、WindowsのMODIで開くかサードバーティーの市販ソフトくらいしか方法がない。

仕方ないのでiBus化。

 我が携帯用VAIO P(Debian 9 Stretch, i386)は主にEmacsとAtril(PDFリーダー)くらいしか動いていない。Emacsの中でskk-nicolaで暮らしているので、XIMとかIMMODULEの必要は薄いものの、まれにEmacs以外のアプリケーションでの入力が必要になるので、IMにSCIM、変換エンジンとしてAnthyを入れている(以前書いた通り、FMV-KB211の場合はuimが扱いやすく、thumb-touchのような刻印だけ親指シフトなキーボードだとSCIM+scim-anthyのようなエミュレーションできるIMとエンジンの方が扱いやすい)。

 近頃は変換エンジンはmozcとかlibkkcとかが流行っているものの、親指シフトの対応の関係から変換エンジンにはAnthyを使用している。変換効率は良くないものの、まあ、いつもskkなので、比較してはいけない。

 一方で、私は広東語(粤語)話者でもあるので、中文の入力というのも必要だったりする。

 SCIMは特に広東語で入力しようとすると、文字テーブル、要は単漢字変換しかない。昔ながらの漢字部品入力とか北方方言な拼音、注音ならエンジンがあるので効率良く入力できるものの、はっきり言って覚えるのが大変。(香港では従来は漢字部品による入力、具体的には倉頡が一般的だったものの、最近は粤拼(Jyutping)が普及してきている)

 ということで、広東語、粤拼(Jyutping)で連文節入力するためにRIMEを導入。ちなみにWindowsでもこのソフトが動くので、CPIMEのほぼ単漢字入力っぷりに辟易している人やAndroidでのGoogle Cantonese Inputのような快適さを求めるならおすすめ。

 まず、最近流行りのfcitx。日本語の方はAnthy

# apt-get install fcitx-rime librime-data-jyutping fcitx-anthy

 この上で~/.config/fcitx/rime/default.custom.yamlを作成する。

patch:
  schema_list:
    - schema: jyutping

 im-configでIMを切り替えてからログインし直し、fcitx-config-gtkなりで設定……すぐ落ちる。

 仕方ないのでiBusにする。この時点でlibrime-data-jyutpingは入っているので省略。

# apt-get install ibus-rime ibus-anthy

 fcitx-rimeと同様に~/.config/ibus/rime/default.custom.yamlを作成する。

patch:
  schema_list:
    - schema: jyutping

 同じようにIMの切り替えとibus-setupで変換エンジンにAnthyとRIMEを追加。今度は落ちづらくなりましたとさ。

 ……iBusは大嫌いですけど、まあ、仕方なし。

Ryzen 5 2400Gに更新。

 PCの中身を組み替えて電源を入れたら、しゅ〜んと音がして動かなくなってしまったという。電源から香ばしい香りがしていたので、電源がダメになってしまったらしい。

 この機械は2012年くらい(だったと思う)から遣ってきたので、併せてAPUとマザーボードを更新。いままでがA8だったのがRyzen 5 2400Gに更新、メモリーは16 GBから32 GBに倍増。

 ……しかしDebian上で内臓グラフィックスの認識がうまくいっていないですなぁ。DVI-Dに映像が出ない。

zfsをマウントできず仮想機械で読み込む

FreeBSDで使用していたHDDからデータを移すために、仮想機械を遣うハメになったという。

Linuxの今のカーネルFUSEで読み書きする方法があり、それで読もうとしたところ、zfsのバージョン違いで読めず。 さすがにバージョンを落とすわけにも行かず、幸いzrootなディスクだったので仮想機械からブート……今度はmountrootで止まる。

結局、インストールCDを遣ってLive CDから読み込み、ただいまmount_smbfs経由でサーバーにコピーしてるとさ。

BDXLドライブを購入。

今までジャンクのスリムBDドライブを BufferloのDVSM-PCS58U2の中身と交換して遣っていたけれど、DVDドライブとしてしか認識されず。……いや、ついこの間までBD-REなりを焼こうとしなかったので。

 ごく最近録画をするようになったので、バックアップが必要になり、BD-REを買って試したらあれ? となってしまったという。

 ……そういや、CD-RWがまだ大量にあるけど、どうしますかね? まあ、CD-RとDVD-Rだったらまだ配布用途があるし、DVD-RWはデータやりとりでまだ需要がある。でもCD-RWはCD-Rで毎回焼くと無駄になるインストールメディア用くらいかなと……。

 仕方ないので、BaffaloのBRXL-PT6U2V-BKDを購入。人によっては再生ソフト付きだろうけど、BSDLinuxな上に外部ディスプレイはRGBとDVIだったりする。そもそもBDMV再生ならBDプレーヤーがあるし。一応、BDXL対応だけど、私の使用メディアは二層まで。

 ということでxfburnとかK3Bで焼いてみたものの、手元のBDP-150ではUnknown disk扱い……何故?

32 bitアプリを入れていた

 Debianは一度環境を整えてしまえば、後は非常に安定する。例えば、WindowMaker環境をUbuntuなどで構築・維持するというのは非常に苦労するわけで、あの手のディストリビューションはお仕着せの環境を遣うものだ、と思うべきだろう。ただ、DebianとかFreeBSDは環境を整えるまでが少々手間なわけで、何を遣いたいか明確な人以外にはお勧めできないものになってしまっている。

 Debianにおいては、Ubuntuなどと違ってマルチメディア関係のソフトウェアに様々な制限がある。一番大きいのはライセンスや、取り込まれているバージョンが古いことなどがあげられる。そのためDebian Multimediaなどをaptのsource.listに入れたりすることが多い。

 環境整えるまでの間のトラブルとしては、i386を入れてしまったとか、余計なドライバーが邪魔をしたとかがある。

 つい先週この手のことにハマってしまったので、メモしておく。

症例1 tsMuxerGUIの場合

普通にDebian Multimediaからapt-getで導入した。

% tsMuxerGUI
tsMuxerGUI: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory

ん? libQtGuiが見つからない? libqtgui4は入っているから、ライブラリのパスの問題と思い、通してみる。

% set LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
% tsMuxerGUI
tsMuxerGUI: error while loading shared libraries: libQtGui.so.4: wrong ELF class: ELFCLASS64

ELFのクラスが違う? ……もしかしてamd64じゃない? と調べると導入されていたのがi386版でamd64版がないという。そこで

# apt-get install libqtgui4:i386
% tsMuxerGUI

としたら時間がかかったものの、動作しましたとさ。

症例2 OpenGLの場合

Debian MultimediaからShotcutを導入して動かそうとしたところ、キャプチャーボードのドライバーないのと、OpenGLが有効にならない旨のメッセージが出て止まる。

キャプチャーボードについては最新のソフトウェアを導入して解決も、OpenGLについては、GLXがどうこうというメッセージ。

……AMD A8なのにnVIDIAのドライバーとかが入ってて悪さしてた。関係するパッケージをことごとく削除しましたとさ。

FSViewerのバッチ当て

 WindowMaker環境でのファイルマネージャーはGNUstepとの親和性から、GWorkspaceが一般に用いられている。

 従来はFSViewerが広く用いられてきたものの、現在のDebianのパッケージからは外されている。まあ、Debian Archive (https://mirrors.mediatemple.net/debian-archive/debian/pool/main/f/fsviewer/)から拾ってきて、インストールすればいいけれど、最終版の一つ前(0.2.5)だったりする。

 ということで(?) ソースコードからビルドしてみる。

 まずはSlackBuildsからfsviewer-app-0.2.6.tar.bz2とfsviewer.tar.gzを拾ってくる。 slackbuilds.org このうちfsviewer.tar.gzはSlackBuildのファイルだけれども、この中のtitlebar.diffとwingsfix.diffが重要で、前者はFSViewerでタイトルバーが表示されない問題を解決するためのパッチ。

 こいつらを遣ってconfigureとmakeしてみる。

GTK3アプリでのスクロールバー問題

 私の環境はWindowMaker+GNUstepである。要はNeXTライク。

 となるとその他のアプリケーションでも似た外観にしたいというのが人情である。

 まずはGTKということでテーマを探してみると、OneStepBackとGTK-GNUstepというテーマが見つけることができた。

www.gnome-look.org

www.gnome-look.org

 しかし、GTK-GNUstepはGTK2用なので、まずはOneStepBackをつかってみることにした。

 テーマの追加方法? Debianの場合はこいつらを解凍して/usr/share/themesに、FreeBSDなら/usr/local/share/themesに置けば良い。

 テーマの切り替えは設定ファイルを書き換える方法だと、

  • GTK2は~/.gtkrc-2.0
  • GTK3は~/.config/gtk-3.0/settings.ini

gtk-theme-nameの行を編集すれば良い。GUIでやりたいのならlxappearanceを遣うと楽である。

 ……スクロールバーに反映されない。と思ったら、テーマのディレクトリーのアクセス権だった。しっかし動きが変なのも確かなので、いろいろいじってみる。

スクロールバーの移動を画面単位にする

 NeXTだとスクロールバーの場所をクリックするとその場所に移動するので、私には違和感がないものの、Windowsとかに慣れている人は一画面単位のスクロールの方が使い勝手が良いらしい。この場合は~/.config/gtk-3.0/settings.iniの[Settings]の中に以下を追加する。

[Settings]
gtk-primary-button-warps-slider = false

GTK3のスクロールバーのオーバーレイ表示を止める

 ~/.profileに環境変数を設定する。

export GTK_OVERLAY_SCROLLING=0

 ~/.config/gtk-3.0/gtk.cssに次を追加する。

.undershoot.top, .undershoot.right, .undershoot.bottom, .undershoot.left { background-image: none; }

スクロールバーの矢印を表示する

 矢印のあるテーマを使用していれば問題ない。標準で矢印がないテーマについては~/.config/gtk-3.0/gtk.cssに次を追加する。

.scrollbar {
    -GtkScrollbar-has-backward-stepper: 1;
    -GtkScrollbar-has-forward-stepper: 1;
}

 GTK2だと~/.gtkrc-2.0に次のような感じになる。

GtkScrollbar ::has-backward-stepper=1
GtkScrollbar ::has-forward-stepper=1