2017年3月31日金曜日

上牧にある洋菓子屋さん Patisserie SUI

ひさしぶりの、 Patisserie SUI。 阪急京都線上牧駅から、信号にかからなければ3分かからない。
春の新作が出ているだろうと思って、訪問。
左奥が、新作の春のタルト?だったかな。 右奥が定番のモンブラン、手間がチーズケーキ系なんたら? 忘れた。 たった3つが覚えられない。年だなあ。
春のタルトは、マカロン風なのだが、私には甘すぎかな。 ジャム?が少なめの方が嬉しいかも。

前回もチーズケーキ系を買ったが、今回の方が好き。

でも満足。

2017年3月26日日曜日

軽量ブラウザ luakit をサブで使う(20170804追加) 古いバージョン用

軽量ブラウザ luakit

 こんなんがあるとは気が付かなかった。 Debianのパッケージにも含まれている。 見逃してたみたい。いつものように、 設定は以下をコピペさせて頂いた。
[201708] ArchWikiによると,WebKit の新しいやつに対応してないと、セキュリティに問題あるらしい(元ネタ)。 debianのパッケージも古くて、webkit 1 でrequireされているみたい。 なので、新しいバージョンを自前で入れ直した。
作業ディレクトリで、git clone https://github.com/luakit/luakit 。ディレクトリに入って、make。パッケージが不足してたら追加する。 エラーが無ければ、sudo make install。
/etc/xdg/luakit に設定ファイルが出来るので、~/.config/luakit にコピー。後はカスタマイズ。

[201710] 久しぶりに更新したら、色々追加設定が動かなくなった。 どうも、設定方法が変更されている最中のようだ。
設定が表で出来るようになっている。前からかもしれない。ここ。 :settings で設定画面が出てくる。追加設定した内容は、.local/share/luakit/settings に保存される。 ドキュメント類は更新されてないみたいだから、素人はしばらく静観しか無い。
あと、debianのパッケージ作成のドキュメントが追加されている。そのうち、最新版をdebファイルでインストできるかもしれない。


デフォルトからの変更は、
  • font の設定[OK]
  • yでヤンクしたURLはクリップボードにも入れる[OK]
  • Yでページのタイトルをヤンク[OK]
  • Control + cで選択範囲をクリップボードにコピー[OK]
  • ダウンロード先指定[dirctory を聞いてくるので、そのまま]
  • ホームページはgoogle検索[最初からgoogle]
rangerやrofiから使ってみている。起動が軽快なんで、取り敢えずluakitで開き、必要に応じてfirefoxを開くという感じかも。様子見。urlやタイトルもコピペしやすい。

bookmarks[そのまま使える]

bookmarkについては、firefoxからの移行方法の説明があるが、urlとtagのみの移行になる。
  • firefoxからbookmarkのエクスポート
    • ブックマーク>全ての・・・> インポートとバックアップ>HTMLとしてエクスポート
  • awkを使って、テキストファイルに変換
    • $ awk -f ff2lk.awk bookmarks.html > bookmarks.txt
  • luakitを使って、bookmarkを作成
    • luakit -c bookmarks_plain_to_sqlite.lua bookmarls.txt bookmarks.db
やはりタイトルがないと不便なので、少し手を加えた。 少しといっても、結構時間をくった。素人なんで。
  • firefoxにプラグイン(Places to CSV)を入れてcsv形式で出力
    • 必要な項目を選択し、セパレータや文字コードを設定しておく。
  • awkを使って、必要な項目だけ、順序よく並べ替える。
    • gawk -F: 'BEGIN{FS="\t";OFS="\t"}{print $8,$14,$9,$10,$6,$12}' bookmarks.csv > book.csv
    • sortしてvimで確認、編集(これもawkとかで出来るんだろうなあ)
  • 先の bookmarks_plain_to_sqlite.lua を、作成したcsvに合わせて、titleなどを書き込むよう修正する。
    • luakit -c bookmarks_csv_to_sqlite.lua book.csv bookmarks.db
    • 変更は数行なのに・・・・
一応、ブックマークにタイトルが表示されるようになったけど、 シンプルでとっつきにくい。


bookmakは、tagのクリックやsearchで絞り込んで使う感じ。 タグ付けを整理した方がよさそう。表示は、createdの順で、NULLは先頭になるようだ。なので、firefoxから変換する時に、tsLastVisitをcreatedに入れ込めば、最近訪問したサイトが頭の方なるみたいで、少し気持ちが楽になる。

os.time の部分が、firefoxの出力と桁数が違うので、修正(2017.04)。


また、新たなタグ設定や変更すると、日本語がエラーになってしまうので、日本語タグをアルファベット表記に変更した。

bookmarkって、どうやって管理したらよいやら。
でも、一歩前進。

 Firefoxで開き直す[OKだったり、でなかったり]

表示しているページを firefox で開けるように、以下を参考に 新たなluaファイル(extbrows.lua)を作成し、& に割り当てた。

------------------------------------------------
-- extbrows.lua:
------------------------------------------------
function open_ext_browser (w)
   local cmd = 'firefox'
   local uri = w.view.uri or ""
   luakit.spawn(string.format("%s %q", cmd, uri))
end
これで、一通りのことはできる。はず。

 pdfとかを確認したい

今度は、新しいタブで xdg-open で開くみたいなので設定は不要だが、使い道がありそうなので設定した。

pdf とかクリックしても表示されないのは不便なので、探してみた。
ずっと気になっていたが、なかなか出会えなかった。
上を参考に設定した。上の例では urxvtd を使うが、私は使ってないので、wget でダウンロードするように変更した。 また、pdfファイルは手持ちファイルにしたい事があるので、既定の仮置き用フォルダに保存するようにした。
binds.lua への追記は、参考サイトそのままだが、pdfFromURL は変更した。
#!/bin/bash

url=$1
file="${url##*/}"
echo $file
wget $url -O ~/PDF/$file
zathura ~/PDF/$file
これで、;d から、表示させたいリンクの番号を入れれば、所定の場所に保存、zathura で表示される。
他にも使えそう。

 Webページをpdfで保存する

そのまま使える。
サイトによってはダウンロードさせてくれないところもあるみたい。


firefox や wget が起動出来るのだから、wkhtmltopdf も使えるわけで、w2pdf.luaを作って試してみた。
単純に :print で、pdf出力でもよいが、こちらの方が細かく設定できそう。
取り敢えずデフォの余白設定がうれしい。
------------------------------------------------------------
function save_to_pdf (w)
   local cmd = 'wkhtmltopdf'
   local title = w.view.title or "tmp"
   local uri = w.view.uri or ""
   local args = '/home/hoge/PDF/' ..
                luakit.uri_encode(title) ..
                '.' ..
                luakit.uri_encode(uri) ..
                '.pdf'

   luakit.spawn(string.format("%s %s %s", cmd, uri, args))
end



2017年3月20日月曜日

T510での省メモリ化 (20170320でのまとめ)

対象環境

  • Thinkpad T510(中古),メモリ4Gが上限のタイプ。
  • Debian x86_64 GNU/Linux MATE desktop
  • 常時起動(Firefox、icedove、keepass2、emacs、terminal)
  • 使用者:素人 遊びでDebian
  • 結果
    • Before: 起動直後 (MATE emacs firefox icedove mate-terminal lightdm)
      free :: used 1183476 (swap 6760)
    • After: 起動直後 (i3 emacs firefox icedove urxvt lightdm)
      free :: used 875524 (swap 0)

軽量ブラウザは断念

  • 軽量ブラウザを試す(hv3、dillo、xombrero、Links2、NetSurf、midori)が、
  • 使用メモリは、起動時少ないが、使用に伴い増えるので Firefoxやchromeに替わるだけのメリットは小さい。
  • Firefoxを手放せない。

i3というタイル型WMに移行

  • 設定が面倒だが、結構、使いやすい。
  • 200Mぐらいは節約できる。
~/.config/i3/config
# i3 config file (v4)
set $mod Mod4

set $control ~/.config/i3/workspace_controller.py

# display
set $black  #002B36
set $white  #839496
set $gray   #CCCCCC
set $darkgray   #666666
set $green  #799F26
set $blue   #4D73AA
set $purple #8473A7
set $red    #B58900
set $orange #E59847
set $cyan   #2AA198
set $dark   #00252E

font pango:DejaVu Sans, IPAGothic 12px

# 
floating_modifier $mod
bindsym $mod+Return exec urxvt
bindsym $mod+Shift+q kill

# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right
#
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right
#
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

# split
bindsym $mod+h split h
bindsym $mod+v split v

# screen layout
bindsym $mod+f fullscreen toggle
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
bindsym $mod+Shift+space floating toggle
bindsym $mod+space focus mode_toggle

# container
bindsym $mod+a focus parent
#bindsym $mod+d focus child

# workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10

bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10

bindsym $mod+z workspace back_and_forth

# i3 
bindsym $mod+Shift+c reload
bindsym $mod+Shift+r restart
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"

# resize
mode "resize" {
        bindsym j resize shrink width 6 px or 6 ppt
        bindsym k resize grow height 6 px or 6 ppt
        bindsym l resize shrink height 6 px or 6 ppt
        bindsym semicolon resize grow width 6 px or 6 ppt

        bindsym Left resize shrink width 6 px or 6 ppt
        bindsym Down resize grow height 6 px or 6 ppt
        bindsym Up resize shrink height 6 px or 6 ppt
        bindsym Right resize grow width 6 px or 6 ppt

        bindsym Return mode "default"
        bindsym Escape mode "default"
}

bindsym $mod+r mode "resize"

# i3bar
bar {
        status_command i3blocks -c ~/.config/i3/i3blocks-a.conf
        font xft:Ricty Diminished for Powerline 14px
  colors {
    separator #268bd2
    background #002b36
    statusline #839496
    focused_workspace #fdf6e3 #6c71c4 #fdf6e3
    active_workspace #fdf6e3 #6c71c4 #fdf6e3
    inactive_workspace #002b36 #586e75 #002b36
    urgent_workspace #d33682 #d33682 #fdf6e3
  }
}

# keybind
bindsym XF86AudioRaiseVolume exec mpc volume +5
bindsym XF86AudioLowerVolume exec mpc volume -5
bindsym XF86AudioNext exec mpc next
bindsym XF86AudioPrev exec mpc prev
bindsym XF86AudioPlay exec mpc play
bindsym XF86AudioStop exec mpc pause

bindsym XF86MonBrightnessUp exec xbacklight -inc 10
bindsym XF86MonBrightnessDown exec xbacklight -dec 10

bindsym Print exec scrot '%Y-%m-%d_%T_scrot.png' -e 'mv $f ~/Pictures/capture/'

# screen
exec --no-startup-id feh --randomize --bg-scale ~/Pictures/Wallpapers/*
exec --no-startup-id xset s 600
exec --no-startup-id xset dpms 0 0 600
exec --no-startup-id xautolock -time 12 -locker 'i3lock -i ~/.config/i3/triangle_shape.png'

# rofi bindings
bindsym $mod+d exec rofi -show run 
bindsym F12 exec rofi -show window 

# startup
exec --no-startup-id touchpad off
exec --no-startup-id fcitx-autostart

exec --no-startup-id i3-msg 'workspace 1; exec urxvt'
exec --no-startup-id i3-msg 'workspace 2; exec firefox'
exec --no-startup-id i3-msg 'workspace 3; exec emacs25'
exec --no-startup-id i3-msg 'workspace 4; exec icedove'

exec --no-startup-id devmon
exec --no-startup-id owncloud
exec --no-startup-id nm-applet
exec --no-startup-id redshift

#class                    border  backgr. text    indicator
client.focused            $white  $white  $dark    $dark
client.unfocused          $dark   $dark   $white   $white
client.focused_inactive   $dark   $dark   $white   $dark
client.urgent             $orange $orange $dark    $white
#
for_window [class="Icedove"] move container to workspace 4
for_window [class="Emacs"] move container to workspace 3
for_window [class="Firefox"] move container to workspace 2
for_window [class="josm"] move container to workspace 7
for_window [class="Google-chrome"] move container to workspace 8

for_window [class="(?i)gnome-calculator"] floating enable
for_window [class="mlterm"] floating enable
for_window [class="(?i)geeqie"] floating enable, resize set 840 480
for_window [class="(?i)Shutter"] floating enable, resize set 840 480
for_window [class="(?i)Fcitx-config"] floating enable

for_window [window_role="pop-up"] floating enable
for_window [window_role="menu"] floating enable
for_window [window_role="Preferences"] floating enable

~/.config/i3/i3blocks.conf
# i3blocks config file
align=center
color=#839496
command=/usr/share/i3blocks/$BLOCK_NAME
markup=none

[MPD]
label=♪
command=~/.config/i3/i3blocks-mpd
color=#88aa00
interval=15

[volume]
label=VOL
instance=Master
interval=once
signal=10
separator=true
color=#a43300

[memory]
label=MEM
instance=mem;free
interval=30

[disk]
label=DF
interval=30

[iface]
color=#00FF00
interval=10

[wifi]
interval=10
separator=false

[bandwidth]
interval=5

[cpu_usage]
label=CPU
interval=10

[battery]
label=⚡
interval=30

[time]
command=date '+%y/%m/%d(%a)%R'
interval=30

[temperature]
instance=Core
interval=10

ターミナルを軽量化

  • urxvt に替える。xtermも軽量だが、カスタム化が不便。
~/.Xdefault for urxvt
!Xft settings-----------------------
URxvt.depth:                32
URxvt.transparent:          false
URxvt.fading:               0
URxvt.loginShell:           true
URxvt.saveLines:            2560
URxvt.internalBorder:       6
URxvt.lineSpace:            1
URxvt*shading:              30
URxvt*inheritPixmap:        True
! Cursor ---------------------------
URxvt.cursorBlink:          true
URxvt.cursorColor:          #657b83
URxvt.cursorUnderline:      false
! Pointer --------------------------
URxvt.pointerBlank:         true
! Fonts ----------------------------
URxvt.allow_bold:  true
URxvt*font: \
   xft:MyricaM M:pixelsize=16, \
   xft:Inconsolata\ for\ Powerline:pixelsize=16
URxvt*kanji_encoding: UTF-8
URxvt*fading: 70
! Scrollbar ------------------------
URxvt.scrollStyle:          rxvt
URxvt.scrollBar:            false
! do not scroll with output --------
URxvt*scrollTtyOutput: false
! scroll in relation to buffer (with mouse scroll or Shift+Page Up)
URxvt*scrollWithBuffer: true
! scroll back to the bottom on keypress
URxvt*scrollTtyKeypress: true
URxvt.secondaryScreen: 1
URxvt.secondaryScroll: 0
URxvt.secondaryWheel: 1
! borders --------------------------
URxvt*externalBorder:     1
URxvt*internalBorder:     1
URxvt*borderLess:         0
! perl modules ---------------------
URxvt.perl-ext-common: default,selection-to-clipboard,clipboard-osc,font-size,xim-onthespot
URxvt.keysym.C-Up:     font-size:increase
URxvt.keysym.C-Down:   font-size:decrease
URxvt.keysym.C-equal:  font-size:reset
URxvt.inputMethod: fcitx
URxvt.preeditType: OverTheSpot,None
URxvt.url-launcher: /usr/bin/xdg-open
URxvt.matcher.button: 1
! color
#include "~/.Xresources.d/felix"

~/.Xresources for xterm

xterm*termName:            xterm-256color
xterm*locale:              true
xterm*selectToClipboard:   true
xterm*saveLines:           4096
xterm*faceName: Inconsolata for Powerline:style=Book:antialias=true
xterm*faceNameDoublesize:MigMix 2M:antialias=true
xterm*faceSize: 12
xterm*faceSize1: 6
xterm*faceSize2: 8
xterm*faceSize3: 10
xterm*faceSize4: 14
xterm*faceSize5: 18
xterm*faceSize6: 24

xterm*highlightSelection: true
xterm*trimSelection: true

xterm*VT100.Translations: #override \
    Shift <KeyPress> Insert: insert-selection(CLIPBOARD) \n\
    Ctrl Shift <Key>V:    insert-selection(CLIPBOARD) \n\
    Ctrl Shift <Key>C:    copy-selection(CLIPBOARD) \n\
    Ctrl <Btn1Up>: exec-formatted("xdg-open '%t'", PRIMARY)
!----------------------------------------------
xterm*boldColors: true
xterm*scaleHeight: 1.1

ファイルマネージャを CLI へ

  • コンソールで使えるファイラーになる。
  • vifm と ranger のふたつ。ranger を新たに使うようになる。
~/.config/ranger/rc.conf デフォからの変更は以下のみ

set preview_images true
set colorscheme jungle
set draw_borders true
set line_numbers true
~/.config/ranger/rifle.conf

インストしてないプログラムについての記載は削除して メニューをシンプルにし、画像ファイルについて、少し追加。

# Image Viewing:
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
mime ^image/svg, has display,  X, flag f = display -- "$@"
mime ^image, has pqiv,      X, flag f = pqiv -- "$@"
mime ^image, has stripimg640.sh , terminal = stripimg640.sh "$1"
mime ^image, has stripimg800.sh , terminal = stripimg800.sh "$1"
mime ^image, has stripimg1024.sh , terminal = stripimg1024.sh "$1"
mime ^image, has shutter,       X, flag f = shutter -- "$@"
mime ^image, has gthumb,       X, flag f = gthumb -- "$@"
mime ^image, has gimp,      X, flag f = gimp -- "$@"
ext xcf,                    X, flag f = gimp -- "$@"


~/.config/ranger/scope.sh

インストしてないプログラムについての記載は削除して 余分な負荷を減らす。ハイライトが不要なテキストは、単純なプレビューにする。

case "$extension" に 追加
    txt|org|org_archive|md|mkd|rst|rest|config)
        try lv "$path" && { dump | trim; exit 5; } || exit 1;;

ネットドライブのマウントを変更

  • QNAPに CloudDriveSync を設定し、外部Cloudと同期し、これをT510にマウント
  • マウントは、gvfs-mount smb://hogehoge... から、 fstab で cifs としてマウント。
  • 外部クラウドのマウントをNASに委ね、DropBox と Google-Drive の専用設定を削除。
  • 100Mほど開放。

メイラー、カレンダーはicedoveのまま

  • これに変わるCLIが揃ってない。
  • googleカレンダーが困った。
  • Thunderbird に返り咲いた。

その他アプリを軽量なものに変更、は無理

  • viking、shutter、JavawaRTWtool、JOSMとかに代替えがない
  • 日本語入力を、例えば skk だけにするのは無理
  • mpd + mpdクライアント はゆずれない。クライアントに大きな差はない

不要なデーモン

  • やってない。素人には無理っぽい。


ゆっくりと育てれば、それで良し。


2017年3月16日木曜日

日本語カスタムPOI ファイルの 作成確認 [20171225更新]

Garminのハンディデバイスは、カーナビとは比べ物にならないぐらい低機能だ。 少しは便利に使うために、自分用のWaypointとかTrackを登録していくのだが、 点数制限とか、管理とか面倒なので、WaypointはPOI形式のファイルにまとめて管理するのが良いみたい。
私は、ここ(GARMIN カスタム POIの日本語化 )で公開して頂いてるPOIファイルを便利に使わせてもらっている。 登録ポイントを近い順に表示してくれるので、 チャリで出かけた時など、最寄りのコンビニリストが利用できる。
自分でこのように便利なPOIファイルを作成することは諦めているが、 自分で行ってみたい飯屋とかを登録、更新しておくと、この辺りに・・・とか いう場合に活躍してくれることもあるので、ある程度は出来るようにしている。
で、その方法の確認、覚書。i3 WMにしたもんで。

作業環境とか

  • PC:TP510(Debian x86_64 GNU/Linux、Stretch)
  • GPS:Garmin の eTrex30 と Colorado300。 いずれも英語版
  • ネット環境(Webブラウザで登録したい座標を調べる)
  • Viking(WayPointなどの管理)
    • Viking GPS data editor and analyzer download | SourceForge.net
    • 開発は継続されているようだが、ほとんど停滞かと思う。 時々期待と異なる動きをするし、カシミール3Dに比べると完成度はかなり低いと思うが、 Linuxで動くこと、地理院のオルソが使えるのは魅力。
    • ここにVikingのこととかまとめてみた。少し古いけど。
  • JaVaWa RTWtool(GPXからPOIへの変換ができる)
    • JaVaWa GPS-tools | Voorpagina
    • 病気されたようで、ご自愛くださいませ。
    • 残念だが、wine 32 での利用になる。
    • 利用は自己責任で。 ネットで日本語での情報が出てこないので、 なにか注意が必要かもしれない。数年使ってるけど、まだ怒られてない。 以前は日本語が通らなかったと記憶。 Colorado300は日本語ダメなので問題なかった。 今は、日本語を含むデータもいける。

POIの元になるデータの収集、整理

  • ブラウザ と Viking を起動しておく。
  • POIとして登録したい場所を、Google-map や Yahoo地図で検索する。
  • 登録したいポイントの右クリックから、 「この場所について」とか「この地点の情報を見る」で、 座標を表示させる。
  • この座標をコピーして、Vikingのトラックポイントに新規登録。
    • アイコンも設定できるが、 私はアイコンを気にしないので、良く分からない。
    • Vikingのファイル形式で、保存しておく。データは使いまわす。
    • データのエキスポートはレイヤー毎で可能なので、レイヤーで分類するとよい。
[201804] Google Map で、登録したい場所をクリックすると、座標を含めたurlになる。 ブラウザのプラグインを使えば、urlを特定の書式に変換してクリップボードに取り込むことが可能。 クリップボードに入ってしまえばローカルにハンドリングできるので、この方法を使うようにしてみた。 ここ

GPX形式から、POI形式へ

  • VikingからデータをGPXファイルでExportする。 
  • 左ペインの該当レイヤーを右クリックし、ExportLayer の、 Export as gpx か Export via GPSbabel を選ぶ。
  • GPXをそのまま使うなら、GPSbabelを通す方がよい。 RTWtool だけなら、GPSbabel 経由は不要。
  • JaVaWa RTWtool を起動して先のgpxファイルを開くと読み込まれたポイントデータが表示される。 CSVもいける。
  • ここで表記等の変更ができるので、必要に応じて作業する。
  • Export to: で Garmin POI file を選択し、メニューバーの Convert をクリック、 ファイル指定で保存。
  • 最後に View POI statistics? と聞かれるが、No。
  • あとは、デバイスをマウントして送り込む。左がeTrexで右が Colorado。
 
RTWtoolは他にも色々できそうだが、CSV以外、試してない。


 以上、i3 WM にしても無事使えてる。

gpsbabelで、Garmin Points of Interest (.gpi) (garmin_gpi)が使えるんですね。 昔は出来なかったように記憶してるんだが、知らなかった。 kmlやgpxからの変換は出来たが、デバイスでの確認は未了。 RTWtoolで作ったものとファイルサイズがかなり違う。心配だ。
  -->> やっぱり、だめだった。

[2017.05.15] 追加(近接アラームがなんとか使えた。不十分だけど)
JaVaWa RTWtool で変換する場合、一括で近接アラームの設定が可能になっている。 メニューのsettingから、Waypointsの項目でProximityの値をメートルで設定すれば、 convert時に全点追加される仕様のようだ。

ただ、そのままでは、etrex30英語版ではうまくいかなかった。 出力ファイルの修正が必要だった。 なので、JaVaWa RTWtoolで gpx を作成し直すことになる。
ちなみに、Vikingでこのような追記は出来ないみたい。

修正は、gpxファイルで、以下のような箇所を
<extensions>
<gpxx:WaypointExtension>
<gpxx:Proximity>200 </gpxx:Proximity>
</gpxx:WaypointExtension>
</extensions>
次のように変更すると、
<extensions>
<wptx1:WaypointExtension>
<wptx1:Proximity>200 </wptx1:Proximity>
</wptx1:WaypointExtension>
</extensions>
近接アラーム200m が使えるようになる。

不要な箇所を変更しないように注意して、 エディタとかで一括置換すればよい。

ちなみにpoi化するとこの変更は反映されない。当然か。
つまり、POIでは使えない。単純にgpxファイルに近接アラームを一括追加してくれるだけ。
でも、点数制限はあるものの、道案内用のwaypointに近接アラーム設定しておけば、 簡易ナビになる。はず。
次は階層化の確認かなあ

道の駅のデータを作製してみた

[210906] 地理院からxmlをダウンロードできるようになってた。 ここから。

(1) 道の駅のデータをテキストファイルに保存する。

元データはRS 道の駅一覧表 for GPSで、 画面に表示されるデータをコピペしてテキストファイルに保存する。

[20171128] データた追加されていたので、今度はコピペではなく、pythonでスクレイピングしてみた。ところどころ、データがダブったりしておかしい。難しい。次は、道の駅 公式ホームページから作ってみよう。

項目は、駅名、北緯(N)、東経(E)、P、備考、MAPCODE、路線名、住所 だ。 tabで区切られたテキストファイルになる。
rnamae.csv あいおい 43.32.35 143.59.04 105 ○ 866 463 154 R240 北海道網走郡津別町字相生 愛ランド湧別 44.07.42 143.43.23 208 ○ 404 476 383 R238 北海道紋別郡湧別町字志撫子6-2
(2) 必要な形式、項目のCSVに変換する。

  1) 緯度経度が度分秒の60進から十進数に変換
  2) 日本語フォントが使えない端末用に、日本語をアルファベット化
    以上をgawkで処理。

# BEGIN{ FS="\t"; OFS="\t" OFMT="%.11g" } { namae= $1 split($2,ary,".") lat=ary[1]+ary[2]/60.0+ary[3]/60./60. split($3,ary,".") lon=ary[1]+ary[2]/60.0+ary[3]/60./60. cmd = sprintf("echo %s | kakasi -iutf8 -Ja -Ha -Ka -Ea", $1); cmd | getline nn close(cmd) cmd = sprintf("echo %s | kakasi -iutf8 -w | kakasi -iutf8 -Ja -Ha -Ka -Ea", $8); cmd | getline aa close(cmd) rna = sprintf("%s_[%s]",nn,namae) print rna,lat,lon,aa }
出力結果は以下。手作業前。
rnamae2.csv aioi_[あいおい ] 43.543055556 143.98444444 hokkaidou abashiri gun tsubetsu machi ji aioi airandoyuubetsu_[愛ランド湧別 ] 44.128333333 143.72305556 hokkaidou monbetsu gun yuu betsu machi ji kokorozashi nadeshiko 6-2
3) 一部、括弧や横棒の文字化けや、いらんスペースがあるので、手作業で修正。
こいつを、JaVaWa RTWtool で poi 化すれば終了。


[20171225] 道の駅 公式ホームページにある、道の駅検索結果を県毎にpythonでスクレイプしてみた。例えば山形県の結果。名前と座標とidはいける。リンク先を追いかければ、住所や電話番号もとれるかも。とりあえず不要。Kakasiでローマ字名を作り、全角を半角に変換(mojimoji)するのを追加。これでさくっとcsvが作れる。kakasiはここを、mojimojiはここを参考にした(感謝)。
#!~/.pyenv/shims/python
"""Get Michi-no eki List from  web site."""
#

import sys

import regex
import requests
from bs4 import BeautifulSoup

import mojimoji
from pykakasi import kakasi

kakasi = kakasi()
kakasi.setMode("H", "a")  # default: Hiragana no conversion
kakasi.setMode("K", "a")  # default: Katakana no conversion
kakasi.setMode("J", "a")  # default: Japanese no conversion
kakasi.setMode("r", "Hepburn")  # default: use Hepburn Roman table
kakasi.setMode("C", True)  # add space default: no Separator
kakasi.setMode("c", False)  # capitalize default: no Capitalize

convk = kakasi.getConverter()

ss = regex.compile(r'{((?>[^{}]+|(?R))*)}')
target_url0 = 'https://www.michi-no-eki.jp/stations/search?prefecture_id='
#   1: Hokkaidou     2: Aomori     3: Iwate
#   4: Miyagi        5: Akita      6: Yamagata
#  46: Kagoshima    47: Okinawa

for jj in range(1, 48):
    tar_url = target_url0 + str(jj)
    r = requests.get(tar_url, verify=False)
    soup0 = BeautifulSoup(r.text, "lxml")
    scripts = soup0("script")

    mark_datas = []
    mark_datas = scripts[0].string.strip().split(";")

    for ii in range(1, len(mark_datas) - 1):
        s1 = ss.findall(mark_datas[ii])
        s2 = s1[0].split(",")
        s_id = int(s2[0].split(":")[1].strip())
        sh_name = s2[1].split(":")[1].strip()
        sr_name = mojimoji.zen_to_han(convk.do(sh_name))
        s_name = "{0:}_[{1:}]".format(sr_name.strip("'"), sh_name.strip("'"))
        s_lat = s2[2].split(":")[1].strip()
        s_lng = s2[3].split(":")[1].strip()
        s_pref = int(s2[4].split(":")[1].strip())
        print("{1:d}, {2:}, {3:}, {4:}, {0:d}".format(s_pref, s_id, s_name, s_lat, s_lng))
    #
sys.exit()

[20180406] 処理に時間がかかるので、wget でデータを一旦取得してから、parse するように変更。

#!~/.pyenv/shims/python
"""Get Michi-no eki List from  web site."""
#

# -*- coding: utf-8 -*-

import glob
import os
import subprocess
import sys
from datetime import datetime

from bs4 import BeautifulSoup

import logzero
from logzero import logger

from pykakasi import kakasi

from pytz import timezone

import regex

import mojimoji


def get_file_list(t_dir):
    """Get csv file names."""
    # 単純にファイルのリストを取得するだけ

    f_list = []
    f_list = sorted(glob.glob(t_dir))

    return f_list


def subcommand(arg_ss, err_jj):
    """Execute external command."""
    # print(" ** ", arg_ss)
    try:
        res = subprocess.run(arg_ss, stdout=subprocess.PIPE)
        sys.stdout.buffer.write(res.stdout)
    except ValueError:
        e_mes = "Error.{:d} ...".format(err_jj + 100)
        logger.info(e_mes)

    return None


def set_my_kakasi():
    """Set my kakasi function."""
    #
    m_kakasi = kakasi()
    m_kakasi.setMode("H", "a")  # default: Hiragana no conversion
    m_kakasi.setMode("K", "a")  # default: Katakana no conversion
    m_kakasi.setMode("J", "a")  # default: Japanese no conversion
    m_kakasi.setMode("r", "Hepburn")  # default: use Hepburn Roman table
    m_kakasi.setMode("C", True)  # add space default: no Separator
    m_kakasi.setMode("c", False)  # capitalize default: no Capitalize

    return m_kakasi.getConverter()


def parse_data(mup_dat):
    """Parse url data."""
    #

    re_st = regex.compile(r'{((?>[^{}]+|(?R))*)}')
    conv_kaka = set_my_kakasi()

    d_lst = []

    for i in range(1, len(mup_dat) - 1):
        s_1 = re_st.findall(mup_dat[i])
        s_2 = s_1[0].split(",")
        s_id = int(s_2[0].split(":")[1].strip())
        sh_name = s_2[1].split(":")[1].strip()
        sr_name = mojimoji.zen_to_han(conv_kaka.do(sh_name))
        s_name = "{0:}_[{1:}]".format(sr_name.strip("'"), sh_name.strip("'"))
        s_lat = s_2[2].split(":")[1].strip()
        s_lng = s_2[3].split(":")[1].strip()
        s_pref = int(s_2[4].split(":")[1].strip())
        out_buf = "{1:d}, {2:}, {3:}, {4:}, {0:d}".format(s_pref, s_id, s_name, s_lat, s_lng)

        d_lst.append(out_buf)

    return d_lst


def write_line_data(f_name, list_line_data):
    """Write line data."""
    #

    with open(f_name, "wt") as f_out:
        for k in list_line_data:
            w_buf = k + '\n'
            # logger.info(w_buf)
            f_out.writelines(w_buf)

    return


def main():
    """Do main process."""
    #

    target_url0 = 'https://www.michi-no-eki.jp/stations/search?prefecture_id='

    for j in range(1, 48):
        tar_url = target_url0 + str(j)
        out_url = "./site_data/saved" + "{0:02d}".format(j) + ".html"
        # wget --no-check-certificate  -O savedfile.html

        arg_1 = ['--no-check-certificate']
        arg_2 = ['-O', out_url]
        arg_0 = ['wget'] + arg_1 + [tar_url] + arg_2
        if os.path.exists(out_url):
            logger.info("File is exist.")
        else:
            logger.info("Get urlsite date")
            subcommand(arg_0, 5)

    url_data_files = get_file_list("./site_data/*.html")

    out_datas = []
    for f_name in url_data_files:
        soup0 = BeautifulSoup(open(f_name), "lxml")
        scripts = soup0("script")

        mark_datas = []
        mark_datas = scripts[0].string.strip().split(";")

        out_dat = parse_data(mark_datas)
        out_datas.extend(out_dat)

    # logger.info(len(out_datas))
    now_time = "michieki_" \
               + datetime.now(timezone('UTC')).strftime("%Y%m%dT%H%MZ") \
               + ".csv"
    logger.info(now_time)
    write_line_data(now_time, out_datas)

    return


if __name__ == '__main__':
    #
    LOG_FORMAT = '%(color)s[%(module)s:%(lineno)d]%(end_color)s %(message)s'
    FORMATTER = logzero.LogFormatter(fmt=LOG_FORMAT)
    logzero.setup_default_logger(formatter=FORMATTER)

    main()

    sys.exit()

スポーツサイクルのショップリストを作るのは中断

サイクルスポーツ.jpのショップナビの店舗をpoiにしようかと、 pythonでscrapingしたショップリストからジオコーディングで座標を求めたcsvファイルを作成しようとしたが、 ジオコーディングで比較的正確な情報が得られるらしいgoogleを使うにはライセンスのハードルがあるみたい。 近畿とその周辺があたりで、コーディングしてくれなくなる。 1箇所あたり10アクセスのカウントになるらしい。お金を払うつもりはないし、 少しづつスクリプトを走らせるなら、手作業でも大差ないかもと思ったが、 ショップのWebサイトやblogをついつい読み始めてしまい、作業は一向に進まない。 あと、このリストで作業してよいか、というのにも気付いた。これまでの作業をプロットしてみると、 来年足を伸ばそうと思っている若狭周辺のデータがない。福井にも当然サイクルショップは有るわけで、 元データの性格なんだろう。外の地域でも同様かもしれないので、しばらく中断。
やっぱり、その都度ネット検索というのが本筋なんだろうな。

2017年3月14日火曜日

タッチパッドの無効化 (Debian)とトラックポイントの感度変更

  MATE では、gnomeの設定ツールでタッチパッドを無効化したりできたが、 i3 WM では、自分で設定しないといけない。幸い、T510 は、bios で無効化出来るで特に問題はなかいが、 画面のチラツキ解消のために、bios を default に戻したりしてたので、 Debian 配下で無効化できるとうれしいと思い、下のサイトを参考に設定した。
まず、デフォにはない /etx/X11/xorg.conf.d/ を作り、 /usr/share/X11/xorg.conf.d/70-synaptics.conf をコピーする。 このファイルの、0を1に変更することで無効化できた。
Option          "TouchpadOff"           "1"
/usr/share/X11/xorg.conf.d/ はパッケージのデフォ、 マシン固有の設定は /etc/X11/xorg.conf.d/のファイルでオーバーライドするという理解だけど、 合ってるかな。自分でオンオフするために、 Ubuntu ノートPCのタッチパッドを無効にする方法 | from umentu import stupid などを参考に、スクリプトで処理。 touchpad [on|off] で出来るようにした。
 ついでに、中ボタンエミュレートの設定を追加した。 外付けマウスがホイールボタン=中ボタンなので、Vikingで 中ボタンを使う際にホイールが微妙に動いて使いづらいから。 パラメータなんかを設定すれば解消されるかもしれないが、操作感が変わるのはいや。で、ArchLinuxのサイトなんかを参考に、 /etc/X11/xorg.conf.d/10-evdev.conf を追加。 中身はよく判らない。10の意味も判らん。ただ、 Emulate3Buttons は、MiddleEmulation になったみたい(man libinput)。
Section "InputClass"
        Identifier "evdev pointer catchall"
        MatchIsPointer "on"
        Option "MiddleEmulation" "yes"
EndSection
とりあえず、vikingでホイールの微妙な反応を回避できたので、よしとした。よかっった。


[291801] トラックポイントの感度を変更 お店でThinkpadに触れてみたら、 トラックポイントの感度が自分のマシンと随分違うことに気付いた。 私のは鈍い。私も鈍い。で、マシンは変更してみた。 調べると、デバイスの設定を変更すればよいらしい。 トラックポイントの感度とかのデフォルト値は以下で知れる。 i8042以下は、環境で差があるみたい。
[18/01/05金06:57]:$ cat /sys/devices/platform/i8042/serio1/serio2/sensitivity
     128
[18/01/05金06:57]:$ cat /sys/devices/platform/i8042/serio1/serio2/speed
     97
これらの値は、デバイスのデータベースが用意されていて、起動毎に読み込まれて設定されるらしい。 いちいち root で値を変更するのは面倒なので、 /etc/init.d/ に mytp というのを作って、マルチユーザーのランレベルである、 /etc/rc2.d/ から/etc/rc5.d/ に リンクを張った。
#! /bin/sh

echo -n 165 > /sys/devices/platform/i8042/serio1/serio2/speed
echo -n 145 > /sys/devices/platform/i8042/serio1/serio2/sensitivity
後は使いながら、ベターな数値を探す。

2017年3月12日日曜日

T510での省メモリ化 (5) QNAPへ一部移管で終了[20171204up]

i3 wm 移行にまつわるエトセトラ(3)

また、 for power users and vi experts なのだけど、他にもトライしてみたこと。
結局、中途半端なレベルで終わる。

外部デバイスのマウント方法を変更

ネットワークドライブ

家では、QNAPのNASUを使って3年ほどになる。 このドライブを、MATEのファイルマネージャーからマウントしていたので 特段の設定は不要だった。しかし、i3 WM なので、自分で面倒を見る必要がある。 また、goole-drive と DropBox も、google-drive-ocamlfuse、caja-dropbox でマウントしていたので、 結構メモリを消費していた。
 今回は、QNAP(TS-131)を人並みに使うことでメモリ節約を行った。 つまり、QNAPに作業を委ねた。
 QNAPの仕事は、ファイル共有とowncloudのサーバー、今年から外付けusbHDDへのbackup。 外部クラウドについては、Connect to Cloud Drive というのをインストールしていたが、 実用的でない(使い方をまちがえてるかもしれん)ので、お蔵入り状態。
 そこで、下のサイトで紹介されていたCloudDriveSync に入れ替え、 役目を追加することで、T510の負担を減らした。 このアプリケーションに気付けなかった自分が情けない。
CloudDriveSyncは、QNAPと外部Cloudを同期してくれる。 この同期フォルダをT510にマウントすれば、DropBoxとGoogle-Driveの設定が不要になる。
  1. QNAP上にclouds用に共有フォルダを作成する。
  2. CloudDriveSyncで、このフォルダ配下にcloudをリンクさせる。
  3. 手元のPCでこの共有フォルダをマウントする。
マウントは、 gvfs-mount smb://hogehoge...でマウントしても良いが、 cifsとした。少しメモリが少なくて済むみたい。 fstabに設定を追加して reboot。
//192.168.0.20/clouds /home/QNAP/clouds cifs username=namae,password=pass,uid=1001,gid=1001,nofail,user 0 0

 なお、日常使うファイル類はownCloudでQNAPと同期させているが、 今回、DropBoxも仲間に加えた。同期には lsyncd を用いた。設定は、 Lsyncdの使い方 - www.kichise.com を参考にさせてもらった。
 ただし、ownCloud -> DropBoxへの一方通行のデーモンで、マニュアル起動。 逆はNotデーモンのマニュアル起動にした。 ヘタがいい加減な思い込みでシンクロツールを使うと、いざという時に限って 役に立たない事があるらしい、と、どこかで見たから。
 DropBoxとGoogle-Driveをやめたことは大きい。100Mほどの節約だろうか。

[201712] 不意にネットが切れたりした時、マウント復旧とか面倒なので、autofs に変更してみた。 デフォルトのautofs を apt install autofs でインストする。 私の場合、net drive は全てQNAP経由。 まず、fstab の記述をコメントアウトしてreboot。 /etc/auto.QNAP を作成し、 /etc/auto.master を編集して、 /etc/init.d/autofs restart。 対象フォルダにアクセスしてみてマウントされればOK。しばらくこれで使ってみる。
# /etc/auto.master に追加
/home/QNAP /etc/auto.QNAP
# add vers=3.0(201812)
# auto.QNAP
audio -fstype=cifs,iocharset=utf8,user,username=hoge,password=hogepass,uid=1001,gid=1001,dir_mode=0755,vers=3.0 ://192.168.0.20/multimedia
clouds -fstype=cifs,iocharset=utf8,user,username=hoge,password=hogepass,uid=1001,gid=1001,dir_mode=0755,vers=3.0 ://192.168.0.20/clouds
pass関係は、別ファイルにする方法もあるみたいだが、よく調べてない。

USBメモリとかのマウント

usb のマウント、アンマウントも自分で面倒見る必要がある。 私はSDカードとUSBメモリとHDDができればよい。andoroido端末などは範疇外。
 参考にしたのは、 Udisks - ArchWiki。 debian では udevil を追加でインストールする。 これに含まれる devmon を、i3 WM 起動時に、起動させれば終了。 USBに接続すると、/media 以下にフォルダが作成されマウントされる。
 udevil umount /media/hogehoge でアンマウント。
 思ったより簡単だったかも。落とし穴が無いことを祈る。
 別の方法では、UUIDに合わせてマウントポイントを指定できるみたいだが、 今回は試していない。

ついにMATEとのお別れ?

普段使いとしては、 エディタ、メイル、ネットが使えて、USBもOK。リモートをマウント出来て、ファイルマネージャーも使える。 sshのログインも確認。他の使いそうなアプリも起動は確認した。 wine を再インストする必要があったのは予想外だった。
 下を参考に、apt-get remove gvfs-backends
samba - What is the process gvfsd-smb-browse? - Ask Ubuntu
 MATEは使えないけど、いざとなれば、戻せばよい。

これで省メモリ化を終わりにする。 QNAPへ移管するというズル100Mを含めて300Mぐらい節約。再起動後、基本のアプリを起動した状態で Before After を比較。

- before : mate emacs firefox icedove mate-terminal lightdm
                total        used        free      shared  buff/cache   available
  Mem:        3843872     1183476     1309952      110168     1350444     2291752
  Swap:       8388308        6760     8381548

- after  : i3 emacs firefox icedove urxvt lightdm
                total        used        free      shared  buff/cache   available
  Mem:        3843880      875524     1995516      195952      972840     2531092
  Swap:       8388308           0     8388308

まあ、よかった。


2017年3月10日金曜日

上牧にある洋菓子屋さん。

 甘いものはそんなに食わないが、たまに、食いたくなる。 そんな時は車かチャリで30分ぐらいかけて出かけるのだが、 半年ほど前に、近所にいい店があることを知った。
 こんな所にと思う店、 Patisserie SUI (パティスリー スイ)[食べログ]。 阪急京都線上牧駅から、信号にかからなければ3分かからない。
 他より値段は高めだが、気に入ったケーキだとリピートしてしまう。 全品が好みということはないが、それぞれに嗜好が感じられ、食べ進めるのが楽しいケーキが多い。 で、家族それぞれに異なる種類のケーキを買って、味見して楽しむという下品なことをよくやる。
 一定期間ごとに新作とか、季節限定とかあるので、好みに合うかどうかも楽しみ。(忘れられないのがイチヂクのショートケーキ。二週連続食った)。 で 必ず買うのは、らしくないモンブラン。甘くないので、酒飲みでもOK。
 
 左がモンブラン、右奥がいちごタルト、右手前がチーズケーキ系なんたら? 忘れた。


 焼き菓子はガッツリ食うのではなく、お上品に食べるタイプかな。

うまかった。満足。

2017年3月8日水曜日

T510での省メモリ化 (4) i3 WM を少し便利に(ranger rofi i3blocks-mpd)(20170714更新)

i3 wm 移行にまつわるエトセトラ(2)

また、 for power users and vi experts なのだけど、他にもトライしてみたこと。
結局、中途半端なレベルで終わるのだ。

rangerのアップデート

ファイルマネージャーの ranger は、debian のパッケージが1.7.1と古いので、 新しいのを落として、make install した。 バージョンは1.8.1。これで、二画面ファイラーが可能になった。 まだ使いこなせてないけど。

rofiのRUNモードについて

 ~/binに幾つかの他愛無いスクリプトを置いているが、 rofiではフルパスで入力しないといけなかった。 一旦入力すれば覚えてくれるので、支障はないが、気分良くはない。
これは、カスタムパスを ~/.bashrc で設定してたので、 i3 にお知らせ出来てないため。
Debian では、Xのマネージャ起動時に ~/.xsessionrc を見るそうなので、 カスタムパスの設定を追加してログインしなおすと、~/binの中身がメニューに出てきた。
当たり前のことか。

i3 WM の フローティングを使ってみた

例えば、電卓をちょいと使いたい時、タイル表示は使いにくい。 電卓がポップアップすれば嬉しい。 Palmでさえ、ミニ電卓がポップアップしたんだ。 で、.config/i3/configに、以下を追加した。
for_window [class="(?i)gnome-calculator"] floating enable
シェルからでも rofi からでも、gnome-calcurator を起動すれば、 フローティングの電卓になる。どっかのコピペなんだが、記録し忘れた。
同様の使い方を、mlterm で試している。 普段使うurxvtとは別に軽量ターミナルエミュレータ(今回はmltermにした)をインストし、 i3の設定に下を追加して、mlterm -e ncmpcpp すると、 ポップアップの ncmpcpp になる。

[201803] mlterm のカラー設定は、 GitHub - Ahed91/Mlterm-Color-Schames からコピペ。

mpdは前からデーモンで使ってたので、特に追加設定もなく、BGM、OK。
for_window [class="(?i)mlterm"] floating enable
mltermの設定は必要だが、簡単だった。 mltermを起動し、画面上でCtl+右クリックで設定画面が出る。 フォントなど設定し、保存すればよい。~/.mlterm に設定ファイルができる。
あと、ikhal( GitHub - pimutils/khal: CLI calendar application ) も試したが、表示が少しずれるし、google-calendarと連携が出来ない。 ownCloud のカレンダーとシンクロさせるだけなので、よかった、とは言えない状況。
<ikhalが自動更新するようになってる(2017.04)>

あと、右上方面とか、左下方面とか指定できないかなあ。


※ 出来る。例えば、以下のようにすればよい。(20160714)
for_window [class="mlterm"] floating enable move position +700 +50, resize set 840 410
for_window [class="geeqie"] floating enable move absolute position 740 px 300 px, resize set 840 580

いつものように、ここなんかのコピペです。



i3blocks-mpd を使ってみた

mpdで再生している曲の情報を、i3bloksに表示させてみた。
ここ、dotfiles/i3blocks-mpd at master · zlsun/dotfiles · GitHub から、i3blocks-mpdをもらってきて、 Volume 操作の設定とか少し変更した。
まあまあな感じ。

i3blocks.conf
[MPD]
label=▶
command=/home/hogehoge/.config/i3/i3blocks-mpd
color=#88aa00
interval=15

i3blocks-mpd
#!/bin/bash
SHOWNAME_PATH=~/.config/i3/i3block-mpd-showname ## <<----

exec-mpc() {
  mpc $* &> /dev/null
}

showname=$([ -f $SHOWNAME_PATH ] && cat $SHOWNAME_PATH || echo 0)

case $BLOCK_BUTTON in
  1) exec-mpc toggle ;;
  2) exec-mpc stop ;;
  3) showname=$((!$showname)); echo $showname > $SHOWNAME_PATH ;;
  4) exec-mpc 'volume +5' ;; # <<----
  5) exec-mpc 'volume -5' ;; # <<----
  6) exec-mpc pre ;;
  7) exec-mpc next ;;
esac

playing=⏸
paused=⏵
stopped=♪
if [ $showname = '1' ]; then
#  mpc current | awk -F ' - ' '{printf "【%s】", substr($2, 0, 20)}'
  mpc current | awk -F ' - ' '{printf "【%s / %s】", $1, $2}' ## <<--
fi

status=$(mpc status | sed -n 's/^\[\([^])]*\)\].*$/\1/p')
case $status in
  playing) echo -n $playing ;;
  paused) echo -n $paused ;;
  *) echo -n $stopped ;;
esac

また少し使いやすくなった。
よかった。



2017年3月3日金曜日

CIFS でマウントしたディレクトリ名がおかしい

ショパンのディレクトリがおかしい

音楽ファイルをNAS(QNAP-TS131)に保存している。シングルドライブで 3TのHDDを搭載している。共有ファイルに入れている音楽ファイルは40Gほどになが、 そのほとんどは、クラシック音楽へのおさそい~Blue Sky Label~ で公開されているものを溜め込んでいるものだ。これを、手元PCにマウントして再生させている。

 で、先日、ショパンの曲が足らないことに気づいた。 マウントされたディレクトリをほってみると、 一部のディレクトリ名がおかしくなっていることに気がついた。
 マウント方法は、fstabにcifsで指定する方法だ。

//xxx.xxx.x.xx/home /home/QNAP/audio cifs username=namae,password=pass,uid=1001,gid=1001, 0 0

 文字コードの指定かも(デフォで不要)とか、色々調べたが解らず、放ったらかしにしておいたのだが、 なんということもない、 ディレクトリ名の最後にスペースが入ることで化けていたのだ。

 以下のサイトをみっけたのがきっかけ。うまく行った。

Folder names are wrong when viewed via Windows - Synology Forum

 MATEでGUIのファイラーを使っている時、 ディレクトリ作成時で空白が入ったのに気付けなかったためだと思う。 ディレクトリ名の最後に/が入ってないと、気づけんよなあ。

 でも、上の話はMACだが、私はDebianとQNAP。 ほんとに解決したのかは判らん。

 とりあえず、よかった。

2017年3月2日木曜日

T510での省メモリ化 (3) URxvtとか

i3 wm 移行にまつわるエトセトラ(1)

i3 wm が、思った以上に快適なので、カスタマイズしたくなるのが人情というもの。
for power users and vi experts なのだから、デフォで使えばいいのだが、 出来なくてアタリマエだ。ということで、気楽にトライした。
結局、中途半端に終わるのだが。

urxvt というterminal emulator

デフォルトのterminal emulatorをurxvtに変更した。
上のサイトによると以下だそうだ。
  • Unicode対応
  • 設定ファイルによって、自由にカスタマイズ
  • クラッシュしらず
  • 小メモリ、爆速の軽快さ。
rangerの画像ビュアーで、画面が乱れないというメリットもある。
ただ、xterm ではだめな理由は、カスタマイズだけかもしれない 。
 debian パッケージの rxvt-unicode-256color をインストし、 .config/i3/config を修正する。
# start a terminal
# bindsym $mod+Return exec i3-sensible-terminal
bindsym $mod+Return exec urxvt
urxvtの設定を ~/.Xdefaultsに記入する。 ちなみに、 ~/.Xresources ではなく ~/.Xdefaults としたのは、 軽量端末エミュレータ urxvt - Going My Linux Way - りなっくすいろいろ によると、 Xクライアント起動時に、 ~/.Xdefaults は 読み込み、 ~/.Xresouces は読み込まないから。
設定は rxvt-unicode - ArchWiki を参考に、というか、コピペた。
フォントと色は、好みでなかったので、 色々探して、決めた。VLGothic はエラいと改めて思った。
最初はタブも設定していたが、必要性をあまり感じないので除外した。 必要になったら、また設定すればいい。
フォントの拡大縮小機能は時々使うので、ありがたく設定させてもらっている。 perlエクステンションは、デフォで/usr/lib/urxvt/perl/にインストされている。 ほしいものがココに入って無ければ、別途インストが必要。
なお、fcitxが、インライン入力出来ない。Firefoxやemacsとかでは出来ている。 emacsはコンソールではないやつ。vimは、skkならインライン可能。 設定を間違えているんだがどうかわからん。 まあ、そこは素人作業なんで、使えれば良しとしている。

.Xdefaults (201712)
!-----------------------------------------------
URxvt.depth:                32
URxvt.transparent:          false
URxvt.fading:               14
URxvt.loginShell:           true
URxvt.saveLines:            2560
URxvt.internalBorder:       6
URxvt.lineSpace:            1

!URxvt*transparent:          true
URxvt*shading:              18
URxvt*inheritPixmap:        True

! Cursor
URxvt.cursorBlink:          true
URxvt.cursorColor:          #657b83
URxvt.cursorUnderline:      false

! Pointer
URxvt.pointerBlank:         true

!----------------------------------------------
! Fonts
URxvt.allow_bold:  true

URxvt*font: \
   xft:DejaVu Sans Mono for Powerline:pixelsize=14,\
   xft:Ricty Diminished Discord Discord with\-icons:pixelsize=14

URxvt*letterSpace: -2
URxvt*kanji_encoding: UTF-8

!---------------------------------------------
!URxvt.termName: Urxvt
!---------------------------------------------
! Scrollbar
URxvt.scrollStyle:          rxvt
URxvt.scrollBar:            false

! from Arch linux site -----------------------
! do not scroll with output
URxvt*scrollTtyOutput: false
! scroll in relation to buffer (with mouse scroll or Shift+Page Up)
URxvt*scrollWithBuffer: true
! scroll back to the bottom on keypress
URxvt*scrollTtyKeypress: true

URxvt.secondaryScreen: 1
URxvt.secondaryScroll: 0
URxvt.secondaryWheel: 1

! ------ borders --------
! pixels for external border
URxvt*externalBorder:     1
! pixels for internal border
URxvt*internalBorder:     1
! remove border
URxvt*borderLess:         0

!! ------- perl extensions --------------
!  perl modules are /usr/lib/urxvt/perl
!            local ~/lib/urxvt-perls/
URxvt.perl-ext-common: default,selection-to-clipboard,font-size,xim-onthespot

! ------ japanese input ------
URxvt.inputMethod: fcitx
 URxvt.preeditType: OnTheSpot,OverTheSpot,Root

! tabbed なんだか使わないので、コメントアウト   tabbed

! font のキ=
URxvt.keysym.C-Up:     font-size:increase
URxvt.keysym.C-Down:   font-size:decrease
URxvt.keysym.C-equal:  font-size:reset
URxvt.keysym.C-slash:  font-size:show

URxvt.url-launcher: /usr/bin/xdg-open
URxvt.matcher.button: 1

#include "/home/hogehoge/.Xresources.d/felix"
色の設定も探し回った。

.Xresources.d/felix (201712)

! modified tango color scheme

*background: #262626
*foreground: #d9e6f2

! black
*color0: #141414
*color8: #262626

! red
*color1: #cf3294
*color9: #d573b7

! green
*color2: #81cc47
*color10: #a5d288

! yellow
*color3: #cf7f47
*color11: #d5a288

! blue
*color4: #357fe2
*color12: #75a2e7

! magenta
*color5: #8132e2
*color13: #a573e7

! cyan
*color6: #35cc94
*color14: #75d2b7

! white
*color7: #dbdbdb
*color15: #ffffff

urxvtのタイトルを動的に変更させれば、 rofiで、複数起動したurxvtから、目当てのタイルを簡単に指定できる。 なので、下のサイトを真似てみた。
zsh, bash, screen and urxvt title - Rockhopper.dk

.bashrc
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
PS1='\[\e[33m\]\u@\h \w ---<>>\n\[\e[36m\][\D{%y/%m/%d%a}\A]:\$ \[\e[0m\]'
export PS1 PROMPT_COMMAND

.screenrc
hardstatus string "%h"
caption always "%{= kw} %-w%{= wk}%n*%t%{-}%+w%{= kw} %=%d %M %0c %{g}%H%{-}"

時々、日本語入力がおかしくなる。当然私には原因が解らない。 im-configで設定されたままだと思う。 まあ、一旦ログアウトすればもとに戻るので、良しとているが・・・。

[追加] フォント変更。
Monofur、Droid Sans Mono、Cousine なんかもよい感じ。
Rxvt*font: \
xft:Roboto Mono for Powerline:pixelsize=13, \
xft:Migu 1M:pixelsize=13

xft:Migu 1M:pixelsize=14, \
xft:Inconsolata\ for\ Powerline:pixelsize=14

フォント変更は、こちらのお世話になりました。
sakurapup.browserloadofcoolness.com • トピック - 端末(urxvt)で正常に表示されるフォント

ranger の設定変更

下のサイトによると、キーボード操作が中心のpdfビュアーがあるという。
zathuraチートシート - Qiita
カスタマイズ性が高いそうだが、面倒いことは不要。pdfが見れればそれでよい。 で、scope.shextension の部分の修正。
pdf)
# try pdftotext -l 10 -nopgbrk -q "$path" - && \
try zathura "$path" && exit 5

まずまずではないかな。 でも、二画面のvifmが捨てられないでいる自分。

以上が、urxvtの設定。 わずかだが省メモリ化できた。
あ、よかった。


2017年3月1日水曜日

T510の画面のチラツキ解消、した?

エラーメッセージをみっけ

T510の画面がチラツキ、そして、ブラックアウトからシャットダウンという現象が時々起こっていた。ハードの故障かもと、 Lenovo サポート にある診断ツール(usb boot)をダウンロードし、mtool を追加インストして、 検査してみた。
  • DVDがだめになっているみたい。普段使わないから、気が付かなかった。で、抜いておく。
  • ファンが計測対象外になっている。やばいかも。 一度、ファンが動いているか目視確認したほうがよいと思うが、バラしに躊躇。 しかもファンの部品がネットで見つからない。ジャンク調達が必要かもしれないが、マシン更新もあり得る??
  • 他は問題なし。
で、やっとというか、今更、 syslogで以下のメッセージを見つけた。

Feb 28 10:50:29 yapad org.a11y.atspi.Registry[5724]: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
Feb 28 10:50:29 yapad org.a11y.atspi.Registry[5724]: after 781 requests (781 known processed) with 0 events remaining.
Feb 28 10:50:29 yapad org.a11y.atspi.Registry[1396]: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
Feb 28 10:50:29 yapad org.a11y.atspi.Registry[1396]: after 781 requests (781 known processed) with 0 events remaining.

ぐぐってみると、関連記事が見つかった。
よくわからないが、明示的にIntel内蔵を使うことをカーネルや、Xに教えているということみたい。
中身が解らないのに、こんなことするのは、いつもドキドキする。 恐る恐る再起動。
結果、 チラツキはなくなった。24時間起動二日目だが、まだチラツキは生じていない。

しかし、夏場が心配だ。でも、よかった。

Emacs の lsp の設定、なう(202310)

前回さらしてから、さらに1年。そう、3年めになる。 が、今回は一段と自信がない。 環境は、 Debian GNU/Linux 12 (bookworm) + emacs(29.1)。consult + company。 embark は未だに使ってない。 用途は、メモ と ...