Windows Subsystem for Linux (WSL) にてvagrantを実行するときにハマったときのメモ

Windows Subsystem for Linux = Bash on WIndowsにてvagrantを使って開発環境を構築する際に引っかかったのでメモしておく。 基本的なインストール方法については色々なブログで書かれているので省略。

www.gosoly.com

Command: ["hostonlyif", "create"] error with windows 10

ホストオンリーアダプタの設定中にこける問題。

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: E_FAIL
VBoxManage.exe: error: Failed to create the host-only adapter
VBoxManage.exe: error: Code E_FAIL (0x80004005) - Unspecified error (extended info not available)
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCreate(struct HandlerArg *)" at line 70 of file VBoxManageHostonly.cpp

GithubのIssueにて回避策が乗っていたので、それを適応したところ動いた。(私の環境だと設定後、再起動が必要だったが)

github.com

1. Goto C:\Program Files\Oracle\VirtualBox\drivers\network\
2. There are two folders, go inside both of them and right click on .inf and click Install
3. Head over to Control Panel\Network and Internet\Network Connections
4. Right click on Network Adapter and choose Properties
5. C lick on Install => Service
6. Under Manufacturer choose Oracle Corporation and under Network Service, choose VirtualBox NDIS6 Bridged Networking driver
7. Ok and Close

failed to create the raw output file (VERR_PATH_NOT_FOUND)

% vagrant up 
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'ubuntu/xenial64' is up to date...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "3a8e4eed-b3f0-4f53-acef-0a59c57abe96", "--type", "headless"]

Stderr: VBoxManage.exe: error: RawFile#0 failed to create the raw output file /mnt/c/Users/hoge/ubuntu-xenial-16.04-cloudimg-console.log (VERR_PATH_NOT_FOUND)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

シリアルポート接続の設定を上書きして、切断状態にすることで正常に起動するようになるとのこと。

config.vm.provider "virtualbox" do |vb|
  vb.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
end

stackoverflow.com

WindowsでCapslockをShift+Ctrlにリマップする

Windows機にて開発環境を構築する際に、Macで設定していたCommandキーを使ったショートカットを同じ感覚で使えるようにしたかったので、CapsLockをShift+Ctrlにリマップすることで、それらしい感じにした。 思っていたよりそれらの設定がめんどくさかったのでメモしておく。

AutoHotKeyのインストール

キーのリマップとか凝ったことができる便利なツール。最新版と少し前のバージョンで記法が若干変わっているので、ネット上の情報を漁るときは注意。 今回は少し前のv1.1.26.01を使うこととした。下記のリンクからダウンロード&インストール

https://autohotkey.com/download/1.1/AutoHotkey_1.1.26.01_setup.exe

ChangeKeyのインストール

実はAutoHotKeyだけではCapslockをShift+Ctrlにリマップすることができなかった。 これはAutoHotKeyがHookする手前の段階でOS側がCapsLockについてキー情報を変更してしまっているからであるとのこと。 具体的にはAutoHotKeyでCapsLockのUpイベントが取得できなかった。詳しくは下記を参照

既知の不具合 - AutoHotkey Wiki

解決策として、別のツールでCapslockを使っていないキーにリマップしておく必要がある。 今回はChangeKeyというツールを使ってCapslockをF12にリマップした。

forest.watch.impress.co.jp

AutoHotKeyの設定

ここまで来れば後はAutoHotKeyの設定をするだけ。 適当な名前で .ahk ファイルを作成する。

#USEHOOK
#InstallKeybdHook

*vk7Bsc058::
  SetKeyDelay -1
  Send {Blind}{Ctrl DownTemp}{Shift DownTemp}
return

*vk7Bsc058 up::
  SetKeyDelay -1
  Send {Blind}{Ctrl Up}{Shift Up}
return
#USEHOOK off

これで無事にCapslockをShift+Ctrlにリマップすることができた。

Windows10でBluetoothキーボードをペアリングする際に、Windows側でPINコード入力を求められる問題

普通はWindows側にPINコードが表示され、それをキーボード側で入力することでペアリングが完了すると思うが、 なぜかWindows側で「PINコードを入れてください」というテキストボックスが出るという現象に遭遇した。 もちろんキーボードにはPINコードを表示する機能などないので困った。

環境: Windows 10 
Bluetoothレシーバー: LBT-UAN05C2

解決策

価格.com - 『ペアリングに一度失敗したらパスコードが二度と表示されません。』 エレコム TK-FBP052WH [ホワイト] のクチコミ掲示板

上記の掲示板に回避方法が書いてあって事なきを得た。 具体的には、Windows側に有線で別のキーボードをつないで、 PINコードの入力を求められた時にテキストボックスに適応な数字を投入し、 すぐにBluetoothキーボード側でも同じ数字を入れてEnterを押すというもの。

これでなぜかペアリングができた。 他のBluetoothレシーバーでも起こる現象のようなので、Windows側の問題であろうと思う。

mkdirをディレクトリがない場合のみ実行したい場合

シェルスクリプトの中でディレクトリがないなら掘るという処理をしたい場合はそれなりにある。 例えばログフォルダを先に作るとか。

ifを使って順当にやる方法もあるのだが、下記の方法が一番楽である。

mkdir -p directory_name

VSCodeで簡単にペイン分割するショートカットを設定する

SublimeからVSCodeに乗り換え中なのだが、SublimeのOrigami拡張で行っていた楽ちんペイン分割をVSCodeでやりたくていろいろ調べた。

結論

f:id:riosu:20180808164108g:plain

デフォルトでできるがキーアサインがされていないので設定してあげれば良い

[
    {
        "key": "cmd+d",
        "command": "workbench.action.splitEditorRight"
    },
    {
        "key": "shift+cmd+d",
        "command": "workbench.action.splitEditorDown"
    }
]

macOSにpipをインストールする

python2は入っているし、python3とかpip3は brew install python で入れたけど、pipが入っていない! ってことがあったのでメモ

brewでpython2を入れれば良い。 具体的には下記コマンド。

brew install python@2

解決!以上

Visual Studio Codeのファイルツリー(エクスプローラー)のフォントを変更する

VSCodeのファイルツリーのフォントが気に食わなかったので変更したのでメモしておく。 設定ファイルではエディターのFontFamilyは変更できるが、サイドバーのFontFamilyは変更できないようであった。

f:id:riosu:20180725230635p:plain:w300

vscode-custom-css拡張をインストールする

github.com

カスタムCSSを適応することができる拡張機能があるので、まずこれをインストールする。 VSCode拡張機能検索から、vscode-custom-css を検索し、インストール、再起動。

適応するカスタムCSSファイルを作成する

今回はファイルツリーのファイル名のフォントと、エディターで開いているファイル名のフォントを変更する。 下記の内容のファイルを ~/.vscode/css/tree.css として保存する

.sidebar .explorer-viewlet .label-name,
.editor .title .label-name {    
    font-family: "Monaco" !important;
    font-size: 11px !important;
}

vscode-custom-cssを有効化する

ユーザ設定に以下を追加する

    "vscode_custom_css.imports": [
        "file:///Users/semenov/.vscode/css/tree.css"
    ]

その後、Shift+Command+Pを押して、 Enable Custom CSS & JS を選択。そしてVSCodeを再起動する。 再起動後、「VSCodeが壊れているかも」というメッセージが出るか、問題ないので二度と表示しないようにしてOK。

以上でファイルツリーのフォントが代わっているはず。 ちなみにCSSを更新した後は、 Reload Custom CSS & JS を選択し、VSCodeを再起動する必要がある。

参考: 当該CSSセレクタを見つけたり、テストする方法

ヘルプ => 開発者ツールの切り替え をすると、Developer Toolsが出るので、普通のWeb開発と同じように目的のDOM要素を見つけてCSSを変更したりしてみると良い。

iTerm2で拡大時にOpen Command Historyが発火してしまう問題の対処

最近iTerm2を使っているときに、文字を拡大しようと「Command + Shift + +(;)」を入力すると、 拡大はされるのだが、同時にコマンドヒストリーが表示されるようになってしまった。 おそらく日本語キーボード固有の問題だと思うが、メモ。

対処方法

  1. iTerm2 -> Preferences -> Keys
  2. Key Mappings下部の「+」から新規登録
  3. 「Command + ;」のアクションを 「Ignore」 に設定
  4. 「Command + Shift + +」のアクションを 「Select menu item "Make Text Bigger"」に設定

これでうまく動くようになった。以上。

Logicoolのメディアキーが効かない問題の対処法

Logicoolのキーボードについていたり、マウスのキーにアサインすることができるメディアキー。 再生/一時停止や次の曲へ進むなどの動作をプレイヤーがアクティブじゃない時にも実行することができる優れもの。

これが自分の環境だと動かなかったのだが、下記のサイトに書いてあるやり方で治すことができた。

www.omgchrome.com

私の場合はGooglePlayを今は使わなくなっていたので削除した。 一点注意として削除したあとに、Chromeのプロセスを一旦終了させなければ上手く動作しなかった。

よかったよかった。