SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|

2009-01-18(Sun) 大当たり

  いきなり、次期サーバにミソがつく。

  それとも、SD15なら、問題ないのか? 今回の不具合の説明は、極めて曖昧で困る。

  画像の説明

  ま、再起動なんて、年数回だから、発現する可能性は極めて低いだろうけどさ……。


2009-01-27(Tue) Fedora9、端末チューン++

  最近、仕事が忙しさに比例して、開いている端末画面の数が増加の一途である。ウィンドウを3枚に、各々、タブが8個くらいが平均だ。Windowsを捨て、Linux上で仕事をするようになったからか、どうかはわからんけども、仕事中のストレスが減ったことは、確実に実感している事実である。

  で、ちょっと時間に余裕があったなら、もっとストレスを減らして、仕事の効率を上げるための作業を行い、やがてくる高負荷時のスループットを少しでも上げる算段をするのである。

  というわけで、以前にクローズボタンを「バカ」に改造した、gnome-terminalのタブを、さらに小改造するのであった。

  ちなみに、クローズボタンの「バカ」化は、個人的にかなり有用であった。なにせ、平均して一日に一度くらいは、ミスクリックしているからね。

  で、今回のお題は、タブの表示。gnome-terminalのタブには「ユーザ名@ホスト名:ディレクトリ名」が表示されるので、とても識別が容易なのだが、タブを8枚も開くと、ユーザ名しか見えなくなって困るのである。オイラ的には、せめてホスト名の頭が見えると助かるのだ。

  つーわけで「フォントを小さくする」というパッチを組むことにする。

  実は、ついでにクローズボタンを無くしてしまうことを試したのだが、どうもボタンは、タブの「柱」の役割をしているらしく、単純にクローズボタンをなくすと、タブの高さがペッタンコになってしまうようだ。そこで、プロファイル(画面色やフォント設定)を切り替えるボタンに流用するのである。ほれ、昔から「立ってる柱はボタンでも使え」というではないか。

  もー、面倒なので、手順だけ垂れ流す。ついでに、2.22.2にバージョンアップだ。

# wget http://mirrors.nl.eu.kernel.org/fedora/updates/9/SRPMS.newkey/gnome-terminal-2.22.2-1.fc9.src.rpm
# rpm -ivh gnome-terminal-2.22.2-1.fc9.src.rpm
# rpmbuild -bp /usr/src/redhat/SPECS/gnome-terminal.spec 
# cd /usr/src/redhat/BUILD
# cp -r gnome-terminal-2.22.2 gnome-terminal-2.22.2.org
# cp -r gnome-terminal-2.22.2 gnome-terminal-2.22.2.my
# cd gnome-terminal-2.22.2.my
# vi src/terminal-window.c
 
※以下のdiffに相当するパッチを当てる
 
# cd -
# diff -r -U 3 gnome-terminal-2.22.2.org gnome-terminal-2.22.2.my > ../SOURCES/gnome-terminal-mytab.patch
# cat ../SOURCES/gnome-terminal-mytab.patch
diff -r -U 3 gnome-terminal-2.22.2.org/src/terminal-window.c gnome-terminal-2.22.2.my/src/terminal-window.c
--- gnome-terminal-2.22.2.org/src/terminal-window.c	2009-01-27 19:06:03.000000000 +0900
+++ gnome-terminal-2.22.2.my/src/terminal-window.c	2009-01-27 19:32:20.000000000 +0900
@@ -1367,14 +1367,24 @@
 }
 
 static void
-close_button_clicked_cb (GtkWidget *widget, GtkWidget *screen)
+close_button_clicked_cb (GtkWidget *widget, TerminalWindow *window)
 {
-  GtkWidget *notebook;
-  guint page_num;
+  GList *profiles;
+  GList *prof0;
+  GList *prof1;
 
-  notebook = gtk_widget_get_parent (GTK_WIDGET (screen));
-  page_num = gtk_notebook_page_num (GTK_NOTEBOOK (notebook), screen);
-  gtk_notebook_remove_page (GTK_NOTEBOOK (notebook), page_num);
+  profiles = terminal_profile_get_list ();
+  prof0 = profiles;
+  prof1 = profiles; prof1 = prof1->next;
+  while (prof0 != NULL)
+    {
+      if (prof0->data == terminal_screen_get_profile (window->priv->active_term))
+        break;
+      prof0 = prof0->next; prof1 = prof1->next;
+    }
+  terminal_screen_set_profile (window->priv->active_term, prof1 ? prof1->data : profiles->data);
+
+  g_list_free (profiles);
 }
 
 static void
@@ -1408,6 +1418,7 @@
 contruct_tab_label (TerminalWindow *window, TerminalScreen *screen)
 {
   GtkWidget *hbox, *label, *close_button, *image;
+  PangoAttrList* attrs = pango_attr_list_new ();
 
   hbox = gtk_hbox_new (FALSE, 4);
 
@@ -1416,6 +1427,10 @@
   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
   gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
 
+  pango_attr_list_insert (attrs, pango_attr_scale_new (PANGO_SCALE_X_SMALL));
+  gtk_label_set_attributes (GTK_LABEL (label), attrs);
+  pango_attr_list_unref (attrs);
+
   close_button = gtk_button_new ();
   gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE);
   gtk_button_set_focus_on_click (GTK_BUTTON (close_button), FALSE);
@@ -1429,7 +1444,7 @@
 
   g_signal_connect (G_OBJECT (close_button), "clicked",
 		    G_CALLBACK (close_button_clicked_cb),
-		    screen);
+		    window);
 
   sync_tab_label (screen, label);
   g_signal_connect (G_OBJECT (screen),
 
# cd ../SPECS/
# cp gnome-terminal.spec gnome-terminal-mytab.spec
# vi gnome-terminal-mytab.spec
 
※以下のdiffに相当するパッチを当てる
 
cnes-bs1furuta.cnes.nec.co.jp:/usr/src/redhat/SPECS # diff -c gnome-terminal.spec gnome-terminal-mytab.spec
*** gnome-terminal.spec	2008-05-29 01:13:05.000000000 +0900
--- gnome-terminal-mytab.spec	2009-01-27 19:35:10.000000000 +0900
***************
*** 11,21 ****
  Summary: GNOME Terminal
  Name: gnome-terminal
  Version: 2.22.2
! Release: 1%{?dist}
  URL: http://www.gnome.org/
  Source0: http://download.gnome.org/sources/gnome-terminal/2.22/gnome-terminal-%{version}.tar.bz2
  # Fix gnome.org Bug 338913 Terminal resized when switching tabs
  Patch2: gnome-terminal-2.15.0-338913-revert-336325.patch
  License: GPLv2+ and GFDL+
  Group: User Interface/Desktops
  
--- 11,22 ----
  Summary: GNOME Terminal
  Name: gnome-terminal
  Version: 2.22.2
! Release: 2%{?dist}
  URL: http://www.gnome.org/
  Source0: http://download.gnome.org/sources/gnome-terminal/2.22/gnome-terminal-%{version}.tar.bz2
  # Fix gnome.org Bug 338913 Terminal resized when switching tabs
  Patch2: gnome-terminal-2.15.0-338913-revert-336325.patch
+ Patch3: gnome-terminal-mytab.patch
  License: GPLv2+ and GFDL+
  Group: User Interface/Desktops
  
***************
*** 51,56 ****
--- 52,58 ----
  %prep
  %setup -q
  %patch2 -p1 -b .338913-revert-336325
+ %patch3 -p1
  
  %build
 
# rpmbuild -ba /usr/src/redhat/SPECS/gnome-terminal-mytab.spec
# cd ../RPMS/i386/
# rpm -Uvh gnome-terminal-2.22.2-2.fc9.i386.rpm

  2が揃って縁起がいいので、柏手をふたつ打ちつつ、一度、端末を終わらて、再起動しよう。

  さて、左が元の状態、右が改造後の状態である。情報量は倍増だ。よほど、タブを開きまくらない限り、ユーザ名とホスト名が識別可能だ。

  画像の説明 画像の説明

  しかし、Rubyに慣れると、Cは疲れる。ではまた。


2009-01-31(Sat) XPortで再開か?

  さて、ここ数ヶ月、マトモに電子工作をしてなかったが、先日、共立のブログでXPortの変換基板を売っているのを見てしまい、思わず……

  <かきかけ>

  画像の説明

  画像の説明

本日のツッコミ(全1件) [ツッコミを入れる]

ken [xportを使った電子工作とjavaで制御する、手本になる作品を探していますが、なかなかありませんね。]