クマーなひとときv2

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

ZenzaWatchのショートカットキーを変更する

ZenzaWatchのショートカットキーを変更する

ZenzaWatchのショートカットや各種設定を変更できる。
更新しても設定が保持されるし、もし消えてもすぐに再設定できるため、便利かもしれない。

設定方法

ZenzaWatchが動作するURL*1に移動した状態で、
開発者ツールからコンソールを開き、次のコマンドを実行して設定する。

ZenzaWatch.config.setValue('設定名', 設定値)

現在の値を取得する事もできる。

ZenzaWatch.config.getValue('設定名')

設定名の一覧

ソースの281行目辺り、defaultConfigに一覧がある。

      var defaultConfig = {
        debug: false,
        volume:       0.3,
        forceEnable:  false,
        showComment:  true,
        autoPlay:     true,
        'autoPlay:ginza':  true,

個人的に使いそうな設定は以下。 enablePushStateKEY_*は、現状コンソールからしか変更できない(はず)。

項目名 設定値 説明
autoCloseFullScreen true 再生終了時にフルスクリーンを解除する
autoZenTube true youtubeリンクがある時、自動的に開く
enablePushState true ブラウザの履歴に残す
KEY_* 任意の仮想キーコード ショートカットの設定

設定例

最初に書いた通りコンソールから1行ずつ実行してもいいし、
Chrome系なら Snippets に保存して実行、
Firefoxなら Scratchpad から実行、としてもいい。

ZenzaWatch.config.setValue('autoZenTube', true);
ZenzaWatch.config.setValue('KEY_CLOSE', 27); // ESC default
ZenzaWatch.config.setValue('KEY_RE_OPEN', 82 + 0x1000); // Shift+R
ZenzaWatch.config.setValue('KEY_HOME', 54); // 6

ZenzaWatch.config.setValue('KEY_SEEK_LEFT', 37 + 0x1000); // Shift+LEFT default
ZenzaWatch.config.setValue('KEY_SEEK_RIGHT', 39 + 0x1000); // Shift+RIGHT default
ZenzaWatch.config.setValue('KEY_SEEK_LEFT2', 81); // Q
ZenzaWatch.config.setValue('KEY_SEEK_RIGHT2', 87); // W

ZenzaWatch.config.setValue('KEY_VOL_UP', 69); // E
ZenzaWatch.config.setValue('KEY_VOL_DOWN', 68); // default

ZenzaWatch.config.setValue('KEY_INPUT_COMMENT', 67); // C default
ZenzaWatch.config.setValue('KEY_FULLSCREEN', 88); // X
ZenzaWatch.config.setValue('KEY_MUTE', 77); // M default
ZenzaWatch.config.setValue('KEY_TOGGLE_COMMENT', 86); // V default

ZenzaWatch.config.setValue('KEY_DEFLIST_ADD', 90); // Z
ZenzaWatch.config.setValue('KEY_DEFLIST_REMOVE', 90 + 0x1000); // Shift+Z

ZenzaWatch.config.setValue('KEY_TOGGLE_PLAY', 32); // SPACE default
ZenzaWatch.config.setValue('KEY_TOGGLE_PLAYLIST', 80); // P default

ZenzaWatch.config.setValue('KEY_SCREEN_MODE_1', 112 + 0x1000); // Shift+F1
ZenzaWatch.config.setValue('KEY_SCREEN_MODE_2', 113 + 0x1000); // Shift+F2
ZenzaWatch.config.setValue('KEY_SCREEN_MODE_3', 114 + 0x1000); // Shift+F3
ZenzaWatch.config.setValue('KEY_SCREEN_MODE_4', 115 + 0x1000); // Shift+F4
ZenzaWatch.config.setValue('KEY_SCREEN_MODE_5', 116 + 0x1000); // Shift+F5
ZenzaWatch.config.setValue('KEY_SCREEN_MODE_6', 117 + 0x1000); // Shift+F6

ZenzaWatch.config.setValue('KEY_SHIFT_RESET', 49); // 1 default
ZenzaWatch.config.setValue('KEY_SHIFT_DOWN', 52); // 4
ZenzaWatch.config.setValue('KEY_SHIFT_UP', 53); // 5

ZenzaWatch.config.setValue('KEY_NEXT_VIDEO', 51); // 3
ZenzaWatch.config.setValue('KEY_PREV_VIDEO', 50); // 2

ZenzaWatch.config.setValue('KEY_SCREEN_SHOT', 83); // S default
ZenzaWatch.config.setValue('KEY_SCREEN_SHOT_WITH_COMMENT', 83 + 0x1000); // Shift+S default

*1:nicovideo.jp配下ならどこでもいい

Firefox(Nightly)の環境を整えた話

Firefox(Nightly)の環境を整えた話

Firefoxはサブブラウザになったけど、色々環境を整えた結果いい感じになったので、まとめる。
現在使っているのは Firefox59.0a1(Nightly)。

Vim操作

Vim vixenを使っている。
見た目がVimperatorっぽくて懐かしさを感じる…

twitter.com

ツリー型タブの導入

タブバーは削除予定のため、ツリー型タブを追加した。
ついでにマルチプルタブハンドラも追加した。主にURLのコピー用。

Stylusの導入

vixenのヒント文字を大きくするために追加。userChrome.cssでは設定出来なかった。WEとFirefox本体で分かれてるからかな。

.vimvixen-hint {
    font-size: 16px;
}

.vimvixen-console-frame {
    ime-mode: inactive !important;
}

.vimvixen-console-frame は、何故か反映されず。とりあえず残してる。

UIの変更

本題。過去にもcssを弄ってURLバーを非表示とかしてたけど、Firefox57からはWEになったため、拡張側からUIを弄れなくなった。
そのため、userChrome.cssを使って設定。

色々試行錯誤したけど、 tridactylのREADMEから参照できるuserChrome.cssのおかげで、全てが解決した。

そのままだとまだ少し物足りなかったので少し弄り、現在は以下の感じに落ち着いた。

  • 普段はタブバー/URLバーを非表示。
  • 非表示中は、元々表示されていた箇所にあるリンク等をクリック出来る。
    • 試行錯誤中は、見えない何かが存在してクリック出来なかった。
  • Alt+DAlt+F等の、標準のショートカットでURLバーやメニューにフォーカスしたら、表示される。
  • 画面を全体化した時、画面最上部にカーソルを持っていけば、タブバー等が表示される。
    • 試行錯誤中は、見えない何かのせいか、最上部より手前で表示されてしまった。

Vimperator使っていた時のように、とてもスッキリとしたUI。ノートPCだとほんと助かるんだよなぁ。

twitter.com

css

環境によっては、色々数値を変えないと駄目かもしれない。

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

/* References.
 * https://github.com/cmcaine/tridactyl/blob/master/src/static/userChrome-minimal.css
 * https://support.mozilla.org/ja/questions/1185426
 * https://github.com/piroor/treestyletab/wiki/Code-snippets-for-custom-style-rules#for-only-tree-style-tab-sidebar-1397
 * chrome://browser/skin/browser.css
 */

.urlbar {
  ime-mode: inactive;
}

/* User config */
#navigator-toolbox {
    /* The height of the area at the top of the screen that causes the nav-bar to be shown
    If zero, you can still focus with <C-l> or F6.
     */
    --tridactyl-auto-show-zone: 0;
}

/* Hide grey container box */
:root:not([customizing]) #navigator-toolbox:not(:hover):not(:focus-within) { 
    max-height: 0;
    min-height: calc(0px); /* I have no idea why just using 0 or 0px does not work... */
}

/* Auto hide tab bar */
:root:not([customizing]) #navigator-toolbox:not(:hover):not(:focus-within) #TabsToolbar { 
    visibility: collapse;
}

/* Auto hide nav bar */
:root:not([customizing]) #navigator-toolbox:not(:hover):not(:focus-within) #nav-bar {
    max-height: 0 !important;
    min-height: 0 !important;
    /* Use margin-bottom to allow trigger zones that are larger than the nav-bar */
    margin-bottom: calc(-1 * var(--tridactyl-auto-show-zone));
    /* margin-bottom: 0; */
    opacity: 0;
    transform: translateY(-7px);
} 

/* Avoid transparent background for menubar if nav-toolbox not focussed */
#navigator-toolbox:not(:hover):not(:focus-within) #toolbar-menubar > * {
    /* Colour matches the grey background of the default firefox theme. Can't see what variable it uses */
    background-color: rgb(232, 232, 231);
}

/* Make top bar more compact */

/* Make nav-bar thinner */
#nav-bar, #TabsToolbar {
    padding-top: 0px !important;
    padding-bottom: 0px !important;
}

/* We need more padding when maximised (maybe just on Windows?) */
#main-window[sizemode="maximized"] #nav-bar {
    padding-top: 0px !important;
}
#main-window[sizemode="maximized"] #mainPopupSet {
    padding-top: 7px !important;
}

/* Partial removal of black bottom 1px line shown in fullscreen mode */
#navigator-toolbox::after { display: none !important; }

/* Kill tab bar */
/* #TabsToolbar { visibility: collapse; } */

/* Compact tab bar */
/* Remove window decorations (Close, Minimize, Fullscreen) */
#titlebar {
  display: none !important;
}

#TabsToolbar .titlebar-placeholder { display: none !important; }

/* Delete header of Tree Style Tab */
#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
  display: none;
}

/* Move tab bar to bottom */
#TabsToolbar {
  -moz-box-ordinal-group: 2;
}

AnkPixivToolの復活

つい先日気付いたけれど、 AnkPixivToolがWEに対応していた。開発者の皆様、本当にお疲れ様です。

WE対応の恩恵なのかChromeでも動き、Chromeではbrowser_action(ツールバーボタンのクリック)にショートカットを設定できるため、片手でポンポン画像が保存出来てとても捗る。

どちらかというと、Chromeを使う上でより便利になった感じ。
Firefoxも早くbrowser_actionにショートカット設定できるようになって。なる…よね?

総評

UIがスッキリしたおかげで、調べものは良くFirefoxを使うようになった。 拡張はまだまだ過渡期といった感じだけれど、少しずつ良くなってきた感もある。

引き続き、今後に期待したい。

ZenzaWatchのマニュアルらしきもの(18/03/01)

ZenzaWatchのマニュアル欲しいなー、と思ったので、だらだら作ってるやつ。
定期的に機能が拡充されてどんどん便利になってて凄い。ニコニコ動画(苦)になっても使えますように。

めも。

・表の中で色付けするスマートなやり方が欲しい。
・見出し1、はてなブログでも使えるやし。勘違いしてた…
・テーブル内では脚注使えないっぽい。
・回り込み便利だけど、見栄え整えづらい
・GIF貼るとやっぱ重くなるので、出来るだけTwitterとかに貼ってそれをリンクする方向で。
・正直縦に長い感じある。
続きを読む

現在のブラウザ環境メモ

現在のブラウザ環境

Firefox + VimFxから移動してそれなりに経つので、今の状況をまとめてみる。

ブラウザ

以前からサブで使用していた CentBrowser をメインにした。

WebExtensionsの仕様上、ページ読込が完了しないと拡張機能が動作しないので、マウスジェスチャがブラウザ標準であるやつを選択。
最近だと Kinza もいいな、と思ってる。RSSリーダーが更新を画面上に通知してくれたら使うんだけど。

Vivaldiで頑張ってショートカット設定するのもありかな、と思ったんけど。
面倒すぎて挫折したのと、Altキーと同時押しするとメニューが毎回反応して邪魔なのでやめた。

57 以降のFirefox

Nightlyは入れておくけど、今の所はサブ止まり。
私の環境だとCentBrowserより使用メモリが多かったり、欲しいアドオンが無い/発展途上だったりで、常用はまだ厳しい。

Vim Vixenには期待してる。

拡張機能(Vim系)

cVim を使用。

以前の記事で書いたので詳細はそっち。
機能が豊富だったり、VimperatorやVimFxのように、JavaScriptで機能拡張出来るので便利。

不満点

  • VimFxのvが凄く欲しい…欲しくない?(hit-a-hintで要素を選択し、visualモードに入れるやつ)

  • Visualモードのmappingが無い。そのままだとVisualモードで選択して翻訳に渡す、といった事が出来ない。

  • ドキュメントが少なすぎる。もっとカスタムスクリプトの説明下さい。

  • ブラックリストに指定したURLは、cVimが常に無効化される。これたまに困る。

  • ツールバーも操作したいなぁ…WebExtensionsでは仕様上無理なのが残念。幸い、拡張のmanifest.jsoncommandsが設定できるので、feedlyとかはそっち設定してる。

拡張機能(その他)

以下は、同等の物がChromeにもあるので問題なし。

TabGroupも欲しいけど、同様な物がChromeにないため、変わりに OneTab を使用。マウス必須だけど仕方ない。

他、よく使ってたのが Ank Pixiv Tool

Ank Pixiv Toolみたいに、1つの拡張機能で全てをカバーしてくれるのは流石に無かったけど、
個別でならあったので、それを使ってる。

ただ、Twitterに関しては、見付けた拡張がいずれも <画像ID>しかファイル名に設定してくれず、
Ank Pixiv Toolみたいに<ユーザー名>-<Tweet>(<画像ID>)をファイル名にしてくれるのが無かった。

毎回手で直してたけど面倒なので、他拡張を参考に、WebExtensionsの勉強しながら自作した。

GitHub - typetonk2/getTwitterImage: Twitterの画像を保存するやつ。

まだ幾つか問題はあるけど、一応実用に耐えてるのでそのまま使ってる。 今後も少しずつ弄る予定。

総評

Vimperatorに続き、VimFxも死亡確定した時は絶望感あったけど、いざ移行してみれば、それなりにやっていけてる。

一旦Firefoxからは離れたけど、WE対応の Saka Keyや、 Vim Vixenも出てきたし、成熟次第では戻るかも。
他、qutebrowserとかも興味ある。

環境は刻一刻と変わるので、定期的な見直しをして、その時々でもっとも自分にあった環境を選択していきたい。

Windowsでneovim環境を作る

Windowsでneovim環境を作る

neovimのバージョンが0.2になり、WindowsがExperimentalでは無くなったので、
試しに導入した時のメモ。

のはずだったが、導入から大分時間が経ってしまったため、手順を忘れぎみ。
家のPCに導入しつつ書く。

前提

  • neovimを導入したいPCは、完全オフライン。
  • オンラインに繋がったPCを使用可能。
  • USBを使ってオフラインのPCにファイルを移動可能。

neovimの準備

公式から拾う。予めビルドされたのが用意されているため、それを使う。

Installing Neovim · neovim/neovim Wiki · GitHub

適当な場所に展開し、起動確認しておく。 以前はnvim-qt.extを別途拾ってくる必要があった気がするけど、同梱されるようになってて少しだけ楽になった。

Pythonの準備

闇の力 を導入予定のため、Python3を使えるようにする必要がある。

パッケージを取得

以前の記事 でPython3は用意しているため、それをそのまま使う。

これ、vim8と同時に動かしたら問題起きたりするのかな。

pythonを使う設定

WindowsではXDG_CONFIG_PATH配下のinit.vimを読み込むらしい。
標準では~/.config/nvimになる模様。そこに配置する。

配置したら、python3の設定を書いておく。

let python3_host_prog="C:/Users/ton/program/vim8/python3/python.exe"

nvim-qtを起動し、:CheckHealthの結果を確認。この時点ではエラーになる。

Python 3 provider (optional)
  - INFO: Using: g:python3_host_prog = "C:/Users/ton/program/vim8/python3/python.exe"
  - INFO: Executable: C:/Users/ton/program/vim8/python3/python.exe
  - ERROR: Command error (4) C:/Users/ton/program/vim8/python3/python.exe -c import neovim; print(neovim.__file__): Traceback (most recent call last):
  - File "<string>", line 1, in <module>
  - ImportError: No module named 'neovim'
  - INFO: Python3 version: 3.5.3
  - INFO: python.exe-neovim version: unable to load neovim Python module
  - ERROR: Neovim Python client is not installed.
    Error: unable to load neovim Python module
    - SUGGESTIONS:
      - Run in shell: pip3 install neovim

neovimでpython3を使うためには、別途モジュールをインストールする必要があるため。

neovim Python client の準備

オンライン、かつ、pipが使えるのであれば、エラーメッセージ通りに pip3 install neovimを実行すれば、すぐ完了。

しかし、今回neovimを入れたいPCはオフラインのため、必要なパッケージを転送し、
手動でインストールする。

pipのインストール

get-pip.pyというスクリプトが用意されているので、ここから、入手する。

次に、以下パッケージを PyPI から取得して、get-pip.pyと同じ場所に配置する。

配置したらpython.exe get-pip.pyを実行し、インストール。

$ python.exe Scripts\get-pip.py
Collecting pip
  Using cached pip-9.0.1-py2.py3-none-any.whl
Collecting setuptools
  Using cached setuptools-36.2.0-py2.py3-none-any.whl
Collecting wheel
  Using cached wheel-0.29.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-9.0.1 setuptools-36.2.0 wheel-0.29.0

これでpipが使える。

Neovim Python Client のインストール

pipと同じように、必要なパッケージを拾ってインストールするだけ。 というわけで、以下パッケージをPyPIから取得し、今度はpip3.exeと同じ場所に配置する。

会社のPCに導入した時は、もっと沢山必要だった気がするんだけど…まぁ必要だったらメッセージ出るので、
都度取得、配置すればいい。

配置したら、pip3.exe install <拾ってきたパッケージ名>を実行し、インストール。

$ pip3 install greenlet-0.4.12-cp35-cp35m-win_amd64.whl msgpack_python-0.4.8-cp35-cp35m-win_amd64.whl pyuv-1.4.0-cp35-cp35m-win_amd64.whl neovim-0.1.13.tar.gz
Processing c:\users\ton\program\vim8\python3\scripts\neovim-0.1.13.tar.gz
Processing c:\users\ton\program\vim8\python3\scripts\greenlet-0.4.12-cp35-cp35m-win_amd64.whl
Processing c:\users\ton\program\vim8\python3\scripts\msgpack_python-0.4.8-cp35-cp35m-win_amd64.whl
Processing c:\users\ton\program\vim8\python3\scripts\pyuv-1.4.0-cp35-cp35m-win_amd64.whl
Building wheels for collected packages: neovim
  Running setup.py bdist_wheel for neovim ... done
  Stored in directory: C:\Users\ton\AppData\Local\pip\Cache\wheels\1f\56\46\0d9eb8b47f52d685aebfd81df5642f44b334e4c671dfb3259b
Successfully built neovim
Installing collected packages: greenlet, msgpack-python, pyuv, neovim
Successfully installed greenlet-0.4.12 msgpack-python-0.4.8 neovim-0.1.13 pyuv-1.4.0

これで Neovim Python Clientが入ったはず。

動作確認

:CheckHealthを実行して、確認する。

Python 3 provider (optional)
  - INFO: Using: g:python3_host_prog = "C:/Users/ton/program/vim8/python3/python.exe"
  - INFO: Executable: C:/Users/ton/program/vim8/python3/python.exe
  - INFO: Python3 version: 3.5.3
  - INFO: python.exe-neovim version: 0.1.13
  - SUCCESS: Latest python.exe-neovim is installed: 0.1.13

やったぜ。

闇の力を手に入れる

dein/denite/deopleteの導入まで。オフライン環境はほんと面倒。

gitの準備

あらかじめ、vimからgitを使えるようにしておくこと。

vimから「:!git」でgitを実行できる状態じゃないと、
dein.vim で正しくランタイムパスが設定されない。

エラーメッセージとか出ないので、PC再設定してる時にはまった。

dein.vim

dein.vim からパッケージをzipで取得。

展開して出来たフォルダを~/.config/nvim/dein/repos/github.com/Shougo/dein.vim/として配置する。

$ ls .config/nvim/dein/repos/github.com/Shougo/
dein.vim  denite.nvim

そして、init.vimに以下を追記。または、ヘルプを参照して書いてもいい。

let $MY_VIMRUNTIME = $HOME.'/.config/nvim'
if &compatible
  set nocompatible
endif
" dein.vimのディレクトリ
let s:dein_dir = expand('$MY_VIMRUNTIME/dein')
" dein.vimのログ
let g:dein#install_log_filename = s:dein_dir . '/dein.log'
" dein.vim 本体
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
" dein.vim がなければ git clone
if &runtimepath !~# '/dein.vim'
  if !isdirectory(s:dein_repo_dir)
    execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
  endif
  execute 'set runtimepath^=' . fnamemodify(s:dein_repo_dir, ':p')
endif

neovimを起動して、:call dein#update()が実行できる事を確認する。

denite.nvim

dein.vimと同じように denite.nvim をzipで取得し、dein.vimと同じ場所に配置。

init.vimに以下を追記。

if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir)
  call dein#add('Shougo/denite.nvim', {'frozen': '1'})
call dein#end()
call dein#save_state()
endif

neovimを起動後、:UpdateRemotePlugins→再起動→:call dein#update()と実行して、:help deniteでヘルプが見れる事を確認する。

deoplete.nvim

denite.nvimと全く同じ流れ。

deoplete.nvim をzipで取得し、dein.vimと同じ場所に配置。

init.vimのdenite.nvimの行の下に追記。

  call dein#add('Shougo/denite.nvim', {'frozen': '1'})
  call dein#add('Shougo/deoplete.nvim', {'frozen': '1'})

後、以下も適当な場所に追記。

let g:deoplete#enable_at_startup = 1

neovimを起動後、:UpdateRemotePlugins→再起動→:call dein#update()と実行して、:help deopleteで、ヘルプが見れる事を確認する。

最後に

以前触った時よりもサクサク動作するのでいい感じ。

ただし、Windowsではアスタリスクが入力できないという 問題 があるため、まだ常用できない。

BoW環境ではneovimを使っているので、上記バグ?が直ったらWindowsもneovimにしたい、とは思っている。

地味に便利なMylistPocket

MylistPocketの使い方

ZenzaWatchの記事 でずっとTODOだったやつ。内容は結構荒い。

続きを読む

denite.nvimで使えるgrepをそれぞれ試した

今朝、こんなツイートをしたんだけど。

twitter.com

後になって考えると、PCにかなり負荷が掛かってる状態だったので、もう一度試してみた。
折角なので、denite.nvimのヘルプにあるSilver SearcherAckも試す。

結論を先に書くと、Platinum Searcherを使うように設定変更した。

環境

  • Vim8(Kaoriya版)
  • RipGrepgithubから拾った最新版
  • Platinum SearcherSilver Searcherは、Chocolateyで入れたもの
  • オプションはdenite.nvimのヘルプにあるのをそのまま使用
  • あらかじめ以下をマッピングして実行
    • DeniteBufferDir -buffer-name=grep grep:C\:/Users/Public/vim8::vim<CR>

なお、Ackはエラーが出て動作しなかった。コマンドラインからは動くんだけどなぁ。

結果

正確に計った訳じゃないので体感だけど、Platinum Searcher > RipGrep > Silver Searcher という結果になった。

何度か試して、それぞれで一番早く感じた時のgifが以下。

  • RipGrep

f:id:tonkuma:20170226102728g:plain

  • Platinum Searcher

f:id:tonkuma:20170226102800g:plain

  • Silver Searcher

f:id:tonkuma:20170226102840g:plain

雑感

正直な所、どれ使っても実用するには充分な速度がでるし、その速度自体も、環境やパラメータのチューニングによって変わるだろうし、参考程度にしかならないはず。

というわけで、好きなのを使えばいいと思う。

とりあえず今回の結果を元に、半年位使ってたRipGrepは一旦お休みして、Platinum Searcherを使うように設定変更した。特に問題なければ、暫くそのままでいく予定。