始めまして、Pop_OS!
Tag: Linux, VRChat
1. install
Rufus等でインストールメディアを作る
Nvidia GPUが乗っているので、with Nvidiaを選択
https://system76.com/pop/download/?srsltid=AfmBOor_bMXD8pNxHplnUQtkrCh3tLD9oS2ceUX8oABLSYwVOGcHu1L3
fTPMを無効にして、usbドライブから起動
GUIに沿ってインストール
詳しい流れは以下金子研の資料が参考になる
https://www.kkaneko.jp/tools/linux/popos.html
2. setup
2.1. update
sudo apt update
sudo apt full-upgrade
sudo apt autoremove
sudo apt autoclean
2.2. install Nvidia driver
sudo apt install system76-driver-nvidia
再インストールしたい場合は、上記を削除して以下実行
sudo apt purge nvidia*
2.3. install applications
cosmic store
GUIストア、Pop!\_shopの代わり
sudo apt install cosmic-store
Tilix
分割ターミナル、悪くない
sudo apt install tilix
VSCode
コード類書くなら僕はこれ
sudo apt install code
meld
差分をGUIで見れる、diffにわかなので助かっている
sudo apt install meld
gitKraken
ブランチが見やすくてお気に入り
sudo apt install ./gitkraken-amd64.deb
https://www.gitkraken.com/
gimp, krita
お絵描きソフト、kritaばっか使ってる
sudo apt install gimp krita
audacity, reaper
人をおもちゃにする為のツール
sudo apt install audacity
./install-reaper.sh
https://www.reaper.fm/download.php
flameshot
スクショアプリ、撮った直後にそのまま書き込めたり、隠せたりして便利
sudo apt install flameshot
simple screen recoder
軽量録画アプリ、入力ソースが少ないならこれで良い
sudo apt install simplescreenrecorder
vlc, rhiyhmbox
音楽流す用、なんでもいい
sudo apt install rhythmbox vlc
font-manager
フォントを追加する用、無くてもいいけど楽
sudo apt install font-manager
OpenRGB
光り物制御用、XPGのメモリは対応しててラッキー
sudo apt install ./openrgb_XXX_amd64_XXX_XXX.deb
https://openrgb.org/releases.html
python
小物作ったり、NextCord動かしたり用
sudo apt install python3 python3-pip
uv, pixi, pyenv
真面目にやるときはuv/pixi
面倒くさくてHome Directoryに設定してるのはpyenv
# uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# pixi
curl -fsSL https://pixi.sh/install.sh | sh
# pyenv
sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
cd ~/.pyenv && src/configure && make -C src
rust
便利なツール使う用
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
java
slimeVRの依存関係として
sudo apt install openjdk-17-jre openjdk-17-jdk -y
Typescript
サイトを作る用
sudo apt install typescript
nvm
node.jsの管理用。便利
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
latex
卒論用に使った
sudo apt install -y texlive-lang-japanese texlive-latex-extra texlive-luatex evince texlive-science
libreOffice
同上
sudo apt -y install libreoffice libreoffice-l10n-ja libreoffice-help-ja
AppImageを取得するもの
Obsidian
メモ用、階層構造のおかげでメモを無くしにくい
https://obsidian.md/
ALCOM
最強のvcc環境
http://vrc-get.anatawa12.com/ja/alcom/
VRCX
闇魔術への対抗作
https://github.com/vrcx-team/VRCX
他Cosmic_Store経由でインストールするもの
日用
- Chrome, Vivaldi等
- gThumb
- DropBox
- GParted
- OBS Stadio
ゲーム
- steam (非Flatpak版)
- WiVRn
- SlimeVR
- Atlauncher
- Azahar
ターミナル用
sudo apt install btop clamtk duf fastfetch fd-find ffmpeg ripgrep mangohud neovim p7zip-full tldr xrdp xsel
cargo install jnv
cargo add dust
eza
gpgキーを追加してからinstall
sudo mkdir -p /etc/apt/keyrings
wget -qO- https://raw.githubusercontent.com/eza-community/eza/main/deb.asc | sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | sudo tee /etc/apt/sources.list.d/gierens.list
sudo chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
sudo apt update
sudo apt install -y eza
helix
初心者用nvim的なエディタ、密かなお気に入り
sudo add-apt-repository ppa:maveonair/helix-editor
sudo apt update
sudo apt install helix
scrcpy
Androidミラーリング用
sudo apt install android-tools-adb android-tools-fastboot -y
# for Debian/Ubuntu
sudo apt install ffmpeg libsdl2-2.0-0 adb wget \
gcc git pkg-config meson ninja-build libsdl2-dev \
libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev \
libswresample-dev libusb-1.0-0 libusb-1.0-0-dev
git clone https://github.com/Genymobile/scrcpy
cd scrcpy
./install_release.sh
https://github.com/Genymobile/scrcpy?tab=readme-ov-file
yt-dlp
Youtube等からの動画取得用
curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o ~/.local/bin/yt-dlp chmod a+rx ~/.local/bin/yt-dlp
https://github.com/yt-dlp/yt-dlp/wiki/Installation
Unity
改変のためのもの
wget -qO - https://hub.unity3d.com/linux/keys/public | gpg --dearmor | sudo tee /usr/share/keyrings/Unity_Technologies_ApS.gpg > /dev/null
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/Unity_Technologies_ApS.gpg] https://hub.unity3d.com/linux/repos/deb stable main" > /etc/apt/sources.list.d/unityhub.list'
sudo apt update
sudo apt-get install unityhub
osu!
たまにやる音ゲー
git clone https://github.com/NelloKudo/osu-winello.git cd osu-winello chmod +x ./osu-winello.sh ./osu-winello.sh
2.4. keyboard settings
日/英 切り替え方法の追加
1. 入力ソースに日本語(Mozc)を追加、その他は削除
2. キーボードのショートカットにctrl+spaceを空に
IME有効/無効にそれぞれctrl+spaceを割り当てる
便利なショートカットの割当変更
1. ワークスペース表示 : Super+D→Super+W
2. 全アプリの表示 : Super+A
3. コマンド実行 : ALT+F2→Super+R
4. 通知の表示 : Super+V→Super+N
5. ワークスペースnにフォーカス(n=1~4) : Disabled→Super+n
6. ワークスペースnに移動する(n=1~4) : Disabled→Super+Shift+n
7. ホームフォルダー : Super+F
8. 設定を起動 : Disabled→Super+S
9. マイクのミュート : Disabled→Super+M
10. スピーカのミュート : Disabled→Super+Shift+M
独自のショートカットの追加
1. Tilix(設定から"新しいインスタンスの開始時"を"Focus Window"に)
コマンド : /usr/bin/tilix
割り当て : Super+T
2. Discord
コマンド : /usr/bin/discord
割り当て : Super+D
3. flameshot
コマンド : /usr/bin/flameshot gui
割り当て : PrintScreen
2.5. font settings
font mangerでNoto sans CJK JP Regular
Tilixの設定からMesloLGS NF Regular
2.6. change default shell
zshの準備
sudo apt install zsh
chsh -s $(which zsh)
カスタマイズ
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
https://qiita.com/shun198/items/c60ec1cce9c9bf1e8c26
2.7. Python venv setting
pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
pyenv install 3.13.X
cd ~/Documents/
pyenv local 3.13.X
https://qiita.com/Ryo8-k2arl/items/d7220d4f19c76686ef52
2.8. Change audio-in sampling rate
実行内容
sudo hx /usr/share/pipewire/pipewire.conf
systemctl --user restart pipewire
書き換え
default.clock.rate = 96000
default.clock.min-quantum = 24
https://zenn.dev/comtank/articles/d36f9bca4a0a5d
2.9. add SSD
1. GPartedでext4でフォーマット
2. ホームディレクトリにマウント用のフォルダを作成
3. nvmeのディレクトリにssdをマウントするためにPTUUIDを調べる
sudo blkid /dev/nvme1n1p1
/dev/nvme1n1p1: UUID="e885315b-50e6-4063-a396-01b27e5e83d8" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="...(略)"
4. /etc/fstabにUUID含めて追記(2枚目のssdだから後ろに2が付いてる)
UUID=e885315b-50e6-4063-a396-01b27e5e83d8 /home/camellian/nvme1 ext4 discard,defaults 0 2
以上で認識
利便性の為、所有権を付与するべき
sudo chown camellian:camellian ./nvme1
https://ichiri.biz/tech/linux%E3%80%80%E8%BF%BD%E5%8A%A0ssd%E3%80%80%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95-%E7%B0%A1%E5%8D%98/
2.10. make App icon
/usr/share/applications/にデスクトップエントリを作るとアイコンが作れる
flameshot (編集)
# /usr/share/applications/org.flameshot.Flameshot.desktop
# 40行目
Exec=/usr/bin/flameshot gui
# 46行目
StartupWMClass=/usr/bin/flameshot gui
ALCOM (新規)
[Desktop Entry]
Name=ALCOM
Exec=/home/camellian/Applications/alcom-1.1.4-x86_64.AppImage
icon=/home/camellian/Applications/alcom.png
Type=Application
Categories=Utility;
3. startup VRC
3.1. install vrc
steamから
1. VRChat
2. Proton EasyAntiCheat Runtime
を取得
3.2. install WiVRn
SteamVRに該当するツール
Cosmic_StoreにもFlatpak版がある
flatpak install flathub io.github.wivrn.wivrn
Space Drag用にWayVRも推奨
https://github.com/wlx-team/wayvr/releases
3.3. get proron driver
VRChat用に、proton-ge (または proton-ge-rtsp) を使う
https://github.com/GloriousEggroll/proton-ge-custom
https://github.com/SpookySkeletons/proton-ge-rtsp
tar -xf GE-Proton*.tar.gz -C ~/.steam/root/compatibilitytools.d/
start WiVRn
1. QuestとLinux、両方でWiVRnを起動してセットアップウィザード実行
無線での連携ががおすすめ
2. Linux側で自動起動するアプリにWayVRを選択
3.5. make symbolic link
steamまでのpathは環境によって変わる
cd ~/Pictures
ln -s ~/.steam/steam/steamapps/compatdata/438100/pfx/drive_c/users/steamuser/Pictures/VRChat
3.6. deprioritize IPv6
以下から編集
sudo hx /etc/gai.conf
以下のコメントを外す
precedence ::ffff:0:0/96 100
ネット関係をリスタートして、pingがIPv4で見えてたらOK
https://4thsight.xyz/695
3.7. setting mangohud
オーバーレイアプリ
スト6はあると動かなかったので、たまに注意が必要かも
以下コンフィグのfps_limitを変更することで、ゲーム側が無制限でも制限可
https://raw.githubusercontent.com/flightlessmango/MangoHud/master/data/MangoHud.conf
https://steamcommunity.com/sharedfiles/filedetails/?id=3011121260
3.8. start FullBody-Tracking
Ubuntu22.04+X11環境用に起動するための設定
ハードウェアアクセラレーションの無効化
flatpak override --user dev.slimevr.SlimeVR \
--env=WEBKIT_DISABLE_COMPOSITING_MODE=1 \
--env=WEBKIT_FORCE_SOFTWARE_RENDERING=1
Nvidia EGL を明記
flatpak override --user dev.slimevr.SlimeVR \
--env=__GLX_VENDOR_LIBRARY_NAME=nvidia \
--env=GBM_BACKEND=nvidia-drm
X11 を明記
flatpak override --user dev.slimevr.SlimeVR \
--socket=x11 \
--share=network \
--device=dri
flatpak run dev.slimevr.SlimeVR
後は
- SlimeVR側でOSC, VRC OSCを有効化
- Quest側のWiVRnからフルトラをON
- 設定から下半身と腰のトラッキングをON
で動作する
3.9. WayVRのカスタマイズ
.xmlを編集すると時計やキーボードなどを編集可能
以下に例を示す
https://github.com/CameIIian/dotfiles
4. startup VRC-Modification
4.1. ALCOM上での設定
ALCOMを起動
- 指示に従い、対応するUnityをインストール
- 起動後はWin環境とおおよそ同様
4.2. 改変する
アップロードの前に、Taget Platformを追加すること
しないと、Win/Android/iOS向けにアップロードできない
https://qiita.com/saku-1192/items/635ddb5f28040d70e968
.alcomtemplateも便利なので活用できると良い
しばらくLinuxで改変しているが、トラブルは
- コンパイルするまでおかしいテクスチャがある
- レンダリングの問題がたまにある
程度。レンダリングは、Unity上でVulkanレンダラを強制すると改善するかも
4.4. Projectのコピー
sshサーバを立て、SFTPでファイルをコピー
systemctl start sshd
Win側はWinSCPを利用
必要事項を埋めて接続、~/ALCOM/Projectへコピー
送信後は、sshをkillすること
https://forest.watch.impress.co.jp/library/software/winscp/
5. trouble shooting
5.1. Bootloader破損
Pop!\_shopに壊された。使うな
- 再起動するとInitramfsの画面に
- exitしてfsckすれば治るとの記述
- 遭遇した際はできなかったのでリカバリディスクから復旧
# /dev/ 以降は環境によって異なるためlsblk等で確認すること
sudo mount /dev/nvme0n1p1 /mnt
sudo chroot /mnt
sudo dpkg --configure -a
exit
sudo shutdown -r now
https://support.system76.com/articles/bootloader/
5.2. Super効かない
上記の問題に対応すべくガチャガチャやっていたら効かなくなった
Spキーの有効/無効の切り替えがSp+F6になってた
5.3. WayVR(旧wlx-overlay-s)のオーバーレイ画面利用でマウスが効かなくなる
最近起きてない
- 症状が軽微なら設定画面のマウスとタッチパッドを開くと治る
- 症状が重い場合は、ctrl+alt+F6等でターミナルに入り再起動する
5.4. "xrizer has crashed!"が出る
たまにクラッシュする時に出たり。
- 基本起動しなおせば良い
- WiVRnのソースが壊れていていることも。その場合はWiVRnをreinstall
5.5. "Build&Test your world"をするとTestが始まらない
ワールド作成におけるMac/Linux環境共通の問題
タスクキルすること
5.6. ~/.local/share/fonts下へのフォント追加後にデフォルトフォントが変更されてしまう
未だよくわからん
該当箇所にインストール後、変わって欲しくないフォントが変わるように
- Documents/myFonts/等フォントフォルダを作る
- 必要なときのみcpして読み込み、使い終わったらrm
5.7. OBSで録画できない
"XSHM"で画面録画すること
https://www.reddit.com/r/Ubuntu/comments/17e65dw/cant_record_screen_with_obs/
Appendix
A. ~/.zshrc
# zsh settings
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="powerlevel10k/powerlevel10k"
zstyle ':omz:update' mode auto
plugins=(git zsh-syntax-highlighting zsh-autosuggestions)
# load oh-my-zsh
source $ZSH/oh-my-zsh.sh
### begin options
HISTSIZE=1000 # ヒストリに保存するコマンド数
SAVEHIST=1000 # ヒストリファイルに保存するコマンド数
setopt hist_ignore_all_dups # 重複するコマンド行は古い方を削除。
setopt hist_ignore_dups # 直前と同じコマンドラインはヒストリに追加しない。
setopt hist_no_store # historyコマンドは履歴に登録しない。
setopt hist_reduce_blanks # 余分な空白は詰めて記録。
setopt correct # タイポした際に聞き直す。
# ctrl Rでヒストリ検索
bindkey ^R history-incremental-search-backward
# aliasの読み込み
[ -z "$PS1" ] && return
source ~/.zsh_aliases
# cargoの読み込み
. "$HOME/.cargo/env"
# pixiの読み込み
export PATH="$HOME/.pixi/bin:$PATH"
# pyenvの設定
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# nvm for node.js
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
### end options
# p10kテーマの適用
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
B. ~/.zsh_aliases
# 実行不可の際に終了する
[ -z "$PS1" ] && return
# dotファイルの編集
alias zshrc='vi ~/.zshrc'
alias zsh_aliases='vi ~/.zsh_aliases'
# 確認の追加
alias rm='rm -i'
alias mv='mv -i'
alias cp='cp -i'
### 元コマンドのアルファベット順
# btop - top代替
alias top='btop'
alias c='clear'
alias d='docker'
# duf - df代替
alias df='duf'
# eza - ls代替
alias l=' eza -F --icons --group-directories-first'
alias ls='eza -F --icons --group-directories-first'
alias sl='eza -F --icons --group-directories-first'
alias ll='eza -alhF --icons --group-directories-first'
alias lr='eza -alhF -R -L 2 --icons --group-directories-first --absolute on'
alias ld='eza -alhD --icons --group-directories-first'
alias lf='eza -alhfF --icons --group-directories-first'
alias t='tree'
alias tree='eza -alhF -T -L 2 --icons'
# fd-find - find代替
alias find='fdfind'
alias fd='fdfind'
# jn - インタラクティブなjq
alias jn='jnv'
alias m='mkdir'
alias ln='ln -srnf'
# nvtop - nVidia用gpu版top
alias ntop='nvtop'
# npm
alias n='npm'
alias nb='npm run build'
alias ns='npm start'
# nvim
alias v='nvim'
alias vi='nvim'
alias vim='nvim'
alias nano='nvim'
alias e='nvim'
alias ed='nvim'
alias edit='nvim'
alias o='open'
alias p='python'
alias pp='pip'
# ripgrep - grep代替
alias grep='rg -p'
alias g='grep'
alias -g G='| g'
alias s='ssh'
# tldr - manの短縮版
alias h='tldr'
# xsel - コマンドからコピー
alias clip='xsel --clipboard --input'
alias -g C='| clip'
### 圧縮系
alias zip='zip'
alias unzip='unar'
alias tgz='tar -czvf'
alias txz='tar -cJvf'
alias untar='tar -xvf'
### 画像/映像系
alias yt='~/.local/bin/yt-dlp -N 4 -P ~/Videos'
alias ytw='~/.local/bin/yt-dlp -N 4 -P ~/Music -f bestaudio -x --audio-format mp3 --audio-quality 3'
alias fs='flameshot gui'
alias ff='ffmpeg -i'
ff2mov(){ ffmpeg -i $1 -c:v dnxhd -profile:v dnxhr_sq -pix_fmt yuv420p -c:a pcm_s16le $2 }
# VRC
alias vrc='~/.shells/.vrc.sh'
alias vrcf='~/.shells/.vrcf.sh'
alias alcom='~/Applications/alcom-1.1.4-x86_64.AppImage'
alias wayvr='~/Applications/WayVR-v26.1.2-x86_64.AppImage'
alias slime='flatpak run dev.slimevr.SlimeVR'
alias wrangler='~/Applications/slimevr-wrangler'
# shell呼び出し
alias enableVirtualAudio='~/.shells/.enableVirtualAudio.sh'
alias update='~/.shells/.update.sh'
alias sendPort='~/.shells/.sendPort.sh'
### path系
alias -g vrcdir='~/.steam/steam/steamapps/compatdata/438100/pfx/drive_c/users/steamuser/AppData/LocalLow/VRChat/VRChat'
alias -g vscodir='~/Documents/VSCode/'
alias -g obsidir='~/Dropbox/Obsidian/'
# .[1-9] - 親ディレクトリの指定
alias -g '.1'='../'
alias -g '.2'='../..'
alias -g '.3'='../../..'
alias -g '.4'='../../../..'
alias -g '.5'='../../../../..'
alias -g '.6'='../../../../../..'
alias -g '.7'='../../../../../../..'
alias -g '.8'='../../../../../../../..'
alias -g '.9'='../../../../../../../../..'
### suffix alias
# ./foo.py のように実行した際に使用するツールを指定
alias -s py='python'
C. ~/.shells/
update.sh
アプデ用
#! /usr/bin/zsh
sudo apt update
sudo apt full-upgrade
sudo apt autoremove
sudo apt autoclean
sendPort.sh
マイクラ等用
#! /usr/bin/zsh
port="19132"
protocol="udp"
# select server
echo "開放するサーバを選択"
echo "1) 19132 BE (default)"
echo "2) 25565 Java"
echo "3) 24872 Azahar"
read "choice?(1-3) >>> "
case $choice in
2)
port="25565"
protocol="tcp"
;;
3)
port="24872"
;;
*)
;;
esac
ownserver --endpoint "${port}"/"${protocol}"
vrc.sh
3点
#!/usr/bin/zsh
~/Applications/VRCX.AppImage&
sleep 5
flatpak run io.github.wivrn.wivrn&
sleep 5
steam steam://rungameid/438100
vrcf.sh
フルトラ
#!/usr/bin/zsh
flatpak run dev.slimevr.SlimeVR&
~/Applications/slimevr-wrangler&
sleep 5
~/Applications/VRCX.AppImage&
sleep 5
flatpak run io.github.wivrn.wivrn&
sleep 5
steam steam://rungameid/438100&