人生シーケンスブレイク

シーケンスブレイクとは

自作PCのUbuntuでBluetoothが不安定だった問題を解消する

症状

組み立てたばかりの自作PCBluetoothの調子が悪く、キーボード、マウス、トラックボールなどすべてのBluetooth機器との接続が不安定ですぐ切断される。
PCにできる限り近づければかろうじて接続できるものの、少し離しただけでもすぐ切断されてしまい、再接続までストレスを伴う状態。

フルタワーケースの為スペースや安定性のことを考えると、デスク上にPCを置くのも難しく有線では全く問題がないので諦めて有線接続を検討するレベルだった。

環境

Ubuntuだけかと思いきや、Windows環境でも同症状だった。

解決方法

1.マザーボードに同梱されているWi-Fiアンテナを用意します。

f:id:ShineSpark:20200407011513j:plain

こーゆーや

2.Wi-iFiアンテナをPCに接続します。

f:id:ShineSpark:20200407011523j:plain

Wi-Fiは問題なく拾えているからと、アンテナを接続していない人も多いはず。

3.Bluetooth接続を試みます。

f:id:ShineSpark:20200407035034p:plain

安定して接続できるようになっているはず。

どうやらマニュアルにも書いてないのですがWi-Fiアンテナと謳われつつも、Bluetoothアンテナも兼ねているようです。
知らずにBluetoothドライバやマザーボードのドライバのインストールや設定の思考錯誤を頑張ってました。

悩んでいる人は多いと思うのでこれで解消されることを祈っています。

Ubuntu GRUB 2で前回起動したOSで起動するようにする

UbuntuWindowsデュアルブートで利用しはじめたが、Windows Update後放置しているとUbuntuが立ち上がっているのってどうなんだろうってことで前回起動したOSで起動したくなった

GRUBのDEFAULT設定を変更する

$ sudo vi /etc/default/grubGRUBの設定を変更する。

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

のように変更すればOK.

選択可能時間を変更する

ちなみにブートローダのOS選択可能時間を変更するにはここをいじる。

GRUB_TIMEOUT=10

設定を変更したら

忘れずに

$ update-grub すること。

しないと反映されない(自戒)

参考

Ubuntu日本語フォーラム / 10.04のGrub2で/etc/default/grubのGRUB_DEFAULT=savedが機能しない場合の対処

Ubuntuのibus-mozcでひらがなをデフォルトにする

いろいろ調べたがソースコードを修正してビルド&インストールするしかないようだ。

環境

必要なパッケージのインストール

$ sudo apt update
$ sudo apt ugrade -y
$ sudo apt install build-essential devscripts -y

ibus-mozcのソースを取得

$ sudo apt build-dep ibus-mozc
パッケージリストを読み込んでいます... 完了
E: sources.list に 'ソース' URI を指定する必要があります

ソースリストに無いと言われたので、 $ sudo vi /etc/apt/sources.list して eoan maindeb-src のコメントを外す

 deb http://jp.archive.ubuntu.com/ubuntu/ eoan main restricted
- # deb-src http://jp.archive.ubuntu.com/ubuntu/ eoan main restricted
+ # deb-src http://jp.archive.ubuntu.com/ubuntu/ eoan main restricted

apt updateし直すとソースリストが更新され、ソースを取得できるようになる。

$ sudo apt update
$ sudo apt build-dep ibus-mozc
# 正常に取得できるハズ

OK.

ソース改修

Is there a way to set hiragana as default? · Issue #381 · google/mozc · GitHub で言及されている箇所を改修する。

$ cd mozc-2.23.2815.102+dfsg

# 思い思いのエディタで起動するとよい
$ vi $(find . -name property_handler.cc)

変更した差分はこんな感じになる。

 #if IBUS_CHECK_VERSION(1, 5, 0)
- const bool kActivatedOnLaunch = false;
+ const bool kActivatedOnLaunch = true;
 #else
 const bool kActivatedOnLaunch = true;
 #endif  // IBus>=1.5.0

問題なければビルドしてインストールする

# ビルド
$ dpkg-buildpackage -us -us -b

# インストール
$ sudo dpkg -i ../mozc*.deb ../ibus-mozc*.deb

参考

UbuntuにNvidiaのグラフィックドライバをインストールしたら、ログインループでログインできなくなった

環境

Nvidiaのドライバをインストールした

Ubuntu起動中にプチフリするのはNvidiaのドライバをインストールしていないことが原因との記事を読んだので

note.com

を参考にUbuntuNvidiaのグラフィックドライバをインストールした。

# Nvidiaのグラフィックドライバのリポジトリを追加
$ sudo add-apt-repository ppa:graphics-drivers/ppa

$ sudo apt update

# インストール可能なドライバの確認
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:03.1/0000:2d:00.0 ==
modalias : pci:v000010DEd00001F06sv00001462sd0000C752bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-435 - distro non-free
driver   : nvidia-driver-440 - third-party free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

== /sys/devices/pci0000:00/0000:00:01.2/0000:20:00.0/0000:21:06.0/0000:28:00.0 ==
modalias : pci:v00008086d00002723sv00008086sd00000084bc02sc80i00
vendor   : Intel Corporation
driver   : backport-iwlwifi-dkms - distro free

# recommendedなドライバをインストール
$ sudo apt install nvidia-driver-440 

# インストールされたDriver Versionを確認
$ nvidia-smi 
Wed Mar 25 20:48:54 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64       Driver Version: 440.64       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 206...  Off  | 00000000:2D:00.0  On |                  N/A |
|  0%   47C    P8     9W / 175W |    449MiB /  7979MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1257      G   /usr/lib/xorg/Xorg                            24MiB |
|    0      1671      G   /usr/lib/xorg/Xorg                           123MiB |
|    0      1893      G   /usr/bin/gnome-shell                         146MiB |
|    0      2946      G   ...AAAAAAAAAAAAAAgAAAAAAAAA --shared-files    98MiB |
+-----------------------------------------------------------------------------+

ログインできなくなった

グラフィックドライバインストール後、再起動したらUbuntuのログイン画面で起動しなくなった

ログイン画面で Ctrl+Alt+F2 とかでログインするか、Recovery Modeでログインしてドライバをアンインストールしてリブートしない限り、ログインできなくなる。

調査

ググるともっと古いバージョンをいれて対応しているような記事もあるけれど、最新バージョン以外のドライバをインストールすることに抵抗アリ。

解決方法

Ask Ubuntuに最新ドライバでも解決できる方法が書いてあった。

# gdm3を設定ごとアンインストールして
$ sudo apt-get purge gdm3

# gdm3を再インストールする
$ sudo apt-get install gdm3

$ reboot

MSI GeForce RTX 2060 SUPER GAMING X グラフィックスボード VD7018

MSI GeForce RTX 2060 SUPER GAMING X グラフィックスボード VD7018

  • 発売日: 2019/07/09
  • メディア: Personal Computers

参考情報

Ubuntuでもctrl+hでbackspaceにする

macOSでもctrl + hでBackspaceにしている macOSでctrl+hでbackspaceにする - 人生シーケンスブレイク が、UbuntuでもBackspaceにしたくなった。

xkbでの実現方法

現在のxkbmapの設定を確認

$ setxkbmap -print
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)"  };
    xkb_types     { include "complete"   };
    xkb_compat    { include "complete"   };
    xkb_symbols   { include "pc+us(dvorak)+us:2+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)"  };
};

今のxkb設定を書き出す

# 既存の設定をエクスポート
$ xkbcomp $DISPLAY default.xkb

# 変更用にファイルをコピー
$ cp default.xkb ctrlh2backspace.xkb

xkbファイル内の編集

先程コピーしたctrlh2backspace.xkbファイルを編集する。

グループの確認

xkb_symbols "pc+us(dvorak)+us:2+inet(evdev)" {

    name[group1]="English (Dvorak)";
    name[group2]="English (US)";

複数の配列を利用している場合には、groupも複数記述されている。
自分はDvorakユーザーなのでgroup1のみ編集する。

型の追加

既存の ALPHABETIC にctrl時のlevelを追加した型を追加する。

    type "ALPHABETIC" {
        modifiers= Shift+Lock;
        map[Shift]= Level2;
        map[Lock]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Caps";
    };
    type "ALPHABETIC_LEVEL3" {
        modifiers= Shift+Lock+Control;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[Control]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Caps";
        level_name[Level3]= "Control";
    };

LControl とすると、各アプリデフォルトのctrl+h(Chromeでいうとctrl+hで履歴画面表示など)をオーバーライドできないので Control にした方が良かった。

ctrl + h時にBackspaceにする

各キーのlevelごとに、出力するキーを記述している箇所があるのでlevel3としてBackspaceをマッピングする。

    key <AC06> {
        type= "ALPHABETIC",
        symbols[Group1]= [               d,               D ],
        symbols[Group2]= [               h,               H ]
    };
    key <AC07> {
        type= "ALPHABETIC_LEVEL3",
        symbols[Group1]= [               h,               H, BackSpace ],
        symbols[Group2]= [               j,               J ]
    };

デフォルトのxkbとの差分

❯ diff ./default.xkb ctrlh2backspace.xkb
320a321,329
>     type "ALPHABETIC_LEVEL3" {
>         modifiers= Shift+Lock+Control;
>         map[Shift]= Level2;
>         map[Lock]= Level2;
>         map[Control]= Level3;
>         level_name[Level1]= "Base";
>         level_name[Level2]= "Caps";
>         level_name[Level3]= "Control";
>     };
1309,1310c1318,1319
<         type= "ALPHABETIC",
<         symbols[Group1]= [               h,               H ],
---
>         type= "ALPHABETIC_LEVEL3",
>         symbols[Group1]= [               h,               H, BackSpace ],

適用する

$ xkbcomp ctrlh2backspace.xkb $DISPLAY

をすると即時反映される。

参考情報

丁寧に書いてあって非常に助かりました 🙏🏻

新たな悩みごと

ctrl+hをBackspaseとしたことで、Japanese(mozc)で日本語入力中にctrl+hしても後退してくれなくなった。 Backspace した際には従来通り動作してくれるが、上手く認識しない様子。

こちらの解決方法も模索中。。。

macOSでctrl+hでbackspaceにする

Terminal などでは何もせずとも backspace だが、 どのアプリケーションでも ctrl + h で backspace にしたくなった。

Karabiner-Elements の設定

karabiner-elements.pqrs.org

Karabiner-Elements の complex_modifications を追加する

{
    "complex_modifications": {
        "rules": [
            {
                "description": "Change Left_control + h to Delete_or_Backspace",
                "manipulators": [
                    {
                        "from": {
                            "key_code": "h",
                            "modifiers": {
                                "mandatory": [
                                    "left_control"
                                ],
                                "optional": [
                                    "any"
                                ]
                            }
                        },
                        "to": [
                            {
                                "key_code": "delete_or_backspace"
                            }
                        ],
                        "type": "basic"
                    }
                ]
            }
        ]
    }
}

gitで不要になったブランチをまとめて一発で消したい

やりたいこと

開発していると不要なブランチがローカルに溜まってしまうのでまとめて一発で削除したい

コマンド

パイプとxargsを利用してまとめて消せるようにしたコマンド

$ git branch | grep -v "*" | grep -v master | xargs git branch -D

grep-v オプションは除外。
ブランチ一覧から、カレントを示す * と masterブランチを除外し、ブランチを削除する

エイリアス

時々実行することがあるので、 zshrc にエイリアスとして以下を追加した。

alias delete_branches='git branch | grep -v "*" | grep -v master | xargs git branch -D'

利用してみる

~/git/test on  master ❯ delete_branches
Deleted branch feature/1xhe8z (was 39c4a8ce).
Deleted branch feature/29jz8b (was 0afd71da).
Deleted branch fix/29jgvq (was 5872b902).

楽になった。

feature/xxxx みたいなブランチ運用している時には↓のようにしてもいいかもですね。

$ git branch | grep -v "*" | grep feature | xargs git branch -D