Ubuntu 17.04のDéjà Dupでファイルを復元できないバグを修正してもらった件
Ubuntu 17.10以降のファイル検索ツールのバグを何とかしてみた件(仮)
※2017年10月4日、Ubuntu 17.10からtracker-needleは削除されて利用出来なくなってしまった様子。
技術評論社のサイトに掲載されているUbuntu Weekly Recipeにて、以下の記事が公開された。
最近ちょろっとtrackerのことを調べていたのでシンクロニシティかな、などと思ったりしたのだが、それはともかく、Ubuntu 17.04までデフォルトとして採用されていたUnity 7のDashには、ローカルに保存されているファイルを検索する機能が備わっており、Ubuntu 17.10からデフォルトになるGNOME Shellにも似たような機能は備わっているものの、ファイル検索機能としてはUnity 7と方向性が異なるようで、少々残念に思っていた。
というのも、GNOME Shellのファイル検索は全文検索がメインらしく、入力した文字列を含むPDFファイルなどが検索結果に表示され、それはそれで便利なのだが、単純にファイル名だけで検索しても引っかからないので、私的には非常に惜しい機能だと言わざるを得なかった。
上記の記事には 原則としてはファイル名を検索します と書かれているが、.txtや.html、拡張子が無いプレーンテキスト、.jpgや.pngといった画像などは検索対象にならないようで、あれこれ弄っているうちにファイル検索用のツールが別に用意されていることに気づいた。
それが上記の記事中にもある デスクトップの検索 というツールで、コマンド名は tracker-needle、パッケージ名は tracker-gui となっている。これを使えばファイル名のみで検索できるし、作成したばかりのファイルでもすぐ検索結果に出てきて中々便利なのだが、使っているうちに頻繁に検索結果が表示されなくなるバグがあることが判明した。
エラーメッセージが出力されないので、仕方なく何度も検索してみて結果が表示されないタイミングを調べた所、
↑この画面が表示されると、その次の検索結果が表示されないことが分かった。ので、とりあえずパッチを作成してみた。パッチと言っても該当部分をコメントアウトしただけのものだけど。
下記のパッチを当ててtrackerをビルドし直してみた所、検索結果が表示されない現象は収まったように見える。後日、下記のパッチを当てた17.10用のtrackerをppaにアップロードする予定。
--- a/src/tracker-needle/tracker-view.vala +++ b/src/tracker-needle/tracker-view.vala @@ -103,21 +103,21 @@ switch (display) { case Display.NO_RESULTS: - Label l; - - l = new Label (""); - l.set_justify (Justification.CENTER); - - string results = _("No Search Results"); - string help_views = _("Select the view on the toolbar for the content you want, e.g. everything, files or just images"); - string help_search = _("Start to search using the entry box above"); - string markup = @"<big>$results</big>\n\n$help_views\n\n$help_search"; - - l.set_use_markup (true); - l.set_markup (markup); - - view = l; - break; +// Label l; +// +// l = new Label (""); +// l.set_justify (Justification.CENTER); +// +// string results = _("No Search Results"); +// string help_views = _("Select the view on the toolbar for the content you want, e.g. everything, files or just images"); +// string help_search = _("Start to search using the entry box above"); +// string markup = @"<big>$results</big>\n\n$help_views\n\n$help_search"; +// +// l.set_use_markup (true); +// l.set_markup (markup); +// +// view = l; +// break; case Display.CATEGORIES: case Display.FILE_LIST:
UbuntuがLinuxディストリビューションの中で最も使われているデスクトップOSという調査結果が出たそうな
スラドより、
Phoronixというサイトで、ノートパソコンでLinuxを使っている人を対象にしたアンケートが行われ、その結果Ubuntuが最も使用されているLinuxディストリビューションだという事が判明したらしい。
DistroWatch.comのページヒットランキングと並べるとこんな感じになる。
Phoronix | DistroWatch (最近30日) | |||
---|---|---|---|---|
順位 | 名前 | シェア | 名前 | HPD |
01 | Ubuntu | 38.9% | Linux Mint | 2639 |
02 | Arch Linux | 27.1% | Debian | 2401 |
03 | Debian | 15.3% | Manjaro | 1631 |
04 | Fedora | 14.8% | Antergos | 1444 |
05 | Linux Mint | 10.8% | Ubuntu | 1181 |
06 | openSUSE / SUSE | 4.2% | openSUSE | 925 |
07 | Gentoo | 3.9% | Zorin | 909 |
08 | CentOS / RHEL | 3.1% | Fedora | 856 |
09 | Solus | 2% | elementary | 803 |
10 | Manjaro | 1.6% | Solus | 713 |
DistroWatchだとArchは14位、CentOSは16位、Gentooは46位。Archのシェアが凄いなーという印象。ArchWikiの事を考えるとユーザー多そうだなーとは思ってたけど、こんなに多いとは。Manjaroは注目はされてるけど、まだまだ使われてはいない感じか。
使っているノートPCのメーカーのランキングも載っていた。
- 39.6% Lenovo
- 27.8% Dell
- 16.0% ASUS
- 15.0% HP
- 11.3% Apple
- 11.3% Acer
- 4.7% 東芝
- 3.0% Samsung
- 2.3% MSI
- 2.1% System76
ThinkPadは日本でも好評みたいだし、Dellもよく名前を聞く上にUbuntuプリインストール機を売っているので上位なのは納得。Acerは2chのLinux板の荒らしが使ってたなぁ…
Ubuntu 17.04 で qt5 アプリケーションのフォントなどを変更する
Ubuntu GNOME 17.04を使っていて気づいたのだが、なんかVLCのメニューバーのアンダーバーが太い。
色々とググってみた結果、
というページを見つけ、フォントを変えたらアンダーバーが細くなるんじゃないかと思い立ったので設定を変更してみた。
まず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 ゴシックに変更され、アンダーバーが細くなる。
また、フォントを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。
上記のコマンドではなく自分でフォントを指定したい場合や、フォント以外の外観を変更したい場合はQt5 SettingsというGUIアプリケーションを起動し、
フォントタブなどで設定を行う。
ちなみに元のアンダーバーが太いのはフォントがUbuntuフォントになっている為と思われる。
あと、qt5ctを配布しているppaは、
以上の3つ存在するが、今回は一番バージョンが新しいwebupd8のをインストールした。
関連記事
Ubuntu 18.04 で Dash to Panel のプレビューのサイズを小さくする
※2018年12月30日、以下の内容は古くなっているので注意。最新版はオプションからプレビューサイズを変更可能。
GNOME 3(GNOME Shell)の拡張機能のDash to Panelには、Windows 10のような起動しているアプリケーションのウィンドウのプレビューを表示する機能があるのだが、
表示されるサイズがちょっと大きめなので小さくしてみた。
端末を起動して、
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が再起動されて設定が反映され、
こんな感じにサムネイルのサイズが小さくなる。
元に戻す場合は、
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では基本的にFirefoxやThunderbirdといった一部のアプリケーション以外はバージョンがアップグレードされることはない。
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が文字化けすることなく展開される。
スクリプトを作った理由
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) を適用しても文字化けが直らないようになってしまっている。
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