MiniBook XにArch Linux + Hyprlandを導入:テントモード対策とサイバーパンク風すりガラスUIの構築

    2026-10-04 Category: Linux #ArchLinux #Hyprland #UMPC #MiniBookX #Wayland #dotfiles #AI作成

    Chuwi MiniBook X に Arch Linux と Wayland タイリングウィンドウマネージャー「Hyprland」を導入し、モバイルワークステーションとしてのセットアップを行いました。

    本記事では、構築過程で直面した**「kitty起動時のタイリング崩れ」や「テントモード時のキーボード無効化」の解決策、そしてデスクトップ全体をサイバーパンク調の半透明・ブラー(すりガラス)デザイン**へ統一した設定手順をまとめます。


    1. kitty が起動時に全画面化してしまう問題の解消

    発生した現象

    ブラウザやファイルマネージャーなどのGUIアプリは正常に分割配置されるにもかかわらず、ターミナルエミュレータである kitty だけが起動時に画面全体を覆ってしまい、自動タイリングが正常に機能しませんでした。一度フロート化してタイリングに戻すと直ることから、ウィンドウサイズの初期要求値が原因と判明しました。

    解決策

    kitty 側のウィンドウサイズ記憶を無効化し、Hyprland に渡す初期サイズを明示的に指定します。

    ~/.config/kitty/kitty.conf に以下を追記します:

    # 前回の巨大なウィンドウサイズ記憶を無効化
    remember_window_size  no
    initial_window_width  80c
    initial_window_height 24c

    あわせて ~/.config/hypr/hyprland.conf に強制タイリングルールを付与して保険をかけます:

    windowrulev2 = tile, class:^(kitty)$

    これで初回起動時から狙い通りに分割された状態で立ち上がるようになります。


    2. 360度ヒンジ(テント/タブレットモード)時のキーボード無効化

    MiniBook X は画面を360度回転させてテントモードやタブレットモードで運用できますが、Linux環境ではヒンジ角センサーがACPI/ドライバ層で直接拾えないケースがあります(evtest で確認したところ、一般的なフタ開閉 SW_LID のみ検知)。

    背面になったキーボードやタッチパッドの誤入力を防ぐため、Waybar のアイコンを画面タッチしてワンタップで入力をトグルできる仕組みを構築しました。

    ① 入力デバイス名の特定

    hyprctl devices で制御対象の内蔵デバイス名を確認します。

    hyprctl devices
    • 内蔵キーボード: at-translated-set-2-keyboard
    • 内蔵タッチパッド: amr12174:00-0911:5288, amr12174:00-0911:5288-1
    • 画面タッチパネル: nym-869b-e112(※無効化対象外にしてタッチ操作を維持)

    ② 切り替えスクリプトの作成

    ~/.config/hypr/scripts/waybar-tablet-mode.sh を作成します。

    #!/usr/bin/env bash
    
    STATE_FILE="/tmp/hypr_tablet_mode"
    KEYBOARD="at-translated-set-2-keyboard"
    TOUCHPAD1="amr12174:00-0911:5288"
    TOUCHPAD2="amr12174:00-0911:5288-1"
    
    # 引数に toggle が渡されたら入力を切り替え
    if [ "$1" = "toggle" ]; then
        if [ -f "$STATE_FILE" ]; then
            # ノートPCモードへ復帰
            rm -f "$STATE_FILE"
            hyprctl keyword "device[${KEYBOARD}]:enabled" true
            hyprctl keyword "device[${TOUCHPAD1}]:enabled" true
            hyprctl keyword "device[${TOUCHPAD2}]:enabled" true
        else
            # タブレット/テントモードへ(背面キーボードとトラックパッドを無効化)
            touch "$STATE_FILE"
            hyprctl keyword "device[${KEYBOARD}]:enabled" false
            hyprctl keyword "device[${TOUCHPAD1}]:enabled" false
            hyprctl keyword "device[${TOUCHPAD2}]:enabled" false
        fi
        # Waybar に再描画シグナルを送信
        pkill -RTMIN+8 waybar
        exit 0
    fi
    
    # 引数なし(Waybarの状態取得時)
    if [ -f "$STATE_FILE" ]; then
        echo '{"text": "📱", "tooltip": "タブレットモード(入力無効)\nタップで有効化", "class": "tablet"}'
    else
        echo '{"text": "💻", "tooltip": "ノートPCモード(入力有効)\nタップで無効化", "class": "laptop"}'
    fi

    実行権限を付与します:

    chmod +x ~/.config/hypr/scripts/waybar-tablet-mode.sh

    ③ Waybar への登録

    ~/.config/waybar/config.jsonc(または config)にカスタムモジュールを追加します。

    "modules-right": [
        "custom/tablet",
        "pulseaudio",
        "battery",
        "clock",
        "tray"
    ],
    
    "custom/tablet": {
        "format": "{}",
        "return-type": "json",
        "exec": "~/.config/hypr/scripts/waybar-tablet-mode.sh",
        "on-click": "~/.config/hypr/scripts/waybar-tablet-mode.sh toggle",
        "signal": 8,
        "interval": "once"
    }

    これで、キーボードが無効化された状態でも、画面上の「📱」アイコンを指でタップするだけで即座に入力を復帰できます。


    3. サイバーパンク調すりガラス(Blur / Transparency)UIの構築

    Catppuccin調のダークカラーをベースに、ネオンシアンとマゼンタのアクセントが映えるすりガラスUIを構築しました。

    ① Hyprland のブラーと角丸設定

    ~/.config/hypr/hyprland.conf:

    general {
        gaps_in = 6
        gaps_out = 12
        border_size = 2
        col.active_border = rgba(33ccffee) rgba(ff00ffee) 45deg
        col.inactive_border = rgba(595959aa)
        layout = dwindle
    }
    
    decoration {
        rounding = 10
        active_opacity = 0.92
        inactive_opacity = 0.78
    
        blur {
            enabled = true
            size = 6
            passes = 3
            new_optimizations = true
            ignore_opacity = true
            xray = false
        }
    
        shadow {
            enabled = true
            range = 15
            render_power = 3
            color = rgba(00000066)
        }
    }
    
    # Waybar 自体にもすりガラスブラーを効かせる
    layerrule = blur, waybar
    layerrule = ignorezero, waybar

    ② kitty の半透明設定

    ~/.config/kitty/kitty.conf:

    background_opacity 0.80
    window_padding_width 12
    background #11111b
    foreground #cdd6f4

    ③ Waybar の半透明カプセルデザイン

    ~/.config/waybar/style.css:

    * {
        font-family: "JetBrainsMono Nerd Font", "Noto Sans CJK JP", sans-serif;
        font-size: 13px;
        font-weight: bold;
    }
    
    window#waybar {
        background-color: rgba(17, 17, 27, 0.65);
        border-bottom: 2px solid rgba(51, 204, 255, 0.3);
        color: #cdd6f4;
    }
    
    #workspaces,
    #clock,
    #battery,
    #pulseaudio,
    #custom-tablet {
        background-color: rgba(30, 30, 46, 0.7);
        padding: 2px 10px;
        margin: 4px 3px;
        border-radius: 8px;
        border: 1px solid rgba(255, 255, 255, 0.1);
    }
    
    #workspaces button.active {
        background-color: #33ccff;
        color: #11111b;
    }
    
    #custom-tablet.tablet {
        background-color: #f38ba8;
        color: #11111b;
    }

    4. hyprpaper による壁紙設定

    Hyprland公式の軽量壁紙デーモン hyprpaper を導入します。

    sudo pacman -S hyprpaper

    設定ファイル作成

    ~/.config/hypr/hyprpaper.conf:

    preload = /home/holscoma/Pictures/wallpapers/cyberpunk_bg.jpg
    wallpaper = ,/home/holscoma/Pictures/wallpapers/cyberpunk_bg.jpg
    splash = false

    自動起動の追加

    ~/.config/hypr/hyprland.conf:

    exec-once = hyprpaper

    Tips: error: invalid hyprpaper request が出る場合
    hyprctl hyprpaper コマンドで壁紙を動的変更しようとして上記エラーが出る場合は、バックグラウンドで hyprpaper デーモンが起動していません。ターミナルで hyprpaper & を実行してプロセスを立ち上げてから hyprctl hyprpaper preload ... を発行してください。


    まとめ

    小型UMPCである MiniBook X に Arch + Hyprland を組み合わせることで、極めて軽量かつ省リソースでありながら、ハードウェア特性(タッチ操作・360度ヒンジ)を活かした実用性の高いモバイル環境が完成しました。