忍者ブログ
Home > LXQt

rago1975の部屋

このブログは管理人が個人的に興味がある事項を書き留めておくメモみたいなものです。当面は、Manjaro Linux関係の記事が中心になります。

qterminal の East Asian Ambiguous 問題について

qterminalにおける、 East Asian Ambiguous の取扱いについては、以前、このブログに書いていました。私のほうでは、この問題に対応したqtermwidgetのローカライズ版をひっそりと作成・公開していました。
しばらく私自身の事情で、動向を全然追えていなかったのですが、最近ソースを見たら、抜本的な改良が加えられていました。github上でのコミットはこのあたりですね。最新バージョンを試したのですが、現状、これで上手く処理できているのではないかと思います。
この問題が解決できるのであれば、Vim/Neovim 端末としてqterminalが薦められるかなと思います。
PR

Manjaro LXQt のトラブルシューティングとか

Manjaro Linuxについては、ここ数ヶ月の間、大規模なアップデートが幾度かあっています。Manjaro JPで6月に公開したisoを現時点でインストールした場合、いきなり500Mbyte 超のアップデートに出くわします。
通常、インストール後に最初にやる操作として、pacman-mirrors コマンドで最速のミラーサーバーを設定します。
sudo pacman-mirrors -g
その後、ミラーサーバーのリポジトリを同期して、パッケージを更新します。
sudo pacman -Syyu
そうすれば、回線の状況にもよりますが、時間をかけてアップデートが進められます。
そこで、問題は、数カ月分のアップデートを受けることになりますので、その間に行われた仕様変更などによって、いくつか不具合が発生することです。そうなったときの対処法を示します。

QtアプリケーションからGTK+スタイルが消えた件

これについては、以前も書きました。Manjaro LXQtの環境で確認した結果、以下の作業で多分対応できると思われます。
  1. qt5-stylepluginsのインストール
    sudo pacman -S qt5-styleplugins
    
  2. メニューから「設定」→「LXQt Settings」→「LXQt 外観の設定」を選択。1. の操作を行うことによって、「ウィジェットのスタイル」が増えていることが確認できると思います。ここで「gtk2」を選択すると、元のGTK+と同じようなスタイルになります。

なお、以前の記事では/etc/environment の編集やqt5ctのインストールについて言及していましたが私のmanjaro lxqt 環境ではこれらの作業は不要ということが確認できました。

なお、設定ファイルは、~/.config/lxqt/lxqt.conf になります。

メニューからmanjaro settings managerが消えた

~/.local/share/applications/ ディレクトリ内を確認し、manjaro-settings-manager.desktopというファイルがあれば、削除してください。

LXQt 0.11 リリース

LXQt 0.11 がリリースされました(リリースノート)。
そのうち、Manjaroの公式リポジトリにも降りてくると思います。
パッケージの構造が色々変わっていますが、これまで、各パッケージに含まれていた
translation の部分がlxqt-l10nというパッケージにまとめられています。
まだ試していませんが、何か(アップデート時の不具合とか)ありましたらこちらで報告します。


qtermwidget-cjk-git というパッケージを作成し、AURに登録した。

qtermwiget というのは、qtで書かれた端末ソフトウェアqterminalの構成要素であり、通常qterminalの依存パッケージとしてインストールされます。先日も書いた通り、qtermwidgetは、East Asian Ambiguous カテゴリー(wikipediaの記述)の扱いについて、全角としていません。ですので、これらの文字を全角として扱うには、ソースコードに手を入れる必要がありました。

そこで、ソースを修正して、East Asian Ambiguous カテゴリーの文字幅を全角としたものを、qtermwidget-cjkという名前で、私のgithubのリポジトリに設置しました
これを元にArch/Manjaro 用にqtermwidget-cjk-git というパッケージを作成し、AURに登録しました。パッケージといっても、上記のgithubのリポジトリからパッケージをビルトする手順をPKGBUILDというファイルに書いて自動化するようにしたものに過ぎません。

インストール手順(Arch / Manjaro)

AURパッケージなので、yaourt でビルド、インストールできます。
yaourt -S qtermwidget-cjk-git
既に、qtermwidget または qtermwidget-git がインストールされている場合は、インストール作業の最後に、
qtermwidget-cjk-git と qtermwidget-git が衝突しています (qtermwidget)。qtermwidget-git を削除しますか? [y/N]
というようなメッセージが出る(qtermwidget-gitの場合)ので、yとタイプして置き換えてください。
なお、このパッケージの動作確認はqterminal-git 上(AURパッケージ)で行っています。

このパッケージの特徴

  • qterminal上でNeovimが動きます。(Manjaroの公式リポジトリのバージョンでは、この部分の更新が間に合っておらず、動きません。)
  • qterminal上でVimまたはNeovim を作動させる際、設定ファイル(.vimrc とか~/.config/nvim/init.vim)内でset ambiwidth=double と設定することにより、East Asian Ambiguous カテゴリーの文字の幅を全角として取り扱うことができるようになります。
  • ただし、コマンドライン上でこれらの文字を入力した場合は、不具合が生じます。(ファイル名でこれらの文字を用いる場合等は注意してください。)

本家を含めて、改良に努めたいと思いますので、何かありましたらご連絡ください。

qterminal における East Asian Ambiguous の取扱いについて(あるいは、封印されたコードについて)

先日、qterminalを使いこなす。という記事を書いて、そこで、qtermwidgetのソースコードに変更を加えることによって、qterminal で「※」「☆」といった全角記号を表示させる方法を書きました。この方法を使えば、vimでambiwidthを設定することができます。しかし、前回書いた方法は、ちょっと泥縄的だったと思います。今回、もう少し筋の通ったやり方にします。

qtermwidget のソースコードはgithub上にあるのですが、実際に文字の種類による文字幅を定義しているのは lib/konsole_wcwidth.cppというファイルです。前回の記事では、このファイルの130〜138行目のところに色々な文字を追加していました。今回はこの場所はそのままにしておきます。

実は、このファイルの142行目から216行目にかけて、「#if 0」でコメントアウトされた部分があります。この部分が上述の「※」「☆」等を含むいわゆるEast Asian Ambiguous カテゴリー(wikipediaの記述)に属する文字の幅を全角として処理するコードになります。わざわざコードを書いたうえで、「#if 0」で封印している事情は、詳細は分からないのですが、東アジア以外ではこれらの文字は半角扱いされるので敢えて適用しない、という事なのだと思います。
「#if 0」を外して、他のファイルも一部修正してビルドすると、きちんと全角文字が表示され、vimのambiwidthを設定することができるようになりました。修正箇所はこの通り

それはさておき、わざわざ手動でビルドするのは大変です。上記の経緯を考えると、「#if 0」を外す形でPull request を出すのも、通らなさそうです。

やり方としては、今回の変更を含むソースコードを「qtermwidget-cjk-patched-git」みたいな適当な名前でパッケージ化して、AURに掲載して配布するのが、多分一番手っ取り早いと思います。(AURへの掲載については、私がこれから勉強しなければならないので、ちょっと時間がかかると思いますが。。)



        
  • 1
  • 2

プロフィール

HN:
rago1975 (Takefumi Nagata)
HP:
性別:
男性
自己紹介:
熊本在住の一般人です。Manjaro Linux関係の翻訳などを少々やっています。
twitter: https://twitter.com/rago1975

カレンダー

10 2017/11 12
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

P R