アプリのアイデア
NeovimからRushRoyaleを操作できるアプリが欲しい
ボタンというか操作できる箇所が非常に多いので、それらをLuaからこつこつ操作するのは大変だと思う
まずその前にRRリモコンが欲しい
基本はviモードであれこれ、
- h/lで画面をタブを左右に切り替える
- j/kでスクロール
- タッチできる(?)ところはハイライトする(これはVimiumCっぽい感じで)、そしてキーを割り振る
** HTMLと違ってどこに要素があるかわからない、動的に場所を見つけ出すのかなりムズイ、というか無理かも、なので最初に場所を決めておくしかないと思う - Escでキャンセル/戻る、これ今でもできるか
- キーアサイン変えられる
- 戦闘モードではなるべく打鍵数すくなくマージ、召喚、
- 画面の大きさによって、ぽちる場所も変わってくるから計算が必要、適正サイズに無理やり画面サイズ変えてもいいけど
このリモコンにAPIを持たせるか何かしてNeovimからそれらをコールする、といったアイデア
リモコンはPython+Pyautoguiで作る?
けど画面に枠線や文字を描画することなんてできるのかな
で、Neovimから操作するときはコマンドライン(だっけ)か、専用のRR操作モードバッファを作る、そこから操作
と、できるできないはともかくとりあえずアイデアだけ書き留めといた
Thnq V60を外部モニターにつなぐ
スマホのスペックはこれ
LG V60 ThinQ 5G スペック・仕様 - 価格.com
このスマホはUSB Type-CのAlternateモードには対応している
DisplayPort Alternate Modeに対応したAndroidスマホ一覧(USB Type-C to HDMI) | Wi-Fiの森
Thunderbolt3対応じゃないからつながらないと思うけどダメもとで
モニターはたぶんこれ
デスクトップ タッチ スクリーン マルチ コンピューター 1080P ディスプレイ FHD モニター – EVICIV モニター
HDMIを使えば接続できることはわかってるけど、USB Type-Cでつなぎたい、なぜなら持ってるモニターがマルチタッチ対応らしいので
まずなにも考えず普段充電やデータ通信に使ってるのでつないだ→全然だめ
スマホかケーブルがThunderbolt3.0に未対応だからだと思う
Alternate ModeはHDMIに変換しないとだめっぽい?
参考
- 【規格に注意】USB Type-CでノートPCにPCモニター接続 | ひとり情シス、孤独にあらず
-
Alt Modeとは?—USB-Cが映像出力やThunderbolt 3になる仕組みのお勉強|8vivid
Thunderebolt3ドッキングステーションなんてものがあるのか?!アマゾンで見ると結構高い、、、
Thunderbolt3対応ケーブルとHDMI変換アダプターと両方買って試してみよう、こんど
Neovimあれこれ
NeovimでZoxideしたい
今までNeovim内で訪れたことのあるフォルダに簡単に移動したい
telescope-zoxideというのがあるので導入
本当はこんな使い方しないんだろうけど、 telescope.nvimのdependenciesに'jvgrootveld/telescope-zoxide'を追加
けどなんかちょっと遅い?
過去に開いたファイルを開きたい
telescopeにそれがあった
:Telescope oldfiles
というのを {'<Leader>to', plug.oldfiles},
にマッピングして解決
Luaのファイルをtelescopeのプレビューで開くとエラー
エラーメッセージをコピーしてなかったけどtreesitter invalid structure at position language_lua
といった感じ
たぶんここで報告されてるのと同じ
で、直し方も同じで:TSInstall! lua
でOK
cder.nvimというもの
telescopeでcdできる?らしい
便利っぽいんだけど、なんかまったく動かない
Powershellではbat、fdはいってるし、実行コマンドをcmd.exeにしているけどだめ
wslのubuntuでは?とためしたらfd、batなど入ってないから試せない、いれればいいんだけどさ、、、
というわけでubuntu on wsl2にfd、batをいれる
$ sudo apt install fd-find
$ wget https://github.com/sharkdp/bat/releases/download/v0.24.0/bat_0.24.0_amd64.deb
$ dpkg -i bat_0.24.0_amd64.deb
fd
はfdfind
という名前で入るのでaliasつけてもよい
参考: alt cliツール 紹介 【lsd】【difftastic】【bat】 #Rust - Qiita
これで:Telescope cder
したらちゃんと動いた。ということは、Windowsの問題かと思う
内部的な動作について
opt
で設定できるものがいくつかあるが大事なのはこんなところ
dir_command = { 'fd', '--type=d', '.', os.getenv('HOME') },
command_executer = { 'bash', '-c' },
previewer_command = 'ls -a',
pager_command = 'bat --plain --paging=always --pager="less -RS"',
内部的にはfinder
がdir_commandを使っている
finder
は選択できるのをずらずらするための処理
で選択したものを右側でプレビュー表示するのがpreviewer
となる
previewer
にcommand_executer, previewer_command .. ' ' .. (finderで選択したディレクトリ) .. ' ' .. pager_command
となっている
telescopeだかnvimは外部コマンドを呼び出すときにパイプをつけて呼び出すことができないのでcommand_executerに引数の形でコマンドを渡している、ということ
で、finderで選択したディレクトリは次の関数に渡して、ダブルクォートでくくっている
entry_value_fn = function(entry_value)
return '"' .. entry_value .. '"'
end,
動くようになった!
唐突に解決したような書き方だが、ここに至るまで紆余曲折ありました
結局cder.nvim自体、2か所に「Windowsの場合は・・・する」というパッチが必要だった
entry_maker = function(line)
return {
value = line,
display = function(entry)
if vim.loop.os_uname().sysname == 'Windows_NT' then
return ' ' .. line:gsub(os.getenv('USERPROFILE') .. "\\", ''),
{ { { 1, 3 }, 'Directory' } }
else
return ' ' .. line:gsub(os.getenv('HOME') .. '/', ''),
{ { { 1, 3 }, 'Directory' } }
end
end,
ordinal = line,
}
end,
:
:
entry_value_fn = function(entry_value)
if vim.loop.os_uname().sysname == 'Windows_NT' then
return '"' .. entry_value:gsub("\\$", "") .. '"'
else
return '"' .. entry_value .. '"'
end
end,
で、init.luaにはこんな風な設定をいれた
{
'zane-/cder.nvim',
event = 'VeryLazy', -- lz
config = function ()
m = {
{'<Leader>tc', ':Telescope cder<CR>'}, -- km
}
map_keys(m, vim.keymap.set)
local fd_param = '--type directory --type symlink --exclude .git'
if vim.loop.os_uname().sysname == 'Windows_NT' then
require('telescope').setup({
extensions = {
cder = {
command_executer = { 'cmd.exe', '/c' },
previewer_command = 'eza -a -F --icons --color -1', -- uutils ls -a',
pager_commnd = 'bat --plain --paging=always --pager="less -RS"',
dir_command = { 'fd.exe', '--type=d', '--type=l', '.', },
}
},
})
else
require('telescope').setup({
extensions = {
cder = {
dir_command = { 'fdfind', '--type=d', '--type=l', '--exclude=.git', '.', },
previewer_command = 'exa -a --icons --color=auto -F -1',
},
},
})
end
require('telescope').load_extension 'cder'
end
},