なんか書いていこうぜー .com

Let's write something good

i3-wm と polybar に乗り換えた

2020-01-25
  • Share on Facebook
  • Tweet
  • Add to Pocket

2019年末から2020年年始の休みの間に、awesome-wm から i3-wm + polybar + dunst + picom に乗り換えた。

実際に入ったのは、i3-gaps らしい。

$ sudo pacman -S i3

なぜ乗り換えたの?

awesomeからi3に同僚が乗り換えたというので、年末に試すかーと思っていたが、そのまま乗り換えた。

気に入った点は以下のとおり。

  • ワークスペースが外部ディスプレイにまたがって設定されるのでディスプレイ間の移動が簡単
  • 一部 awesome とショートカットが似ている
  • もともとの設定がよくできているのであまりカスタマイズしなくても使える
  • 設定は設定ファイルに記述 or シェルを呼び出すだけなので設定書くのに覚えることはそんなに多くない

どう設定したの?

だいたいここに書いてある。

https://github.com/muryoimpl/dotconfig

設定 したことをかいつまんで

外部ディスプレイに接続されたときに、決まったワークスペースを割り当てるようにした

workspace 1 output eDP1
workspace 2 output HDMI2 HDMI1 eDP1
workspace 3 output HDMI2 HDMI1 eDP1
workspace 4 output DP2 HDMI1 eDP1

左から順に同名のディスプレイあれば設定されて、そうでなければ次、なければ eDP1 (ノートPC本体のディスプレイ) にすべて設定される。

ノートPC本体、ワイドディスプレイ、縦ディスプレイの順で配置しているので、左から 1, 2 & 3, 4 のワークスペースが設定されるようになっている。

scrot で screenshot 撮れるようにした

awesome で設定していたものとだいたい同じものを設定した。Win + PrtScr で全画面、Win + Shift + PrtScr で選択範囲を撮るようになっている。

bindsym $mod+Print exec --no-startup-id "scrot -e 'mv $f ~/screenshots/ 2>/dev/null'"
bindsym $mod+Shift+Print exec --no-startup-id "sleep 0.5 && scrot -s '%Y-%m-%d_%H%M%S_scrot.png' -e 'mv $f ~/screenshots/ 2>/dev/null'"

コンポジットマネージャと壁紙とPolybar

## コンポジットマネージャ(ちらつき防止のため導入)
exec_always --no-startup-id picom -b -d :0
## 壁紙 (ディスプレイごとにかえたかったので nitrogen 導入)
exec_always --no-startup-id nitrogen --restore
## polybar (i3-status でもよかったが、ディスプレイごとに表示をかえたかった)
exec_always --no-startup-id $HOME/.config/polybar/launch.sh

Polybar の設定

i3-style で生成した色を使っている。

Polybar には接続しているディスプレイごとに表示するものを簡単にではあるが変えている。 ここ にあるように、縦ディスプレイに表示項目が多いと時刻が見えないのでかえている。

FontAwesome によるアイコンフォントの設定はフォント名の設定がちょっと変わっていたのでハマった。その他のアプリで表示されるフォント名と異なっているのはなぜ?

困っていることは?

外部ティスプレイを接続して arandr で設定したときに Polybar をリロードしないと Nitrogen の壁紙と bar の表示が乱れることがあるところが解決していないが、ショートカットでリロードできるのでなんとかなっている。

T495 に Arch Linux をインストールした

2020-01-25
  • Share on Facebook
  • Tweet
  • Add to Pocket

Ryzen CPU 搭載の PC に Arch Linux をインストールしたので、記録しておく。尚、最小手とは限らない。 基本的には https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89 を参考にしつつ、過去の経験と AMD 用の設定と ThinkPad T495 向けの設定と思われるものを追加している。

起動する USB メモリを作成する

archlinux-2020.01.01-x86_64.iso をあらかじめダウンロードしておき、dd コマンドで作成する。 ここでは USB メモリが /dev/sdb にマウントされている。

$ sudo dd bs=4M if=archlinux-2020.01.01-x86_64.iso of=/dev/sdb && sync

USB メモリを起動してインストール

eivars を確認
# ls /sys/firmware/efi/efivars

ディスクの一覧を表示
# fdisk -l

パーティション作成
# gdisk /dev/nvme0n1
Command (? for help): o
Command (? for help): n
Permission number: 何も押さずエンター
First sector     : 何も押さずエンター
Last sector      : +512M
Hex code or GUID : EF00

https://server.etutsplus.com/allocate-swap-space/ ハイバネートが1.5 になってたから 24 * 1.5 = 36
Command (? for help): n
Permission number: 何も押さずエンター
First sector     : 何も押さずエンター
Last sector      : +36G
Hex code or GUID : 8200

Command (? for help): n
Permission number: 何も押さずエンター
First sector     : 何も押さずエンター
Last sector      : 何も押さずエンター
Hex code or GUID : 8300

Command (? for help): w
Do you want to proceed? (Y/N) Y
The operation has completed successfully.

パーティションにファイルシステム作成
# mkfs.fat -F32 /dev/nvme01p1
# mkswap /dev/nvme01p2
# swapon /dev/nvme01p2
# mkfs.ext4 /dev/nvme01p3

パーティションのマウント
# mount /dev/nvme01p3 /mnt
# mkdir /mnt/boot
# mount /dev/nvme01p1 /mnt/boot

システムクロックの更新
# timedatectl set-ntp true

paclist の編集 Japan なものをすべて上にもってきた
# vim  /etc/pacman.d/mirrorlist

ベースシステムの導入
# pacstrap /mnt base base-devel git linux linux-firmware vim

fstab の生成
# genfstab -U /mnt >> /mnt/etc/fstab

# arch-chroot /mnt

# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc

en_US.UTF-8 UTF-8 と ja_JP.UTF-8 UTF-8 を uncomment
# vi /etc/locale.gen
# locale-gen

※ この段階で ja_JP を入れると文字化けする
# echo LANG=en_US.UTF-8 > /etc/locale.conf

# echo ホスト名 > /etc/hostname
# vim /etc/hosts
127.0.0.1  localhost
::1    localhost
127.0.1.1  ホスト名.localdomain  ホスト名

netctl, wifi-menu 使えるようにしておく
# pacman -S iputils dialog wpa_supplicant iw
# pacman -S netctl dhcpcd

# mkinitcpio -P

root のパスワード設定
# passwd

microcode の更新用
# pacman -S amd-ucode

grub をインストールする
# pacman -S grub efibootmgr
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
# grub-mkconfig -o /boot/grub/grub.cfg
# vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT に acpi_backlight=native を追加
⇡ https://wiki.archlinux.jp/index.php/Lenovo_ThinkPad_T495 を参照

# grub-mkconfig -o /boot/grub/grub.cfg

ユーザ作成
# pacman -S zsh
# useradd -m -G wheel -s /usr/bin/zsh ユーザ名
# usermod -aG users ユーザ名 # users グループに追加
# passwd ユーザ名

# pacman -S sudo
# EDITOR=vim visudo
 %wheel      ALL=(ALL) ALL
# chown -c root:root /etc/sudoers
# chmod -c 0440 /etc/sudoers

Ryzen 最適化 kernel の導入 と その他
# pacman -S linux-zen
# pacman -S linux-zen-headers
# pacman -S mesa
# pacman -S xf86-video-amdgpu
# pacman -S lm_sensors
# vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT に↓を追加する
amdgpu.si_support=1 radeon.si_support=0 acpi_backlight=native

# grub-mkconfig -o /boot/grub/grub.cfg

フォントをインストール
# pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra

ノートPC の蓋締めたときのアクションを設定する
# mkdir /etc/systemd/logind.conf.d/
# cp /etc/systemd/logind.conf /etc/systemd/login.conf.d/
# vim  /etc/systemd/login.conf.d/logind.conf
HandleLidSwitch=hybrid-sleep

swapへのSSDの書き込み回数を減らす
# echo 10 > /proc/sys/vm/swappiness

TLP alsa 等
# pacman -S libxss alsa-utils tlp dkms

arch-chroot を抜けて再起動し、終了したら USB メモリを抜く
# exit
# reboot

一旦ログアウトしてユーザとしてログインして追加作業する

arch-chroot 状態だと systemctl が使えないため、一旦ログアウトしてインストールされたシステムにログインして作業を続ける。

wifi-menu を使えるように dhcpcd を有効化
$ sudo systemctl enable dhcpcd
$ sudo ip link set wlp1s0 up
$ sudo wifi-menu

$ sudo pacman -S openssh
$ sudo vim /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no

$ sudo systemctl enable sshd.service
$ sudo systemctl start sshd.service

時刻合わせ
$ sudo pacman -S ntp
$ sudo systemctl enable ntpd
$ sudo systemctl restart ntpd

lightdm をインストールする
$ sudo pacman -S lightdm
$ sudo pacman -S lightdm-gtk-greeter
$ sudo vim /etc/lightdm/lightdm.conf
 [Seat:*]
 …
 greeter-session=lightdm-gtk-greeter
$ sudo systemctl enable lightdm.service

X の設定
$ sudo pacman -S xorg-server
https://wiki.archlinux.jp/index.php/AMDGPU#Xorg_.E3.81.AE.E8.A8.AD.E5.AE.9A で
$ sudo vim /etc/X11/xorg.conf.d/20-amdgpu.conf
Section "Device"
  Identifier  "AMD"
  Driver    "amdgpu"
  Option    "DRI"  "3"
EndSection

fcitx の設定
$ sudo pacman -S fcitx-mozc
$ sudo pacman -S fcitx-gtk2 fcitx-gtk3 fcitx-configtool
$ vim ~/.xprofile
 export GTK_IM_MODULE=fcitx
 export QT_IM_MODULE=fcitx
 export XMODIFIERS="@im=fcitx"
 export DefaultIMModule=fcitx
 fcitx &
$ fcitx-configtool
MOZC を追加する

synaptics でトラックパッドの設定をする
$ sudo pacman -S synaptics
$ sudo vim /etc/X11/xorg.conf.d/70-synaptics.conf
Section "InputClass"
  Identifier  "touchpad"
  Driver    "synaptics"
  MatchIsTouchpad  "on"

  Option  "VertTwoFingerScroll"  "on"
  Option  "HorizTwoFingerScroll"  "on"
  Option  "EmulateTwoFingerMinZ"  "40"
  Option  "EmulateTwoFingerMinW"  "8"
  Option  "CoastingSpeed"    "0"
  Option  "FingerLow"    "30"
  Option  "FingerHigh"    "50"
  Option  "MaxTapTime"    "125"

  Option  "VertScrollDelta"  "-111"
  Option  "HorizScrollDelta"  "-111"

  Option  "SoftButtonArea"  "70% 0 50% 0 0 0 0 0"

  # disable trackpad while typing
  Option  "PalmDetect"    "1"
  Option  "PalmMinWidth"    "10"
  Option  "PalmMinZ"    "200"
EndSection

yay の導入
$ mkdir tmp
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si

あとは好みのアプリを導入すれば動くはず。

追記(2020-01-30):

/etc/mkinitcpio.conf の MODULES に amdgpu を追加すると、XF86Audio のボリュームまわりが認識されるようになった模様。音はなっていたが、音量を調整するアプリがずっとミュートを示していたが、値の調整ができるようになった。

$ sudo vim /etc/mkinitcpio.conf
MODULES=(amdgpu)
$ sudo mkinitcpio -P
$ sudo reboot

追記(2020-02-03):

たまに USB 接続のキーボードが効かなくなったので、 ThinkPad T495 の TLP のページにある /etc/default/tlp への設定を追記した。

感想

以前と違って、wpa_supplicant と dialog さえインストールしておけば wifi-menu が動く、とはなっていなかったので、無線LANにつながるまで何度もUSB メモリさして mount して arch-chroot /mnt してを繰り返すことになった。

知識と経験はアップデートしなければ役に立たなくなることもある。

2019年ふりかえり

2019-12-31
  • Share on Facebook
  • Tweet
  • Add to Pocket

2019年にやったこと (順番は適当)

2019年感想

いろいろやったけど、2018年までにやった積み上げ(知見)で2019年は過ごしてた気がする。2020年はなにか自分にとって新しいことしないとな、という気持ちになっている。

生活に季節感が少ないので、季節感のあるイベントは県外に出てでも経験したほうがいいな、と思った。外に出ないと。

2020年にやるつもり

  • (2020年はなんかやることが増えそうな予感がしている)
  • テスティングフレームワーク勉強するつもり
  • 引き続き北陸の地域コミュニティに参加していこう

Timeshift を使うときに気をつけたいこと

2019-11-28
  • Share on Facebook
  • Tweet
  • Add to Pocket

バックアップツールとして、Timeshift を使っているのだが、OS をクリーンインストールしてから自動バックアップが取られていないな?と思っていたので、調べて対応した。

原因

まさにこの、Timeshift not making scheduled snapshots #396 にあったコメント のとおりで、systemctl enable cronie していなかったためであった。crontab -l って打ったときに空であるが結果が返ってくるので、定期実行する側も有効になっているものだと思いこんでいた。

cron 実装がインストールされていても有効になっていない場合は起動しない(当たり前)。見事にこのパターンに当てはまっていた。cronie がインストールされていたので、下記コマンドを打ってしばらく待ったところ自動バックアップが起動しはじめた。

$ systemctl enable cronie
$ systemctl start cronie

ちなみに、Arch Linux はデフォルトで cron が入っていない。

参照: https://wiki.archlinux.jp/index.php/Cron

cronie を敢えてインストールした記憶がないけど、入っていたので使った。動いた。よかった。

結論

Timeshift でバックアップの自動実行を動作させたい場合は、cron 実装をsystemctl で有効にしよう。crontab -l が正常終了するからといって、定期実行が動くとは限らない。

富山Ruby会議01でLTをしてきた

2019-11-03
  • Share on Facebook
  • Tweet
  • Add to Pocket

ライトニングトーク

富山 Ruby 会議 01 に参加して、LT してきた。トップバッターだった。

発表については、ありがたくも厳しいフィードバックを直後に複数いただいたので次回の LT に反映するとして、スライドはこちら。

今、試行錯誤しながらやっていることを発表したのだけれども、質問をもらったのでそのときの回答を以下に書いておく。

モブプロ、時間かからない?

ゼロからやろうとすると時間がかかるので、重めの調査が絡むやつは先に調査だけは先やっておくようにしている。※こちらも探り探り

全員が調査しはじめて黙っちゃって手が動かなくなったり、要件に絡む部分ではっきりした正解をもってる人がいない場合は結論でなくて先に進めなくなったりするから、調査もしくは下ごしらえの PR くらいは出してもらうようにし、そこから皆で問題に立ち向かうようにしている。

レビューたまりがちにならない?

マージ時に要求する Approve の数が多いこともあってちょっと溜まりがちになることもある。今、モブプロをやっている時間にレビュー時間を設けてその場でレビュー & マージしていこうか、というのを試そうとしているところ。

起こっているプロジェクト運営に関する問題は、スプリントごとになんかしらの施策を打っては試し打っては試しやっている最中のため、うまくいくかどうかはわからないが今絶賛試行中。

感想

地元富山の参加者が多く、また、北陸、中部、その他いろんな地域からの発表者、参加者がいて、内容も硬軟あわせたたのしい地域 Ruby 会議だった。

発表・LT にもツールとして Ruby を使う話がいくつかあり、私も Ruby 使ってみたいと思ったときに同じようにツールから入ったのを思い出した。地域限定せず、Ruby が使えるお仕事が増えるといいな。