2014年3月21日金曜日

或いは、もう一つの覚書

Puppy Linuxのバージョンによっては、gtkdialogが古くてスライダーが使えなかったので、
単純に数値を入力するタイプを作ってみた。

※ 注意 ※
0)Precise Puppy 5.7.1JPとPuppy Linux 4.3.1JPでしか動作確認していません。
1)動作の保証はしません。
2)隠しファイル(.gtkrc.mine)の操作をしています。
3)ダブルクリックの設定は隠しファイル(.gtkrc-2.0)と競合しています。
4)設定を反映させるには、再起動が必要です。
5)最悪の場合、Puppy Linux自体の不具合が起こります。


よって、スクリプトは読むだけにしてください

以上宜しくお願いします。


#! /bin/bash

if test ! -e /root/.gtkrc.mine;then
  touch /root/.gtkrc.mine
  echo "gtk-double-click-time=250" > /root/.gtkrc.mine
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
fi

def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
if [ "$def_time_str" = "" ]; then
  echo "gtk-double-click-time=250" >> /root/.gtkrc.mine
  def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
fi
def_time_value=`echo $def_time_str | cut -c 23-${#def_time_str}`
def_time_tag="<default>"$def_time_value"</default>"

def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
if [ "$def_distance_str" = "" ]; then
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
  def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
fi
def_distance_value=`echo $def_distance_str | cut -c 27-${#def_distance_str}`
def_distance_tag="<default>"$def_distance_value"</default>"

export ok_action='
  new_time_str="gtk-double-click-time="$TIME
  new_distance_str="gtk-double-click-distance="$DISTANCE

  if [ '$def_time_str' = "$new_time_str" -a '$def_distance_str' = "$new_distance_str" ];then
    mes0="設定が変更されていません"
    mes1="何もせずに終了します"
  else
    sed --in-place --expression=s/'$def_time_str'/$new_time_str/ /root/.gtkrc.mine
    sed --in-place --expression=s/'$def_distance_str'/$new_distance_str/ /root/.gtkrc.mine

    mes0="設定ファイル.gtkrc.mineを書き換えました"
    mes1="Xサーバをリスタートして効果を確認してください"
  fi

  export SUB_DIALOG="
    <window title=\"Double Click Adjust std\" width_request=\"300\" height_request=\"200\">
      <vbox>
        <text height-request=\"50\">
          <label>"$mes0"</label>
        </text>
        <text height-request=\"50\">
          <label>"$mes1"</label>
        </text>
        <button height-request=\"80\"><label>閉じる</label>
          <action type=\"exit\">exit</action>
        </button>
      </vbox>
    </window>"

  gtkdialog3 -c --program SUB_DIALOG
'

export MAIN_DIALOG='
  <window title="Double Click Adjust std" width_request="300" height_request="200">
    <vbox>
      <text>
        <label>ダブルクリック調整用</label>
      </text>
      <frame 間隔(ミリ秒)>
        <hbox>
          <text>
            <label>数値を入力(推奨値:250〜1000)</label>
          </text>
          <entry>
            '$def_time_tag'
            <variable>TIME</variable>
          </entry>
        </hbox>
      </frame>
      <frame 距離(ピクセル)>
        <hbox>
          <text>
            <label>数値を入力(推奨値:5〜30)  </label>
          </text>
          <entry>
            '$def_distance_tag'
            <variable>DISTANCE</variable>
          </entry>
        </hbox>
      </frame>
      <hbox>
        <button ok>
          <action>bash -c "$ok_action"</action>
          <action type="exit">exit</action>
        </button>
        <button cancel></button>
      </hbox>
    </vbox>
  </window>'

gtkdialog3 -c --program MAIN_DIALOG

現時点の覚書

こんな物を作ってみたい。
Puppy Linuxでダブルクリックの調整方法が分かったので、それをGUIでやってみたいと思った。
前回Ideskの壁紙変更スクリプト(今見たら、ひどいミスがあったので、いずれ直したい)を
書いてから数年が経過しているので、また「初めてのおつかい」状態。

シェルスクリプト、gtkdialogを使ってみる。
※ 注意 
0)Precise Puppy 5.7.1JP でしか動作確認していません。
動作の保証はしません
隠しファイル(.gtkrc.mine)操作をしています
ダブルクリックの設定は隠しファイル.gtkrc-2.0競合しています
設定を反映させるには再起動が必要です
最悪の場合Puppy Linux自体の不具合が起こります

よって、スクリプトは読むだけにしてください

以上宜しくお願いします。







#! /bin/bash

if test ! -e /root/.gtkrc.mine;then
  touch /root/.gtkrc.mine
  echo "gtk-double-click-time=250" > /root/.gtkrc.mine
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
fi

def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
if [ "$def_time_str" = "" ]; then
  echo "gtk-double-click-time=250" >> /root/.gtkrc.mine
  def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
fi
def_time_value=`echo $def_time_str | cut -c 23-${#def_time_str}`
def_time_tag="<default>"$def_time_value"</default>"

def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
if [ "$def_distance_str" = "" ]; then
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
  def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
fi
def_distance_value=`echo $def_distance_str | cut -c 27-${#def_distance_str}`
def_distance_tag="<default>"$def_distance_value"</default>"

export ok_action='
  new_time_str="gtk-double-click-time="$TIME
  new_distance_str="gtk-double-click-distance="$DISTANCE

  if [ '$def_time_str' = "$new_time_str" -a '$def_distance_str' = "$new_distance_str" ];then
    mes0="設定が変更されていません"
    mes1="何もせずに終了します"
  else
    sed --in-place --expression=s/'$def_time_str'/$new_time_str/ /root/.gtkrc.mine
    sed --in-place --expression=s/'$def_distance_str'/$new_distance_str/ /root/.gtkrc.mine

    mes0="設定ファイル.gtkrc.mineを書き換えました"
    mes1="Xサーバをリスタートして効果を確認してください"
  fi

  export SUB_DIALOG="
    <window title=\"Double Click Adjust\" width_request=\"400\" height_request=\"200\">
      <vbox>
        <text height-request=\"50\">
          <label>"$mes0"</label>
        </text>
        <text height-request=\"50\">
          <label>"$mes1"</label>
        </text>
        <button height-request=\"80\"><label>閉じる</label>
          <action type=\"exit\">exit</action>
        </button>
      </vbox>
    </window>"

  gtkdialog -c --program SUB_DIALOG
'

export MAIN_DIALOG='
  <window title="Double Click Adjust" width_request="400" height_request="200">
    <vbox>
      <text>
        <label>ダブルクリック調整用スライダー</label>
      </text>
      <frame 間隔(ミリ秒)>
        <hscale range-min="250" range-max="2000" range-step="1">
          '$def_time_tag'
          <variable>TIME</variable>
        </hscale>
      </frame>
      <frame 距離(ピクセル)>
        <hscale range-min="5" range-max="100" range-step="1">
          '$def_distance_tag'
          <variable>DISTANCE</variable>
        </hscale>
      </frame>
      <hbox>
        <button ok>
          <action>bash -c "$ok_action"</action>
          <action type="exit">exit</action>
        </button>
        <button cancel></button>
      </hbox>
    </vbox>
  </window>'

gtkdialog -c --program MAIN_DIALOG

2014年3月15日土曜日

ダブルクリック間隔の調節(完結編!)

「ダブルクリック間隔の調節(解決か?)」の続編です。

前回、Puppy Linux(precise-5.7.1JP)での動作確認をしましたが、
今回、Puppy Linux4.31stdJPでも確認がとれました。
おめでとうございます!!(←誰に言ってるの)

これで、永らく悩まされていた、Puppy Linuxでのダブルクリック間隔の調整が
(一応の)完結を迎えました。

実は、現在試しに使っている別のディストリビューションでも、ダブルクリックに関し
同様の問題が起こっていました。
それは、Ubuntu系のディストリビューションLubuntuでのことです。
Lubuntuも軽量で、使い勝手の良さそうな印象で、暫く試用していたのですが、
やはりダブルクリックを認識してくれる間隔が短く、私には苦痛な操作でした。

標準で入っているツール「キーボードとマウス」を開いて「感度」を調節してみるも、
思ったような効果が出ず。
「Openbox設定マネージャ」でマウスタブにある「ダブルクリック時間」を調節しても、
それは、タイトルバー上での操作に関しての調節にしかなりません。

色々検索をしていたところ、「ダブルクリック間隔の調節(解決か?)」で紹介した
ページを見つけました。
Lubuntuでは、 .gtkrc-2.0ファイルが見当たらなかったので新規に作成し、

gtk-double-click-time=1000 の一行だけを書いて保存しました。

※追記4(2015/12/13 21:30)※
.gtkrc-2.0のファイルは、デザインの変更等をすると書き換えられてしまうので、
せっかく記述した"gtk-double-click-time=1000"が消えてしまう場合は、
こちら「ArchBang でのダブルクリック」を参照してください。
Lubuntuでの確認はしていませんが、同様な方法で解決出きるかもしれません。

これを home/(ユーザ名)/に置いて再起動し、PCManFM(ファイラー)で効果が
出ていることを確認。
ところが、他のアプリケーション、GNOME MPlayer、AbiWord、Gnumeric等の
ファイル選択で効果が出ていない。

ウィンドウマネージャやファイルマネージャの守備範囲でない事は分かっているので、
当然考えるのはGTKツールの関係になります。
home/(ユーザ名)/.config 以下に gtk-3.0 なるディレクトリがあるのは知っていた。
ってことは、 .gtkrc-3.0ファイルを作れば行けるんじゃないか、と思いました。
しかし、これは空振りに終わりました。
また色々検索した結果、下記ページを見つけました。
https://bbs.archlinux.org/viewtopic.php?id=157515

おおう、何と言うことでしょう。設定ファイルが違うではないですか。
単純に .gtkrc-3.0 だと思った私が莫迦でした。
先ず、settings.ini が既存かどうか探し、
/etc/gtk-3.0/settings.ini があったのでそれをコピーして .config/gtk-3.0/
へ貼り付け。例の一行を書き加えて保存、再起動。
(※ .gtkrc-2.0 とは置き場所が違うので注意!! ※)

やりました!
GNOME MPlayer、AbiWord、Gnumericでも効果を確認しました。


※追記1(2014/03/15 12:00)※
gtk-double-click-time=1000
1000という数値は1000ミリ秒の事で、ここの数値は適当に変更して試してください。

※追記2(2014/03/15 17:55)※
settings.iniは必ずしもコピーする必要はなく、

[Settings]
gtk-double-click-time=1000

上の様に[Settings]の下に記述すればOKのようです。

※追記3(2014/06/22 13:00)※
↓試しに、zenityを使ってシェルスクリプトで設定できないか、やってみました。
http://aoo10yan.blogspot.jp/2014/06/zenity.html
動かなくても、何かのヒントになれば。

2014年3月13日木曜日

ダブルクリック間隔の調節(解決か?)

 以前から、Puppy Linuxを使っていて不便に感じていたダブルクリックの間隔であります。
ダブルクリックとして認識される間隔が非常に短く、指の自由が利かない老人には、
酷な設定でありました。
 なんとか設定を変更しようと色々やりましたが、ウィンドウのタイトルバーだけに適用されたり、
解決に至っていませんでした、
 今回、別のディストリビューション(Lubuntu)でのダブルクリック間隔の調節を探していたところ、
下記のページに出くわしました。
http://ubuntuforums.org/showthread.php?t=1920761&highlight=double+click
ここにあるように、.gtkrc-2.0ファイルに、

  gtk-double-click-time=1000

の記述をしたところ、ゆっくりしたダブルクリック(1000は1000ミリ秒だと思います)でも
認識されました。
今のところPuppy Linux(precise-5.7.1JP)での動作確認ですが、取り急ぎ、報告します。
既存の .gtlrc-2.0 を編集(2014・03・16画像追加しました)

しっかしまあ、何年も前に悩んでいたことが解決したんで、喜ばしい限りであります。


※追記1(2014/03/16 5:15)※
.gtkrc-2.0 はGtkテーマを変更すると自動的に書き換えられるようです。
「# -- THEME AUTO-WRITTEN DO NOT EDIT」の範囲外へ追記すれば良いものと
勘違いしていました。済みません。
別途、.gtkrc.mine を新規作成して編集をすれば良いみたいです。
.gtkrc.mine での編集