はじめに
先日暇だったので興味本位でWindowsマシンをデュアルブートして、linux mintを導入しました。
デュアルブート自体はこちらの記事 に沿ってやったらあっさりできました。
日本語化に関してもこちらの記事に沿ってあっさりできました。
(以前ubuntuで日本語対応しようとするとリブート後に立ち上がらなくなる現象をどうやっても解決できずにlinuxマシンを諦めた過去がありますが今回は何事もなく終えました)
ここまでできたのでサブマシンとして使えるくらいには環境整備したいと思い、セットアップしました。
普段自分はmac osをよく使っているので、なるべくmacと同じような操作感で扱えるようにしたいなと思って試行錯誤して、なんとか納得できる環境づくりができましたので忘備録として残しておきます。
タッチパッド
macはタッチパッドがとても素晴らしいです。
タッチパッドのためにmacを使っているといっても過言ではありません。
一方、linuxではタッチパッドの体験のよさはmacに比べて相当遅れていることは知っていたのである程度は許容していますが、最低限macと同様の操作はしたいと考えていました。
自分が行いたかった操作は以下です。
- 1本指でクリック
- 2本指でスクロール
- 3本指でドラッグ
- 4本指(上スワップ)でウィンドウ一覧表示
まず、1本指クリック、2本指スクロール、4本指でのウィンドウ表示はジェスチャーやタッチパッドの設定で簡単に設定可能でした。
その上で、ちょっと修正したいなと思ったことは以下の3つでした。
- スクロール速度が早すぎる
- タッチパッドのダブルクリックでドラッグになるのを無効化したい
- 3本指でドラッグしたい
スクロール速度・タッチパッドのドラッグ無効化
これはGUIからは操作できる項目がなかったので、cliから調整しました。
まず、タッチパッドのデバイスIDを取得するために xinput list を叩いてデバイスIDを知ります。
自分の場合は、ELAN06FA:00 04F3:327E Touchpad id=13 でした。
[I] user@user ~> xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Salicylic-acid3 j67g Mouse id=9 [slave pointer (2)]
⎜ ↳ Salicylic-acid3 j67g Consumer Control id=11 [slave pointer (2)]
⎜ ↳ ELAN06FA:00 04F3:327E Mouse id=12 [slave pointer (2)]
⎜ ↳ ELAN06FA:00 04F3:327E Touchpad id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Video Bus id=6 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Salicylic-acid3 j67g id=8 [slave keyboard (3)]
↳ Salicylic-acid3 j67g System Control id=10 [slave keyboard (3)]
↳ Ideapad extra buttons id=14 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=16 [slave keyboard (3)]
↳ Salicylic-acid3 j67g Consumer Control id=17 [slave keyboard (3)]
↳ sof-hda-dsp Headphone id=15 [slave keyboard (3)]
デバイスIDがわかったら、このIDでのpropsを表示します。 xinput list-props <deviceId>
[I] user@user ~> xinput list-props 13
Device 'ELAN06FA:00 04F3:327E Touchpad':
Device Enabled (190): 1
Coordinate Transformation Matrix (192): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Tapping Enabled (351): 1
libinput Tapping Enabled Default (352): 0
libinput Tapping Drag Enabled (353): 0
libinput Tapping Drag Enabled Default (354): 1
libinput Tapping Drag Lock Enabled (355): 0
libinput Tapping Drag Lock Enabled Default (356): 0
libinput Tapping Button Mapping Enabled (357): 1, 0
libinput Tapping Button Mapping Default (358): 1, 0
libinput Natural Scrolling Enabled (322): 0
libinput Natural Scrolling Enabled Default (323): 0
libinput Disable While Typing Enabled (359): 1
libinput Disable While Typing Enabled Default (360): 1
libinput Scroll Methods Available (324): 1, 1, 0
libinput Scroll Method Enabled (325): 1, 0, 0
libinput Scroll Method Enabled Default (326): 1, 0, 0
libinput Click Methods Available (361): 1, 1
libinput Click Method Enabled (362): 1, 0
libinput Click Method Enabled Default (363): 1, 0
libinput Middle Emulation Enabled (331): 0
libinput Middle Emulation Enabled Default (332): 0
libinput Accel Speed (333): 0.126775
libinput Accel Speed Default (334): 0.000000
libinput Accel Profiles Available (335): 1, 1, 1
libinput Accel Profile Enabled (336): 1, 0, 0
libinput Accel Profile Enabled Default (337): 1, 0, 0
libinput Accel Custom Fallback Points (338): <no items>
libinput Accel Custom Fallback Step (339): 0.000000
libinput Accel Custom Motion Points (340): <no items>
libinput Accel Custom Motion Step (341): 0.000000
libinput Accel Custom Scroll Points (342): <no items>
libinput Accel Custom Scroll Step (343): 0.000000
libinput Left Handed Enabled (344): 0
libinput Left Handed Enabled Default (345): 0
libinput Send Events Modes Available (307): 1, 1
libinput Send Events Mode Enabled (308): 0, 0
libinput Send Events Mode Enabled Default (309): 0, 0
Device Node (310): "/dev/input/event4"
Device Product ID (311): 1267, 12926
libinput Drag Lock Buttons (346): <no items>
libinput Horizontal Scroll Enabled (347): 1
libinput Scrolling Pixel Distance (348): 50
libinput Scrolling Pixel Distance Default (349): 15
libinput High Resolution Wheel Scroll Enabled (350): 1
libinput Scrolling Pixel Distanceがスクロール速度(ピクセル値)の調整、
libinput Tapping Drag Enable がタッチパッドでのドラッグ設定です。
set-propsでこれらの値をいじることができます。
xinput set-prop 13 "libinput Tapping Drag Enabled" 0
永続化
上記変更はリブートしたらリセットされてしまいます。
そのため、スタートアップ時に上記設定を叩くようなシェルスクリプトを用意して対応しています。
#!/bin/sh
DEVICE="ELAN06FA:00 04F3:327E Touchpad"
xinput set-prop "$DEVICE" "libinput Scrolling Pixel Distance" 50
xinput set-prop "$DEVICE" "libinput Tapping Drag Enabled" 0
上記シェルスクリプトをchmod +xしたあとに
「設定」=> 「自動開始させるアプリ」から上記シェルスクリプトを指定することで設定できました
3本指ドラッグ
こちらはfusumaというアプリケーションを導入することで可能になりました。
swipe:
3:
begin:
command: xdotool mousedown 1
update:
command: xdotool mousemove_relative -- $move_x, $move_y
interval: 0.01
accel: 2
end:
command: xdotool mouseup 1
これも上記と同様にstartup時に実行されるシェルスクリプトに実行コマンドを書いておくことで立ち上げ時からfusumaが起動するようになりました。
大感謝です。
ターミナルだけ<C-C>, <C-V>にShiftつけなきゃいけない問題
<C-C> がSIGINTで予約されているので、コピー・ペーストを押すのにShiftをおさなければならないです。
遥か昔からSHIFTを押さずに生きてきてしまったので今更linuxの時かつ、コマンドライン操作の時だけ矯正してねといわれてもできないです。
しかしこれはweztermを使えばかんたんに解決できました。
weztermに限らずとも柔軟にカスタマイズ可能なターミナルエミュレータをつかえば解決できるとおもいます。(自分はmac環境でもweztermを使っているのでweztermです)
weztermでキーを入力すると、まずその入力がweztermのクライアントにバイパスされて、keymapを確認してからコマンドラインに入力されるような挙動をします。
なので、<Super-C>を<C-C>にwezterm側でremapした場合にをおしたら、
ターミナルは<Super-C>を押されたことを一切知らずに<C-C>が入力されます。とても便利です。
これを利用して、<C-C>が押された時にはclipboardへのコピーを、<Super-C>を押されたときには<C-C> を押されたことにすることでlinuxそのものをいじることなく、解決できて嬉しいです。
config.keys = {
{
key = "c",
mods = "CTRL",
action = wezterm.action.CopyTo("Clipboard"),
},
{
key = "v",
mods = "CTRL",
action = wezterm.action.PasteFrom("Clipboard"),
},
{
key = "c",
mods = "SUPER",
action = wezterm.action.SendString("\x03"),
},
}
日本語<=>半角の切り替え
こちらの記事に沿って日本語設定することでCtrl + Spaceで日本語 <=> 半角のトグルができるようになりましたが、
スペースの左のキーで半角に、右のキーで日本語入力にしたかったのでそれも設定しました。
右下のタスクバーのMozcから 「設定」=>「全体の設定」=> 「Show Advanced Options」=>「入力メソッドをオンに、オフに」を設定
ウィンドウサイズの操作
macではspectacle というアプリを使ってウィンドウサイズの調整にショートカットを張ることができますが、
linuxではアプリケーションを別で用意せずともショートカットを用意することができました。
「設定」=>「キーボード」=>「ショートカット」=>「ディスプレイ」にて設定可能
ランチャー
macではraycastというランチャーを使っています。
Raycastでは
- アプリケーションの起動
- ローカルファイル検索
- 電卓
- clipboard history
として使っていました。
これと同等のことができればいいので、linuxではulancherを導入しました。
ただclipboard hisotryだけは実現できなかったので切り分けました。
ローカルファイル検索は拡張機能で実現可能
clipboard history
copyQを使うことにしました。
macではランチャーとしても利用しているRaycastでclipboard historyの機能があるのでそれを使っていますが、
linuxではulancherを使っており、こちらではその機能がなかったので別々のアプリで代用しています。
そしてこれらの統合拡張機能がulancherにあったのでこれを導入しました。
(linuxにもraycast inspireのアプリケーションが存在しますが、開発段階なのでまだ機能が十分に動くものではないため今はulancherを使っています。)
まとめ
ここまでガワの操作をmacと同等の操作にできたので実際に使ってみても何の違和感もなく使うことができています。
それどころか、結構古いwindowsマシンに導入したのにも関わらずmacよりも動作が軽く、サクサク開発でき、とても快適です。
windowsマシンを使う際には必ずlinuxマシンとして使おうと思いました。
よりよい設定やおすすめのアプリケーションがあればコメントください。




