クマーなひとときv2

雑多なメモ。twitterで書ききれないもの等。

Ank-Pixiv-Tool 不具合めも

どうもe10s環境だと、Ank-Pixiv-Toolは正しく動作しない模様。

[Notice] does not work if e10s is enabled (>=FF42?) ・ Issue #85

というわけで、現時点で分かった問題点。

Pixiv

Pixivでの問題点

評価後に自動ダウンロードする機能が動作しない

これ
f:id:tonkuma:20160922034327j:plain

設定した後、評価10付けても、自動ダウンロードが始まらない。
e10sを無効化すればちゃんと動く。

Twitter

Twitterでの問題点

連続で画像をDLした時、一番最初の画像しかDL出来ない。

例えば、hoge さんのユーザページで、以下の画像をDLする。

  • ゆかりん.jpg → 最初にDLする
  • マキマキ.jpg → 次にDLする

実際に画像を開いてDLすると、以下のようになる。

  • hoge-ゆかりん.jpg
    → 中身もファイル名も問題無し。
  • hoge-マキマキ.jpg
    → ファイル名は問題無いが、中身が最初にDLした「作者名-ゆかりん.jpg」と同じ。

なお、一度更新すれば直る模様。


2015/12/22 以降は更新されてないし、e10s対応予定もなし。
自分で改修するか、他の拡張機能(ChromeにあるPixiv Downloaderとか)に乗り換えるしかないですね。

VimFx メモ その2

前の記事。
VimFx メモ - クマーなひとときv2

今は Nightly + VimFxで、e10s有効にして使ってるけど快適。
主にCSSとカスタムコマンドに関するめも。

Vimperatorの今後も怪しいし、もしもの時*1への備えだけはしっかりしておきたい。

ブラックリスト

ZenzaWatchとの兼ね合いのため、nicovideo.jp/watchとかはVimFxを無効化してる。

vimfx.set('blacklist', '*live.nicovideo.jp/* *nicovideo.jp/watch/*')

何となくニコ生も無効化してるけど、正直FirefoxFlashの組み合わせ最悪なので、ニコ生はCentBrowser使ってる。

一部キーのみ無効化

こちらも便利。と思うんだけど、問題があって使ってない。

VimFx/api.md at master · akhodakivskiy/VimFx · GitHub

一部キーだけ無効化出来る。
ただし、全てのモードで無効化されてしまったため、結局使ってない。
以下の例だと、hintモードでもjkが無効化されてしまう。hint文字にjkを使っているため、入力出来なくなった。

vimfx.addKeyOverrides(
  [ location => location.hostname === 'twicli.neocat.jp',
    ['j', 'k']
  ]
)

normalモードでだけ無効化する方法とかありそうなんだけどな。

2016/09/21T20:39:56 追記

Issue投げようと思ったら、他の人が質問して回答貰ってた。
addKeyOverrides & Hints mode · Issue #812 · akhodakivskiy/VimFx

というわけで、以下で動いた。マニュアル読んで、location以外渡せないと思ってたわ…

vimfx.addKeyOverrides(
  [ (location, mode) => location.hostname === 'twicli.neocat.jp' &&
    mode == 'normal',
    ['j', 'k']
  ]
)

通知

VimFx使ってると、右下に色々通知が出てくるけど、そこに好きなメッセージを出せる。

f:id:tonkuma:20160914065512j:plain

vimfx.on('modeChange', ({vim}) => {
  let mode = vimfx.modes[vim.mode].name
  vim.notify(`Entering mode: ${mode}`) // 通知
})

たまーに通知が消えなくなる事を除けば便利と思う。
locationChangeイベント発生時にページURL表示するとか、
スクロール時に現在位置を%で表示させるとか、色々使い道ありそう。(重くならないか心配だけど。

CSS

VimFxの見栄え変更。切っ掛けはヒント文字をもう少し大きくしたいな、という願望から。
以下に大体書かれてる。

VimFx/styling.md at master · akhodakivskiy/VimFx · GitHub

ヒント文字のサイズ変更

パパっと変更。

#VimFxMarkersContainer .marker {
  font-size: 15px !important; /* Specific font size. */
}

ちなみに、デフォルトのCSSは以下にあるので、ここを参考に直すのもあり。

VimFx/style.css at master · akhodakivskiy/VimFx · GitHub

ignoreモードを分かりやすく

ignoreモードかどうかの判断材料がツールバーのアイコンしかなく、判断が難しい。

通常時 ignore時
f:id:tonkuma:20160914071726j:plain f:id:tonkuma:20160914071738j:plain

そのため、分かりやすいように、ignoreモード時はロケーションバーの色を変えた。

状態 ロケーションバー
通常時 f:id:tonkuma:20160914072151j:plain
ignore時 f:id:tonkuma:20160914072211j:plain
#main-window[vimfx-mode="ignore"] #urlbar {
    background: yellow !important;
}

正直、最初から色変わるようにしててくれ、と思った。

ロケーションバーではIMEをOFFにする

VimperatorのコマンドラインIME OFFするようなもの。地味に役立つ。

#urlbar {
  ime-mode: inactive;
}

/押すと出てくる検索boxも同じようにしたいけど、上手く動かん。

カスタムコマンド

色々調べつつ、追加した。Wikiが参考になる。
Custom Commands · akhodakivskiy/VimFx Wiki · GitHub

主にVimperatorで使ってた機能を追加。やはりVimperator、及び、プラギン作者は神。

URLをmarkdown形式でコピー

copy.js にはいつもお世話になってました。
VimFxでも同じ機能が欲しい…欲しくない?

  vimfx.addCommand({
    name: 'copy_markdown',
    description: 'c_"[title](URL)"でURLコピー',
    category: 'location',
  }, ({vim}) => {
    let url = vim.window.gBrowser.selectedBrowser.currentURI.spec
    let title = vim.window.gBrowser.selectedBrowser.contentTitle
    let fmt = "["+title+"]("+url+")"
    gClipboardHelper.copyString(fmt)
    vim.notify("Copied String: "+ fmt)
  })

fmt = xxx の箇所変更して複数フォーマットでコピー出来るようにしてる。
gClipboardHelperについては以下参考。
Using the clipboard - Mozilla | MDN

URLインクリメント

もっといい書き方があると思うけど動いてるからもうこれでいいです(諦め

vimfx.addCommand({
  name: 'url_increment',
  description: 'c_URLインクリメント',
  category: 'misc',
}, ({vim}) => {
  let url = vim.window.gBrowser.selectedBrowser.currentURI.spec;
  if (url.match(/(\d+)(\D*)$/)) {
    var alter = String( Number(RegExp.$1) +1);
    var blank = "";
    for (i=0; i < RegExp.$1.length-alter.length; i++) {
      blank += "0";
    }
    var next = RegExp.leftContext + blank + alter + RegExp.$2;
    vim.window.gBrowser.loadURI(next);
  }
})

デクリメントも同じ要領で,xに割り当ててる。

URL置き換え

引数取得させて、任意指定出来るようになると便利なんだけど。今は固定値。

vimfx.addCommand({
  name: 'toggle_japanese',
  description: 'c_"-all-"を"-japanese-"に変更して再読込',
  category: 'misc',
}, ({vim}) => {
  let url = vim.window.gBrowser.selectedBrowser.currentURI.spec
    if ( url.includes('-all-') ) {
      url = url.replace(/-all-/, '-japanese-');
      vim.window.gBrowser.loadURI(url);
    }
})

ズームイン

CTRL + +CTRL + -で操作出来るけど、Vimperatorと同じ操作にしたかった。

vimfx.addCommand({
  name: 'zoom_in',
  description: 'c_ズームイン',
}, ({vim}) => {
  vim.window.FullZoom.enlarge();
})

enlarge()で拡大。reduce()で縮小。reset()で元に戻す。

ツールバーボタンをクリック

eを使えばいい?e押した後にヒント文字を入力しなきゃいけないじゃないですかヤダー
というわけで、これは必要です。

vimfx.addCommand({
  name: 'click_toolbar_feedly',
  description: 'Feedly_notifierをクリック',
}, ({vim}) => {
  vim.window.document.getElementById('toggle-button--jid1-bojn8b0im7kh2wjetpack-main-button').click();
})

ツールバーのIDをDOM Inspectorとかで調べて、必要な分だけ作ろう。

Stylishの編集画面を開く

CSS編集時に使う。
idは環境によって変わる。

vimfx.addCommand({
  name: 'stylish_edit',
  description: 'c_VimFxのcssを編集',
}, ({vim}) => {
  vim.window.switchToTabHavingURI('about:stylish-edit?id=2', true);
})

選択文字列をGoogle翻訳

  • 今まで
    caretで選択→yでコピー→t<C-t>で新しいタブ開いてgt <C-v><Enter>
  • 現在
    caretで選択→t

とても楽になった。

config.js:

vimfx.addCommand({
  name: 'search_selected_translate',
  description: 'c_選択文字列をGoogle翻訳',
  mode: 'caret',
}, ({vim}) => {
  vimfx.send(vim, 'getSelection', null, selection => {
    vim.window.switchToTabHavingURI('http://translate.google.co.jp/?source=osdd#auto|auto|'+selection, true)
  })
})

frame.js:

vimfx.listen('getSelection', (data, callback) => {
  let selection = content.getSelection().toString()
  callback(selection)
})

ARCでも検索出来るようにしてるので、単語もサクサク調べられる。


終わり。少しずつ便利になってる。
後は、フレーム操作、タブグループ操作、 文字入力時のマッピング*2 とか欲しいかな。

*1:Vimperatorのe10s対応不可とか、WebExtension対応不可とか

*2:非公式なら、海外のユーザが設定例公開してるけど、公式で欲しい

VimFx メモ

[:SKK] [:vim] [:Firefox] vimfx

長い間FirefoxとVimperatorの組み合わせにお世話になってきた。けど。
Vimperatorはe10sにまだ対応出来ておらず、fx48では以前Nightlyで試した通り動かなかったので、他のVim拡張試してる。

VimFx :: Add-ons for Firefox

e10sにも対応済みな模様(install.rdfのmultiprocessCompatibleタグ参照)。
Nightly + e10s環境でもう一ヶ月近く使ってるけど、今のところ大きな問題は起きていない。

というわけで、メモまとめ。画像多いので、目次以降は続きにする。

  • 概要
  • 導入
  • 基本的な操作
  • 機能
    • 設定画面から色々変更可能
    • ヒントに関する操作
    • 画面上要素にフォーカス
    • ツールバーのクリック
    • 要素を右クリック
    • GCLIとかいうのが使える
    • 設定ファイル
    • カスタムコマンド
    • サイト毎の設定
    • スタイル変更
  • 不満点
    • URLのインクリメント/デクリメントが出来ない。(解決済み)
    • フレームに関するコマンドが無い。
    • 画像だけを開けない(解決済み)
    • タブ/ブックマーク検索の機能がない(解決済み)
    • Insert Modeが無い
  • 設定例
  • まとめ
続きを読む

feedly使ってニコニコ動画のRSSを購読する

[:SKK] [:Firefox] [:Feedly] [:niconico] RSS

視聴してる投稿者の最新動画を追う時、ニコレボを使っているけど、以下が気になる。

  • 登録件数少ない
    • ユーザだと400人。一般会員は50人。
    • マイリストだと50個。一般会員だと20個。
  • ニコニコ動画開いてないと通知来ない。

わざわざニコニコ動画開いてないと通知来ないのはなぁ…と思ったので、以前から存在は知っていたけど使ってなかったRSS使ってみたら、結構良さげだったのでめも。

続きを読む

ZenzaWatchのショートカット その2

1.2.1から、コンソールから変更出来るようになってた。
そのうち設定画面から設定出来るようになるのかな。なると嬉しいな。

f:id:tonkuma:20160724011248j:plain

最近はChrome系で動画見ることも多くなってきたので、ZenzaWatchが少しでも長い間使えることを祈るばかり。

Firefox+Vimperatorが一番好きなのは変わらないんだけど、いかんぜん他環境と比べると重い。
e10sが有効になったFirefoxなら、もっと快適に使えるんだろうか…まぁ未だ未対応な現状で考えても仕方ないけど。

cVim

[:SKK] [:chrome] [:vim] cVim

twitterで呟いたやつ+α。
はてなブログTwitter埋め込めるみたいなので、それを試してみたかった。

cVim とは


chrome系ブラウザで使用可能な、Vim拡張。他に Vimium, Vichrome, Vrome, 等がある。

公式の文面を超意訳するなら、
「Vimium, Vichrome, Vrome達はpentadactyl等にある機能が欠けているけど、私なら大丈夫。
そう、cVimならね」

原文はこっち
GitHub - 1995eaton/chromium-vim: Vim bindings for Google Chrome.
https://github.com/1995eaton/chromium-vim

機能


メインで使ってるのがVimiumなため、Vimiumが比較の基準。

vim-likeなキーバインド


h, j, k, l による移動、d, e による半ページ移動、/, ?による検索、等々。もちろん全てカスタマイズ可能。
APIによる制限はある。ブラウザのショートカットが優先される(<C-n> 等は使用不可)、等。

他の拡張と違い、imap も設定出来る。

twitter.com

コマンドラインの実装


色んなコマンドを実行可能。

  • タブを開く、閉じる、別ウィンドウで開く、別ウィンドウにマージする。
  • セッションを保存する/読み込む。
  • バッファ、ブックマーク、履歴を検索する。
  • chrome:// 画面を開く。
  • cVimのオプションを設定する。

twitter.com

設定ファイルを作れる。


vimっぽく設定ファイルを作れる。

twitter.com

要素へのマウスオーバーイベントも発生させることが出来るのは、今の所cVimだけ(使い道は知らない。

入力フォームに簡単移動


gi で現在いるフレームの最初のinput要素に移動、gI で最後にフォーカスしたinput要素に移動。

twitter.com

URLのインクリメント/デクリメント


例えば、現在のURLが example.com/5.html の場合、g+ を押せば example.com/6.html に、g- を押せば example.com/4.html へ移動出来る。

example.com/6.html
        ↑g+を押すと、6.htmlへ移動する。
example.com/5.html
        ↓g-を押すと、4.htmlへ移動する。
example.com/4.html

twitter.com

CSSで見栄え変更


最初からあるCSSを、自由に変更出来る。
右側の文字が見辛いので、緑色に変更してる。

twitter.com

セッションの保存


開いているタブを保存して、いつでも自由に開ける。

twitter.com

<C-n>, <C-p> で補完候補選択


他の拡張では出来ない。あいにく、私の環境でも出来なかったけど。

twitter.com

設定ファイルは自動で読込可能


configpathとlocalconfigを設定する。問題もある。

twitter.com

自動で読み込まれる様子。画面更新と同時に、ローカルの設定ファイルが読み込まれ、内容が更新されているのが分かる。

twitter.com

Gist から設定を引用可能


試したことないので詳細は不明。こっちの方が管理しやすいのかも。

twitter.com

上記ツイートに貼ったアニメーションGIFにある、https://gist.github~ の場所を任意のURLに変更し、Sync ボタンを押せば、内容が更新されるらしい。


ここからは、ツイートしてないやつ。


ブラックリスト


任意のURLではcVimを無効化するように設定出来る。サンプルから抜粋。

let blacklists = ["https://mail.google.com/*", "*://mail.google.com/*", "@https://mail.google.com/mail/*"]
" blacklists prefixed by '@' act as a whitelist
  • https://mail.google.com/* ではcVimを無効化
  • *://mail.google.com/*ではcVimを無効化
    • ただし、https://mail.google.com/mail/* に一致する場合、cVimを有効化

に、なる。

サイト固有の設定


任意のURLでは設定を変更出来る。サンプルから抜粋。

" this will enable the config block below on the domain 'reddit.com'
site '*://*.reddit.com/*' {
      unmap j
      unmap k
      set numerichints
}

に、なる。

検索エンジンの追加


任意の検索エンジンを追加出来る。こんな感じ。

let searchengine gimage = "https://www.google.com/search?tbm=isch&q=%s"
let searchalias gi = "gimage"

後はコマンドラインを開いて tabnew gi <keyword> と入力してEnter押せば、google画像検索から <keyword> の画像を探せる。
%sが入力した <keyword> に置換される。

クイックマーク


Vimのマークや、Vimperatorのqmarkと同じ機能。こんな感じ。

let qmark t = ["https://twicli.neocat.jp/twicli.html"]

後はおもむろに gn<keyword>go<keyword> と打てばいい。例えば、
gnt なら新しいタブにtwicliが開く。
got なら現在のタブにtwicliが開く。

一時的な無効化


今はcVim動くな!って時は、i を押す。INSERTモードに入り、ESCを押すまで、cVimが無効化される。

一部キーのみ無効化


passKeys を使う。こんな感じ。

site 'http://twicli.neocat.jp/twicli.html' {
  map j passKeys
  map k passKeys
}

指定したURLでは、j, k がそのままページに渡される。


他にも機能あると思うけど、とりあえずここまで。

「Vimperatorみたいにゴリゴリ設定ファイル書きたい!」って人にはお勧め出来そう。
Javascriptで機能拡張とかも出来るみたいだし。

" Code blocks (see below for more info)
getIP() -> {{
httpRequest({url: 'http://api.ipify.org/?format=json', json: true},
            function(res) { Status.setMessage('IP: ' + res.ip); });
}}
" Displays your public IP address in the status bar
map ci :call getIP<CR>

" Script hints
echo(link) -> {{
  alert(link.href);
}}
map <C-f> createScriptHint(echo)

最後に適当に作った.cvimrc貼って終わり。

"=============================================================================
"    Description: .cvimrc settings
"  Last Modified: 2016-07-11 19:24:197
"=============================================================================

"mappings"{{{
"navigate
map j scrollPageDown
map k scrollPageUp
map  goBack
map  goForward
map b :buffer
map B :bookmarks
unmap g- g+
map  incrementURLPath
map  decrementURLPath
unmap ; ;*
map m* setMark
"tab move
unmap R E 
map h previousTab
map l nextTab
map u lastClosedTab
map # lastUsedTab
"tab hint
unmap mf mr my gy gr
map ;f createMultiHint
map ;t createActiveTabbedHint
map ;b createTabbedHint
map ;R multiReverseImage
"yank url
map ;Y multiYankUrl
map ;y yankUrl
map ;r reverseImage
"}}}

"insert mappings"{{{
" imap  beginningOfLine
" imap  endOfLine
" imap  deleteToBeginning
" imap  deleteToEnd
" imap  deleteWord
" imap  deleteForwardWord
imap  deleteChar
" imap  deleteForwardChar
" imap  backwordWord
" imap  forwardWord
" imap  forwardChar
" imap  backwardChar
" imap  forwardLine
" imap  backwardLine
" imap  selectAll
" imap  editWithVim
"}}}

"settings(boolean)"{{{
set hud
set noscalehints
set noautofocus
set smoothscroll
set cncpcompletion
"}}}

"settings(non-boolean)"{{{
let locale = "ja"
let hintcharacters = "asdfglkjh"
let barposition = "top"

let searchengine gimage = "https://www.google.com/search?tbm=isch&q=%s"
let searchalias gi = "gimage"
let searchengine trans = "http://translate.google.com/?source=osdd#auto|auto|%s"
let searchalias tl = "trans"

let qmark m = ["https://mail.google.com/mail/#inbox"]
let qmark T = ["https://tweetdeck.twitter.com/"]
let qmark t = ["http://twicli.neocat.jp/twicli.html"]

"site-specification settings"{{{
"twicli
site 'http://twicli.neocat.jp/twicli.html' {
  map 1 passKeys
  map 2 passKeys
  map 3 passKeys
  map 4 passKeys
  map 5 passKeys
  map 6 passKeys
  map 7 passKeys
  map 8 passKeys
  map 9 passKeys
  map 0 passKeys
}
"}}}

".cvimrc end

EMBEDモード時のBSとEnter

[:SKK] [:Vimperator] [:AHK]

ZenzaWatchのコメント投稿が失敗するので、久し振りに公式プレイヤー使ったら、EMBED時の挙動が少し変わってた。

  • ESCでEMBEDから抜けれる
    • 嬉しい。
    • embed-esc.jsが不要になった。
  • EMBED中に、BS効かない。Enter効かない。
    • 悲しい。
    • 辛い。
    • コメント入力面倒。

Insertとか押してIgnoreモードに入れば効くけど、毎回押すの面倒だったので、 AHKスクリプト少し直した。

!c::
  SetKeyDelay, 100
  Send, . ; :stpause をマッピングしたキーを指定する
  WinGetPos x, y, width, height
  xx := width / 2
  yy := height - 50
  InputBox, comment, コメント入力, コメント入力してEnter押す
  MouseClick, left, %xx%, %yy%, 1, 0, ,
  Send, %comment%
  Send, {Ins}{Enter}
  MsgBox, 0, 待機, 1秒待て, 1
  Send, {Ins}{Esc}
  Send, c ; :stplayをマッピングしたキーを指定する
  return

これで引き続き楽にコメント投稿出来る。