logo
linux

構成例

./ ├── rsync-remote.sh └── sync/

rsync-remote.sh の中身:

#!/bin/bash if [ -z $(command -v watchman-wait) ]; then echo "require watchman" exit 1 fi if [ -z $(command -v rsync) ]; then echo "require rsync" exit 1 fi ssh_port=22 argv=() while [ $# -gt 0 ] do case $1 in --init-copy) init_copy=true ;; --ssh-port) ssh_port=$2 shift ;; -*) opterr=true echo "invalid option: $1" ;; *) argv+=("$1") ;; esac shift done if [ $opterr ]; then exit 1 fi if [[ "${#argv[@]}" -lt 1 ]]; then echo "Too few arguments." exit 1 elif [[ "${#argv[@]}" -gt 2 ]]; then echo "Too many arguments." exit 1 fi source_path=${argv[0]} target_path=${argv[1]} if [ ! -d $source_path ]; then echo "not exists directory: $source_path" exit 1 fi if [[ $source_path =~ [^/]$ ]]; then echo "bad path: $source_path" exit 1 fi if [[ $target_path =~ [^/]$ ]]; then echo "bad path: $target_path" exit 1 fi cd $source_path if [ $init_copy ]; then echo -e "copy from $target_path to $source_path" rsync -v -e "ssh -p $ssh_port" -azph --delete $target_path ./ fi echo -e "----------------------------------------------" echo -e "start watch loop(watchman)" echo -e "source:\t$(pwd)/" echo -e "target:\t$target_path" echo -e "----------------------------------------------\n" while : do result=$(watchman-wait ./) rsync -e "ssh -p $ssh_port" -azphv --delete ./ $target_path done

使い方:

# ./sync/foo/ を リモート先の ~/foo/ に同期する bash ./rsync-remote.sh ./sync/foo/ user@remotehost:~/foo/ # ssh のポートを指定する場合 bash ./rsync-remote.sh --port 2222 ./sync/foo/ user@remotehost:~/foo/ # 監視前に1回だけ リモート先の ~/foo/ を ./sync/foo/ に同期する(逆流) bash ./rsync-remote.sh --port 2222 --init-copy ./sync/foo/ user@remotehost:~/foo/

watchman trigger を使えば、whileでループする必要はなさそうだけれど、色々な記事に書かれている通りにやっても想定通り動いてくれなく、いまいち使い方がわからなかったので、素朴にループすることにした。

git clone https://github.com/emcrisostomo/fswatch.git cd fswatch ./configure --prefix=$HOME/.local make make install
git clone --depth=1 https://github.com/Homebrew/brew $HOME/.brew export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH" brew update

AlmaLinuxにビルドしてインストールする

git clone https://github.com/inotify-tools/inotify-tools cd inotify-tools dnf install autoconf automake libtool make ./autogen.sh ./configure --prefix=$HOME/.local make make install

バイナリをダウンロードして $HOME/.local/ にインストールする

# https://cmake.org/download/ curl -OL https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-linux-x86_64.tar.gz tar -zxvf cmake-3.23.0-linux-x86_64.tar.gz mkdir -p $HOME/.local/bin mkdir -p $HOME/.local/man mkdir -p $HOME/.local/share mkdir -p $HOME/.local/doc cd cmake-3.23.0-linux-x86_64 cp -R ./bin/* $HOME/.local/bin/ cp -R ./doc/* $HOME/.local/doc/ cp -R ./man/* $HOME/.local/man/ cp -R ./share/* $HOME/.local/share/

Wifiアダプタの有効化

mkdir ~/ath10k_backup sudo cp /lib/firmware/ath10k/QCA6174/hw3.0/* ~/ath10k_backup mkdir ~/ath10k_work cd ~/ath10k_work wget https://github.com/linux-surface/ath10k-firmware-override/blob/main/board.bin?raw=true -O board.bin wget https://github.com/kvalo/ath10k-firmware/blob/master/QCA6174/hw3.0/board-2.bin -O board-2.bin # https://github.com/kvalo/ath10k-firmware/tree/master/QCA6174/hw3.0/4.4.1 のうち最新版(最終更新日が若い)をダウンロード wget https://github.com/kvalo/ath10k-firmware/tree/master/QCA6174/hw3.0/4.4.1/firmware-6.bin_WLAN.RM.4.4.1-00282-QCARMSWPZ-1 -O firmware-6.bin sudo cp board.bin /lib/firmware/ath10k/QCA6174/hw3.0/ sudo cp board-2.bin /lib/firmware/ath10k/QCA6174/hw3.0/ sudo cp firmware-6.bin /lib/firmware/ath10k/QCA6174/hw3.0/ sudo chmod +x /lib/firmware/ath10k/QCA6174/hw3.0/* cd rm -rf ~/ath10k_work sudo reboot

説明の簡略化のために wget でダウンロードするコマンドを書いているが、 wget するためには有線でインターネットにつながっている必要がある。有線でつなぐことができない環境の場合は、ほかのインターネットにつながっている端末でファイルをダウンロードし、USBメモリなどで移せばOK。

Linux Surface

インストールした端末(Surface GO)でSDカードのスロットが認識しないなどがあったが、Linux Surfaceを入れたら解決した
https://github.com/linux-surface/linux-surface
手順はWikiを参照
https://github.com/linux-surface/linux-surface/wiki/Installation-and-Setup#debian--ubuntu

ブートローダーの変更

https://github.com/linux-surface/linux-surface/wiki/Surface-Go-2#dual-booting-linux-and-windows

CapsLockをCtrlに置き換え

sudo vi /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE # Consult the keyboard(5) manual page. XKBMODEL="pc105" XKBLAYOUT="jp" XKBVARIANT="" -XKBOPTIONS="" +XKBOPTIONS="ctrl:nocaps" BACKSPACE="guess"

MOZ_USE_XINPUT2

echo export MOZ_USE_XINPUT2=1 | sudo tee /etc/profile.d/use-xinput2.sh

libinput-gestures

https://github.com/bulletmark/libinput-gestures

タイピング中のタッチパッドを無効化

sudo apt remove xserver-xorg-input-synaptics sudo apt install xserver-xorg-input-libinput sudo reboot

gnome-tweaks

sudo apt install gnome-tweaks gnome-tweaks
  • Keyboard & Mouse > Mouse Click Emulation > Fingers > [Check]
  • Keyboard & Mouse > Mouse > Middle Click Paste > [OFF]

Terminalの配色を変更

bash -c "$(wget -qO- https://git.io/vQgMr)"

118(Monokai Pro)に設定