Ubuntu 17.04 で qt5 アプリケーションのフォントなどを変更する

Ubuntu GNOME 17.04を使っていて気づいたのだが、なんかVLCのメニューバーのアンダーバーが太い。

f:id:sicklylife:20170709182829p:plain

色々とググってみた結果、

というページを見つけ、フォントを変えたらアンダーバーが細くなるんじゃないかと思い立ったので設定を変更してみた。

まずQt5アプリケーションの外観を変更するためのツールであるqt5ctをインストールする。端末で、

sudo add-apt-repository ppa:nilarimogard/webupd8 
sudo apt update 
sudo apt install qt5ct 

と実行して、ppaを追加してツールをインストール。
続けて端末で、

echo 'export QT_QPA_PLATFORMTHEME="qt5ct"' >> ~/.profile 

と実行した後、一旦ログアウトするかUbuntuを再起動する。
ログインし直したら端末で、

cd ~/.config/ && wget https://sicklylife.jp/tool/qt5ct_takaop.zip && unzip -o qt5ct_takaop.zip && rm qt5ct_takaop.zip && cd - 

と実行した後、VLCやKeePassXC、nomacsなどのQt5アプリを起動するとメニューのフォントがTakao P ゴシックに変更され、アンダーバーが細くなる。

f:id:sicklylife:20170709184132p:plain

また、フォントをTakao P ゴシックではなくNoto Sans CJK JP Kaiにしたい場合は、

cd ~/.config/ && wget https://sicklylife.jp/tool/qt5ct_notokai.zip && unzip -o qt5ct_notokai.zip && rm qt5ct_notokai.zip && cd - 

と実行すればOK。

f:id:sicklylife:20170709184851p:plain

上記のコマンドではなく自分でフォントを指定したい場合や、フォント以外の外観を変更したい場合はQt5 SettingsというGUIアプリケーションを起動し、

f:id:sicklylife:20170709185048j:plain

フォントタブなどで設定を行う。

f:id:sicklylife:20170709185141p:plain

ちなみに元のアンダーバーが太いのはフォントがUbuntuフォントになっている為と思われる。
あと、qt5ctを配布しているppaは、

以上の3つ存在するが、今回は一番バージョンが新しいwebupd8のをインストールした。

関連記事

Ubuntu 18.04 で Dash to Panel のプレビューのサイズを小さくする

※2018年12月30日、以下の内容は古くなっているので注意。最新版はオプションからプレビューサイズを変更可能。


GNOME 3(GNOME Shell)の拡張機能Dash to Panelには、Windows 10のような起動しているアプリケーションのウィンドウのプレビューを表示する機能があるのだが、

f:id:sicklylife:20170709174542j:plain

表示されるサイズがちょっと大きめなので小さくしてみた。
端末を起動して、

sudo sed -i s/"DEFAULT_THUMBNAIL_WIDTH = 350"/"DEFAULT_THUMBNAIL_WIDTH = 150"/g /usr/share/gnome-shell/extensions/dash-to-panel@jderose9.github.com/windowPreview.js 
sudo sed -i s/"DEFAULT_THUMBNAIL_HEIGHT = 200"/"DEFAULT_THUMBNAIL_HEIGHT = 100"/g /usr/share/gnome-shell/extensions/dash-to-panel@jderose9.github.com/windowPreview.js 

と実行した後、Alt + F2キーを押しrとだけ入力してEnterキーを押すとGNOME Shellが再起動されて設定が反映され、

f:id:sicklylife:20170709174601j:plain

こんな感じにサムネイルのサイズが小さくなる。
元に戻す場合は、

sudo sed -i s/"DEFAULT_THUMBNAIL_WIDTH = 150"/"DEFAULT_THUMBNAIL_WIDTH = 350"/g /usr/share/gnome-shell/extensions/dash-to-panel@jderose9.github.com/windowPreview.js 
sudo sed -i s/"DEFAULT_THUMBNAIL_HEIGHT = 100"/"DEFAULT_THUMBNAIL_HEIGHT = 200"/g /usr/share/gnome-shell/extensions/dash-to-panel@jderose9.github.com/windowPreview.js 

と実行すればOK。
ちなみにこれらのコマンドはSickly LifeのppaからDash to Panelをインストールしていないと実行できない(ファイルのパスを変更すればいいだけの話だけど)。

Ubuntu 16.04のKernelをより新しいバージョンにアップグレードする

Ubuntuでは基本的にFirefoxThunderbirdといった一部のアプリケーション以外はバージョンがアップグレードされることはない。
Ubuntu OSの中核であるLinux Kernelも自動的にアップグレードされることはないのだが、新しいカーネルを利用できるようにパッケージが用意されているので、Kernelをアップグレードしたい場合は手動でインストールする。

端末を起動して以下のコマンドを実行し、Ubuntuを再起動するとアップグレードされたKernelが利用できるようになる。

sudo apt install linux-generic-hwe-16.04 

上記のコマンドでインストールされるKernelのバージョンは2017年5月24日の時点で4.8.0.52.23となっているが、それよりも新しいバージョンをインストールしたい場合は以下のコマンドを実行する。

sudo apt install linux-generic-hwe-16.04-edge 

こちらのバージョンは4.10.0.21.14となっていて、さらに新しいバージョンが利用できる。
現在のKernelのバージョンを確認するには端末で以下のコマンドを実行する。

uname -a 

また、元のKernelに戻す場合は、まずUbuntu TweakやUbuntu Cleanerで古いカーネルを全て削除した後、以下のコマンドを実行して元のバージョンのカーネルをインストールし、

sudo apt install linux-generic 

続けて以下のコマンドを実行してインストールされている全てのKernelを確認、

dpkg -l | grep linux-image | grep ^ii 

一番古いバージョンのKernel以外を全て削除してUbuntuを再起動すればKernelのバージョンを元に戻すことが出来る。

#新しいバージョンのKernelを削除する一例
sudo apt purge linux-generic-hwe-16.04* linux-headers-generic-hwe-16.04* linux-image-generic-hwe-16.04* 
sudo apt purge linux-image-バージョン名-generic linux-image-extra-バージョン名-generic 

参考 : HWE (Hardware Enablement) カーネルを使う – talkwithdevices.com
参考 : 第278回 Ubuntuカーネルとの付き合い方:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

Ubuntu 17.04 で zip を展開した時の文字化けを回避する

※2017年5月24日、バージョンアップ。

Windowsで内部に日本語を含むzipファイルを作成して、それをWindows以外のOSで解凍すると文字化けする、という話はMacユーザーやLinuxユーザーの間では広く知られていると思われる面倒くさいバグなのだが、今回その文字化けを何とかしてみようと思い、Nautilus用のスクリプトを作成してみた。
何で既に回避策が存在するのにそんなもの作ろうと思ったのか、という点についても一応下の方に書いておく。

スクリプトのダウンロードとインストール

まず以下のリンクをクリックするなどしてunarなどをインストールする。
apt:unar
apt:unrar
apt:p7zip-full

#コマンドを使う場合はこうする
sudo apt install -y unar unrar p7zip-full 

次に端末(gnome-terminal)を起動して、以下のコマンドを実行する。

cd ~/.local/share/nautilus/scripts/ && wget https://sicklylife.jp/tool/zip_mojibake_kaihi && chmod +x zip_mojibake_kaihi && mv zip_mojibake_kaihi zipを展開する\(文字化け回避\) && cd - 

するとファイル(Nautilus)の右クリックメニューにスクリプト > zipを展開する(文字化け回避)というメニューが追加されるので、zipファイルを右クリックしてそれをクリックすると、Windowsで作成したzipが文字化けすることなく展開される。
f:id:sicklylife:20170503125543p:plain

スクリプトを作った理由

Ubuntuでのzipの文字化け対策と言えば、Ubuntu Japanese Teamの日本語Remixを使うか、Ubuntu Japanese Teamのppaを使う方法が一般的だと思われるのだが、現在私が使用しているUbuntu GNOME 17.04 + Nautilus 3.24.1では以前と仕様が変わったらしく、Ubuntu Japanese Teamの文字化け回避策 (/etc/profile.d/unzip-default-charset.sh) を適用しても文字化けが直らないようになってしまっている。
f:id:sicklylife:20170503130159p:plain
Nautilus 3.24.1では↑このスクショのようにExtract Here(ここに展開する)がデフォルトになって、zip/7z/xzなどの圧縮ファイルをダブルクリックするとその場に展開されるようになり、しかも関連付けを変更しても反映されないという糞仕様になってしまっている。
file-rollerを起動してzipを開いて展開すれば(文字化け回避策を適用していれば)文字化けせずに展開されるが、いちいちfile-rollerを起動するのも面倒だし、右クリックからサクッと展開したかったのでスクリプト化してみた。来年のLTSまでに修正されるといいなぁ。

↓以下はスクリプトの中身。

#!/bin/bash
# unarでアーカイブを展開
#
# バージョン: 0.0.2
# ライセンス: GPLv2
# 作者      : Sickly Life
# 日時      : 2017年5月24日
# 備考      : unarだと文字化けが直らない場合があったのでunzipを使うように修正。
#             パスワードには未対応。
#             7zファイルは7zコマンドで展開するようにしているが、ほぼ未テスト。
# 参考      : shとbashでの変数内の文字列置換など - ろば電子が詰まっている (http://d.hatena.ne.jp/ozuma/20130928/1380380390)

RMFILE=/tmp/file.YcZCaYDRKQm3us9fFyTBphd9zYeycwRKFPKGCPvMSNejW4rF2EYaHKEiTAkhDmcjTWSaXxQtBh8AFrhXPNqiVcx8vJrZFZGR2kXosxGsWqdHPfLhMmhoj2f9QVS2ByLCWkkAQgtx3pR3oQXyTkZQc79Cg2uCVcYQ6Bx4CGCiczoEQrWsQe6kDeYoHPKoRww4kMPYpAxe*
TMPFILE=/tmp/file.YcZCaYDRKQm3us9fFyTBphd9zYeycwRKFPKGCPvMSNejW4rF2EYaHKEiTAkhDmcjTWSaXxQtBh8AFrhXPNqiVcx8vJrZFZGR2kXosxGsWqdHPfLhMmhoj2f9QVS2ByLCWkkAQgtx3pR3oQXyTkZQc79Cg2uCVcYQ6Bx4CGCiczoEQrWsQe6kDeYoHPKoRww4kMPYpAxe.$$
UNZIP_LOG_FILE=/tmp/file.YcZCaYDRKQm3us9fFyTBphd9zYeycwRKFPKGCPvMSNejW4rF2EYaHKEiTAkhDmcjTWSaXxQtBh8AFrhXPNqiVcx8vJrZFZGR2kXosxGsWqdHPfLhMmhoj2f9QVS2ByLCWkkAQgtx3pR3oQXyTkZQc79Cg2uCVcYQ6Bx4CGCiczoEQrWsQe6kDeYoHPKoRww4kMPYpAxe.unzip

rm -f $RMFILE

trap 'kill $(jobs -p); zenity --text-info --filename=$TMPFILE --title=展開終了 --width=600 --height=400; rm -f $TMPFILE; kill $$' EXIT
trap 'kill $(jobs -p); zenity --text-info --filename=$TMPFILE --title=展開終了 --width=600 --height=400; rm -f $TMPFILE; kill $$' ERR

if [ $# -gt 100 ]; then
    echo "ファイルの数が多すぎます。一度に展開できるファイル数の上限は100です。" &>> "$TMPFILE"
    exit 0
else
    declare -i num=$((100/$#))
fi

declare -i count=0

for arg
do
    name="${arg%.*}"
    ext="${arg##*.}"

    if [ "${ext,,}" = 'zip' ]; then
        unzip -Z -- "$arg" &>> "$UNZIP_LOG_FILE"
        grep 'number of entries: 1' "$UNZIP_LOG_FILE"; result=$?
        if [ "$result" = 0 ]; then
            truncate -s 0 "$UNZIP_LOG_FILE"
            unzip -o -O sjis -- "$arg" &>> "$TMPFILE"
        else
            sed -n '3p' "$UNZIP_LOG_FILE" | grep -E '^d'; result=$?
            if [ "$result" = 0 ]; then
                truncate -s 0 "$UNZIP_LOG_FILE"
                unzip -o -O sjis -- "$arg" &>> "$TMPFILE"
            else
                truncate -s 0 "$UNZIP_LOG_FILE"
                unzip -o -d "$name" -O sjis -- "$arg" &>> "$TMPFILE"
            fi
        fi
    elif [ "${ext,,}" = 'rar' ]; then
        unrar x -v -- "$arg" &>> "$TMPFILE"
    elif [ "${ext,,}" = '7z' ]; then
        7z x -- "$arg" &>> "$TMPFILE"
    else
        unar -- "$arg" &>> "$TMPFILE"
    fi

    echo >> $TMPFILE
    # unrar & unar
    sed -i "/... OK.\$/d" "$TMPFILE"
    # unrar
    sed -i "/All OK\$/d" "$TMPFILE"
    # unzip
    sed -i "/^   creating: /d" "$TMPFILE"
    sed -i "/^  inflating: /d" "$TMPFILE"

    count=$(($count+$num))
    echo "$count"
done | \
zenity \
    --progress \
    --title="展開" \
    --text="ファイルを展開中..." \
    --percentage=0 \
    --auto-close \
    --auto-kill

exit 0
#!/bin/bash
# unarでアーカイブを展開
#
# バージョン: 0.0.1
# ライセンス: GPLv2
# 作者      : Sickly Life
# 日時      : 2017年5月3日
# 参考      : shとbashでの変数内の文字列置換など - ろば電子が詰まっている (http://d.hatena.ne.jp/ozuma/20130928/1380380390)

RMFILE=/tmp/unar.YcZCaYDRKQm3us9fFyTBphd9zYeycwRKFPKGCPvMSNejW4rF2EYaHKEiTAkhDmcjTWSaXxQtBh8AFrhXPNqiVcx8vJrZFZGR2kXosxGsWqdHPfLhMmhoj2f9QVS2ByLCWkkAQgtx3pR3oQXyTkZQc79Cg2uCVcYQ6Bx4CGCiczoEQrWsQe6kDeYoHPKoRww4kMPYpAxe*
TMPFILE=/tmp/unar.YcZCaYDRKQm3us9fFyTBphd9zYeycwRKFPKGCPvMSNejW4rF2EYaHKEiTAkhDmcjTWSaXxQtBh8AFrhXPNqiVcx8vJrZFZGR2kXosxGsWqdHPfLhMmhoj2f9QVS2ByLCWkkAQgtx3pR3oQXyTkZQc79Cg2uCVcYQ6Bx4CGCiczoEQrWsQe6kDeYoHPKoRww4kMPYpAxe.$$

rm -f $RMFILE

trap 'kill $(jobs -p); zenity --text-info --filename=$TMPFILE --title=展開終了 --width=600 --height=400; rm -f $TMPFILE; kill $$' EXIT
trap 'kill $(jobs -p); zenity --text-info --filename=$TMPFILE --title=展開終了 --width=600 --height=400; rm -f $TMPFILE; kill $$' ERR

declare -i num=$((100/$#))
declare -i count=0

for arg
do
    ext="${arg##*.}"

    if [$ext = "rar"]; then
        unrar xv -- "$arg" &>> $TMPFILE
    else
        unar -- "$arg" &>> $TMPFILE
    fi

    echo >> $TMPFILE
    sed -i "/... OK.\$/d" $TMPFILE
    count=$(($count+$num))
    echo $count
done | \
zenity \
    --progress \
    --title="展開" \
    --text="ファイルを展開中..." \
    --percentage=0 \
    --auto-close \
    --auto-kill

exit 0

Ubuntu 17.04 で GNOME 3 (GNOME Shell) を使ってみた

※2017年4月17日、追記あり。

将来に備えてUbuntu GNOME 17.04に移行してみたので、Ubuntu Unityユーザーが初めてまともにGNOME 3(GNOME Shell)を使った感想を書いてみる。

遅い

なんか動作が遅い。ワークスペースの切り替えすら遅い。Impatience拡張機能で速度上げないと辛いというか、上げてもUnity(Compiz)みたいなサクサク感が無い。モッサリ。

特にアクティビティ画面の表示が遅い。Impatienceをオンにしてもまだ遅い。これが最も気になり、致命的だと思った欠陥。Unity 7ではスケール(アプリのウィンドウを並べて表示する機能)をよく利用していたのだが、その類似機能であるアクティビティ画面は正直使ってて苛つくレベルの遅さ。マジもっさり。

アクティビティ画面はUnityのDashの同類でもあるのだが、Dashより重い。Dashも最初の頃はもっさりだったが16.04ではかなり改善されていて、それに比べるとアクティビティ画面は遅すぎてムカつくレベル。ただDashと違ってちゃんと日本語入力が出来る点は良い。Dashは日本語入力が出来なくなることが割と頻繁にあったので。

またアクティビティ画面は、Unityのワークスペースの一覧表示(Super + S)の同等機能も備えているのだが、遅いので使いづらい。

※2017年4月17日。アニメーションを無効にしたらマシになった。Super + Aがほぼ一瞬で表示され、ワークスペースもサクサク切り替わる。ただそれでもアクティビティ画面は若干遅い。

初期設定がクソ

Unityもそうだったけど、初期設定をクソにしなきゃいけないルールでもあるのだろうか?GNOME Tweak Toolで設定変更して初めて使い物になる。Dash to dock、Dash to Panel、Impatience、Topicons plus、この辺の機能はデフォで欲しい、マジで。

細かい設定が出来ない

Unity(Compiz)は割と色々できたんだが。

Alt + Tabがアプリケーション単位での切り替え

Unityでもそうだったけど、Unityと違ってこちらは完全にアプリ単位での切り替え。(UnityはAlt + Tabを一回押した段階では直前のウィンドウとの切り替えで、二回目からアプリ単位での切り替えになるという謎仕様だった。)

ただ、こちらはデフォではすべてのワークスペースのアプリが切り替え対象なのが微妙。この辺は個人の好みだろうけど、自分は現在のワークスペースの分だけ切り替えたい派なので、設定を変更して対応。

Alt + 半角/全角で同一アプリの切り替え

プレビューの表示位置がちょっと下すぎる気はする

タイトルバーが太い

タイトルバーがツールバーと一体になっているのは良いのだけど、FirefoxとかLeafpadとか、タイトルバーにタイトルしか表示されないものは、もうちょっと細くしてほしいなと思った。確か設定ファイル弄って細くできるはずなのでそのうちやる。

日本語入力を切り替えるとトップバーのアイコンがちょっと動く

Workspace indicatorをオンにすると、IMEのアイコンの左側にワークスペース切り替え器が表示されるのだが、それが日本語入力を切り替えると微妙に左右に動く。これはGNOME ShellのテーマをArc-Darkに変更することで対応。

日本語入力の変換候補が表示されなくなることがある

こうなったら再起動しないと駄目。

グローバル入力メソッドを無効に出来ない

IBusの設定(ibus-setup)で「すべてのアプリケーション間で同じ入力メソッドを共有する」のチェックを外しても設定が反映されない。GNOMEのバグかは不明。我慢できなかったらfcitxに変える予定。

不安定

昨日インストールしてから4回クラッシュ(ウィンドウ装飾が表示されなくなってGNOME Shellが再起動)し、1回フリーズ(キー入力を受け付けなくなり、マウスでの操作も出来ず、リセットボタンで再起動)。

クラッシュはGNOME Shellの拡張機能を弄ってる最中に起こったのでまぁともかく、フリーズはここ最近は経験していなかったし、テキストファイルをエディターで編集している最中に起こったのでちょっと焦った。

ただGNOMEのせいなのかどうかは分からんので何とも言えない。

まとめ

思っていた以上に微妙だった。とにかくモッサリなのが辛い。Unity廃止で喜んでいた人たちはこれを望んでいたわけ?

UbuntuがUnity8への移行を断念したらしい件

Unity 8は開発が進んでなくて「これ絶対18.04に間に合わんだろ」と思っていたので案の定と言うか…

個人的にUnityは、Ubuntu 12.04の頃のUnity 5は正直クソだと感じていたのだけれども、16.04のUnity 7はそんなに嫌いじゃないので、無くなってしまうのはちょっと残念な気もする。

ブコメとか見ると喜んでいる人の方が多そうだけど、移行先のGNOMEもUnity 7と似たような使用感だし評判はあまり良くないので、朗報と言って良いのだろうかねぇ。

国内記事

海外記事

Adobe製フリーフォント「源ノ明朝」とGoogle製フリーフォント「Noto Serif CJK」が公開

明朝体のフォントが公開されたらしい。

7ウェイトが用意されていて良さげ。
ダウンロードページは以下。