Git/Mercurialを使いデスクトップとラップトップで作業する

GitやMercurialでの分散作業というのは、高度なユーザーやギークばかりでなく、多くの人にとってメリットのある手法だ。 デスクトップを母艦としてラップトップを使う人にとっては確実に意味のあることだろう。

基本的な話

まずいまいちど基本的な手法を確認しよう。 まず、基本となるリポジトリを作る。

Gitの場合

$ cd ~/Repositories/Myrepo.git
$ git init --bare
$ cd ~/Work
$ git clone ~/Repositories/Myrepo.git

Mercurialの場合yvarn

この違いは、Gitがワーキングツリーを持つリポジトリに対する同期を非推奨としていることによる。 そのため、同期するためにはベアリポジトリを作り、その上でワーキングリポジトリとしてcloneする必要があるのだ。

Mercurialの場合は特にそのような必要はなく、ワーキングツリーを持つリポジトリをcloneすれば分散作業できる。

ここでは話を楽にするためにMercurialを使おう。

デスクトップコンピュータのdragon.localホストの~/Work/Wyvarnリポジトリを作ったとする。 この作業を外で続けたくなったので、ラップトップ(knight.local)でこのリポジトリをcloneする。

$ cd ~/Work
$ hg clone ssh://jrh@dragon.local/Work/Wyvarn

Mercurialのsshアクセスはパス部が相対パスで始まっているものとみなすので注意してほしい。絶対パスで指定するためにはパス部を/ではじめる必要がある。

過酷な作業を終え、充実の成果をあげた。では家に帰ってその成果を反映しよう。

$ cd ~/Work/Wyvarn
$ hg push

続きはデスクトップで。デスクトップでリポジトリのアップデートを反映する。

$ cd ~/Work/Wyvarn
$ hg update

変更に強い構成にする

だが、実のところこのようなシステムではファイルの配置が変わったり、ファイル名が変わったり、ホスト名が変わったりするのはよくあることだ。 そのたびにすべてのリポジトリを修正するのはかなりの手間がかかる。

これにはふたつの抽象化レイヤーの導入が有効だ。

まずは、ホスト名を、そのホストに依存したものではなく、専用の固定名を与える。 ホストが少ないのであれば/etc/hostsファイルで良いだろう。

192.168.2.100          repo

多いのであれば、dnsmasqを使うと良い。

続いてリポジトリへのパスを抽象化しよう。 これは、次のようにするといい。

# mount --bind ~jrh/Repositories /mnt/repo

その上で

/home/jrh/Work/Wyvarn -> /home/jrh/Repositories/Wyvarn

のような状態にしておけばいいだろう(実体の位置を間違えないように)。

そして、ラップトップでは

$ hg clone ssh://jrh@repo//mnt/repo/Wyvarn

のようにすればいい。

Linuxデスクトップが使えないというのなら、知識を授けるのは私の使命だから

齋藤貴義さんのブログが誤謬満載だったので、突っ込んでみる。

e-Taxが使えない

そんなことはない。 実際私e-Tax使っているし。

Blu-Rayの再生が難しい

日本における法的な意味ではやや難しいが、実用的な意味ではそれほど難しくない。 日本の法的にも再生自体を禁じるものはない。 普通にlibblurayで再生もできる。

すごく単純に言えば、lubbluerayを用意しておけばmplayerで再生できる。

地上波デジタルの視聴が難しい

まぁ、それはそうなんだけれども、パソコン上でテレビを見なければならない必然性と、そもそもテレビの必要性からいってそんなに重大なことなんだろうか。 ましてLinuxerにとって。

ハイバネート設定が難しい

難しいのはディスクを暗号化した場合と、swapを切らなかった場合だ。 そうでなければインストーラがよきにはからってくれる可能性は高い。

ただし、うまく復帰できないケースはあまり少なくない。 このようなケースにおいて設定によって改善できる場合もその設定を行うのはかなり難しい。

省電力設定が難しい

メーカー製PCの場合、プリセットが充実していたりするので、多分それのことをいっているのだろう。 そんなものはないが、別に対して難しくもない。せいぜい細かに設定できる程度の話だ。

最も細かく設定できるのは恐らくKDE Plasmaだが、それでも項目自体はThinkVantageによるものと大差ない。 プロファイル切り替えに関してはアクティビティを使うのが楽。

輝度設定キーが動かない

輝度設定用のキーはXF86XK_MonBrightnessUp及びXF86XK_MonBrightnessDownとして定義されている。 XFキーが動かないというのはどういう状況なのかわからない。モダンなデスクトップを使え。

タッチパネルをオフにできない

タッチパネルをオフにする必要があるのか?タッチパッドのことか?

タッチパッドの制御に関しては、Linux版のSynapticsドライバーのほうがWindows版のものよりも細かに制御できる。 タッチパッドをオフにするためのオプションはSynapticsのみならばlibinputにすら存在する。 まだ現時点ではlibinputという選択肢はハードなので、Synapticsは単純に無効にするには

synclient TouchpadOff=1

でいい。

プリンタやスキャナの設定が難しい

最近はFoomaticも充実してきたし、特に困ることはなくなった。 以前はプロプライエタリドライバでないと動作しなかったMP630も最近はFoomaticに含まれている。 現在はPhotosmart-6620seriesでFoomatic+hplipできちんと動作している。

細かな制御、が何を意味しているかわからないが、縁無し印刷や両面印刷もできているし、ミリ単位の修正も一応できる。 インク残量もちゃんと見える。

ただし、ドキュメントスキャナに関しては、紙のサイズの自動判別ができないため、Windowsでやったほうがいい。

スマホとの同期が難しい

同期というのが何をさしているのかわからないが、特になにかができないと感じたことはない。 というか、adbを簡単に叩けるのだから簡単ではないか。それともiPhoneなのか。

デスクトップ環境のUIがイマイチなのが多い

好みの問題だと思うけれど、じゃあWindows 10のあの腐ったUIが良いのか?

私はCinnamonを使っているが、非常に快適である。何の問題もない。 KDE Plasmaは流儀が少々Windowsとは異なるが、十分なパワーがあり、使いこなすことができれば極めて快適だ。

NTFSやHFS+の書き込みに設定が要る

何を言っているのかわからない。

NTFSに関しては、普通はntfs-3gで読み書きするだろうし、設定なんか全く必要ない。 それどころか、NTFSに対する操作のためにLive Linuxを使うことすらある。

ただし、設定はいらないにしても、NTFSの操作にはやや問題はある。ファイルシステムのエラーを発生することが多いのだ。

HFS+が使えないということも聞いたことがない。

サウンドやカメラの詳細設定が難しい

最近はほとんどのサウンドカードやWebカメラが動くけど

それは嘘だ。動かないものは動かない状況は変わっていない。

だが、動くものに関しては設定というのが何をさしているのかわからないが、別に難しくもなんともない。 PulseAudioであればWindowsではとても考えられないような複雑な操作も可能だ。

もちろん、DTM用のオーディオインターフェイスのような設定は難しいが、常識的な範囲での(Windowsの一般的なユーティリティレベルでの)設定はより細かに、容易にできる。 イコライザなんかの話をしたいのかもしれないが、PulseAudio Equalizerというものがあるよ、と教えてあげよう。

Bluetoothデバイスの一部でペアリング出来ないものがある

これは経験がない。Bluetoothアダプタ自体が動作しなかったことならある。

ブラウザで閲覧できないサイトがある

UserAgentをホワイトリストで許可しているサイトの場合、推奨ブラウザでアクセスしても閲覧できない場合がある。UserAgentを書き換えてアクセスし直す必要がある。

これはLinuxの問題ではなく、サービス提供者の性悪さによる問題だし、それくらい対応しろよと思う。

IMEで良いものが少ない

Atokの大分昔のものは動くけど、基本はMozcなどで頑張るしか無い。拡張辞書必須。

現在のAtokが他と比べて快適なのか、ということ自体に疑問があるけれども、Mozcに何の不満があるのだろう。

Mozc Neologd UTまたはMozc UT2の場合、辞書の収録数はGoogle日本語入力よりも上であったはずだ。 なんならウェブ変換エンジンを利用することも可能なので、別に変換精度自体は劣るということはない。 まぁ、実際のところ語彙の問題ではなく、Google日本語入力には劣る面もあるのだが、取り立てていうほどのことはない。

最近はMS-IMEが大変に快適な変換をしてくれるように大変身したので、その意味では辛いものがあるかもしれないが。

なお、そもそもMozcはIMEではなくて、かな漢字変換ソフトウェアである。 IMEというのは、FcitxやiBusなんかのことだ。

KindleアプリのLinux版が無い

そんなことを言ったらMac版もない。

それでWINEで動かすことにどれほどの支障があるのかというのは疑問。 WINEが嫌いか?敗北感でも感じるのか?

Evernote公式アプリのLinux版が無い

公式に説明がある

つまり、公式アプリでないことをEvernote側で受け入れており、そもそも公式クライアントであることに意義はない、ということだ。

LINEアプリのLinux版が無い

wineで動かすしかない。

そもそも4.8, 4.9に関してはwineで動作させることができなかった。

Linux上でLINEを動かす方法としては、Chromeアプリ版(先があまりないが)と、libpurpleによる非公式版がある。

いずれも通話できないといった意味で完全ではないが、最低限動作はするはずだ。

画像編集ソフトが限られる

GIMPで大体のことはできるけど、PhotoshopやSketchのようなソフトは使えない

Windows向けの特定ソフトウェアが使えないことを嘆くのは不毛極まりない。

RAW現像手段も限られる。

yaourtでrawと検索すると309件、「raw image」でも43件ヒットした。

SteamがUbuntu版しか提供されていない

Manjaro Linuxではデフォルトインストールであり、PCLinuxOS及びMageiaでも導入可能。

SlackアプリがFedoraかUbuntu版しか提供されていない

AURにある。

Gitクライアントで良いものが無い

Windows版Gitクライアントは基本的にgit guiと同等のものではないか。 これが快適だとはどんなにがんばっても思えないが。

他にもまぁまぁあるが、Zshより快適なGit環境はそもそもないと思う。

入力デバイスの操作がイマイチ

全く意味がわからない。 入力デバイスの操作はハードウェア的なものでLinux関係ないと思うが。

マウス系のホイール操作はエミュレート精度が

解釈可能な日本語でお願いしたい。

ちなみに、Qt環境では驚くほど滑らかなスクロールが可能で、 さらにタッチパッドの場合はLinux版Synapticsのサーキュラースクローリングの快適さはWindowsになくて苦痛になるものの代表格だと思っている。

それともボタン3クリックの話をしているのだろうか? それであるならばArch wikiに多くの情報がある。

Cinnamon 3.0.1, Linux 4.6 RC4

Cinnamon 3

Manjaro Update 2016-04-26でCinnamonが3.0.1になっていた。リリースでは触れられていないけれど…

これで結構変わっていたので、ポイントを挙げておくと

  • ダイアログ表示がフェードイン/フェードアウトアニメーション追加
  • 警告音がぽこぽこに変更された
  • テーマ設定でコントロールがかなりの部分使えなくなった
  • Dropboxが0秒起動だとsystrayに入らなくなった
  • Mail.ruは自動起動でsystrayに入るようになった

ダイアログがフェードインするようになったのは非常にかっこいいが、Fcitxのサジェスト/プレエディットもフェードインするようになり、実用性が明らかに低下した。このあたりは開発者は意識しないのだろう。(Fcitxを使うようなことがないだろうから)

Cinnamonは機能はシンプル、特に設定項目は少ない。デスクトップエフェクトもほとんど選択できないし、ショートカットの設定も少ない。

だが、非常にツボを抑えた機能を持っている。

例えば、クイックタイルはシンプルにSuper+Cursorであり、現在位置を基準にしてタイルする。Super+Leftは非タイルなら左にタイルし、右タイルならフローティングする。

PAアプレットではサウンド出力先を一括で変更できる。この機能で変更した場合カスタマイズされた設定に戻すのが大変なので使用していないが。

他にも

  • ネットワークアプレットによる切り替え・切断が加担
  • ウィンドウのボタンは配置も任意に設定できる
  • ウィンドウコーナー機能もある
  • デスクレット機能
  • 拡張機能(ほとんど正常に動作しない)
  • 通知のオンオフ
  • サブメニューを持つsystrayアイテムはスライド式で階層化される

軽量で安定していることもあって(さらには高速でハードウェアアクセラレーションも使用することもあって)、本来はPlasmaを利用したいと思いつつ、Cinnamonから抜けられないのもこうしたことからだろう。

Linux 4.6 rc4

Linux 4.6 rc2においては、Godavariマシンでは問題がなかったものの、Nehalem-WSマシンでは

  • btrfsマウント時に大量のメッセージが表示される(RAID6のベンチマーク?)
  • シャットダウン時、dmなどが閉じられず電源停止に至らない
  • オーディオデバイスの入力が大量のノイズで埋もれる

といった問題が生じていた。

だがこれらはRC4で解決した

btrfs関連の修正も既に多く入っており、非常に期待できる。相変わらずのいい仕事だ。

Xリモートログイン

うちにある練習機は、Pentium M 1.70GHz, 512MB RAM, 40GB SATA1 HDDという非力なラップトップだ。

一方、予備環境は32GB RAMを備えるGodavariマシンなので、明らかにそれを活用するのが正しい。
ただ、デスクスペース的にGodavariマシンの前に座ることができない。

そこで、リモートデスクトップでGodavariマシンを使いたいと考えた。

XDMCP

XDMCPは、昔からある「X serverを使ってリモートデスクトップ」。

ふたつのX serversを接続し、ターゲットのX Clientが描画する領域をXプロトコルで端末へ転送する。XDMサーバーは要求・操作を仲介する。

リモートデスクトップでリモートコンピュータに「ログインしたい」場合は最も簡単な方法として「ログインする画面から画面をとばしてもらえば良い」わけで、それを実現するのがXDMCPだと考えていいだろう。

LightDMでサーバーセットアップ

ものすごく単純な話で、/etc/lightdm/lightdm.conf

[XDMCPServer]
enabled=true
port=177

のようにする。

Manjaroは標準(XFceイメージ)ではLightDMを使用する。KDEイメージはKDMなので、あまり安定していないらしい。
LightDMが最善なもよう。

クライアント

XnestかXephyr。

なぜかログインできないというトラブルが多発したが、結局はXFceならログインできた。(最初はログインできなかった)

Xephyrのほうが使いやすい印象だ。なんといってもフルスクリーンが可能(-fullscreenオプション)。また、VNCと違い、端末側が解像度を指定できるというのもメリット。

$ Xephyr -query 192.168.1.17 -screen 1920x1080 -br -reset -terminate :1 -fullscreen

LightDMセッションにおいてのみ、キーボードがUSになっていた。

遅い

リッチな環境であるVNCやRDPよりもXクライアントひとつ飛ばすだけで重いときいてはいたが、画面全体を飛ばすXDMCPだと、1GbEでも動画再生はきつい。

セキュリティ

覗かれる、という問題は、SSH経由でのXDMCPは無理なようなので、どうしようもない。

その他の選択肢

NX

良好なパフォーマンスを得る方法として、NXが挙げられている。

NXはNoMachineのFreeNXが昔話題になったが、その後の選択肢としてはGoogleのNeatX、あるいはnxagentといったところのようだ。

AURを見ると、nx-allなど、OUT OF DATEフラグが立っているがFreeNXもあるようだ。

x2go

x2goは最近話題のようだが、XとSSHということなのだろうか。

VPS相手にできるようだから、パフォーマンスは良いのかもしれない。

Waylandの場合

Waylandはこうした機能がなく、リモートレンダリングサーバーがあれば良いとしているらしい。

X.OrgをWayland上で動かせば実現するけれども、新しく作りなよ、ということらしい。

Waylandは今どうなっているのだろう。

XFceのタイル表示

どの環境も不安定な中、一番まっとうに機能するのがXFceなのだが、タイル機能が重要だ。現代的なWMならばもはや備えていて当然となっているウィンドウのタイル機能だが、気づきにくいものの、実はXFceも4.10で搭載した。

タイル方向は上下左右の4辺エッジのみ。KDEとCinnamonは隅を含む8エッジをサポートするのでそれと比べると弱い。マウスについては「マウスポインターの移動時に循環する」「ウィンドウのドラッグ時に循環する」をオフにすればできる。が、他のデスクトップ同様にデュアルディスプレイでは境界に絡むリサイズ・タイル化ができない。

ショートカットキー設定は設定マネージャーのウィンドウマネージャーの「キーボード」から可能。

これでかなり使いやすくなった。