awesome wm を久々に使おうとしたら設定ファイルが使えなくなっていたので再設定

screenFetch-2015-08-22_12-22-58

Debian stretch 環境の awesome を久々に起動すると awesome のバージョンが新しくなっていて設定ファイルの互換性が失われていました.jessie で使っていた頃入れたので恐らく以前のバージョンは 3.4.15 で,今は 3.5.6 です.

とりあえず規定値の設定で起動してくるのですが使いにくいので最低限ですが設定をやりなおしました.

設定ファイルとテーマファイルの差し替え

既存の古い設定ファイルとテーマファイルを差し替えます.

$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/
$ cp /usr/share/awesome/themes/default/theme.lua ~/.config/awesome/

これで規定値と同じになりました.テーマは /usr/share/awesome/themes 以下に3種類あるのでお好みで.私は今は明るい sky( /usr/share/awesome/themes/sky/theme.lua ) を利用しています.

設定変更

  • 設定ファイル修正( ~/.config/awesome/rc.lua )

    • テーマファイル変更(3.4と同じ)

      -beautiful.init("/usr/share/awesome/themes/default/theme.lua")
      +beautiful.init("~/.config/awesome/theme.lua")
      
    • 端末アプリ変更(3.4と同じ)

      -terminal = "x-terminal-emulator"
      +terminal = "mate-terminal"
      
    • スクリーンショット設定(3.5)
      以前行っていた以下の設定ではうまく行かなかった.
      Linux/WindowManager/awesome – matoken’s wiki.
      以下のファイルを用意して,

      % cat ~/script/ss-root.sh
      #!/bin/sh
      import -window root ~/Pictures/`date +%Y%m%d_%H:%m:%S-$$.jpg`
      % cat ~/script/ss-window.sh
      #!/bin/sh
      xwininfo |grep '^xwininfo: Window id:' | awk '{print $4}' | xargs -I{} import -window {} ~/Pictures/`date +%Y%m%d_%H:%m:%S-$$.jpg`
      % cat ~/script/ss-area.sh
      #!/bin/sh
      import ~/Pictures/`date +%Y%m%d_%H:%m:%S-$$.jpg`
      

      -- Standard program の前か後ろ辺りに以下を追加.

      -- bind PrintScrn to capture a screen
      awful.key({                   }, "Print", function () awful.util.spawn("/home/mk/script/ss-root.sh",false)   end),
      awful.key({ "Mod1"            }, "Print", function () awful.util.spawn("/home/mk/script/ss-window.sh",false) end),
      awful.key({ "Shift"           }, "Print", function () awful.util.spawn("/home/mk/script/ss-area.sh",false)   end),
      

      この script はパスを通してあって,3.4 では script名だけで動いていたのですが 3.5 ではフルパスでないと動かないようでした.

    • 音量ボタン設定(3.5)
      以下のようなミュートとアンミュートを行うscript audiomute.sh を用意して,

      #!/bin/sh
      
      MUTE=`amixer -c 0 get Master|tail -1|cut -d '[' -f 4|sed s/\]//`
      if [ $MUTE = "on" ] ; then
        amixer -q -c 0 set Master mute
        echo "mute!"
      else
        amixer -q -c 0 set Master unmute
        echo "unmute!"
      fi
      
      amixer -c 0 get Master|tail -1|cut -d '[' -f 4|sed s/\]//
      

      <追記>
      これだとアンミュートがうまく行かなかったです.次のエントリを参照して下さい
      Awesome wm でボリュームコントロール | matoken's meme
      </追記>

      -- Standard program の前か後ろ辺りに以下を追加.

          -- Audio Controle
          awful.key({                   }, "XF86AudioMute", function () awful.util.spawn("/home/mk/script/audiomute.sh",false) end),
          awful.key({                   }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -c 0 set Master 2dB+",false) end),
          awful.key({                   }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer -c 0 set Master 2dB-",false) end),
      

      これもやはりフルパスで script を書かないと動かない.amixer は動いているのでパスがうまく渡っていないのかも.awesome 起動後にパスが設定されてうまく動いていないという感じだと思います.

    • 自動起動アプリ指定(3.4と同じ)
      -- {{{ Autostart application
      -- "Autostart - awesome"
      -- http://awesome.naquadah.org/wiki/Autostart
      awful.util.spawn_with_shell("~/script/run_once.bash nm-applet")
      awful.util.spawn_with_shell("~/script/run_once.bash synergy")
      awful.util.spawn_with_shell("~/script/run_once.bash clipit")
      awful.util.spawn_with_shell("~/script/run_once.bash owncloud")
      awful.util.spawn_with_shell("~/script/run_once.bash xchat")
      awful.util.spawn_with_shell("~/script/run_once.bash pidgin")
      :
      -- }}}
      

      この項目は設定内にないので末尾に追加しました.
      ~/script/run_once.bash は以下のようなもので,アプリケーションの2重起動を回避するために利用しています.

      #!/bin/bash
      pgrep $@ > /dev/null || ($@ &)
      

      Autostart – awesome

  • テーマファイル修正( ~/.config/awesome/theme.lua )

    • 壁紙変更(3.5)
      -theme.wallpaper             = "/usr/share/awesome/themes/sky/sky-background.png"
      +theme.wallpaper             = "~/Pictures/wp/futur_by_takaju-d60mg7y.png"
      

awesome は軽くてサクサクで結構好きです.ただこのように設定は自分で書かないといけないのでとっつきにくいかもしれません.キーバインドも覚えないといけませんし.でも2,3日使っていると主要な物は覚えられます.
ちなみに,3.4 でもあって 3.5 でも治っていない問題として,ブラウザ等でファイルを開くとかなりの確率でアプリが落ちてしまいます.ブラウザでファイルを添付するときにすごく困ります.最近のGoogle+ や Flickr などドラッグ&ドロップで添付できるような場所はいいのですが…….

  • マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
  • Linux/WindowManager/awesome – matoken's wiki.
  • GVfs のマウントポイントを探す

    Android などでよく使う USB の mtp プロトコルですが,GVfs で自動マウントされます.ファイルマネージャの Nautilus などでアクセスできますが,途中で失敗することがあります.そこで端末上から rsync コマンドを使って失敗しても失敗した部分だけ再試行できるようにしていました.今回 Debian stretch amd64 + Gnome-shell 環境だと以前のマウントポイントの ~/.gvfs にはマウントされなくなっていました.

    % ls -lA ~/.gvfs 
    合計 0
    

    Nautilus のロケーションは次のようになっていますがこれも端末からはアクセスでき無さそう. mtp://[usb:001,009]/

    Nautilus で umount して,fuser mount して rsync してみようと思ったのですが, mtpfs も jmtpfs 失敗してしまいました.

    % mtpfs fuse/mtp
    Listing raw device(s)
    Device 0 (VID=1004 and PID=631c) is a LG Electronics Inc. LG-E610/E612/E617G/E970/P700.
       Found 1 device(s):
       LG Electronics Inc.: LG-E610/E612/E617G/E970/P700 (1004:631c) @ bus 1, dev 6
    Attempting to connect device
    Android device detected, assigning default bug flags
    Error 1: Get Storage information failed.
    Error 2: PTP Layer error 02fe: get_handles_recursively(): could not get object handles.
    Error 2: Error 02fe: PTP: Protocol error, data expected
    Listing File Information on Device with name: LGL22
    LIBMTP_Get_Storage() failed:-1
    % ls -la /home/mk/fuse/mtp
    合計 8
    drwxr-xr-x 2 mk mk 4096  8月 17 17:19 .
    drwxr-xr-x 8 mk mk 4096  8月 17 17:19 ..
    
    % jmtpfs fuse/mtp
    Device 0 (VID=1004 and PID=631c) is a LG Electronics Inc. LG-E610/E612/E617G/E970/P700.
    Android device detected, assigning default bug flags
    % ls -la /home/mk/fuse/mtp
    ls: /home/mk/fuse/mtp にアクセスできません: 入力/出力エラーです
    % fusermount -u /home/mk/fuse/mtp
    

    Nautilus で右クリックして 端末で開く から確認することが出来ました.

    Screenshot from 2015-08-17 18-19-43

    Screenshot from 2015-08-17 18-26-02

    どうも GVfs のマウントポイントは ~/.gvfs から /run/user/1000/gvfs に変わったようです. 1000 は ユーザの UID でしょうね.

    ということで,rsync でデータコピーが出来ました.

    % rsync -av /run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C009%5D/内部ストレージ/DCIM /export/Photo
    

    その後 man gvfsd-fuse に発見.

       gvfsd-fuse is normally started by gvfsd(1). In this case, the mount point is $XDG_RUNTIME_DIR/gvfs or $HOME/.gvfs.
    

    確認すると一緒ですね.

    % echo $XDG_RUNTIME_DIR/gvfs
    /run/user/1000/gvfs
    

    しかし,gvfs-* 系のツールでも確認できそうなんですがうまく行かないですね…….

    % gvfs-mount -h
    用法:
      gvfs-mount [オプション...] [LOCATION...]
    
    ロケーションをマウントします。
    
    ヘルプのオプション:
      -h, --help                      ヘルプのオプションを表示する
    
    アプリケーションのオプション:
      -m, --mountable                 マウント可能としてマウントする
      -d, --device=DEVICE             デバイスファイルでボリュームをマウントする
      -u, --unmount                   アンマウントする
      -e, --eject                     取り出す
      -s, --unmount-scheme=SCHEME     指定されたスキームですべてのマウントを解除する
      -f, --force                     Ignore outstanding file operations when unmounting or ejecting
      -a, --anonymous                 Use an anonymous user when authenticating
      -l, --list                      リスト表示する
      -o, --monitor                   イベントを監視する
      -i, --detail                    その他の情報を表示する
      --version                       Show program version
    % gvfs-mount -l
    Drive(0): INTEL SSDSA2CW600G3
      Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
    Drive(1): ST932032 0AS
      Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
      Volume(0): 320 GB ボリューム
        Type: GProxyVolume (GProxyVolumeMonitorUDisks2)
        Mount(0): 320 GB ボリューム -> file:///media/mk/555bf630-0ca8-4282-9a79-7acfd6355a0a
          Type: GProxyMount (GProxyVolumeMonitorUDisks2)
    Volume(0): LGE Android Phone
      Type: GProxyVolume (GProxyVolumeMonitorMTP)
      Mount(0): LGE Android Phone -> mtp://[usb:001,009]/
        Type: GProxyShadowMount (GProxyVolumeMonitorMTP)
    Mount(1): mtp -> mtp://[usb:001,009]/
      Type: GDaemonMount
    % gvfs-info -f 'mtp://[usb:001,009]/'
    属性:
      standard::type: 2
      standard::name: [usb:001,009]
      standard::display-name: LGL22
      standard::icon: multimedia-player
      standard::content-type: inode/directory
      standard::size: 0
      standard::symbolic-icon: multimedia-player-symbolic
      access::can-read: TRUE
      access::can-write: FALSE
      access::can-execute: TRUE
      access::can-delete: FALSE
      access::can-trash: FALSE
      access::can-rename: FALSE
      filesystem::size: 38238453760
      filesystem::free: 12884361216
      filesystem::type: mtpfs
      gvfs::backend: mtp
    

    追記)
    mount コマンドで確認できるよと教えてもらいました.この時は mount コマンドや /etc/motd も確認したけど見当たらないと思っていたのですが,再確認したらちゃんと見えました.アイコン上は mount してるけど中が見えないという状態がよく起こるのですがそのタイミングで確認したのかもしれません.ちなみにその時は USB 抜き差しでも症状変わらず Android 側で PTP / MTP と切り替えると見えるようになりました.

    
    % mount|grep gvfs
    gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
    % cat /etc/mtab|grep gvfs
    gvfsd-fuse /run/user/1000/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0
    

    フレームバッファであひる焼き(fbterm の 背景画像の設定)

    一部の楽屋ネタ的なものですが,Twitter であひるを焼く人たちがいます.

    libcaca というライブラリのデモで cacafire というものがあるのですが,これがアスキーアートで炎の燃える様子が動画で表現されるので楽しいです.これであひるを焼くように見せかけないだろうかと思いました.

    フレームバッファを使えばきっと出来るなーと.そしてfbterm 1.5 からバックグラウンドイメージのサポートが入っていて,デモ用に fbv というものがあります.これを組み合わせればいけるだろうと試してみました.

    が,試してみたところ libgif まわりで少し嵌ったのでメモ.

    環境

    • Debian stretch amd64 or Debian jessir amd64

    関連パッケージを導入

    $ sudo apt install build-essential libpng-dev libjpeg-dev libgif-dev
    

    source 入手 & build

    $ wget http://s-tech.elsat.net.pl/fbv/fbv-1.0b.tar.gz
    $ tar tvf fbv-1.0b.tar.gz
    $ tar xf fbv-1.0b.tar.gz
    $ cd fbv-1.0b
    $ ./configure --help
        :
    $ ./configure --prefix=$HOME/usr/local
    $ make
    

    ここで問題発生.

    % ./configure
    checking for libungif presence... no
     :
    % make
    gif.o: In function `fh_gif_load':
    gif.c:(.text+0x111): undefined reference to `DGifOpenFileName'
    gif.c:(.text+0x12a): undefined reference to `DGifGetRecordType'
    gif.c:(.text+0x156): undefined reference to `DGifGetExtension'
    gif.c:(.text+0x189): undefined reference to `DGifGetExtensionNext'
    gif.c:(.text+0x1b0): undefined reference to `DGifCloseFile'
    gif.c:(.text+0x1c4): undefined reference to `DGifGetImageDesc'
    gif.c:(.text+0x2dc): undefined reference to `DGifGetLine'
    gif.c:(.text+0x409): undefined reference to `DGifCloseFile'
    gif.c:(.text+0x45b): undefined reference to `DGifGetLine'
    gif.o: In function `fh_gif_getsize':
    gif.c:(.text+0x5df): undefined reference to `DGifOpenFileName'
    gif.c:(.text+0x5f8): undefined reference to `DGifGetRecordType'
    gif.c:(.text+0x61a): undefined reference to `DGifGetExtension'
    gif.c:(.text+0x631): undefined reference to `DGifGetExtensionNext'
    gif.c:(.text+0x654): undefined reference to `DGifCloseFile'
    gif.c:(.text+0x674): undefined reference to `DGifGetImageDesc'
    gif.c:(.text+0x68d): undefined reference to `DGifCloseFile'
    collect2: error: ld returned 1 exit status
    

    libungif が見つからずエラーになっています.パッケージ内にはそれらしいものは存在しますが実体が無さそうです.

    % dpkg -L libgif-dev|grep ungif
    /usr/lib/libungif.la
    /usr/lib/libungif.so
    /usr/lib/libungif.a
    % ls -l /usr/lib/libungif.so
    lrwxrwxrwx 1 root root 15 12月  8  2013 /usr/lib/libungif.so -> libgif.so.4.1.6
    $ ls -l /usr/lib/libgif.so.4.1.6
    ls: cannot access /usr/lib/libgif.so.4.1.6: No such file or directory
    

    libungif/libgif の違いはなんだろうと調べてみるとUnisys社のLZW特許問題を回避するためのものが libungif だったようです.2004年に特許は切れているので現在は libgif になってる感じ?

    gif ファイルを使わないようにして回避

    configure option で gifを使わないようにして回避します.これでもほぼ問題ない気もする.

    ./configure --without-libgif
    

    configure script を書き換えて libgif を使うようにする

    ちょっと乱暴ですが, configure script の libungif を libgif に一括で書き換えてしまいます.

    % sed -e "s/ungif/gif/g" ./configure-org > ./configure
    % ./configure
    % make
    

    シンボリックリンクを貼って逃げる

    現在こんな感じなので,

    % ls -la /usr/lib/lib*gif*
    lrwxrwxrwx 1 root root  8 Dec  8  2013 /usr/lib/libungif.a -> libgif.a
    lrwxrwxrwx 1 root root  9 Dec  8  2013 /usr/lib/libungif.la -> libgif.la
    lrwxrwxrwx 1 root root 15 Dec  8  2013 /usr/lib/libungif.so -> libgif.so.4.1.6
    

    こんな感じでシンボリックリンクを貼ってあげる.

    % sudo ln -s /usr/lib/x86_64-linux-gnu/libgif.so /usr/lib/libgif.so.4.1.6
    

    後はそのままbuild

    あひるの表示

    fbv で画像を表示してみます.

    $ fbv ahiru.png
    

    以下のページに fbv で背景を設定して fbterm を起動する script があります.

    これを少しいじってこんな感じに

    #!/bin/bash
    # fbterm-bi: a wrapper script to enable background image with fbterm
    # usage: fbterm-bi /path/to/image fbterm-options
    clear
    echo -ne "\e[?25l" # hide cursor
    fbv -ciuke "$1" << EOF
    q
    EOF
    shift
    export FBTERM_BACKGROUND_IMAGE=1
    exec fbterm "$@"
    

    いじったのはゴミが残る場合があるので初めに clear を実行.fbv で縦横比虫をしないように -r option を消しました.

    あひる焼き

    もう少しで焼けます.
    あひるは用意出来たので今度は炎の用意です.cacafire の含まれている caca-utils パッケージを導入します.

    % sudo apt install caca-utils
    

    焼きます

    % cacafire
    

    #terminal をフレームバッファも含めて動画でスクリーンショットとる方法が解らず今回は仮想マシンで実行してキャプチャしました.だれか端末のフレームバッファも含めての動画でのスクリーンショットのとり方を知ってる人が居たら教えて下さいo
    ##文字だけなら ttyrec とか asciicast が,1枚の画像だけであれば fbgrab があるんですけどね……・

    実用性?

    今回のは完全にネタですが,切替器で1つの KVM で複数端末を使う場合はそれぞれ別の壁紙を設定しておくと間違いが起こりにくくなっていいかもしれません.しかし今回の方法だと login しないといけないのでいまいち.login 以前に壁紙を設置する方法も調べてみたいと思います.

    関連URL

    Pidgin で Facebook にログインできなくなっていたので purple-facebook プラグインを試す

    最近 Pidgin での Facebook 接続で以下のようなエラーが発生して接続できなくなっていた.
    Screenshot from 2015-08-10 07-13-39

    調べてみるとPidgin で利用している XMPP Chat API は2014-04-30 から非推奨になって,2015-04-30 から使えなくなっていたらしい.

    何か方法はないかなと探してみると以下のようなプロジェクトを発見.

    これを使えばfacebook chat が Pidgin でまた利用出来るようになる?ということで試してみた.

    導入環境

    • Debian stretch amd64
    • Pidgin 2.10.11-1

    リポジトリの登録

    % sudo sh -c 'echo "deb http://download.opensuse.org/repositories/home:/jgeboski/Debian_8.0 ./" > /etc/apt/sources.list.d/jgeboski.list'
    

    この URL の Debian_8.0 部分は host のディストリビューションによって変わる.以下のページを参照して設定する.

    鍵登録

    % wget wget http://download.opensuse.org/repositories/home:/jgeboski/Debian_8.0/Release.key
    % gpg  ./Release.key
    pub  2048R/1C85BB5E 2015-07-23 home:jgeboski OBS Project <home:jgeboski@build.opensuse.org>
    % sudo apt-key add ./Release.key
    OK
    % rm ./Release.key
    

    この URL の Debian_8.0 部分は host のディストリビューションによって変わる.以下のページを参照して設定する.

    パッケージを最新にして purple-facebook pkg を導入

    % sudo apt update && sudo apt upgrade && sudo apt install purple-facebook
    

    Pidgin が起動していたら終了して起動し直す.
    以下のようにこれまであった facebook (XMPP) の上に Facebook の項目が増えた.
    Screenshot from 2015-08-10 07-40-23

    既存の設定を書き換えるか,新規に Facebook プロトコルでの設定を行い,接続を試みる.

    ログイン失敗

    以下のエラーとなりログイン出来ない.

    Login approvals are on. Expect an SMS shortly with a code to use for log in (406)
    

    これはおそらく2段階認証が有効になっているため.パスワードの代わりにコードジェネレータ のコードを入力することでログインできた.
    Screenshot_2015-08-10-08-27-02

    #Google Hangout もどうにかならないかな……

    バッテリをフル充電しないようにして長持ちさせるためのメモ

    MassRide
    NotePC を AC電源で利用する場合フル充電しっぱなしだとバッテリの寿命が短くなります.フル充電せずに手前で充電を止めるようにする方法のメモです.
    #いつも持ち運ぶために100%にしたあと設定を覚えてなくてそのままにしてしまうのでメモ><

    環境

    • Debian stretch amd64
    • Thinkpad X201s

    導入

    $ sudo apt install tlp
    

    確認

    % sudo tlp-stat -b             
    --- TLP 0.7 --------------------------------------------
    
    +++ ThinkPad Extended Battery Functions
    tp-smapi   = active
    tpacpi-bat = inactive (kernel module 'acpi_call' not installed)
    
    +++ ThinkPad Battery Status: BAT0 (Main / Internal)
    /sys/devices/platform/smapi/BAT0/manufacturer               = SANYO
    /sys/devices/platform/smapi/BAT0/model                      = 42T4XXX
    /sys/devices/platform/smapi/BAT0/manufacture_date           = 2010-08-14
    /sys/devices/platform/smapi/BAT0/first_use_date             = 2010-09-22
    /sys/devices/platform/smapi/BAT0/cycle_count                =    277
    /sys/devices/platform/smapi/BAT0/design_capacity            =  57720 [mWh]
    /sys/devices/platform/smapi/BAT0/last_full_capacity         =  27340 [mWh]
    /sys/devices/platform/smapi/BAT0/remaining_capacity         =  22140 [mWh]
    /sys/devices/platform/smapi/BAT0/remaining_percent          =     81 [%]
    /sys/devices/platform/smapi/BAT0/remaining_running_time_now = not_discharging [min]
    /sys/devices/platform/smapi/BAT0/remaining_charging_time    = not_charging [min]
    /sys/devices/platform/smapi/BAT0/power_now                  =      0 [mW]
    /sys/devices/platform/smapi/BAT0/power_avg                  =      0 [mW]
    
    /sys/devices/platform/smapi/BAT0/start_charge_thresh        =     96 [%]
    /sys/devices/platform/smapi/BAT0/stop_charge_thresh         =    100 [%]
    /sys/devices/platform/smapi/BAT0/force_discharge            =      0
    

    設定( 充電開始 % を75% /充電終了 % を 85% にする場合 )

    % sudo tlp setcharge 75 85 BAT0                
    Setting temporary charge thresholds for BAT0:
      stop  = 85
      start = 75
    

    もしバッテリが複数ある場合は BAT0, BAT1 のようになるはず.

    フル充電に戻す

    外で使う前にフル充電したい場合など.

    % sudo tlp fullcharge
    Setting temporary charge thresholds for BAT0:
      stop  = 100
      start = 96
    

    参考URL

    関連記事

    TeamViewer Linux版 を少し試す & 文字化け対応

    [TeamViewer Linux版 あるのか.しらなかった

    “Linux版TeamViewerの無料ダウンロード” https://www.teamviewer.com/ja/download/linux.aspx

    https://plus.google.com/u/0/+KenichiroMATOHARA/posts/MtcA41kdpD9
    (元投稿消えている)

    ということでTeamViewer にLinux版があるのを知り試してみました.

    導入自体はパッケージがあるのでこんな感じで(hash は見つからなかった……)
    amd64版もあるようですがteamviewerd.service が起動しなかったりしたのでMultiarch なi386 を利用しています.arm版もあると嬉しい.

    % wget http://download.teamviewer.com/download/teamviewer_i386.deb
    % sha1sum teamviewer_10.0.41499_i386.deb 
    438a1b27531faf8a89148b011e5214aa3f95ab1e  teamviewer_10.0.41499_i386.deb
    % sha256sum teamviewer_10.0.41499_i386.deb 
    0694c756b8cb5f2b09c8d6db960ced3e899d4ce43060e77ef4f1c36254dc31c4  teamviewer_10.0.41499_i386.deb
    % sudo dpkg -i teamviewer_10.0.41499_i386.deb
    

    このとき日本語Linux環境で利用した場合所々文字化けが起こります.
    Screenshot from 2015-08-02 08-03-25

    TeamViewer はWine経由で動作しているよう&Wineでよく見かける感じの文字化けだったのでWineの設定を探し設定変更したところ文字化けしなくなりました.

    • 修正内容
      /opt/teamviewer/tv_bin/wine/share/wine/wine.inf[Fonts] セクションに以下の設定を追加
    HKLM,%FontSubStr%,"MS Gothic",,"Ume Gothic"
    HKLM,%FontSubStr%,"MS PGothic",,"Ume Gothic"
    HKLM,%FontSubStr%,"MS UI Gothic",,"Ume Gothic"
    HKLM,%FontSubStr%,"MS Mincho",,"Ume Gothic"
    HKLM,%FontSubStr%,"MS PMincho",,"Ume Gothic"
    

    デーモンの再起動

    % teamviewer daemon stop
    % teamviewer daemon start
    

    次バージョン以降で修正されることを期待してサポートにも投げてみました.(窓口合ってたかな?)

    いつもはssh over (X/RDP/VNC)な感じで事足りてたしTeamViewer はプロプラ&個人用途以外は有償なのであまり興味はなかったのですが,今回使ってみてAndorid のの画面も引っ張ってこれるのはいいなと思いました.丁度ちょっと前に幾つかのAndroid版VNC Server software を試してうまく動かなかったので特に.

    TeamViewer Linux版 を少し試す & 文字化け対応

    [TeamViewer Linux版 あるのか.しらなかった

    “Linux版TeamViewerの無料ダウンロード” https://www.teamviewer.com/ja/download/linux.aspx

    https://plus.google.com/u/0/+KenichiroMATOHARA/posts/MtcA41kdpD9
    (元投稿消えている)

    ということでTeamViewer にLinux版があるのを知り試してみました.

    導入自体はパッケージがあるのでこんな感じで(hash は見つからなかった……)
    amd64版もあるようですがteamviewerd.service が起動しなかったりしたのでMultiarch なi386 を利用しています.arm版もあると嬉しい.

    % wget http://download.teamviewer.com/download/teamviewer_i386.deb
    % sha1sum teamviewer_10.0.41499_i386.deb 
    438a1b27531faf8a89148b011e5214aa3f95ab1e  teamviewer_10.0.41499_i386.deb
    % sha256sum teamviewer_10.0.41499_i386.deb 
    0694c756b8cb5f2b09c8d6db960ced3e899d4ce43060e77ef4f1c36254dc31c4  teamviewer_10.0.41499_i386.deb
    % sudo dpkg -i teamviewer_10.0.41499_i386.deb
    

    このとき日本語Linux環境で利用した場合所々文字化けが起こります.
    Screenshot from 2015-08-02 08-03-25

    TeamViewer はWine経由で動作しているよう&Wineでよく見かける感じの文字化けだったのでWineの設定を探し設定変更したところ文字化けしなくなりました.

    • 修正内容
      /opt/teamviewer/tv_bin/wine/share/wine/wine.inf[Fonts] セクションに以下の設定を追加
    HKLM,%FontSubStr%,"MS Gothic",,"Ume Gothic"
    HKLM,%FontSubStr%,"MS PGothic",,"Ume Gothic"
    HKLM,%FontSubStr%,"MS UI Gothic",,"Ume Gothic"
    HKLM,%FontSubStr%,"MS Mincho",,"Ume Gothic"
    HKLM,%FontSubStr%,"MS PMincho",,"Ume Gothic"
    

    デーモンの再起動

    % teamviewer daemon stop
    % teamviewer daemon start
    

    次バージョン以降で修正されることを期待してサポートにも投げてみました.(窓口合ってたかな?)

    いつもはssh over (X/RDP/VNC)な感じで事足りてたしTeamViewer はプロプラ&個人用途以外は有償なのであまり興味はなかったのですが,今回使ってみてAndorid のの画面も引っ張ってこれるのはいいなと思いました.丁度ちょっと前に幾つかのAndroid版VNC Server software を試してうまく動かなかったので特に.

    さくらのVPS シリアルコンソール(β版) が開始されていたので試す

    さくらのVPS ののサーバ設定を変えてtiarra や lingrircgw とかのの自動起動確認のために再起動しようと思い,再起動を見守るためにコンソールを立ち上げようとしたところ新しい項目が増えていました.

    Screenshot from 2015-08-01 02-25-08

    シリアルコンソール(β版) がそれです.
    確認すると 7/23 ににリリースされたようです.

    早速設定してみます.設定内容は自分メモを見ながら以下のような感じでで設定しましたちなみに,少なくともDebian Squeese ~ Jessie まで同じ設定でいけてます.

    /etc/inittab

    #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
    

    の部分を以下の様に変更.

    T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100
    

    /etc/default/grub の以下の辺りを設定

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
    GRUB_TERMINAL=serial
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0"
    

    GRUB に反映

    $ sudo update-grub
    

    再起動して動作確認.
    これでGRUB の画面からシリアルコンソールに表示されるようになりました.

    Screenshot from 2015-08-01 03-05-28
    Screenshot from 2015-08-01 02-50-34
    Screenshot from 2015-08-01 13-33-25
    Screenshot from 2015-08-01 13-32-17

    日本語入力は下のテキスト送信からとサポートサイトには書かれていますが,普通に uim-fep とかでも入力できました.
    以下のような感じで設定すればいいんだけどこの辺りの詳細は以下のページを参考にしてみてください.

    $ sudo apt install uim-fep uim-mozc
    $ cat << __EOF__ > ~/.uim
    (define-key generic-on-key? '("<Control>\\" "<Shift> " "<Control> "))
    (define-key generic-off-key? '("<Control>\\" "<Shift> " "<Control> "))
    $ uim-mozc -u mozc
    

    Screenshot from 2015-08-01 13-34-11
    Screenshot from 2015-08-01 13-37-51

    これまでは VNCコンソール(HTML5版)を利用していましたがこれからはシリアルでの利用が多くなりそうです.コピペが出来るのが大きい!後はこのシリアルが ssh 経由で利用できたりしたらまた色々使いやすくなりそうな気もします.(セキュリティは注意が必要ですが)

    そうそう,ブラウザのシリアルの画面を閉じただけじゃ切断されずそのままなので最後にちゃんとログアウトしておきましょう.

    user@hostname:~$ exit
    logout
    
    Debian GNU/Linux 8 hostname ttyS0
    
    hostname login:
    

    GNU Screen v4.3.0 を少し試す

    先日リリースされたGNU Screen 4.3.0 の新機能が気になったのでbuild してみた。

    • New commands:
      • ‘sort’ command sorting windows by title
      • ‘bumpleft’, ‘bumpright’ – manually move windows on window list
      • ‘collapse’ removing numbering ‘gaps’ between windows, by
        renumbering

    Build とか

    % sudo apt-get install build-essential
    % sudo apt-get build-dep screen
    % wget http://ftp.gnu.org/gnu/screen/screen-4.3.0.tar.gz http://ftp.gnu.org/gnu/screen/screen-4.3.0.tar.gz.sig
    % gpg --verify screen-4.3.0.tar.gz.sig
    gpg: assuming signed data in `screen-4.3.0.tar.gz'
    gpg: Signature made 2015年06月14日 02時01分43秒 JST using RSA key ID C53EF3A4
    gpg: Good signature from "Amadeusz Sławiński <amade@asmblr.net>"
    gpg: WARNING: This key is not certified with a trusted signature!
    gpg:          There is no indication that the signature belongs to the owner.
    Primary key fingerprint: 2EE5 9A5D 0C50 167B 5535  BBF1 B708 A383 C53E F3A4
    % tar tvzf screen-4.3.0.tar.gz
    % tar xzf screen-4.3.0.tar.gz
    % cd screen-4.3.0
    % ./configure --prefix=$HOME/usr/local --enable-colors256 --enable-rxvt_osc --enable-use-locale --enable-pam
    % make
    % make install
    % where screen
    /home/mk/usr/local/bin/screen
    /usr/bin/screen
    % screen --version
    Screen version 4.03.00 (GNU) 27-May-15
    

    そして気になっていた新機能を試してみました。

    • New commands:
      • ‘sort’ command sorting windows by title

    想像ではawesome みたいにウィンドウの並びが縦横分割されていい感じに並ぶのかなーと思っていたのだけど、大分違った。
    Ctrl-a : して sort と打ってみると、

    Sorting inside a window is not allowed. Push CTRL-a “ and try again

    と言われる。Ctrl + a " してscreen のウィンドウリストを出した状態で再度叩くとこんな感じでウィンドウタイトルでソートされた。

    Screenshot from 2015-06-17 19:21:38

    ちなみに、

    • ‘bumpleft’, ‘bumpright’ – manually move windows on window list

    も試したけどコアダンプしたorz
    多分指定ウィンドウを左右に移動出来るのだと思う

    [screen caught signal 11. (core dumped)]

    Debian jessie2stretch

    Screenshot from 2015-06-17 12:08:41

    jessie がリリースされて2月近く1度目のポイントリリース もされて普通に使えています.しかし,悟りを開くためにtesting のstretch にアップグレードしてみます.

    以下に記すことにより悟りを開けば、アップグレード地獄という果てしない因果応報の葛藤から人は解脱し、Debian の涅槃の境地に到達できます。

    Debian リファレンス 2.1.3. 永遠のアップグレード人生 より

    参考URL

    以下の公式文章と,前回Wheezy から Jessie にアップグレードした時のメモを参考にしました.

    パッケージを最新にする

    % sudo apt update
    % sudo apt upgrade
    

    backup

    pkg 情報

    デイリーでファイルに落として( /usr/bin/dpkg --get-selections "*" > dpkg_--get-selections )バックアップしているのでバックアップログを見てバックアップがちゃんと取れているのを確認

    /etc, /var, /home など

    デイリーでバックアップしているのでバックアップログを見てバックアップがちゃんと取れているのを確認
    最近の $HOME はこんな感じでバックアップしている

    ionice -c2 -n7 nice -n19 rsync --stats -avze ssh --delete --bwlimit=2048 --rsync-path="/usr/bin/ionice -c2 -n7 /usr/bin/nice -n19 /usr/bin/rsync" --exclude-from "$HOME/.rsync-backup_exclude-list" --link-dest=/mnt/backup/x201s/rsync/home/`/bin/date -d '1 day ago' +\%Y\%m\%d`/ $HOME micro-backup:/mnt/backup/x201s/rsync/home/`date +%Y%m%d`/
    

    Pin の解除

    % find /etc/apt/ -type f|grep preferences
    /etc/apt/preferences
    % rm /etc/apt/preferences
    

    パッケージ状態の確認

    % sudo dpkg --audit
    % find /etc/apt/ -type f|grep preferences
    % aptitude search "~ahold"
    

    vim パッケージを削除をされないようにする

    % sudo aptitude unmarkauto vim
    

    以下はaptitude のman より

           markauto, unmarkauto
               それぞれ、自動的にインストールされた、および手動でインストールされたという印をパッケージに添付します。パッケージの指定は「install」コマンドと
               まったく同じ方法で行います。例えば「aptitude markauto '~slibs'」を実行すると、「libs」セクションのパッケージすべてに、自動的にインストールされ
               たという印が添付されます。
    
               自動的にインストールしたパッケージについてのさらに詳しい情報は、aptitude リファレンスマニュアルの「自動的にインストールしたパッケージの管理」セ
               クションを参照してください。
    

    aptitude リファレンスマニュアルの「自動的にインストールしたパッケージの管理」セクション は以下から.

    ソースリストの修正

    非公式なソースを削除して公式だけにする.

    % sudo rm -rf /etc/apt/sources.list.d
    % sudo vi /etc/apt/sources.list
    % grep -v ^# /etc/apt/sources.list|uniq
    
    deb http://ftp.jp.debian.org/debian/ jessie main non-free contrib
    deb-src http://ftp.jp.debian.org/debian/ jessie main non-free contrib
    
    deb http://security.debian.org/ jessie/updates main contrib non-free
    deb-src http://security.debian.org/ jessie/updates main contrib non-free
    

    jessie をstretch にする.

    % grep -v ^# /etc/apt/sources.list|uniq
    
    deb http://ftp.jp.debian.org/debian/ stretch main non-free contrib
    deb-src http://ftp.jp.debian.org/debian/ stretch main non-free contrib
    
    deb http://security.debian.org/ stretch/updates main contrib non-free
    deb-src http://security.debian.org/ stretch/updates main contrib non-free
    

    コンソール端末に移動する

    X の端末だとX が不安定になることがあるのでコンソールの端末に移動.Ctrl + Alt + 1~6 とかで移動してログインする.
    fbtermなどを使わないと日本語表示が出来ないので LANG=C にしておく.

    % echo $LANG
    ja_JP.UTF-8
    % LANG=C
    

    root 権限になる

    % sudo -s
    # echo $LANG
    C
    

    ログの取得開始

    # script ~mk/jessie2stretch.log 
    Script started, file is /home/mk/jessie2stretch.log
    

    パッケージ情報を更新

    # apt-get update
    

    アップグレードに必要な容量を確認する

    # apt-get -o APT::Get::Trivial-Only=true dist-upgrade
     :
     :
     :
    1551 upgraded, 72 newly installed, 8 to remove and 0 not upgraded.
    Need to get 79.4 MB/1645 MB of archives.
    After this operation, 469 MB of additional disk space will be used.
    E: Trivial Only specified but this is not a trivial operation.
    

    最小アップグレード

    # apt-get upgrade
     :
    1212 upgraded, 0 newly installed, 0 to remove and 340 not upgraded.
    Need to get 0 B/1180 MB of archives.
    After this operation, 137 MB of additional disk space will be used.
    Do you want to continue? [Y/n] Y
     :
    

    dist-upgrade の影響を確認する

    # apt-get -s dist-upgrade
      :
    

    dist-upgrade する

    # apt-get dist-upgrade
      :
    The following packages will be REMOVED:
      iceweasel-l10n-csb iceweasel-l10n-ku iceweasel-l10n-zu librpmsign1 libsane:i386 tracker-utils xserver-xorg-video-modesetting
      xserver-xorg-video-siliconmotion
      :
    339 upgraded, 72 newly installed, 8 to remove and 0 not upgraded.
    Need to get 79.4 MB/465 MB of archives.
    After this operation, 332 MB of additional disk space will be used.
    Do you want to continue? [Y/n] Y
      :
    

    不要になったパッケージを削除する

    # apt-get autoremove
      :
    0 upgraded, 0 newly installed, 32 to remove and 0 not upgraded.
    After this operation, 28.6 MB disk space will be freed.
    Do you want to continue? [Y/n]Y
      :
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    

    sudo 設定確認

    # lv /etc/sudoers
    

    以前 sudoers が書き換わっていた事があるので確認
    念の為別端末( Alt + 1~6 )で確認も

    % sudo -s
    [sudo] password for mk: 
    # whoami
    root
    

    ログ終了

    # exit
    Script done, file is /home/mk/jessie2stretch.log
    

    再起動

    % sudo shutdown -r now jessie2stretch dist-upgrade!
    

    Version 確認

    % cat /etc/debian_version 
    stretch/sid
    % uname -a
    Linux x220 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
    % screenfetch
             _,met$$$$$gg.           mk@x220
          ,g$$$$$$$$$$$$$$$P.        OS: Debian testing stretch
        ,g$$P""       """Y$$.".      Kernel: x86_64 Linux 3.16.0-4-amd64
       ,$$P'              `$$$.      Uptime: 2m
      ',$$P       ,ggs.     `$$b:    Packages: 5457
      `d$$'     ,$P"'   .    $$$     Shell: zsh 5.0.7
       $$P      d$'     ,    $$P     Resolution: 1440x900
       $$:      $$.   -    ,d$$'     WM: GNOME Shell
       $$\;      Y$b._   _,d$P'      WM Theme: Adwaita
       Y$$.    `.`"Y$$$$P"'          GTK Theme: Not Found [GTK2], Not Found [GTK3]
       `$$b      "-.__               Icon Theme: Not Found
        `Y$$                         Font: Not Found
         `Y$$.                       CPU: Intel Core i7 CPU L 620 @ 2GHz
           `$$b.                     RAM: 1413MB / 7801MB
             `Y$$b.                 
                `"Y$b._             
                    `""""
    

    サードパーティのsource list を復活させる

    /etc/apt/sources.list.d/* をリストアしたり.

    % ls -A /etc/apt/sources.list.d/
    atlassian-hipchat.list  chrome-remote-desktop.list  google-chrome.list  google-chrome.list.save  owncloud-client.list  spideroak.com.sources.list  steam.list  wuala.list
    % sudo apt update
    % sudo apt list --upgradable
    一覧表示... 完了
    libowncloudsync0/不明 1.8.2-1 amd64 [1.8.1+dfsg-1 からアップグレード可]
    owncloud-client/不明 1.8.2-1 amd64 [1.8.1+dfsg-1 からアップグレード可]
    owncloud-client-l10n/不明 1.8.2-1 all [1.8.1+dfsg-1 からアップグレード可]
    % sudo apt upgrade
    % sudo apt dist-upgrade
    

    未だjessie がリリースされてそう経ってないので差分が少なくディストリビューションアップグレードはあっさり終わりました.アップデート時に面倒な設定ファイルの書き換えも1つだけでした.

    追記)
    コンソールでのキーマップが[標準 105 キー (国際) PC] になっていたので,[標準 101 キー PC] に変更した.

    % sudo dpkg-reconfigure keyboard-configuration