☆EoGやgThumbではなくMirageを使う理由

今回はUbuntuで使う画像ビューアについて。
私が使っているのは Mirage http://mirageiv.berlios.de/ です。

Mirageの日本語訳は蜃気楼ですが、私はなぜかフランスの戦闘機でそんな名前のものがあったことを思い出しました。

Mirageのスクリーンショット


こちらは Eye of Gnome(EoG) http://projects.gnome.org/eog/


そして gThumb http://live.gnome.org/gthumb


Mirageを使用するようになったキッカケはMoblinですが、 EoGやgThumbより以下の点で優れていると思います。

●サムネイルがサイドに出る。(これが私にとって最大のポイント)

画面は4:3にしろ16:9にしろ横長であることに変わりがありません。
サムネイルが横に出ていた方が画像を大きく表示することが出来ます。

gThumbはサムネイル表示をする"browser window"と大きく表示する"viewer window"が完全に別です。

●画像をスペースキーやツールバーの矢印で進めて行っても先頭へWrapしない

EoGは画像を進めていくと先頭にもどってしまいます。これを制御する設定は無いようです。
(特に下部にサムネイルを表示していない状態で同じようなファイルがたくさんあるディレクトリを閲覧していると迷子になってしまいます。)

gThumbは最後の画像で止まります。これを制御する設定は無いようです。

Mirageは設定に"Wrap around imagelist"という項目があって、"No","Yes","Prompt"が選べます。

●[ファイルを開く]と[ディレクトリを開く]がはっきり分かれている

EoGは単一ファイルを選択して開いても同一ディレクトリに存在する画像ファイルがすべてサムネイル部分に表示されます。(なぜか2つ以上のファイルを指定した場合は、素のファイルだけがサムネイル部分に表示される。コマンドライン指定でも同様。)

gThumbはGUIの場合、[ディレクトリを開く] しかできないようです。コマンドラインではEoGと同じような動作をします。ただし --viewer と 単一ファイルを指定すると一つのファイルを開けます。

MirageはGUIではメニューに [ファイルを開く]と[ディレクトリを開く]が別々にありますし、コマンドラインでも単一ファイルを指定、複数ファイル指定、ディレクトリ指定ともに指定したとおりの動作をします。

その他Mirageには下記のような機能があります。
○スクリーンショットの取得
○画像編集(回転、反転、クロップ、リサイズなど)
○カスタムアクションの設定(Gimpで編集など)

改良を望みたい箇所が2点ほどあります。
○ヤシの木見たいなアイコンはちょっといただけないです。画像関連のソフトだと分かるようなアイコンに変えて欲しい。
○ターミナルから起動した場合、結構Warningが端末に出力される。どうもGTKまわりで古いAPIを使っているようです。
/usr/lib/python2.6/dist-packages/mirage.py:1934: DeprecationWarning: Use the new widget gtk.Tooltip
  gtk.Tooltips().set_tip(addbutton, _("Add action"))
/usr/lib/python2.6/dist-packages/mirage.py:1938: DeprecationWarning: Use the new widget gtk.Tooltip
  gtk.Tooltips().set_tip(editbutton, _("Edit selected action."))

ターミナルから起動する頻度が結構高いので、.bashrcに
function miragef() {
    mirage $*  2>&1 |grep -v 'DeprecationWarning:'
}
と言う記述を追加して miragef で起動してます。

☆Ubuntuの壁紙にみるアスペクト比の趨勢

Ubuntu Weekly Topics 2010年1月29日号 の記事を読んでいたら
Top 35 handpicked Ubuntu wallpapers へのリンクがあったので覗いてみました。

見ていて気になったのはアスペクト比がワイドの壁紙が多かったこと。
近頃はノートPCはすべてワイドだし、法人向を覗けばデスクトップも大抵ワイドの液晶です。

そこで壁紙を数えてみました。
ワイド:22枚に対し通常:13枚でした。
壁紙作者さん達の環境は思ったよりワイド化が進んでないように思えました。
(3対1でワイドが多いくらいかとおもってました。)

個人的には16:9の液晶は無駄に横が広い気がして好きではないのです。
どこかのメーカーが4:3で24インチ1600:1200ドットのIPS液晶を3万円くらいで
出してくれないでしょうかね。

☆moblin2.1でもsylpheed

moblin2.1をインストールしているPCはほかに普通のubuntuやubuntu NBRを導入しています。
ubuntuでメーラーをsylpheedにしているのですが、moblin2.1のリポジトリにはsylpheedがありません。
(yum search sylpheed で検索すると claws-mail というsylpeedの亜種が出てきますが、これがなぜか起動できませんでした。)

こういう場合は自前make。例によってtar.gzを下記のところへ置きました。
https://sites.google.com/site/midspeclowload/files/moblin21_sylpheed.2.7.1.tar.gz?attredirects=0&d=1

初期状態では入っていないcompfaceが必要なので

sudo yum install compface
してから上記ファイルを / 直下で展開すれば起動できます。

メール中のURLをクリックした際にブラウザを起動して閲覧できるように
するためにはパスの通ったところに sensible-browser が必要なようです。
私は下記のようにしました。

suod ln -s /usr/bin/firefox /usr/bin/sensible-browser

☆geditの代わりにgeany

私はgeditの代わりにgeany http://www.geany.org/ というエディタを使ってます。
使い出したきっかけはWinXPで作成したファイルをnkfでutfに変換したものがgeditで開けず、
往生したことです。
 スクリーンショットはこちら http://www.geany.org/Documentation/Screenshots
スクリーンショットは英語ですが、メニューはきちんと日本語が出ます。

公式ホームページでの説明は

Geany is a text editor using the GTK2 toolkit with basic features of an integrated development environment. It was developed to provide a small and fast IDE, which has only a few dependencies from other packages. It supports many filetypes and has some nice features.
GeanyはGTK2 toolkitを使ったテキストエディタで統合開発環境として基礎的な機能を持っています。小さくて速いIDEを提供するために開発され、ごく少数の他のパッケージに依存しています。多くのファイルタイプをサポートし、いくつかのすばらしい機能を持っています。

起動はとても高速でgeditと変わりません。
下部のメッセージウィンドウとサイドバーのシンポルリストを非表示にすれば
通常のエディタとして違和感なく使えると思います。

ubuntu karmicではリポジトリ(Section: universe/devel)に入っています。
moblin2.1はリポジトリになかったのでmakeしたファイルを
https://sites.google.com/site/midspeclowload/files/moblin21_geany.0.18.tar.gz?attredirects=0&d=1
におきました。(rpmの作り方がわからないのでただのtar.gzです。)

geditの代わりにgeanyを使うメリットは

  • ・不正なコードポイントが存在してもファイルが開ける
  • ・検索、置換に正規表現が使える。かっこ"()"で囲ったパターンににマッチした文字列を\1,\2で置換に使える。(個人的にこれ重要です)
といったとことでしょうか。

ちょっと変わったところでは

  • ・メッセージウィンドウの"走り書き"(Scribble)。テキストが入力できます。終了しても次回起動時に入力した内容が残ってます。
  • ・メッセージウィンドウの"端末"(Terminal) http://www.geany.org/uploads/Gallery/geany_vte.png xtermみたいなものでコマンドが打てます。通常のターミナルと同じcopy/pasteをサポートしてます。
  • ・プラグインにファイルブラウザがあります。(geditにもありますが)

☆gmrunで Ctrl+PをUp、Ctrl+NをDownキーと同じように動作させる

gmrunの履歴操作を行う際、カーソルキーのUp/Downを押そうとするとどうしてもホームポジションから右手が離れてしまい不便です。

そこでソースをいじって、キーバインドをなるべくbashに近づけないか試してみました。
今のところ私の知識ですぐに修正できたのは、表題のとおりCtrl+PとCtrl+Nだけです。

例によって環境はubuntu 910 karmic koalaです。
なぜかVersion:0.9.1-2.4ではコンパイルが通らず(引数の型に互換性がない)、0.9.1-4をしています。

今回は手抜きで作業方法は省きます。

修正対象はgtkcompletionline.ccのon_key_press関数です。
修正した後のgtkcompletionline.ccとコンパイルしたgmrunを
https://sites.google.com/site/midspeclowload/files/gmrun_0.9.1-4.mod.tar.gz?attredirects=0&d=1
に置きました。

ちなみに修正内容は下記のとおりです。

--- gmrun-0.9.1.org/src/gtkcompletionline.cc    2010-01-26 23:33:54.783042744 +0900
+++ gmrun-0.9.1/src/gtkcompletionline.cc    2010-01-26 23:58:11.000000000 +0900
@@ -970,6 +970,11 @@
       STOP_PRESS;
       return TRUE;

+     case GDK_P:
+     case GDK_p:
+      if (event->state & GDK_CONTROL_MASK) {
+        ;/* fall to 'case GDK_Up:'*/
+      } else goto ordinary;
      case GDK_Up:
       if (cl->win_compl != NULL) {
         int &item = cl->list_compl_items_where;
@@ -1005,6 +1010,11 @@
      }
      return FALSE;

+     case GDK_N:
+     case GDK_n:
+      if (event->state & GDK_CONTROL_MASK) {
+        ;/* fall to 'case GDK_Down:'*/
+      } else goto ordinary;
      case GDK_Down:
       if (cl->win_compl != NULL) {
         int &item = cl->list_compl_items_where;

☆これはお勧め gmrun

gmrunは http://directory.fsf.org/project/gmrun/ の冒頭で

'Gmrun' is a run-program utility that provides bash-like TAB completion and history, the ability to run commands in a terminal using CTRL-Enter. CTRL-R/CTRL-S may be used for history searches, similar to 'bash'.
'Gmrun'はプログラムを実行するユーティリティで、bashのようなTAB補完と履歴を提供し、CTRL-Enterを使ってターミナルでコマンドを実行できます。CTRL-R/CTRL-Sは'bash'と同じで履歴の検索に使えます。

と紹介されています。(日本語訳が間違っていたらごめんなさい)

上記には記述されてませんが、矢印キーのUp/Downで履歴を行き来することも出ます。
'http:'や'mailto:'で始まる文字列を処理するアプリケーションを指定することも可能です。
(詳しくはgmrunrcの設定で記述します。)
拡張子による処理アプリケーションの指定も可能です。

gnome,xfce,LXDEいずれもAlt+F2でコマンドラインのラウンチャーが起動しますが、
補完と履歴の両方を備えているのはgnomeのものだけ。

補完と履歴のを備えたコマンドラインベースのラウンチャーを探している方にお勧めです。
gnomeのコマンドラインのラウンチャーのような補完動作もできるのでgnomeユーザも
試してみてはいかがでしょうか。

以下、ubuntu 9.10 karmic koala を前提にして導入方法、使い方を紹介します。
(ちなみに依存するライブラリは少なく、Version: 0.9.1-2.4のバイナリをコピーしただけでmoblin2.1でも動作しました。しかし、別の投稿で記述する0.9.1-4はmoblin2.1で動作しませんでした。)

●導入

リポジトリに入っているので(Section: universe/x11)、apt-getで導入できます。
これを書いている時点では Version: 0.9.1-2.4 です。

sudo apt-get install gmrun

●設定

gmrunの設定ファイルは $HOME/.gmrunrcと /etc/gmrunrc です。$HOMEの方が優先されます。

これはちょっと長くなるので先に xfceとLXDEでデフォルトのラウンチャーと置き換える方法を先に記述します。

■xfceでデフォルトのラウンチャを置き換える場合

$HOME/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
の内容を書き換えます。(設定用のGUIもあります。)
ここではF2はそのままにして、Windows+Rにgmrunを割り当てます。
書き換え前

<property name="<Alt>F2" type="string" value="xfrun4"/>

書き換え後(上記の下に一行追加)
<property name="<Alt>F2" type="string" value="xfrun4"/>
<property name="<Super>r" type="string" value="gmrun"/>

■LXDEでデフォルトのラウンチャを置き換える場合

$HOME/.config/openbox/lxde-rc.xml
   の内容を書き換えます。(設定用のGUIは見つけられませんでした。)

書き換え前

<keybind key="W-r">
      <action name="Execute">
        <command>lxpanelctl run</command>
        <command>gmrun</command>
      </action>
  </keybind>

書き換え後
<keybind key="W-r">
      <action name="Execute">
        <command>gmrun</command>
      </action>
  </keybind>

■$HOME/.gmrunrcと /etc/gmrunrcの設定

なぜかVersion: 0.9.1-2.4のパッケージにはgmrunrcのサンプルが入っていません。
manpageは内容が古いようです。READMEは設定ファイルについての記述がほとんどありません。
(ほかにも0.9.1-2.4はapt-get source、debuildでコンパイルエラーがでるなど不備が多そうです。)
仕方がないので Version: 0.9.1-4の/etc/gmrunrcを参考にします。


# Set terminal
Terminal = gnome-terminal --start-factory-server --use-factory
TermExec = ${Terminal} -e
AlwaysInTerm = ssh telnet ftp lynx mc vi vim pine centericq perldoc man

Terminalはgmrunに何も入力されていない状態でCTRL-Enterを押した場合に起動する
ターミナルのコマンドラインを指定します。
TermExecはコマンドを入力してCTRL-Enterした場合に入力した場合の指定です。
(これはあまりいじる必要ななさそうです。)
AlwaysInTermは説明が見当たらなかったのですが、名前から推測するとENTERだけを
押下しても CTRL-Enterを押したように動作するコマンドの指定をしているようです。


# Set window geometry (except height)
Width = 400
Top = 100
Left = 200

ウィンドウの表示位置を設定します。画面のピクセル単位です。


# History size
History = 256

コマンド履歴のサイズ


# Shows last history line selected when invoked
ShowLast = 1

起動されたときに最後のヒストリを表示するかどうかを設定するようですが、
うまく動作しないようです。


# Show files starting with '.'
# Default is 0 (off), set it to 1 if you want "hidden" files to show up
# in the completion window
ShowDotFiles = 0

先頭がドットで始まるファイルを補完ウィンドウに表示する/しないを設定します。
これは1にしておいたほうがいいと思います。
(ドットで始まるコマンドはありませんが、引数に与えるファイル名としてはあるので)


# Timeout (in milliseconds) after which gmrun will simulate a TAB press
# Set this to NULL if don't like this feature.
TabTimeout = 0

何かキー入力した後に TabTimeout ミリ秒たつとタブが押下されたように補完を行います。
"0"にしておくとタブを押さない限り補完が葉たらなくなります。
"10"くらいにしておくとgnomeのラウンチャのように入力された文字列に前方一致するコマンドが
補完されて表示されます。


# URL handlers
# If the entered text is "http://www.google.com" then:
#   - %u gets replaced with the whole URL ("http://www.google.com")
#   - %s gets replaced with "//www.google.com".  This is useful for URL-s
#     like "man:printf" --> %s will get replaced with "printf"
URL_http = mozilla -remote "openURL(%u, new-window)"
URL_mailto = mozilla -remote "mailto(%s)"
URL_man = ${TermExec} 'man %s'
URL_info = ${TermExec} 'info %s'
URL_pd = ${TermExec} 'perldoc %s'
URL_file = nautilus %s
URL_readme = ${TermExec} 'less /usr/doc/%s/README'
URL_info = ${TermExec} 'info %s'
URL_sh = sh -c '%s'

URLハンドラの指定です。入力テキストが"http://www.google.com"のばあい
%uは "http://www.google.com" に置き換えられます。
%sは "//www.google.com"に置き換えられます。

私の環境では
URL_http =/usr/bin/firefox %u
URL_mailto = /usr/bin/sylpheed --compose %s
のようにしています。


# extension handlers
EXT:doc,rtf = AbiWord %s
EXT:txt,cc,cpp,h,java,html,htm,epl,tex,latex,js,css,xml,xsl,am = emacs %s
EXT:ps = gv %s
EXT:pdf = xpdf %s

拡張子による処理アプリケーションの指定です。

☆SLiMのデフォルトを前回と同じにする

SLiMを使っていて一番不便に感じるのはGDMのように前回選択したデスクトップ環境をデフォルトで起動してくれないところです。

GDMがどうやって ユーザが前回選択したWMを記憶しているか調べてみると、 ~/.dmrc に書き込んでいるようです。

SLiMでも ~/.dmrc を読み書きして、ログイン画面でF1を押さない場合(とdefaultを選択した場合)に前回選択したWMを起動するようにします。

●作成するディレクトリ、スクリプト

下記リンクのファイルをダウンロードして"/"の直下で展開します。
https://sites.google.com/site/midspeclowload/files/etc_slim_d.tar.gz?attredirects=0&d=1

ちなみに中身は下記のとおり

drwxr-xr-x root/root         0 2010-01-23 21:32 etc/slim/
-rwxr-xr-x root/root        41 2010-01-21 02:21 etc/slim/Xsession
-rwxr-xr-x root/root      2561 2010-01-23 21:32 etc/slim/SLiMXsessionrc.pl
/etc/slim/Xsessionrcは受け取った引数をそのまま/etc/slim/SLiMXsessionrc.pl
に渡して起動しているだけです。(/bin/bash -login の後ろはシェルスクリプトでないとダメなようで直接perlのスクリプトを渡すとエラーになります。)
/etc/slim/SLiMXsessionrc.pl は引数と.dmrcから /etc/X11/Xsession への引数を決定します。
(引数の指定と.dmrcに保存しているセッションの指定が異なる場合は.dmrcを書き換えます。)

●設定ファイル(/etc/slim.conf)の編集

初期状態では

login_cmd           exec /bin/bash -login /etc/X11/Xsession %session
となっている行を
login_cmd           exec /bin/bash -login /etc/slim/Xsession %session
に変更します。


2010/01/24 追記
手順が洩れていました。
上記に加えて

sessions         default,gnome,startxfce4,startlxde
となっているところを
sessions         default,gnome,xfce,LXDE
のように変更します。

使える文字列は /usr/share/xsessions ディレクトリ以下のファイル名から ".desktop"を
取り除いた文字です。



相変わらずguest-restrictedなどは起動に失敗します。
gnome-failsafeを使いたい場合は /usr/share/xsessions/gnome-failsafe.desktop の

Exec=gnome-session -f

#Exec=gnome-session -f
Exec=gnome-session-f
のように修正して(-fの前のスペースをとっています。) /usr/bin/gnome-session-f を作成し、
中身に
#/bin/bash
exec gnome-session -f
と記述します。(実行権限をつけてください)

☆そんなにお勧めできませんが、SLiM試してみませんか

SLiM とは "Simple Login Manager" の略のようです。
タイトルどおりでそんなにお勧めできませんが、GDMやKDMじゃないものを使いたい方は試してみませんか。

公式サイトhttp://slim.berlios.de/index.php 、テーマhttp://slim.berlios.de/themes01.php にあります。

ちなみに私はテーマいじってをこんなふうにしています。

●特徴

  • ・F1キーで使用するデスクトップ環境を選択できる。しかしキーボードレイアウトや言語は指定できない。
  • ・テーマに対応。テーマはごく簡単な構造。

とにかくシンプルです。

以下、Ubuntu 9.10 Karmic Koala での導入、基本的な設定方法を記述します。
ページを改めてもうちょっと便利な(.dmrcを読書きして前回の指定をデフォルトにする)変更方法を書くつもりです。
( 追加しました。SLiMのデフォルトを前回と同じにする

●パッケージの導入

なぜかKarmicのリポジトリにはslimが存在しません。jauntyやlucidにはあります。
仕方がないのでUbuntu Packages SearchのSearch package directoriesで検索します。

検索結果をたどって http://packages.ubuntu.com/lucid/slim
の下の方にダウンロード用のリンクがあるので環境にあわせてamd64かi386用のdebを入手します。

以下はi386用を前提にしてます。(amd64は使ったことがありません。)
依存しているパッケージは

libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libjpeg62, libpam0g (>= 0.99.7.1), libpng12-0 (>= 1.2.13-4), libstdc++6 (>= 4.1.1), libx11-6, libxft2 (>> 2.1.1), libxmu6, debconf (>= 1.2.9) ,debconf-2.0 
だけなので、すんなりインストールできると思います。
sudo dpkg -i slim_1.3.1-4_i386.deb
で手動インストールします。途中で使用するディスプレイマネージャを選択するようになっているのでslimの方を選択します。

ついでにログイン画面のキャプチャが取れるようにscrotを導入します。

sudo apt-get install scrot

●設定 (/etc/slim.conf の編集)

使用のために編集が必要なする項目はsessionsです。
デフォルトでは

sessions          default,startxfce4,openbox,ion3,icewm,wmaker,blackbox,awesome
となっていますが
sessions         default,gnome,startxfce4,startlxde
のように編集します。基本的に/usr/share/xsessions/*.desktop のExcec= で指定されたコマンドを記述できますが、gnome-session -f  のように引数がついているものは指定できません。
仕方がないので中に gnome-session -f  を記述したシェルスクリプトを/usr/bin/ に作成し、そのファイル名を指定します。
また、なぜか/usr/share/gdm/guest-session/Xsessionや/usr/bin/openbox-gnome-sessionは起動できませんでした。

テーマは/usr/share/slim/themes/ の下にあります。
初期状態ではdebian-moreblue,debian-moreblue-orbit,defaultの3つが存在します。
http://slim.berlios.de/themes01.php からテーマを取得したらこの下に入れます。

設定ファイル内のcurrent_themeで使用するテーマを指定します。
初期状態では current_theme debian-moreblue-orbit になっています。

ログイン画面のスクリーンショットを取得したい場合は

# Executed when pressing F11 (requires imagemagick)
screenshot_cmd screenshot_cmd scrot /tmp/slim.png

# Executed when pressing F11 (requires imagemagick) 
screenshot_cmd  scrot /tmp/slim-%F-%H%M%S.png
に変更します。コメントのimagemagickは関係なさそうです。(開発者の使用しているディストリビューションではscrotがimagemagickのパッケージに含まれているのでしょうか?)
-%F-%H%M%S を追加して一度のログインで複数枚のショットが取れるようにしています。
ファイルは所有者rootです(何せログインする前ですから)。 /tmp はスティキービットが立っているのでsudoできないユーザは消せません。これが気になる場合はディレクトリを適当に変えてください。

●操作方法

F1でデスクトップ環境の選択、F11でスクリーンショットの取得ができます。
F1を押さない場合、defaultを選択した場合は/etc/alternatives/x-session-manager のリンク先が起動されます。

もう少し詳しく説明すると、/etc/slim.confのlogin_cmdが
exec /bin/bash -login /etc/X11/Xsession %session
になっているので %session が指定されていなかったりwhichでフルパスが取得できないと/etc/X11/Xsession.d/50x11-common_determine-startupで/usr/bin/x-session-manager が起動されます。
/usr/bin/x-session-manager は /etc/alternatives/x-session-manager のシンボリックリンクです。
(ホームディレクトリに.xinitrcや.xserverrcがあるとそちらが優先されるようです。)
あとはユーザ名を入れてEnter,パスワードを入れてEnterです。認証が失敗した時のリアクションが特にないのがちょっと不親切です。

シャットダウンを行いたい場合はユーザ名をhalt、再起動の場合はrebootにしてrootのパスワードを入力するとシャットダウン、再起動ができます。
(gnomeやxfce4にログインしていれば、終了時にシャットダウンや再起動を選ぶことでrootパスワードを知らなくてもシャットダウン、再起動ができます。)

☆gnome-sudokuの不具合修正

去年の11月にtwitterでつぶやいていたgnome-sudokuの不具合について、修正パッチを公開してみます。対象はubuntu jauntyに入っているバージョン2.26.1です。(karmicの場合は下の方に補足を書いています。)
すべてのソースを理解しているわけではありませんし、すべての機能をテストしているわけではありませんが、1ヶ月以上プレイしていておかしな点は出てません。(トラッカなどは使い方がわからないので.....)

gnome本家に報告したり、ppaを作ったりするのがより正しいユーザの在り方なのかもしれませんが、なにぶんわからないことが多いので......。
パッチが危険な動作をするようなことはありませんが、適用に当たってはすべて自己責任でおこなってください。

●不具合の概要

同一の行または列に番号のコンフリクトがある場合、その後から入力した方と同じボックス(3X3の領域)の別セルに同じ数値を入力しても赤くならない。
具体例は下図。反転しているセル(中心のひとつ上)は同一ボックスに同じ数字"1"があるのに赤くなっていない。

●修正方法

patchファイルを
https://sites.google.com/site/midspeclowload/files/sudoku.py.2_26_1.patch.txt?attredirects=0&d=1
に置きました。

対象のsudoku.pyは下記にあります。pythonのスクリプト(テキストファイル)です。
/usr/share/python-support/gnome-games-data/gnome_sudoku/sudoku.py

パッチを当ててから

sudo update-python-modules gnome-games-data
としてやれば使えるようになります。

既にgnome-sudokuを起動したことがあるとエラーが出るかもしれません。
その場合はホームディレクトリにあるsudoku関連のファイルを消してやると
起動するはずです。

find ~/ -name '*sudoku*'
で出てきたディレクトリをガリッと消して問題ないはずです。(必要なディレクトリは次に起動したときにまた作られます。)自分で作ったディレクトリやファイルを削除しないように気をつけてください。

●karmicについて

karmicに入っているgnome-sudokuは2.28です。2.26と同様の不具合があります。
加えてなぜか終了時に表示される経過時間がおかしかったりします。
さらに解けているはずなのに終了のダイアログが出なかったりします。
(2.26と同じ要領で修正する経過時間の件以外は直ります。)

経過時間のほうは直せそうにないので私は手作業で2.26を入れてます。これをやるとアップデートがあった場合に適用されません。しかしjauntyを使っている間、gnomeのゲーム関連でアップデートはみたことがないので多分問題ないでしょう。

(識者の方に怒られそうです。下記の説明はかなりはしょってますが、これでわからない方はやめておいた方がいいと思います。)

要領

1.synapticのゲームのカテゴリに入っているものをアンインストール。

2.jaunty用のdebを落としてきて、arで解凍、さらにdata.tgzをtarで解凍

control.tgzのなかのpostinstallを実行。ファイルは下記から
http://jp.archive.ubuntu.com/ubuntu/pool/main/g/gnome-games/gnome-cards-data_2.26.1-0ubuntu2_all.deb
http://jp.archive.ubuntu.com/ubuntu/pool/main/g/gnome-games/gnome-games-data_2.26.1-0ubuntu2_all.deb
http://jp.archive.ubuntu.com/ubuntu/pool/main/g/gnome-games/gnome-games_2.26.1-0ubuntu2_i386.deb

3.パッチを当てる。

です。ちなみにdpkgでインストールするとupdate-managerを起動したときに
アップグレードが不完全だと怒られます。しかもディストリビューションのアップデートをしないと通常のアップデートの適用ができません。

●修正内容の説明

入力した値がコンフリクトしているとclass SudokuGridに保持しているデータ(コンフリクトチェック用のset3つと盤面対応のlistのlist)には入力値を保持せずに例外を投げます(オリジナルの107行目から始まるaddメソッド参照)。GUI上は数値が入っているので問題の現象が起ります。

そこで、コンフリクトチェック用のsetはlistに変更(当然追加はaddでなくappend)、ただし終了判定などで要素の数をチェックしていたりするので基本的に参照時はset()でset型に直して使用。コンフリクトした場合でも要素の追加を行います。(これはあちこち直します。)

コンフリクトした場合でもチェック用のリストに要素の追加を行っているので、コンフリクトチェックのメソッドで自分自身をコンフリクト判定から除外するように修正します。(オリジナルの179行目から始まるfind_conflictsメソッド)