Ubuntu 16.10で通知領域のアイコンがピクピク動くのを何とかする その2

fcitxのソースを修正してアイコンの挙動を16.04の頃と同じにしたパッケージをppaにアップロードしてみた。
端末で、

sudo add-apt-repository ppa:sicklylife/ppa 
sudo apt update 
sudo apt upgrade 

と実行した後、Ubuntuを再起動すればfcitxのインジケーターアイコンが昔と同じになる。

関連

Ubuntuでp7zip-fullをインストールしてもzipが文字化けしないようにする

Ubuntuでは、Windowsで作成した日本語を含むzipファイルを展開すると文字化けを起こしてしまうが、Ubuntu Japanese Teamのリポジトリを追加しておくと文字化けせずにzipファイルを展開できるようになる。

# 16.04の場合
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add - 
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add - 
sudo wget https://www.ubuntulinux.jp/sources.list.d/xenial.list -O /etc/apt/sources.list.d/ubuntu-ja.list 
sudo apt update 
sudo apt upgrade 
sudo apt install ubuntu-defaults-ja 

しかし7zファイルを作成/展開するためにp7zip-fullをインストールすると再び文字化けを起こすようになってしまう。これはUbuntuアーカイブマネージャー(File Roller)の仕様で、p7zip-fullがインストールされている環境ではzipの展開にp7zip-fullを使用するようになっているためで、回避するには機能が省かれたp7zipの方をインストールすればOKなのだが、p7zip-fullの方を使いたいしzipの文字化けも回避したいという人もいるのではないかと思ったので、File Rollerのソースを弄って文字化けしないようにしてみた。

端末で、

sudo add-apt-repository ppa:sicklylife/ppa 
sudo apt update 
sudo apt upgrade 

と実行すれば修正されたバージョンにアップデートされる。

↑こちらの記事を参考にさせていただきました。

UbuntuとWindowsでファイルを書き込む際にドライブ上にどのように配置されるか比較してみた

※2016年12月27日、追記と若干の書き直し。
※追記。日本語に翻訳された記事は消えていたが、元の英語のページは残っていた → Why doesn't Linux need defragmenting?


以前、Windowsではファイルは連続して保存され、Linuxではディスクドライブ全体に分散されるように保存される、というような内容の記事を見た覚えがあったので、探してみたのだけれども既に消えていて、

一部を引用したページのみが見つかった。

↑の記事より引用。

Windows(FAT、NTFS?)は全てのファイルが隣り合うように配置するので、断片化しやすい
Linuxは散らばらせて配置するので、空き容量に余裕があるなら断片化は気にしなくてよい

Windowsに関してはデフラグツールを使えばファイルがパーティションのどの辺りに保存されているか一目瞭然だけど、Linuxだと分かりやすいGUIツールが無いので、本当に散らばらせて配置されているのか確認のしようがないなと思っていたのだが、よく考えたら最近のLinuxWindowsのNTFSに書き込めるし、Linuxで書き込んでWindowsで確認すればいいんじゃないかという事に気がついたので、実際にNTFSでフォーマットされたパーティションUbuntuから書き込んで、ファイルがどんな風に配置されるか確かめてみた。

Ubuntuでファイルをコピーして確認

  1. まずWindows 10でVドライブをNTFSで(クイックフォーマットでは無い方で)フォーマット。
  2. 次にUbuntu 16.10でホームフォルダーをVドライブへコピー(約3.5GiB、ファイル総数約96,000。コピーにはsnowcpを使用)。
  3. Windows 10でDefragglerを使ってVドライブを解析。

すると以下のように表示された。

f:id:sicklylife:20161225200539p:plain

パーティションの先頭部分以外に分散して書き込まれているが、思った以上に断片化している。しかし断片化が起こっていると言っても、その殆どが断片数が2なので、激しい断片化は起こっていない様子。最も断片化したファイルのサイズは約200MBで、断片数は7だった。

Windowsでファイルをコピーして確認

  1. VドライブにコピーしたホームフォルダーをWindows 10で別のHDDに移動。
  2. Windows 10で再びVドライブをNTFSで(クイックフォーマットでは無い方で)フォーマットし直し。
  3. 移動させたホームフォルダーを再びVドライブにコピー(コピーにはFastCopyを使用)。
  4. Defragglerを使ってVドライブを解析。

すると以下のように表示された。

f:id:sicklylife:20161225201403p:plain

パーティションの先頭部分にまとめて書き込まれている。ファイルの断片化は起こっていないが、$UsnJrnlの断片数が100を超えていた。

両者を比較してみて

ファイルを書き込む際に「Windowsは全てのファイルが隣り合うように配置」し、「Linuxは散らばらせて配置する」ことが確認できた。

NTFSはLinuxのfallocateに未対応なのでLinuxから書き込むとファイルの断片化が起きたが、ext4やXFSといったLinuxネイティブのファイルシステムなら断片化はもっと起こりにくいはず。

ただ分散して配置するということは逆に空き領域の断片化が起こっているということなので、パーティションの使用率が上がれば上がるほどファイルサイズの大きなファイルを書き込む際に断片化しやすくなる。

ファイル倉庫的な使い方(一度書き込んだファイルは編集しないし消さない)をするならWindowsのファイルの配置方法の方が良いような気がする。

VirtualBoxにUbuntu 16.04をインストールした後にやること

※2018年3月2日、16.04.4に合わせて若干の修正。
※2016年11月29日、ディスプレイの設定を追加。

↑この記事の続き。

Guest Additionsをインストール

ゲストのUbuntuを起動してログインした状態で VirtualBoxのメニューバーのバイスGuest Additions CD イメージの挿入 をクリック、

f:id:sicklylife:20161128201835p:plain

ゲストのUbuntuにCDが挿入されて "VBOXADDITONS_5.1.10_112026" には自動的に起動するソフトウェアが含まれています。実行しますか? といったダイアログが表示されるので「実行する」ボタンをクリック、パスワードを入力するダイアログが表示されるのでパスワードを入力、「認証する」ボタンをクリックする。

f:id:sicklylife:20161128201939p:plain

Press Return to close this window... と表示されたらEnterキーを押して端末を閉じ、ゲストのUbuntuを再起動する。

f:id:sicklylife:20161128202014p:plain

ディスプレイの設定を変更

仮想マシンを右クリックして設定ウィンドウを開き、ディスプレイ をクリック、3Dアクセラレーションを有効化*1 をクリックしてチェックを入れ、ビデオメモリーの値を 128MB に変更する。

f:id:sicklylife:20161128200119p:plain

ゲストのUbuntuを起動し、ゲストのUbuntuの端末で、

/usr/lib/nux/unity_support_test -p 

と実行、Unity 3D supportedが yes になっているか確認しておく。

f:id:sicklylife:20161128202135p:plain

環境によっては3Dアクセラレーションを有効にするとまともに動作しなくなる場合があるので、その時は3Dアクセラレーションを有効化のチェックを外す。

ちなみに、昔は3Dを有効にしないとゲストのUbuntuの動作がすごく遅くて使い物にならなかったのだが、今では無効のままでも普通に使える軽さになっている。

クリップボードを共有

ゲストのUbuntuを起動した状態で VirtualBoxのメニューバーのバイスクリップボードの共有双方向 をクリックしてチェックを入れ、ゲストのUbuntuを再起動するとホストOSとゲストOS間でクリップボードを共有できるようになる。

f:id:sicklylife:20161128202245p:plain

共有フォルダーを有効にする

ゲストのUbuntuで端末を起動し、

sudo gpasswd -a $USER vboxsf 

と実行した後、ゲストのUbuntuを再起動すると共有フォルダーを利用できるようになる。共有フォルダーはファイラーのサイドバーからアクセスできる。

f:id:sicklylife:20161128202358p:plain

日本語を入力できるようにする

日本語入力が出来ない場合は以下のページを参考にする

Ubuntuをアップデート

Ubuntuのランチャーの一番上にある「コンピューターを検索」をクリックして update と入力、「ソフトウェアの更新」をクリックして起動し、Ubuntuをアップデートする。

f:id:sicklylife:20161128202453p:plain

Low Graphics Modeを利用する

※2018年3月2日、昨日リリースされたUbuntu 16.04.4から、以下の設定は必要なくなった様子。

3Dアクセラレーションを有効にしている場合、設定をLow Graphics Modeに変更すると動作が軽くなるかもしれない。まずゲストのUbuntuでCompizConfig 設定マネージャをインストールする。

sudo apt install compizconfig-settings-manager 

ケース1

ゲストのUbuntuでCompizConfig 設定マネージャを起動して「Ubuntu Unity Plugin」をクリック、

f:id:sicklylife:20161128205624p:plain

Enable Low Graphics Mode をクリックしてチェックを入れる。

f:id:sicklylife:20161128205728p:plain

※2018年2月18日、追記。Ubuntu 16.04のUnityのバージョンがUnity 7.4.5にアップデートされ、ケース1での設定方法が廃止された模様。自動的にケース2のunity-lowgfxモードになる様子。16.04.4が出たら再度検証する予定。

ケース2

ゲストのUbuntuでCompizConfig 設定マネージャを起動して「設定」をクリック、

f:id:sicklylife:20161117204701p:plain

プロファイルを unity-lowgfx に変更*2してログアウト、ログインし直すと設定が反映される。

f:id:sicklylife:20161128202634p:plain

プロファイルを変更する方がウィンドウの影が小さくなってたりして負荷が小さい様子。

*1:3Dアクセラレーションを有効にするとゲストのUbuntuスクリーンショットが撮れなくなるので注意。

*2:3Dアクセラレーションが無効の場合は自動的にプロファイルが unity-lowgfx になっている。

VirtualBoxにUbuntu 16.04をインストールする前にやること

※2016年11月29日、ちょっと追記、ディスプレイの設定を続きの記事に移動。

Ubuntuのisoをダウンロード

Ubuntuの公式サイトからisoファイルをダウンロードする。

VirtualBoxをインストール

VirtualBoxの公式サイトからファイルをダウンロード、ダブルクリックしてインストールする(WindowsUbuntuの場合)。

Extension Packをインストール

VirtualBoxの公式サイトからExtension Packをダウンロード、

ダブルクリックするとVirtualBoxが起動するので「インストール」ボタンをクリック、

f:id:sicklylife:20161128194504p:plain

ライセンスが表示されるのでスクロールバーを下まで動かし、「同意します」ボタンをクリックするとインストールされる。

ホストOSがWindowsの場合、ここで一旦Windowsを再起動する。

仮想マシンの作成

VirtualBoxツールバーの「新規」ボタンをクリック、仮想マシンの作成ウィンドウが表示されるので、適当な名前を入力し、タイプを Linux、バージョンを Ubuntu(32-bit) または Ubuntu(64-bit)*1 にして「次へ」ボタンをクリック、

f:id:sicklylife:20161128194725p:plain

モリーサイズを適当な数値にして「次へ」ボタンをクリック、

f:id:sicklylife:20161128194847p:plain

仮想ハードディスクを追加しない*2 をクリックして「作成」ボタンをクリックする。

f:id:sicklylife:20161128194930p:plain

仮想マシンの設定の変更

作成した仮想マシンを右クリック → 設定 をクリックして設定ウィンドウを開く。

f:id:sicklylife:20161128195213p:plain

仮想ハードディスクドライブを追加

ストレージ をクリックして コントローラー:SATA をクリック、

f:id:sicklylife:20161128195316p:plain

ハードディスクの追加 をクリック、

f:id:sicklylife:20161128195421p:plain

「新規ディスクの作成」ボタンをクリック、

f:id:sicklylife:20161128195451p:plain

VDI を選択した状態で「次へ」ボタンをクリック、

f:id:sicklylife:20161128195528p:plain

可変サイズ を選択した状態で「次へ」ボタンをクリック、

f:id:sicklylife:20161128195600p:plain

任意の名前とサイズを入力して、名前欄の右側にあるフォルダーアイコンをクリック、

f:id:sicklylife:20161128195635p:plain

仮想ハードディスクファイルを置きたい場所を選択して「保存」ボタンをクリック、

f:id:sicklylife:20161128195708p:plain

「作成」ボタンをクリックする。

f:id:sicklylife:20161128195729p:plain

仮想光学ドライブを追加

コントローラー:IDE をクリックして 光学ドライブの追加 をクリック、

f:id:sicklylife:20161128195838p:plain

「ディスクを選択」ボタンをクリック、

f:id:sicklylife:20161128195903p:plain

先程ダウンロードしたUbuntuのisoファイルをクリック、「開く」ボタンをクリックする。

f:id:sicklylife:20161128195935p:plain

USBの設定を変更

USB をクリックして USB 3.0 (xHCI) コントローラー をクリックする(USB機器がうまく動作しなかった時は USB 2.0 (EHCI) に戻す)。

f:id:sicklylife:20161128200332p:plain

共有フォルダー*3を追加

共有フォルダー をクリック、フォルダーリストの 共有フォルダー を右クリックして 共有フォルダーを追加 をクリック、

f:id:sicklylife:20161128200536p:plain

フォルダーを選択し、自動マウントをクリックしてチェックを入れ、「OK」ボタンをクリックする。

f:id:sicklylife:20161128200607p:plain

最後に設定ウィンドウの右下にある「OK」ボタンをクリックすると設定が保存される。

Ubuntuのインストールを開始する

VirtualBoxツールバーの「起動」ボタンをクリックすると仮想マシンが起動してUbuntuのインストールが始まる。

f:id:sicklylife:20161128200643p:plain

↓続き

*1:64bitを選べる環境なら64bitにした方がいいかもしれない。

*2:ここで仮想ハードディスクを作成すると、WindowsではCドライブのユーザーフォルダーに、Ubuntuではユーザーのホームフォルダーに仮想ハードディスクが作成される。それらの容量に余裕があるならここで作成してもいいが、他のドライブに仮想ハードディスクを作成したい場合は、ここでは「追加しない」を選択しておく。

*3:共有フォルダーはホストOSとゲストOS間でファイルをやり取りするためのフォルダー。

Ubuntu 16.10でxkbを使ってキー配置を変更した

※2016年11月27日、ちょっと修正。

標準設定(fcitx-mozc)の場合

まず端末で、

gsettings set org.gnome.settings-daemon.plugins.keyboard active false 

と実行した後、

のページのように設定すればOK。

IBusibus-mozc)の場合

ibusの場合、fcitxの時よりもやらなければいけない事が増える。
例えば、

のページのようにibus-mozcをインストールし、

のページのように設定を行った場合、

sudo cp -i ~/.xkb/symbols/* /usr/share/X11/xkb/symbols/ 

といった感じで設定ファイルをコピーし、

echo 'mykbd:mymenu = +addmenukey(mymenu)' | sudo tee -a /usr/share/X11/xkb/rules/evdev 

のように evdevファイル の末尾に一行追加した上で、

gsettings set org.gnome.desktop.input-sources xkb-options "['mykbd:mymenu']" 

といった感じにxkbの設定を変更した後、一旦ログアウトしてログインし直すと設定が反映される。

Ubuntu 16.10でibus-mozcを使用する

※2016年11月23日、コマンドを修正。

↑の記事にあるように、現在のUbuntuのデフォルトのIMであるfcitxの仕様が変わって、ちょっとアレな感じだったので久しぶりにiBusを使用してみることにした。

まずOSDNの作業部屋、

からMozc UTをダウンロードし、端末を起動してビルドする。

#ダウンロードしたフォルダーに移動
cd ~/Downloads 
#展開
tar xavf mozc-*.tgz 
#フォルダー内に移動
cd mozc-*/ 
#ソースを修正
sed -i s/'const bool kActivatedOnLaunch = false;'/'const bool kActivatedOnLaunch = true;'/g mut/src/unix/ibus/property_handler.cc 
#ビルドに必要なパッケージをインストール
sudo apt-get install -y clang libdbus-1-dev libglib2.0-dev libgtk2.0-dev subversion tegaki-zinnia-japanese debhelper libibus-1.0-dev build-essential libssl-dev libxcb-xfixes0-dev python-dev gyp protobuf-compiler libqt4-dev libuim-dev libzinnia-dev fcitx-libs-dev devscripts ninja-build 
#ビルド開始
sudo ./build_mozc_plus_utdict 
#ビルドが終了したらビルドに使ったパッケージを削除
tail -n 5 /var/log/apt/history.log | grep Install: | sed -e s/"Install: "// | sed -e s/", automatic"//g | sed -e s/"), "/"\n"/g | sed -e s/" (.*$"/""/g | tr '\n' ' ' | xargs sudo apt-get remove -y 
#Mozc UTをインストール
sudo apt install ./mozc-*.deb ./fcitx-mozc_*.deb ./ibus-mozc_*.deb 
#↓これをしておかないとibusがうまく動かない
gsettings set org.gnome.settings-daemon.plugins.keyboard active true 

※関連:ibus-mozc の初期モードを「ひらがな」入力にする | uvirt.com
※関連:Ubuntu 14.04 LTS に Mozc UT Dictionary をインストールしてみた - 旧ID:itiriのブログ

Mozc UTをインストールしたら一旦Ubuntuを再起動する。

再起動したら、ランチャーの「システム設定」をクリックして起動、「言語サポート」をクリック、

f:id:sicklylife:20161122182505p:plain

「キーボード入力に使うIMシステム」を IBus に変更して「閉じる」ボタンをクリック、

f:id:sicklylife:20161122183042p:plain

iBusを有効にするために一旦ログアウトする。

ログインし直したらランチャーの「システム設定」をクリックして起動、「テキスト入力」をクリック、

f:id:sicklylife:20161122183411p:plain

「メニューバーに現在の入力ソースを表示」をクリックしてチェックを入れて画面右上の通知領域にアイコンを表示させ、「+」ボタンをクリック、

f:id:sicklylife:20161122184358p:plain

「入力ソースの選択」というウィンドウが開くので、検索欄にmozcと入力、日本語 (Mozc) (IBus)をクリック、「追加」ボタンをクリックする。

f:id:sicklylife:20161122184810p:plain

そのままだと全角/半角キーで日本語入力が出来ないので、「次のソースへ切り替え」の Super+Space をクリック、

f:id:sicklylife:20161122185346p:plain

新しいアクセラレーター...と表示されるので、全角/半角キーを押す。

f:id:sicklylife:20161122190047p:plain

また、好みに応じて「ウィンドウごとに異なるソースを使用」「新しいウィンドウではデフォルトの入力ソースを使用する」などに変更しておく。

ランチャーの「コンピューターを検索」をクリック、mozcと入力して「Mozc の設定」を起動する。

f:id:sicklylife:20161122190319p:plain

「キー設定の選択」の「編集」ボタンをクリック、

f:id:sicklylife:20161122190625p:plain

「コマンド」をクリックして並び替え、

f:id:sicklylife:20161122191132p:plain

IME を無効化」となっているエントリーを右クリックして削除し、「OK」ボタンをクリックする。

f:id:sicklylife:20161122191422p:plain

f:id:sicklylife:20161122191521p:plain

Alt + F2キーを押し、ibus-setupを起動、

f:id:sicklylife:20161122191726p:plain

「プロパティーパネルを表示する」を「自動的に隠す」に変更、「閉じる」ボタンをクリックする。

f:id:sicklylife:20161122191908p:plain

※ただしプロパティーパネルはしばしばズレた位置に表示されるので非表示のままでもいいかもしれない。

コレでまぁ一応は使えるようになったような気がする。iBusだとMozcの初期入力モードが「ひらがな」になっていないと何か使い辛いので、いちいちMozcのソースを修正しないといけないのが面倒というか何というか。fcitxが元の仕様に戻ってくれればいいんだけどなぁ…