[ubuntu] フォルダを開くアクションでNautilusが起動しない問題の対処


chromeでダウンロードしたファイルの場所を開きたい場合や、gnome shellなどでフォルダアイテムを検索してクリックしたときにNautilusではなくテキストエディタやメディアプレイヤーの類が起動してしまう場合があります。

原因はよくわからないのですが、mimeapps.listの設定が破損して発生するようです。

解決するには以下のようにします。

$ locate mimeapps.list

上記コマンドを実行するとmimeapps.listがいくつか出てきますので、それらの内容を確認します。

inode/directory=(何らかのアプリ.desktop)

という項目がどこかにありますので、それを削除してやるとフォルダを開くときにNautilusが起動するようになります。

 

Ubuntu 11.10でフォントのサイズが変更できなくなった問題の対処


Ubuntu 11.10がリリースされたので、勢いで手持ちのPCを全部アップグレードしてしまいました。

そして気づいたのが、「外観の設定」でシステムフォントサイズが変更できなくなったということです。これは困った…。中途半端(または変態仕様)な解像度・DPIのマシンではフォントサイズの変更ができないと実用に耐えません。

早速解決策を調べてみました。gnome-tweak-toolを使用すると変更できるようです。

以下のコマンドにてインストール:

そして起動

これでフォントサイズが変更できます。助かりました。

追記 2011-11-22

上記のようなフォントの変更に加えてUnityのさまざまな機能をカスタマイズするmyunityというツールが公開されているようです。こちらの記事で紹介されています: http://ubuntuyome.blogspot.com/2011/11/omg-ubuntu-unity-myunity.html 

ソフトウェアソースにppa:myunity/ppaを追加してMyUnityをインストールすると使えるようです。

また、上記の記事で言及されているようにイタリア語のUIとなっていて、私にはさっぱり解読できませんでした orz

近日中に英語に対応されるということなので期待です。

[Ubuntu] Bansheeが出す邪魔な通知ポップアップを消す


Ubuntu 11.04において、Bansheeは標準の音楽プレイヤーです。再生機能的にはSMPlayerやVLC Playerのほうが好きなのですが、ライブラリ管理とインターネットラジオ再生のためにアプリケーションを切り替えるのが面倒なのでBanshee一本で過ごしています。

Bansheeを使っていて、私にとって致命的な問題が一点ありました。それは、音楽トラックが変わるたびに通知ポップアップが出てきて非常に鬱陶しいというか、作業に支障が出るくらい邪魔なことです。

通知を出さないというオプションも見つからずネットをさまよっていたところ、有効な対策が見つかりました(参照:http://askubuntu.com/questions/33946/disable-notifications-on-track-change)。手順を要約すると以下のようになります。

まず、「編集」→「設定」→「拡張機能」で「通知領域アイコン」を有効にします。これだけではアイコンが出てこないので以下のコマンドでホワイトリストに登録します。


gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Mumble', 'Wine', 'Skype', 'hp-systray', 'banshee']"

そして、一旦ログアウトして再度ログイン。Bansheeを起動すると通知領域アイコンが出ますので、それを右クリックすると「通知を表示する」のチェック項目がありますのでチェックを外します。

これで通知が出なくなり、快適に作業ができます。

 

 

 

Ubuntu使いの私が、いつも使っているアプリを20個晒してみる


私は6年ほど前に、いつも使っていたWindows PCのハードディスクが壊れリカバリ不能となって以来、DebianやUbuntuを使うようになりました。私の場合、PCの使用用途はソフトウェア開発が70%で20%が事務作業、10%がプライベート利用です。

現在の環境はThinkPad T510やX200sにUbuntu 11.04を入れ、Unityデスクトップを使用しています。Windowsは一応デュアルブートで残してありますが、ゲームをするときしか起動していません。

そんな私が常用しているソフトをご紹介します。

LibreOffice

CalcやWriterをよく利用します。自分だけが参照する設計書などはemacsのorg-modeで記述するので、Writerは外部提出用の書類作成のために利用します。Calcはデータ分析などのとき、普通にスプレッドシートとして利用します。MS Officeと比較すると、Writerのアウトライン編集機能が弱い以外にはあまり不満はありません。

Emacs23

プログラムやテキストの編集に留まらず、翻訳、辞書、シェル、Twitter、メモ、Webブラウザとして私には無くてはならない存在です。近年では表示フォントの取り扱いが改良され、見た目や見易さが向上して快適になってきています。

Gnome端末

説明不要と思いますが、標準でインストールされているターミナルエミュレータです。私は複雑なシェル作業はEmacsのshell-modeで行うので、使用頻度はそれほど高くありません。

Chromium

Chromeのオープンソース版。普通にChromeとして使えているのでChromeはインストールしていません。

Eclipse

デファクトスタンダードのJava開発環境ですね。現在公式リポジトリからインストールされるのはGALILEO(3.5)です。少々古いですが、とくに不便も無いのでそのまま使っています。ほぼAndroidの開発のために使用しています。バージョン管理にはEGitとSubclipse、タスク管理にはMylyn+Redmineを使用。

Thunderbird

私はすべてのメールをGmailに一本化しています。しかし、最近Web版が重くなって使い辛いので、Thunderbirdで読み書きすることが増えました。

Skype (beta)

仕事の打合せなどに活躍。betaではありますが、普通に使っているぶんで問題が起きたことはありません。

HPLIP

HP製プリンタのオープンソースドライバ。うちのプリンタはワイヤレス複合機のHP Photosmart Wireless B110aです。ワイヤレスで印刷やスキャンが実行できて便利です。

GIMP

Unityのグローバルメニューと相性が良いですね。画像処理全般で大活躍です。

Inkscape

アプリのアイコンや画面部品のデザインに利用します。

Blender

3Dモデリングでアイコンや画像素材を作成するときに利用します。

dvgrab

IEEE1394接続にてビデオを取り込むときに利用します。後述のKinoでもGUIで取り込みできますが、取込中にGUIがハングアップして以来、このコマンドで取込を行うようになりました。

$ dvgrab –autosplit –format raw –timestamp

ビデオを先頭まで巻き戻してから上記を実行すると、自動的に取込を行い、シーンごとにファイルを分割してくれます。ファイル名にはタイムスタンプをつけてくれるので、大量に取り込むときに便利です。

Kino (動画編集)

前述のdvgrabで取り込んだdv形式ファイルを繋いでエンコードしなおすときに利用しています。私はあまり複雑な編集は行なわないので機能は十分です。

Sound Juicer

音楽CDをmp3やoggとして取り込むときに利用します。

Brasero

CDやDVDのコピーやisoイメージの書き込みのために利用します。

Banshee

Ubuntu 11.04では標準の音楽再生・管理アプリケーションです。インターネットラジオと、取り置きしているNHKの語学講座の試聴のために利用しています。語学コンテンツは細かい早送りや巻き戻し、ABリピート、再生スピード変更が可能なSMPlayerのほうが向いていますが、ついついBansheeで済ませてしまいます。BansheeにSMPlayer並みの再生機能を追加してほしいものです。

Freemind

ブレインストーミングなどを行うときに利用するマインドマップツールですが、Linuxでは日本語入力時の操作性が悪く(日本語入力モードを維持してくれないので、何度も半角/全角ボタンを押さなければならない)、思考が停止してしまうのでこれを使用するときはVirtualBox内でWindowsを起動してWindows版のFreemindを利用しています。ちなみにこの問題は他のマインドマッピングツールでも同様に発生します。

Dropbox/Ubuntu One

Dropboxで作成中の文書ファイルや、設定ファイルの同期を行なっていましたが、最近は無料容量が5GBで使い勝手も向上してきたUbuntu Oneのほうがメインになりつつあります。Ubuntu Oneでは全てのマシンのDocumentsフォルダが同期されているので、気分によってマシンをかえて作業するときにも、そのまま別のマシンを起動するだけなので便利です。

Evernote

PCではWeb版だけしか使っていませんが十分役にたっています。外出時にはAndroid用のEvernoteを利用します。

そのほか

必要なアプリはだいたいプレインストールされているし、入っていなくてもソフトウェアセンターですぐに見つかるので事前に意識してインストールすることはありません。新しいOSや新しいマシンを導入したときは、必要なときに探してインストールする、という運用方針です。それよりEmacsやRails開発の環境設定のほうが面倒かも…。

無料でこれほどの環境を提供してくれるオープンソースコミュニティに感謝です。

GTK版Eclipseのツールチップが見づらい問題を解決する


Linux上のEclipseで開発をしているときに困る事の一つが、ツールチップの背景が黒くなってJavaDocなどのポップアップが非常に見づらくなることです。最近のUbuntuはテーマのほとんどでツールチップが暗い色なので問題に遭遇することが多くなりました。Eclipseはツールチップが暗い背景になっている場合の考慮がされていないようです。

普通のUbuntuであれば「外観の設定」でツールチップの色を変更するだけで解決します。

xfceなどはツールチップの色をGUIで変更する手段が見当たらないので、gtkrcを変更して、ツールチップを明るい背景に暗い文字という設定にする必要があります。使用しているテーマによって場所が異なりますが、/usr/share/themes/greybird/gtk-2.0/gtkrcのような場所に存在します。locateコマンドで探してみてください。

該当するファイルを以下のように修正します。

2011年10月14日追記: Ubuntu 11.10にアップグレードしたところ、「外観の設定」で変更できなくなってしまいました。しかし、以下のファイルを直接編集すれば修正できました。
/usr/share/themes/Ambiance/gtk-2.0/gtkrc または /usr/share/themes/Radiance/gtk-2.0/gtkrc

[Android] 独自のボタンスタイルを定義する


Androidアプリの開発において、きめ細かなUIを提供するためには独自のルックアンドフィールを持つUI部品の提供は欠かせません。もちろん、OSが提供する標準部品を活用することは前提ですが、Androidではあまり幅広い要件をカバーできるようなUI部品の提供が行われていないのも現実です。

今回はボタン(android.widget.Button)の見た目をカスタマイズする方法をメモします。

準備するもの

  • 通常、フォーカス、クリック時の画像
  • 画像のセレクタ (res/drawable/hoge_selector.xml)
  • ボタンのスタイル (res/values/styles.xml など)
  • そしてスタイルを適用するボタン自身
順に見ていきます。
通常、フォーカス、クリック時の画像。9patchを使用して伸縮しても見た目が悪くならないよう調整しておきます。フォーカス時の画像は、フォーカスが当たっている間表示されますので、それなりに見やすい色になるよう配慮します。クリック時の画像はタップしたときの一瞬しか表示されないので派手めにしたほうが分かりやすいでしょう。
画像のセレクタは、ボタンの各状態ごとに使用する画像を定義します。以下のように作成します。
[res/drawable/flat_button_selector.xml]

ボタンのスタイルは、スタイルを適用するボタンのstyleプロパティで参照します。スタイルは以下のように作成します。

[res/values/styles.xml]

ここまで準備できたら、実際のレイアウトファイルに適用してみます。貼りつけたボタンのプロパティ”style”を設定するとプレビューの見た目も変わります。

そして、実行。
device-2011-07-30-195926

EditTextにカスタムInputFilterを適用して入力値の制限を行う


EditTextで入力できる文字の種類や書式を制限したい場合、android:inputType属性を使用すれば大抵の場合は用が足ります。(ちなみにinputTypeの種類についてはこちらに便利な情報がまとまっています)。inputTypeで実現できないような入力制限を行いたい場合にはInputFilterを使用します。

今回、時刻入力フィールドにての入力は0〜59とする、といった制限が必要になったので、ちょっと調べてみました。

以下のようなEditTextを例にとって説明します。

そして、InputFilterを以下のように実装します。

そして、EditTextにフィルタを設定してあげます。

ちなみにこんな感じの画面で使っています。

nVidia搭載マシンでUbuntu 11.04+Chromiumがモッサリするのを解決する


私はT510にUbuntuを導入し、1年以上ソフトウェア開発業務の第一線で使用しています。

今回の11.04もすぐにアップグレードしました。ちなみに私はUbuntuが提供するアップグレード機能は利用せず、2個あるOS用パーティションの片方に新規インストールして/homeパーティションをマウントしなおす方法で行います。この方法だと、新旧バージョンの設定ファイルの違いでハマることが多いので、実はおすすめできません…。

それはともかく、11.04へのアップグレードは、T510/T410/W510ユーザーは気をつけたほうが良さそうです。しばらくして気づいたのですが、chromiumがもっさりしています。起動直後は爆速なのですが、サスペンド&リジューム後に必ず現象が発生します。

もっさりに耐えられず、しかたなくFireFoxを使っていたのですが、今度はFireFoxがバージョン5に更新されてからEvernoteのアドオンが利用できなくなりました。これでは私にとってメインブラウザ不在という状態になり、業務に支障をきたすようになってしまいます。しばらくのあいだUbuntu 10.10に戻すか、Windows環境に避難するか悩んでいるところです。

追記: nVidiaのプロプライエタリドライバの利用をやめたらchromiumのもっさりが解消しました。ドライバのバグでしょうか。Unityも使えなくなりますが、仕方がないのでクラシックモードで使っていこうと思います。

追記: Linuxカーネルの問題である可能性についての指摘を発見しました。chromiumプロジェクトにも同様の情報がありました。

追記:解決編

ハイパースレッディングの設定をサスペンド時にoffにしてからレジューム時にonにすると解決するようです。

/etc/pm/sleep.d/10_hyper-threading のような名前で、以下の内容のスクリプトを作成します。

sudo chmod +x /etc/pm/sleep.d/10_hyper-threading で実行属性を付けておきます。 そして、サスペンド&レジューム…Chromiumが爆速のまま動作してます。よかった!

Linux上のEclipse+ADTでプロパティが編集できない問題の対処法


私は主にUbuntu環境でAndroidアプリを開発しています。

しかし、Linux(GNOME)版Eclipseにはバグがあるらしく、プロパティエディタで[…]というボタンがマウスクリックに反応しないために手書きでプロパティを記入する必要があります。画面数の多いアプリを開発する際には作業効率に大変な影響を及ぼすため、日々ストレスを感じていました。(この問題だけのためにWindows環境への移行を何度も検討しました)

本日この問題を解決する手順がわかったので、ここにメモしたいと思います。手順は醜いですが簡単です。

プロパティ編集画面

編集したいプロパティをクリックしてから、Tab→Spaceの順にキー操作するとダイアログがポップアップします。

ネタ元: Stack Overflow

AndroidアプリをProGuardで難読化する


Android Marketでアプリを公開するにあたって、逆コンパイルなどによるプログラムの解読を防ぎたい場合があります。その目的としては、ライセンス認証やセキュリティに関わる処理の内容を第三者に知られにくくしたいといった場合や、一部ジャンルのゲームなどのようにプログラムの解析によって著しくコンテンツの価値が下がってしまう場合の対応策として利用することなどが考えられます。

Androidアプリを難読化するためのツールとしてはProGuardが利用できます。これは最新のAndroid SDKには含まれていますので、現時点でアプリを公開している方は簡単に導入することができます。

ProGuardに関するAndroid Developers公式サイトのドキュメントはhttp://developer.android.com/guide/developing/tools/proguard.htmlです。

手順を要約すると以下のようになります。

ProGuardを有効にする

プロジェクトルートにProGuardの挙動を設定するためのproguard.cfgを作成します。最新のSDKで新規プロジェクトを作成すると自動的に作成されます。

デフォルトの proguard.cfg の内容:

そしてプロジェクトのルートディレクトリに、ant.propertiesを以下の内容で作成します。(以前はdefault.propertiesでしたがAndroid SDK r14から変更となりました)

準備ができたら、ant releaseまたは、eclipseによるエクスポートウィザードでリリースを行うと自動的に難読化が適用されます。デバッグビルドの場合は難読化は行われず、通常のビルドが行われます。

antビルドの場合はout.dirのディレクトリの下のproguard、そしてeclipseの場合はプロジェクトルート直下のproguardディレクトリに難読化処理の結果が保存されます。保存された内容は、アプリの強制終了などのときにユーザーからレポートされるスタックトレースの解析に利用しますので、リリースの都度保管しておく必要があります。