__aki_nikki__

分子分光学の研究をしている大学院生の日記です

NovimにファイラーFernを導入した

NeovimにファイラーFernを導入した

筆者はnvimでファイラーとして古くから使われているNERDTreeを使っていました。 しかし、XやZennなどでFernがおすすめされていて気になったため使ってみることにしました。

実装はVimScriptですのでVim,Neovim両方で使うことが可能です!

インストール

筆者はパッケージマネージャーとしてLazy.nvimを使用しているので、まず~/.config/nvim/lua/plugins.luaに以下を書き込みます。

-- filer
filer = {
    "lambdalisue/fern.vim",
}

return {
    --- 他のプラグイン 
    filer
}

ここまで設定すればとりあえず使えるようになります。とりあえず今いるディレクトリの内容を表示するにはコマンド

:Fern .

を実行し、左側に表示するにはオプション-drawerを付けて

:Fern . -drawer

と実行します。

いい感じに表示するには

:Fern . -reveal=% -drawer -toggle -width=25

とオプションをたくさん付けて実行する。

ここで、-reveal=%は現在focusしているバッファの内容と共に現在のディレクトリを開くという意味で、 -toggleはもう一回同じコマンドを実行することでフィアラーを閉じることを意味で -width=<width>は左側に表示されるwindowの幅を<width>に設定するという意味です。

設定

.gitignoreのような'.'から始まる隠しファイルが見えないのは困るので、まず

-- show hidden file
vim.cmd[[let g:fern#default_hidden=1]]

を設定して隠しファイルがファイラーから見えるようにします。

長いコマンド:Fern . -reveal=% -drawer -toggle -width=25<CR>を毎回入力するのは流石に面倒なので何かショートカットのコマンドを定義することを考えます。

最初はvim.cmd[["<vim command>"]]でコマンドを定義していましたが、せっかくLuaで設定ファイルを書いているのでLuaでコマンドを定義することにしました。

筆者はNERDTreeを使用していた時に:Ntで現在いるディレクトリについて左側にファイラーが開くように設定していたので、それをついで以下のようにコマンドを実装しました。

-- toggle Fern by :Nt 
vim.api.nvim_create_user_command(
'Nt',
function ()
    vim.cmd(":Fern . -reveal=% -drawer -toggle -width=25<CR>")
end,
{nargs = 0}
)

また現在のディレクトリではなく特定のディレクトリを指定して開くコマンドも欲しいため別にNttコマンドして実装しました。 このコマンドでは:Ntt <dir>で\<dir>の内容を左側に開くことができます。

-- open directory <dir> by :Ntt <dir> 
vim.api.nvim_create_user_command(
'Ntt',
function (opts)
    local  dir = opts.args
    vim.cmd(":Fern " .. dir .. " -reveal=% -drawer -toggle -width=25<CR>")
end,
{nargs = 1}
)

ここで、コマンドを実装に使っているNeovimのAPIの関数vim.api.nvim_create_user_command()ですが、第一引数はコマンド名を意味する文字列で必ず大文字から始める必要があります、第二引数はコマンド実行時に実行される関数で、処理はこの関数内に実装します。第三引数は第二引数の関数に渡される引数の数を渡します。

使ってみての感想

半年ほどNERDTreeを、それより前は標準のファイラーを使っていたいためディレクトリ階層の移動やファイルを開くなどのキーバインドが違って最初は慣れませんでしたが、すぐに慣れました。 使用した感覚ではNERDTreeよりもサクサク動くように感じました。

ThinkPadを使ってみて

なぜThink Padを選んだのか?

前まではAsusのラップトップを使ってWinsows11とArch Linuxデュアルブートしていましたが、Corei3 の2コア4スレッドのマシンでは流石に力不足を感じたのでもう少しパワーのあるマシンが欲しくなったので、

新しいラップトップのマシンとしてThinkPad E14 Gen5を買いました。

理由としてはLinuxを動かすならThink Pad! と言えそうなくらいArch Wiki 等に情報がたくさんあることや、数少ないUS配列のラップトップの候補だからです。(他だとDELLApple(mac)くらい)

このマシンはm.2 ssdを二枚載せることができるので、デフォルトで載っている方をWindows11用にして、もう一方にはLinuxを入れてデュアルブート構成で使うことにしました。

ちなみにWindowsのライセンスは普通のHomeです、一瞬Proライセンスも考えたけどやっぱり高いな〜とおもってやめました。

Arch Linuxをインストールする

SSDを追加

まずこのマシンでややこしいのがM.2(NVme)の規格が通常の2280ではなく一回り小さな2242サイズであることと、スペースの問題から片面実装であるものが必要であった点です。

それっぽいのをamazonで調べるとThinkPadユーザーの方々がTransend製のものを使ってらっしゃるようなので、自分もそちらの512GBのものを購入しました。

ThinkPadは公式から保守マニュアルが用意されているので裏蓋を開けてssdを追加すること自体は特に問題なく行うことができました。

あと、前のAsusのマシンのUEFIの画面はアメリカンメガトレンド丸出しのFキーと矢印キーで操作するなものでしたけど、今回のものはかなり高機能でGUIでマウスも使えるものでした。最近は多いのかな?

ディスクの暗号化

別のpcでArch Linux のインストールメディアから起動するためにはセキュアブートを無効化する必要があります。

しかし、いざUEFIメニューからセキュアブートを無効化するとWindowsが起動できなくなってしまいました。

前使っていたAsusのマシンではこんなことなかったのですけどね...

色々調べてWindows側から暗号化を無効化しました。 Pro版ではBitLockerがあることは知っていたのですが、Homeでも暗号化があるのですね...

いざinstall

最近は全部自分で作業しなければならないこれまでのスタイルに加えてTUIのインストラーであるArch installがあるみたいですが、今回もこれまで通り手動でインストールしました。

DEはwaylandのコンポジッターであるSwayを入れてフルスタックなDE(Gnome,Kde,Xfecなど)は入れないことにしました。

ハマった点

Arch LinuxのインストールもDEの構成も初めてではないのでメモ書きをもとに出来たのですが、オーディオ関係がややこしかったですね...

1: オーディオ

参考: - pipewire: Arch Wiki - pipewire: Gentoo Wiki - UbuntuにPipeWireを入れて見る - Fedora34 「音がならない!」で困ったら - arch wiki alsa

alsa-utilを入れた。これまではpulsaudioを入れていたが、今回はpipewireを入れました。pulseaudioとの互換性からpipewire-pluseも追加でインストールしました。

しかし、音が出ませんでした!(出力先がダミーになってしまう!) alsamixerを起動しようとすると、サウンドカードが見つからない!と出てしまいました。

そこで症状でググると以下のフォーラムを発見しました。 Archlinux cannot find my sound card.

ここでは

We're gonna need some more info to go on, have you explicitly installed PulseAudio? If not you're using ALSA. How do you know it can't find your sound card, are you saying this just because there's no audio playing or some other reason? What's the output of lspci | grep -i audio? It maybe possible you need either (or both of) alsa-firmware or sof-firmware via this link

とあったのでalsa-firmwaresof-firmwareを一個づつインストールして試したら、sof-firmwareを入れたことでサウンドカードが認識されてちゃんと音が出ました。

無事音が出るようになったので以下を~/.config/sway/configに以下を書き込んでF1でミュート/ミュート解除,F2で音量downF3で音量upできるようにしました。

# vluem control by F1(mute/unmute ) F2(down) ,f3(up) ,alt + f1(mute)
bindsym F1 exec pactl -- set-sink-mute @DEFAULT_SINK@ toggle 
bindsym F2 exec pactl -- set-sink-volume @DEFAULT_SINK@ -5% 
bindsym F3 exec pactl -- set-sink-volume @DEFAULT_SINK@ +5% 

2: Polkit

インストール中というよりもしばらく使ってからですが...

Arch WikiのPolkitの記事を読むと、KDE,GNOMEのようなフルスタックなDEをインストールする場合は勝手に設定されていることがほとんどですが、Swayの場合は自分で設定することが必要です。

グラフィカル環境を使っている場合、グラフィカルな認証エージェントをインストールし、(xinitrc を使うなどして) ログイン時に自動で実行されるようにしてください。 Cinnamon、Deepin、GNOMEGNOME Flashback、KDELXDE、LXQt、MATE、theShell、Xfce には初めから認証エージェントが入っています。 他のデスクトップ環境を使っているときは、以下の実装からどれか一つを選ぶ必要があります:

polkitとしてpolkit-gnomeを自動で起動するようにするには~/.config/sway/config

# polkit
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

を書いて自動で起動するようにする必要がある。 この設定でDropboxのクライアントは普通に動いたのですが、root権が必要なGUIアプリの場合、polkit-gnomeを入れてSwayのコンフィグから自動起動するようにしてもpasswordを入力するwindowは出ても起動には失敗して起動できませんでした。

$ ps aux | grep polkit

を調べるとpolkit,polkit-gnome共にちゃんと起動してることは確認できました。

CLIでpasswordを要するコマンド例えばdockerのデーモンを起動する

$ systemctl start docker.service

はpasswd用のwindowが出てパスワード入力 -> 無事デーモンが起動するのに...

症状でググった結果同じような症状を発見しました。 結論としてはxorg-xhostが必要とのことです。というのもpolkitが入っていてもwayland自体は対応しないためです。

$ sudo pacman -S xorg-xhost

これでok!

3: ポインティングデバイスの設定

特にハマったりはしませんでしたが、毎回似たような設定のやり方を忘れたので備忘録として書いて置きます。

デフォルトでは~/.config/sway/configに以下のように設定すればトラックパッドでクリックができます。

# tap to click for lap tocp touch pad
input type:touchpad {
    tap enabled
    natural_scroll enabled
}

またThinkPad特有の赤色のトラックポイントはデフォルトでは加速度が考慮されて使いにくく感じたので

# for thinkpad track point
input type:pointer {
    accel_profile flat
    pointer_accel 0.3
    scroll_factor 0.5
}

と設定して加速度が考慮されないようにしました。

まあトラックポイントはあんま使っていないのですが...

インストールしたツール

ここではインストールしているツールについて軽く紹介します。

1: ログインマネージャー

これまではコンソールから手動でSwayを起動していましたが、現在はRust製のTUIのログインマネージャlemursを使っています。 シンプルかつ軽量で気に入っています。

2: バッテリー管理

まずtlpをインストールしてデーモンを設定します。

$ sudo pacman -S tlp
$ sudo systemctl enable tlp.service

電源に繋がっていない場合にCPUのクロックの制限をかけたりすれば、バッテリー持ちを良くすることが可能です。 一時期前のAsusのラップトップでは設定していましたが今は設定してないです。

ThinkPad E14 Gen5の場合ではtpacpi-batをインストールすることでバッテリーの充電のしきい値を設定できます。

設定はArch Wikiの記事を参考にしました。

$ sudo pacman -S tpacpi-bat # install

以下のコマンドで現在のしきい値を見ることができます。

$ sudo tpacpi-bat -g ST 1 # 充電を開始するパーセンテージ
$ sudo tpacpi-bat -g SP 1 # 充電を終了するパーセンテージ

ここでは充電を80%で終了し、70%以下にまで減った場合に充電を開始するように設定しました。

$ sudo tpacpi-bat -s ST 70 # 充電を開始するパーセンテージ
$ sudo tpacpi-bat -s SP 80 # 充電を終了するパーセンテージ

3: ディスプレイのlock

参考: - arch wiki セッションをロック

swaylockのフォークのswaylock-effectsを使っています。

$ sudo pacman -S swaylock-effects # install

インストールをしたあとで.bashrcに適当なエイリアスを設定すればok!

# for lock screen
alias lock='swaylock \
    --screenshots \
    --clock \
    --indicator \
    --indicator-radius 100 \
    --indicator-thickness 7 \
    --effect-blur 7x5 \
    --effect-vignette 0.5:0.5 \
    --ring-color bb00cc \
    --key-hl-color 880033 \
    --line-color 00000000 \
    --inside-color 00000088 \
    --separator-color 00000000 \
    --grace 2 \
    --fade-in 1'

4: WiFi接続

これまでは、netctlを使っていたのですが、iwctlを試しに使ってみたらこっちの方が便利に感じたのでこっちに変えました。

5: ファイルマネージャ

thunarを使っています。というのもXfce環境を長いことを使っていて使い慣れているからです。

シンプルかつ必要十分という印象です。

6: 日本語入力

自分は設定言語は英語にして、そこに日本語入力を追加する形で運用しています。

日本語入力にはfcitx5-mozcを使っています。 特に強いこだわりがあるわけではないので初めてArch Linuxをインストールしたときと同じものを使っています。

7: ターミナルエミュレータ

Xfce terminalを使っています。これもXfceデスクトップを長いこと使って使い慣れているためです。

一回Weztermも試したのですが、設定をLuaで書いていくスタイルは気に入ったのですが、日本語入力関係の設定の不具合を直せず結局Xfce terminalに戻ってきました。

8: エディタ

普段はエディタはNeovimを使っています。LSPやファイラーも設定して快適な環境です 。 しかし、Gitのブランチの様子を見るのにはVsCodeの拡張が便利だったりするのでVsCodeも入れていいます。

9: バー

waybarを使っていいます。バッテリー残量、Wifi,インプットメソッド等が見れて便利です。

$ sudo pacman -S waybar # intall

まずデフォルトの設定は/etc/xdg/waybarにあるので~/.config/にコピーします。

$ cp -r /etc/xdg/waybar  ~/.config/

このままではデフォルトのsway-barが表示されたままで、waybarは表示されないので~/.config/sway/configの項目barを以下のように編集しました。

bar {
    #position top

    # When the status_command prints a new line to stdout, swaybar updates.
    # The default just shows the current date and time.
    #status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
    swaybar_command waybar   

    colors {
        #statusline #ffffff
        #background #323232
        #inactive_workspace #32323200 #32323200 #5c5c5c
    }
}

ここで重要なのはstatud_command,position topコメントアウトして、swaybar_command waybarを追加することです。

この設定を終えた後で,Super + Shift + C(デフォルトの設定)で~/.config/sway/configを再読込すると上部にbarが表示される。

しかし、私の環境では絵文字が文字化けしてしまいました。 これは、awesome-fontを入れることで解決できました[2]。

$ sudo pacman -S ttf-font-awesome

デフォルトではたくさん表示されてごちゃごちゃしているので、設定ファイル~/.config/waybar/configのを編集して必要なものみを表示するように変更しました。

今回は"height","width","modules-left","modules-center","modules-right"のみを以下のように編集しました。

    "height": 10, // Waybar height (to be removed for auto height)
    "width": 1912, // Waybar width
    "spacing": 2, // Gaps between modules (4px)
    "modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad"],
    "modules-center": ["sway/window"],
    "modules-right": ["idle_inhibitor", "pulseaudio", "network", "backlight", "sway/language", "battery", "clock", "tray"],

デフォルトの配色は自分好みではないので~/.config/waybar/style.cssを編集して好みの色になるようにしました。

10: ランチャー

rofi-lbon-wayland-onlyを使っています。

これはrofiwayland対応版です。

元々はXfceのランチャーを使っていて、流石に変えたいなと思っていたので rofi-lbon-waylandを使っていたのですが途中で挙動がおかしくなったので rofi-lbon-wayland-onlyに変えました。

$ yay -S rofi-lbonn-wayland # install 

まず、デフォルトの設定ファイルを生成するために以下のコマンドを実行します。

$ rofi -dump-config > ~/.config/rofi/config.rasi

設定箇所はたくさんありますが、今回はconfiguration {}のうち以下の部分を設定しました。

configuration {
    modes: "window,drun,run,ssh";
    font: "hack 20";
    icon-theme: "Papirus";
    combi-modes: "window,drun,run";
}

また、ショートカットキーで起動するようにするため~/.config/sway/configに以下を書き足しました。

bindsym $mod+z exec rofi -show drun

RustでWebAssemblyに入門する(1)

RustでWebAssemblyに入門するチュートリアルRust 🦀 and WebAssemblyをやってみました。

WebAssemblyには以前から興味があったのですが、JavaScriptの知識が必要でそこがハードルになってしまっていましたが、とある事情でJavaScriptを勉強することがあったため、"今だ"と思ってやってみることにしました。

Setup

ここでは必要なツールのインストールを行う。

  • 現在の自分の環境
    • OS: Arch Linux x86_64
    • rustc: 1.70.0
    • cargo: 1.70.0
    • Node: 20.8.0
    • npm: 10.2.0

基本的なRustの環境とNode.jsの環境はすでに入っていたので、wasm-pack,cargo-generateを導入した。導入はcargo installより行います。ソースコードをダウンロードしてビルドするので、ちょっと時間がかかりました。

Hello,World!

ここでは、とりあえずプロジェクトを作成して、かんたんなWebAssemblyのプログラムを動かします。今回用いるのはwasm-packで、これは、RustからWebAssemblyにコンパイルするとともにJavaScriptもしくはTypeScriptのグルーコードも生成してくれます。

ここまでは、基本的には問題なく進めることができましたが、最後のnpm run startでサーバーを建てようとしたときにOpenSSLのエラーが出てサーバーを建てられませんでした。

これを調べると、とりあえずでよければOpenSSLのレガシーモードで実行すれば良いらしいのでpackage.jsonの"script"の"start"のところにNODE_OPTIONS='--openssl-legacy-provider'を追加しました。

"scripts": {
    "build": "webpack --config webpack.config.js",
    "start": "NODE_OPTIONS='--openssl-legacy-provider' webpack-dev-server"
  },

これでnpm run start でサーバーが建つようになって無事表示ができました。

Rules of Conway's Game of Life

ここではライフゲームのルールが述べられていました。

ここまで全体の感想

慣れないJavaScriptが大変でした。特にNode.js周りがしんどかったです。

Sway環境でDropboxが起動しなくなった話

いつものように、Arch Linux + swayのマシンでDropboxCLIから起動しようとしました。

$ dropbox

すると、起動できず以下のようなエラーが出力されてしまいました!

dropbox: load fq extension '/opt/dropbox/cryptography.hazmat.bindings._openssl.abi3.so'
dropbox: load fq extension '/opt/dropbox/cryptography.hazmat.bindings._padding.abi3.so'
dropbox: load fq extension '/opt/dropbox/apex._apex.abi3.so'
dropbox: load fq extension '/opt/dropbox/psutil._psutil_linux.cpython-38-x86_64-linux-gnu.so'
dropbox: load fq extension '/opt/dropbox/psutil._psutil_posix.cpython-38-x86_64-linux-gnu.so'
dropbox: load fq extension '/opt/dropbox/tornado.speedups.cpython-38-x86_64-linux-gnu.so'
dropbox: load fq extension '/opt/dropbox/wrapt._wrappers.cpython-38-x86_64-linux-gnu.so'
dropbox: load fq extension '/opt/dropbox/PyQt5.QtCore.so'
dropbox: load fq extension '/opt/dropbox/PyQt5.sip.so'
dropbox: load fq extension '/opt/dropbox/PyQt5.QtGui.so'
dropbox: load fq extension '/opt/dropbox/PyQt5.QtWidgets.so'
dropbox: load fq extension '/opt/dropbox/PyQt5.QtDBus.so'
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ====
Authentication is needed to run `/bin/sh /tmp/tmp4w886vq0' as the super user
Authenticating as: root
Password: 
==== AUTHENTICATION FAILED ====

メッセージの最後の方を読むとpolkitが原因でエラーが出ているようなので、 まず、自分のシステムにインストールされているpolkit関係のパッケージを調べることにしました。

$ pacman -Q | grep polkit

結果としてpolkitpolkit-gnomeがインストールされていることがわかりました。

Arch wikiでpolkitを調べてみると以下のように特定のデスクトップ環境でははじめからインストールされていて、自動で起動するようになっているようです。

グラフィカル環境を使っている場合、グラフィカルな認証エージェントをインストールし、(xinitrc を使うなどして) ログイン時に自動で実行されるようにしてください。 Cinnamon、Deepin、GNOMEGNOME Flashback、KDELXDE、LXQt、MATE、theShell、Xfce には初めから認証エージェントが入っています。 他のデスクトップ環境を使っているときは、以下の実装からどれか一つを選ぶ必要があります:

筆者の環境はswayであるので、polkit-gnomeが起動時に自動で起動するように設定をすることが必要そうにみえます。

sway自動起動する設定は基本的に~/.config/sway/configに以下の形式で書き込むので、以下のように書き足しました。

# polkit
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

この後でこのマシンを再起動してdropboxを起動させると前のようにちゃんと起動するようになりました。

waybarを導入した

waybarを導入する理由

Arch Linux の環境でWMとしてswayを使用しているのですが、デフォルトのsway-barでは物足りないのでより高機能なwaybarを導入することにしました。

インストール

pacmanによりリポジトリからインストールできます。

$ sudo pacman -S waybar

設定

まずデフォルトの設定、/etc/xdg/waybar~/.config/以下にコピーします。

$ cp -r /etc/xdg/waybar  ~/.config/

このままではデフォルトのsway-barが表示されたままで、waybarは表示されないので~/.config/sway/configの項目barを以下のように編集して、sway側にwaybarの存在を教えてあげます。

bar {
    #position top

    # When the status_command prints a new line to stdout, swaybar updates.
    # The default just shows the current date and time.
    #status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
    swaybar_command waybar   

    colors {
        #statusline #ffffff
        #background #323232
        #inactive_workspace #32323200 #32323200 #5c5c5c
    }
}

ここで重要なのはstatud_command,position topコメントアウトして、swaybar_command waybarを追加することです。 Super + Shift + C(デフォルトの設定)で~/.config/sway/configを再読込すると上部にbarが表示されはずです。

しかし、私の環境では絵文字が文字化けしてしまいました。 これは、awesome-fontを入れることで解決できました。

$ sudo pacman -S ttf-font-awesome

デフォルトではたくさん表示されてごちゃごちゃしているので、設定ファイル~/.config/waybar/configのを編集して必要な物のみを表示するように変更します。 今回は"height","width","modules-left","modules-center","modules-right"のみを以下のように編集しました。

    "height": 10, // Waybar height (to be removed for auto height)
    "width": 1912, // Waybar width
    "spacing": 2, // Gaps between modules (4px)
    "modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad"],
    "modules-center": ["sway/window"],
    "modules-right": ["idle_inhibitor", "pulseaudio", "network", "backlight", "sway/language", "battery", "clock", "tray"],

デフォルトの配色は自分好みではないので~/.config/waybar/style.cssを編集して好みの色になるようにしました。 CSSを編集したといってもカラーコードを編集しただけですが...

最終的にはこのように仕上がりました。

私は寒色が好きなので、いい感じにできたと思います♪

参考

  1. gentoo wiki
  2. swayのすゝめ

WezTermを試してみる

きっかけ

私はこれまでGNU/Linuxディスクトップ環境としてXfce4を使用してきて、特にこだわりを持っていなかったためXfce4をインストールしたときに付いてくるXfce terminal を利用してきました。 Xfce terminalは軽くて背景透過できたり、タブ機能があり Alt + 数字keyでタブ移動ができたりで機能的には特に不満はありませんでした。

しかし、最近Qiita,Zenn等でWezTermなるターミナルエミュレーターがいいぞ!という記事を多く見まして気になったので試して見ることにしました。 設定ファイルをLuaで書くことができて高機能でカスタマイズ性が高く、なんとあの人気の言語Rustで実装されています!

インストール

私の利用しているディストロはArch Linuxですので普通にpacmanでインストールできます。

$ sudo pacman -S wezterm

はじめインストールしたときはAURの方の末尾がgitのパッケージをインストールしてビルドに時間を要していましたが、Arch Linxのリポジトリからインストールが可能でした。

設定

設定はhomeディレクトリに.wezterm.luaを置きそこに書きこんでいくのですが、設定ファイルをGitで管理したいのでローカルリポジトリ内に.wezterm.luaを置き、homeディレクトリに対してシンボリックリンクを作ることにしました。 これから設定を見ていくことにします。

まずはじめに

まずはLuaからWezTermAPIにアクセスしなければならないので以下を先頭に書き込みます。 設定はLuaのテーブルのconfigに格納していくようにコードを書いていきます。

-- pull in the wezterm API
local wezterm = require 'wezterm'

-- this table will hold the configuration
local config = {}

if wezterm.config_builder then
    config = wezterm.config_builder()
end

最後に設定を格納したテーブルconfigWezTerm側に送るためにファイルの最後の行に

return config

configをreturnしてあげます。

こだわり

Xfce terminalでは先に述べたように背景透過、タブ移動のショートカットkeyを使っていたので今回は、これを設定をしました。

まずテーブルcolorを設定して色の設定をします。

-- custemize color scheme
config.colors = {
  -- Make the selection text color fully transparent.
  -- When fully transparent, the current text color will be used.
  selection_fg = 'none',
  -- Set the selection background color with alpha.
  -- When selection_bg is transparent, it will be alpha blended over
  -- the current cell background color, rather than replace it
  selection_bg = 'rgba(50% 50% 50% 50%)',
}

透過率は、config.window_background_opacityで設定するのでこれを設定します。

-- transparent background
config.window_background_opacity = 0.79

自分の好みは0.79です。

次にタブ移動のショートカットkeyを設定していきます。

公式にタブ移動のkey設定の例があったのでこれを参考にして Alt + 数字keyで移動できるように設定しました。

-- keybinding

config.keys = {}

-- move to n-1 th Tab: ALT + n  
local function move_nth_tab()
    for i = 1, 8, 1 do
        table.insert(config.keys, {
        key = tostring(i),
        mods = 'ALT',
        action = wezterm.action.ActivateTab(i - 1)
        })
    end
end
move_nth_tab()

カスタムkeyを設定するにはまずconfigにテーブルkeyを格納します。 このkeyに各keyの設定を以下の書式のテーブルを格納します。

{
    key = <name of key>,
    mods = <name mod key>,
    action = <action> 
}

最初のフィールドは押すkeyの名前を指定する文字列です。 二番目のフィールドはSuperKey(Windowsで言うところのwindows key)やAlt keyを指定する文字列です。

この二番のフィールドで2つのkeyを組み合わせたい場合(例:Shift + Ctrl)では2つの文字列を'SHIFT|CTRL'のように'|'で区切って書きます。 最後のフィールドは一番目、二番目で指定したkeyが押された時に動作する関数を指定します。

実際に使ってみて

X11でXfce4デスクトップ環境ではデフォルトでは日本語のインライン入力ができませんでしたがFcitxの設定をFcitx: リアルタイム入力(インライン入力)のための設定を参考に行ったところできるようになりました。

一方、Wayland環境であるswayの環境では、設定なしでインライン入力は出来ましたが、変換候補のポップアップは出ませんでした。 あと、WezTermからneovimで開いてコードを編集しているときにCtrl + '+'でコードのインデントを整理しようとすると画面が拡大してしまう問題も解決できていません。

このことから、すぐにWezTermには移行せず、まだ両方とも使うということになりそうです。

ブログを始めました

はじめまして

a44kiと申します。大学院で分子分光学の研究を行っているD2です。

このたび色々とアウトプットをしようとおもいブログをはじめました。

分子に関することや、ソフトウェア関係(Linux, プログラミング、データ解析)に関する記事を書いていこうと思っています。

よろしくお願いします。