UbuntuのUnityで、メニューをアプリケーションウィンドウに表示させる


UbuntuのUnityインターフェースでは、アプリケーションのメニューが、グロー
バルメニューバーに表示されます。(ちょうどMacintoshのような感じです。)

これはこれで、慣れてしまえば便利なのでしょうが、メニューを各アプリケー
ションのウィンドウに表示させたい、という根強いニーズがあるようです。

私の場合、WindowsマシンのVMWare Player上で、Ubuntuを実行しています。通
常は、VMWareの「Unityモード」(ややこしいのですが)を使って、Windowsのデ
スクトップ上にLinuxアプリのウィンドウを個別に表示させています。この際に、
アプリケーションのウィンドウにメニューを表示させる必要があります。

VMWare Playerのリリースノートを見ると「既知の問題」として、このことが記
載されていました。対処法としては「UbuntuのAPPMENU(グローバルメニュー)を
disableすると、アプリケーションウィンドウにメニューが表示されるようにな
るぞよ」と書いてありました。

というわけで、前置きがとても長くなってしまいましたが、グローバルメニュー
を禁止して、アプリケーションのウィンドウにメニューを表示させる方法を調
べをみました。

以下のページにUnityのグローバルメニューを禁止する方法が説明されていまし
た。

Disable The AppMenu (Global Menu) In Ubuntu

詳しくはこれを読んでいただくこととして、大きく2つの方法があります。

1つは、「環境変数UBUNTU_MENUPROXYに0をセットして、アプリケーションを起
動する」という方法です。アプリケーションは、この環境変数を見て、メニュー
をどこに表示するかを決めているようです。(というか、不評であることを想定
して、このような隠し機能を用意しているのでしょう:-)

もう1つは、グローバルメニューの処理を行なうパッケージを抜いてしまうとい
う方法です。


$ sudo apt-get remove appmenu-gtk appmenu-gtk3 appmenu-qt indicator-appmenu

環境変数UBUNTU_MENUPROXYを設定する方法をとることにしました。ファイル
/etc/X11/Xsession.d/81ubuntumenuproxyにexport UBUNTU_MENUPROXY=0
と書いておけば、すべてのアプリケーションで、メニューがアプリケーション
ウィンドウに表示されます。


sudo su
echo "export UBUNTU_MENUPROXY=0" > /etc/X11/Xsession.d/81ubuntumenuproxy

これで、(VMWare Playerの)Unityモードで、Windowsデスクトップに、Linuxの
ウィンドウを表示する際にも、ちゃんとアプリケーションのメニューが表示さ
れるになりました。めでたしめでたし。

「初めてのPerl 第6版」が7月25日に発売されます


7月25日に「初めてのPerl 第6版」が発売になります。

昨日,オライリージャパン様から見本が届きました。

初めてのPerl 第6版

「初めてのPerl 第6版」はその表紙の絵から「リャマ本」とも呼ばれ,Perlの入門書の定番として親しまれてきました。

今回出版となる第6版は,Perl 5.14に対応しています。オライリージャパンのページでは,目次が公開されていますので,ご覧ください。

またアマゾンでも予約受け付け中です。

Ubuntu 10.10から12.04LTSにアップグレードしました


デスクトップマシンとノートPCでは、Windows上で、仮想マシンとしてUbuntuを
動かしています。仮想化ソフトとしてVMWare Playerを使い、その上でゲスト
OSとしてUbuntu Linuxを動かしています。

これまでは、Ubuntu 10.10というかなり古いバージョンを使っていましたが、
先日、さくらVPS上のサーバをUbuntu 12.04LTSにアップグレードしたので、そ
れに合わせて、デスクトップとノートPCのUbuntuも、12.04LTSにアップグレー
ドしました。

アップグレードの際に、いろいろとハマったので、作業内容をメモしておこう
と思います。

これまでに使っていたのは次の組み合わせでした。

VMWare Player 3.1.6
Ubuntu Linux 10.10

1. VMWare Player 4.0.4にUbuntu 12.04LTSを新規インストールしてみる(失敗)

まず最初に、VMWare Playerを最新バージョンの4.0.4にアップグレードしてか
ら、Ubuntu 12.04LTSを新規インストールしてみました。

Ubuntu 12.04LTSはまったく問題なくサクっとインストールできました。

しかし、VMWare Player 4系列には、Unityモード(これはVMWareの機能で、
Windowsのデスクトップ上に、Linuxのウィンドウを表示するというもの)で、ウィ
ンドウを最小化してから再表示させると、勝手にリサイズされてしまい、幅が
数十ピクセル、縦が画面の高さになる、というバグがあり、最新版の4.0.4でも
直っていないことが判明しました。

このバグは、VMWareのサポートフォームにも報告されているのですが、未対応
のままのようです。

VMware Communities: Terminal size changes in VMWare Player 4 Unity mode

私は、(VMWare Playerの)Unityモードを主に使っているので、これでは使い物
になりません。ですから、VMWare Playerの4.0.4はあきらめて、3.1.6に戻すこ
とにしました。

2. VMWare Player 3.1.6にUbuntu 12.04LTSを新規インストールしてみる(失敗)

VMWare Player 3.1.6で、Ubuntu 12.04LTSを新規インストールしてみたところ、
うまくインストールできませんでした。おそらくX-windowの設定でひっかかる
らしく、インストール作業が途中で止まってしまいます。その状態で、リブー
トすると、コンソールモードで止まってしまってX-windowが起動されません。

3. VMWare Player 3.1.6で、Ubuntu 10.10から12.04LTSに順次アップグレードする(成功)

最後の手段として、VMWare Player 3.1.6のままで、現状の10.10を12.04LTSへ
とアップグレードすることにしました。

実際には、10.10から11.04、11.04から11.10、11.10から12.04LTSと3回に分け
てのアップグレードが必要となりました。デスクトップ版のUbuntuでは、アッ
プデートマネージャからGUIベースでアップグレードを実行できるので簡単です。

実際には、途中でときどきダイアログが表示されるので、まったく自動という
わけではありません。例えば、/etc以下のファイル設定をいじっていたりする
と、いちいち「上書きする? それとも前の設定を残す?」と聞かれたりします。

結構時間がかかりましたが(1回のアップグレードで1時間はくらい)、何とか
Ubuntu 12.04LTSにアップグレードすることに成功しました。実は、X-window回
りで、一部妙な動きをするところがあるのですが、実用上は問題ないので、良
しとしました。

これまでに使っていたUbuntu 10.10は、2010年10月にリリースされて、今年の
4月までサポートされていました。しかし、サポートされているとはいえ、ソフ
トウェアがバージョンアップされるわけではないのですね。例えば、10.10では
Emacsはバージョン23.1.1なのに対して、12.04LTSでは23.3.1になっています。

というわけで、サーバ(さくらVPS)とOSのバージョンが一致して、Emacsも新し
くなったので、作業がしやすくなりました。めでたしめでたし。