読者です 読者をやめる 読者になる 読者になる

ひこぽんのーと

覚書と雑記です。

Marcoでworkspace毎に背景を変える方法のこと

ubuntu プログラム

ウィンドウマネージャの話です。

workspace毎に背景を変えたかった。
Compizを使えばできるけど、ヤツはあまり好みではないので、
Marcoでできないかと色々調べてみるものの、
ツールのたぐいは拾えなかった。

古い話で"Wallpapoz"なんかが出てきたけれど、
今のバージョンではそのままは動かなそう。

たまたま、Ubuntu MATE コミュニティでこんな記事を拾った。

ここにLinux Mint 17 Mateで動いたよっていうスクリプトがあったので、
参考までにダンロードして読んでみた。

仕掛けとしては2点。

  • xpropコマンドでworkspace切り替え時のイベントを拾う。
  • gsettingsコマンドを使って背景設定のプロパティ"org.mate.background"の"picture-filename"値を書き換える。

そのスクリプトを参考にWorkspace1〜Workspace4に切り替えると
背景が変わるスクリプトを書いてみた。(というよりパクリや)

#!/bin/bash
# Script to change the desktop image when switching workspaces.
# Tested on Ubuntu MATE 16.04

IMG0=/usr/share/backgrounds/mate/abstract/Flow.png
IMG1=/usr/share/backgrounds/mate/abstract/Silk.png
IMG2=/usr/share/backgrounds/mate/abstract/Spring.png
IMG3=/usr/share/backgrounds/mate/abstract/Waves.png
IMGBG=${IMG0}
xprop -root -spy _NET_CURRENT_DESKTOP | (
   while read -r; do
      DESK=${REPLY:${#REPLY}-1:1}
      if [ "$DESK" == "0" ]; then
        IMGBG=${IMG0}
      elif [ "$DESK" == "1" ]; then
        IMGBG=${IMG1}
      elif [ "$DESK" == "2" ]; then
        IMGBG=${IMG2}
      elif [ "$DESK" == "3" ]; then
        IMGBG=${IMG3}
      else
        IMGBG=${IMG0}
      fi
      gsettings set org.mate.background picture-filename ${IMGBG}
   done
   )

パスはハードコードだし、シェルとしてはいまいちかもしれないけれど、
自動起動アプリケーションに登録しておけば、
workspaceを切り替えると背景も変わることが確認できた。

あとは、画像選択とかをGUIからできるようにpythonあたりで組めば、
使い勝手は良くなるか。

エッセンスは確認できたので、今日はこれまで。

wxPythonをPython3で使えるようにするのこと

ubuntu プログラム python

Ubuntu 16.04ではwxPythonpython-wxgtk3.0の名でapt-getから標準でインストールできる。
ただし、これはpython2でしか使えない。
そもそもwxPythonはpython2用らしい。

だけれど、昨今の流れから、そろそろpython3へ移行すべきであり、
wxPythonを使って作った自作アプリも練習を兼ねてpython3化したい。
というわけで、まずは、wxPythonをpython3で使う方法を探してみた。

どうも、wxPythonには開発版としてのwxPython-Phoenixというものがあり、
こちらからファイルを取得してインストールすれば良いらしい。
インストールにはpipというpython環境用のパッケージマネージャを使う。
と、一応、wxPython本家のサイトに説明があった。

How to install wxPython - wxPyWiki

Ubuntu MATE 16.04にはpython2.7とpython3.5がインストールされていて、
pipもpython2用と3用が別々に存在する。
pipはpython2用であり、3用はpip3となる。

前置きはともかく、説明通り下記のコマンドを実行してみる。

sudo pip3 install --upgrade --trusted-host wxpython.org --pre -f http://wxpython.org/Phoenix/snapshot-builds/ wxPython_Phoenix 

ダウンロードは済むものの、pipのバージョンが古いとかで、インストールできない。
結論から言うと、この先もエラーが頻発し、ライブラリを追加しないとまともにインストールできなかった。
どうやらインストールっていっても、Windows版やMac版と違いバイナリがないため、ビルドが必要なようだ。
原因と対処法を箇条書きにするとこんな感じ。
pipを使うと毎度、40M超えのファイルをダウンロードする。
面倒なのでサイトからソースをダウンロードしてビルドコマンドを直接叩いた。

cd {ソースディレクトリ}
sudo python3 build.py build

pipのバージョンが古い

Ubuntu MATE 16.04にインストールされていたものでは古いらしい。
pipを更新するにもpipを使う。

pip3 install --upgrade pip

これで3用のpipが更新される。
しかし、ここに罠が。なんと2用のpipまで更新されてしまった。
そこで、/usr/local/bin/pipを/usr/local/bin/pip2で上書きしてお茶を濁す。
(何が原因だろう。それにこんな対処でいいんだろうか)

C++コンパイラがいない

Ubuntu MATEにはなぜかコンパイラがいなかった。
gccは用があってインストールした記憶があるが。

sudo apt-get install g++

GTKライブラリがない

GTK使ってるやろ、って思ったけど、どうやら開発用のライブラリらしい。

sudo apt-get install libgtk2.0-dev

OpenGLライブラリがない

明瞭な答えがよくわからんかったけど、これでいいみたい。

sudo apt-get install freeglut3-dev

gstreamer0.10または0.08のライブラリがない

libgstreamer0.10-devではないらしく、こっちだったらOKだった。

sudo apt-get install python-gst0.10-dev

python3用のpython-configがない

これもよくわからん話で、
たしかに/usr/binにpython-configやpython2-configはあるが、3用がなかった。
調べるとpython-devを入れると作られるとのこと。

sudo apt-get install python3-dev

GTKwebkitライブラリがない

wxWidgetのビルド時のチェックで確かにWarnningだったが、
スルーされていたのでOKかと思いきや、エラー。

sudo apt-get install libwebkitgtk-dev 

notifyライブラリがない

上と同様。Warnningが上がっていた。
エラーになるかわからないが、二度手間は嫌なのでインストールしておく。

sudo apt-get install libnotify-dev

ここまでやってようやっとビルドが通る。
ビルド完了確認ができたら、pipを使って再トライ。
もう一度、ビルドが走って待たされるけど、今度は正しくインストールできた。

確認は、下記で取れる。

python3
import wx
wx.version()

f:id:nagamitsu1976:20160617165524p:plain

余談だけど、build.pyを使ってのインストールができなかったんだよね、なんでだろう。
結果的にpipでインストールできたからいいけどさ。

あとはアプリを作って確認だ。

フォントのこと

ubuntu プログラム

IntellJの画面・エディタともにフォントが、とても見づらかったので変えてみることにした。
ついでなので、なにか良いフォントがないか調べてみた。

フリーフォントで上がってくるのはNotoフォント。

GoogleAdobeの共同開発のフォントらしい。(重要なのはそこではない)
日本語にも対応しているし、無料公開中とのこと。
むろん、文字も美麗。

というわけで、これをサイトからダウンロードしてインストールした。
インストールっと言っても、フォントファイルを所定位置にコピーして、
フォントキャッシュを更新すればOK。

cp {Notoフォント展開ディレクトリ}/*.ttf /usr/share/fonts/opentype/noto
sudo fc-cache -f -v

これでインストールできたので、あとはIntelliJなり、OS側からなり、フォントを設定してやれば良い。
Notoフォントも多言語分すべてインストールすると量があるが、
日本語フォントとして選ぶのは「Noto Sans CJK JP」。
また、日本語の固定幅フォントは「Noto Sans Mono CJK JP」。
あとは好みの太さを選べばよい。RegularとかMediumとか。
Ubuntu MATEのUIフォントを変えるのだとこんな感じ。
f:id:nagamitsu1976:20160617155123p:plain

とまあ、ダイアログやブラウザなんかはこれで良かったのだけれど、
エディタや開発ツールでソースを読む際には、どこか見にくさを感じた。

Windows使用時のエディタフォントはFixedSys一筋だったので、
それっぽいのがあればと探したところ、
良いフォントが見つかった。

その名もRictyDiminishedフォント。プログラム専用フォントときた。

これがすこぶるいい。
英字だけではなく、日本語にも対応しているのが良いし、
英字のi/I(アイ)/l/L(エル)/o/O(オー)/数字の0(ゼロ)/1(イチ)などが視認しやすいよう
加工されているとのこと。

世の中、進んでますねぇ。

エディタのこと

ubuntu

エディタといえば、秀丸、Sakuraエディタが手に馴染んでいるが、
Ubuntuでは当然、これらは使えない。(wineを使って、というのもないわけではないが)

Unix/Linuxには昔からのvi, emacsがあるからか
秀丸やSakuraエディタなどのような、
シロートにもやさしい高機能エディタはとんと見かけない。

なにかないものかと探したら、
gitHub発のエディタAtomなるものがあるそうな。
早速入れてみた。

sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update
sudo apt-get install atom

当然、英語なのだが、日本語化も可能なので、
カスタマイズも行う。

カスタマイズについては下記を参考にした。
Github製エディタ「Atom」のカスタマイズ7選|やぶらぼ

起動画面はこんな感じ。
シンプルでなかなかよさげ。
OS付属のエディタよりは使いやすいかな。
f:id:nagamitsu1976:20160519145016p:plain

最近開いたファイルを無効化する方法

ubuntu

Ubuntuではシステム設定のプライバシーポリシーから
ファイルの参照履歴を記録しないように設定ができるが、
Ubuntu mateではプライバシーポリシーの設定画面がない。

したがってコマンドで対応するしかないようだ。
原理としてはrecently-used.xbelに履歴が記録されるので、
このファイルが変更されないようにブロックすれば良いらしい。

cd ~/.local/share
cat /dev/null > recently-used.xbel
sudo chattr +i recently-used.xbel 

戻すには

sudo chattr -i recently-used.xbel

とやる。

参考文献

Synapticパッケージマネージャのインストールについて

ubuntu

Ubuntuには大抵インストールされていると思ったが、
Ubuntu mateにはインストールされていなかったので、
改めてインストールした。

コマンドをメモしておく。

sudo apt-get install synaptic apt-xapian-index 
sudo update-apt-xapian-index -vf

apt-xapian-indexをインストールしないとクイック検索が表示されない。

keymap定義のこと

ubuntu

今のPCでは、いわゆる106/109日本語キーボードを使っていない。
PowerMac G3なんかに付属していた古いUSBキーボードを使っている。

Ubuntu/Windowsともに、不自由はあまり感じないのだが、
ボリューム調整のキーとか、ディスクイジェクトのキーが効かなくて困ることが稀にある。

Ubuntu Mateをインストールしたら、このキーが効かなくて少しさみしかった。
そこで、キーボードのキーコードを調べて、機能を割り当てる方法を調べたので書いておく。

キーコードを調べる

xevコマンドを実行すると、キーイベントのモニタリングができるので、これを活用する。

.Xmodmapファイルを作る

ホームディレクトリに.Xmodmapというファイルを作る。
内容は下記のような具合に記述する。

keycode 122 = XF86AudioLowerVolume
keycode 123 = XF86AudioRaiseVolume
keycode 121 = XF86AudioMute
keycode 169 = XF86Eject

.profileにコマンドを追記する

.Xmodmapファイル作成後にxmodmapコマンドを実行して.Xmodmapファイルを読みこませればOK。
.profileにコマンドを追記しておけば、ログイン後に自動で実行される。

# modify keymap
xmodmap $HOME/.Xmodmap
参考文献

Apple Keyboard - ArchWiki