Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Bspwmのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Bspwm
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{Lowercase title}} [[Category:タイル型ウィンドウマネージャ]] [[en:Bspwm]] [[es:Bspwm]] [[ru:Bspwm]] {{Related articles start}} {{Related|ウィンドウマネージャ}} {{Related|タイル型ウィンドウマネージャの比較}} {{Related articles end}} ''bspwm'' はウィンドウがフルバイナリツリーの葉となるタイル型ウィンドウマネージャです。[https://standards.freedesktop.org/wm-spec/wm-spec-1.3.html EWMH] やマルチモニターに対応しており、メッセージで設定したり制御することができます。 == インストール == {{Pkg|bspwm}} と {{Pkg|sxhkd}} を[[インストール]]してください。あるいは開発版も存在します: {{AUR|bspwm-git}} と {{AUR|sxhkd-git}} Sxhkd はシンプルな X ホットキーデーモンで、{{ic|bspc}} で bspwm と対話したりアプリケーションを起動したりするのに使います。 {{Note|2020年8月以降リリースはありません。問題が発生した場合、または不足している機能が必要な場合は、Git パッケージをインストールして下さい。}} ==スタート== [[xinit]] を使用して {{ic|bspwm}} を実行します。 ==設定== 設定例は {{ic|/usr/share/doc/bspwm/examples/}} にあります。 そこから {{ic|bspwmrc}} を {{ic|~/.config/bspwm/}} にコピー/インストールし、{{ic|sxhkdrc}} を {{ic|~/.config/sxhkd/}} にコピー/インストールします。 ファイル {{ic|bspwmrc}} に実行可能権限を付与して下さい。これは、デフォルトの例が単純にシェルスクリプトであるためです。 {{ic|bspc}} コマンドを使用して bspwm を設定します。 $ install -Dm755 /usr/share/doc/bspwm/examples/bspwmrc ~/.config/bspwm/bspwmrc $ install -Dm644 /usr/share/doc/bspwm/examples/sxhkdrc ~/.config/sxhkd/sxhkdrc これら2つのファイルは、それぞれ wm 設定とキー割り当てを設定する場所です。 詳細なドキュメントについては、{{man|1|bspwm}} および {{man|1|sxhkd}} のマニュアルを参照してください。 ==== マルチモニターの設定 ==== 1つのモニターに10のデスクトップを設定する bspwmrc の例: bspc monitor -d I II III IV V VI VII VIII IX X 上記の行を修正して、以下のようにモニターごとにデスクトップを追加してください: bspc monitor DVI-I-1 -d I II III IV bspc monitor DVI-I-2 -d V VI VII bspc monitor DP-1 -d VIII IX X `xrandr -q` や `bspc query -M` を使うことでモニターの名前を確認できます。 上記の例では、使用するデスクトップの合計は10なので、sxhkdrc で 'super + {1-9,0}' とそれぞれのデスクトップを指定することができます。 ===ルール=== bspwmは、[[Wikipedia:Inter-Client Communication Conventions Manual|ICCM]] で指定された WM_CLASS プロパティ内の2番目の文字列(クラス名)に基づいてウィンドウにルールを適用できます。クラス名を確認するには、次の方法を使用できます: # {{Pkg|xorg-xprop}} を [[インストール]] # {{ic|xprop {{!}} grep WM_CLASS}} を実行します。 # 対象のウィンドウをクリックして、それを {{ic|xprop}} に指示します。 # コマンドの出力から "2番目" の文字列を記録します。 ウィンドウルールを設定する方法は2つあります ([https://github.com/baskerville/bspwm/commit/cd97a3290aa8d36346deb706fa307f5f8faa2f34 cd97a32]) 1つ目は、bspwmrc の例に示すように、組み込みのルールコマンドを使用する方法です: {{bc|<nowiki> bspc rule -a Gimp desktop=^8 follow=on state=floating bspc rule -a Chromium desktop=^2 bspc rule -a mplayer2 state=floating bspc rule -a Kupfer.py focus=on bspc rule -a Screenkey manage=off </nowiki>}} 2番目の方法は外部の rule コマンドを使う方法です。こちらの方法は複雑ですが、多様ななウィンドウルールを作成することができます。ルールコマンドの例は [https://github.com/baskerville/bspwm/tree/master/examples/external_rules こちらのサンプル] を見て下さい。 ===パネル=== ==== lemonbar を使用する ==== {{AUR|lemonbar-git}} 用のサンプルパネルは、GitHub ページの examples フォルダに用意されています。また、[[lemonbar]] の Wiki ページからも参考になる情報が得られるかもしれません。このパネルは、bspwmrc に {{ic|panel &}} を配置することで実行されます。必要になる可能性がある依存関係については、{{Pkg|bspwm}} パッケージの [[optdepends]] を確認してください。 ステータス バーにシステム情報を表示するには、さまざまなシステム コールを使用できます。この例では、{{ic|panel}} を編集して BAR の音量ステータスを取得する方法を示します: {{bc|<nowiki> panel_volume() { volStatus=$(amixer get Master | tail -n 1 | cut -d '[' -f 4 | sed 's/].*//g') volLevel=$(amixer get Master | tail -n 1 | cut -d '[' -f 2 | sed 's/%.*//g') # is alsa muted or not muted? if [ "$volStatus" == "on" ] then echo "%{Fyellowgreen} $volLevel %{F-}" else # If it is muted, make the font red echo "%{Findianred} $volLevel %{F-}" fi }</nowiki>}} 次に、それが呼び出され、{{ic|$PANEL_FIFO}} にリダイレクトされていることを確認する必要があります: {{bc|<nowiki> while true; do echo "S" "$(panel_volume) $(panel_clock)" > "$PANEL_FIFO" sleep 1s done & </nowiki>}} ==== polybar を使用する ==== [[Polybar]] を使用するには、bspwmrc 設定ファイルに {{ic|polybar ''example'' &}} を追加します。{{ic|''example''}} はバーの名前です。 ===スクラッチパッド=== ====pid を使う==== ドロップダウンターミナルをエミュレートできます。 まず、{{ic|/usr/local/bin/scratch}} というファイルを作成します: {{bc|<nowiki> #!/bin/bash name="$1" filename=/tmp/"$1" bspc_write_nodeid() { while true do flag=false for id in $(bspc query -d focused -N -n .floating.sticky.hidden) do bspc query --node $id -T | grep -q $name && { echo $id > $filename; flag=true; break; } done [[ "$flag" == "true" ]] && break sleep 0.1s done } hide_all_except_current(){ for id in $(bspc query -d focused -N -n .floating.sticky.!hidden) do bspc query --node $id -T | grep -qv $name && bspc node $id --flag hidden=on done } toggle_hidden() { [ -e "$filename" ] || exit 1 hide_all_except_current id=$(<$filename) bspc node $id --flag hidden -f } create_terminal(){ alacritty --class="$name","$name" -e $1 & } if ! ps -ef | grep -q "[c]lass=$name" then bspc rule -a "$name" --one-shot state=floating sticky=on hidden=on case "$name" in "htop") create_terminal htop ;; "neomutt") create_terminal neomutt ;; "newsboat") create_terminal newsboat ;; "ranger") create_terminal ranger ;; "terminal") create_terminal $SHELL ;; *) exit 1 esac dunstify "Scratch: starting $name" bspc_write_nodeid toggle_hidden else toggle_hidden fi </nowiki>}} ここでは、{{ic|terminal}} アプリケーションは Alacritty を使っています。スクリプト内のクラス指定やコマンド実行を使用する他のターミナルに変更してください: {{bc|<nowiki> alacritty --class="$name","$name" -e $1 & </nowiki>}} スクラッチパッドを切り替えるには、{{ic|~/.config/sxhkd/sxhkdrc}} を変更します: {{bc|<nowiki> # scratchpads super + alt + {b,g,i,space,t} scratch {newsboat,neomutt,ranger,terminal,htop} </nowiki>}} ===== Polybar を使用したスクラッチパッドのステータス ===== polybar の設定を次のように変更します: {{bc | <nowiki> modules-left = scratchpad [module/scratchpad] type = custom/script interval = 0.1 exec = $XDG_CONFIG_HOME/polybar/scratchpads_status.sh </nowiki>}} そして、次の内容でファイル {{ic|$XDG_CONFIG_HOME/polybar/scratchpads_status.sh}} を作成します。 {{bc | <nowiki> #!/bin/bash names=" htop H neomutt M newsboat N ranger R terminal T " status="" cmd=$(ps -ef) check_scratchpad() { grep -q "[c]lass=$1" <<< "$cmd" } IFS=$'\n' for name in $names do status+=$(check_scratchpad ${name% *} && echo ${name#* }) done if [ -n "$status" ] then echo "[$status]" else echo "" fi </nowiki>}} ====クラス名を使う==== この例では、ドロップダウン端末としてカスタムクラス名を持つ ''termite'' を使用します。 ''termite'' である必要はありません。 まず、次の内容のファイルをパスに作成し、実行可能にします。この例では、これを {{ic|scratchpad.sh}} と呼びます。 {{bc|<nowiki> #!/usr/bin/bash if [ -z $1 ]; then echo "Usage: $0 <name of hidden scratchpad window>" exit 1 fi pids=$(xdotool search --class ${1}) for pid in $pids; do echo "Toggle $pid" bspc node $pid --flag hidden -f done </nowiki>}} 次に、これを bspwm の設定に追加します。 {{bc|<nowiki> ... bspc rule -a dropdown sticky=on state=floating hidden=on termite --class dropdown -e "zsh -i" & ... </nowiki>}} ウィンドウを切り替えるには、 [[sxhkd]] のカスタムルールが必要です。パラメータとしてカスタムクラス名を指定します。 {{bc|<nowiki> super + u scratchpad.sh dropdown </nowiki>}} ====その他==== 事前定義されたルールなしで任意のウィンドウタイプを使用できるスクラッチパッドについては、 [https://www.reddit.com/r/bspwm/comments/3xnwdf/i3_like_scratch_for_any_window_possible/cy6i585] を参照してください。 多くの端末を最初からサポートし、オプションで tmuxinator/tmux セッションを開始したり、任意のウィンドウをその場でスクラッチパッドにしたり、現在のモニタに合うように自動的にスクラッチパッドのサイズを変更したりするためのフラグを持つ、より洗練されたスクラッチパッドスクリプトについては、 {{AUR|tdrop-git}} を参照してください。 ===マシンごとにモニターの設定を変える=== {{ic|bspwmrc}} はシェルスクリプトなので、以下のように設定することができます: #! /bin/sh <nowiki> if [[ $(hostname) == 'myhost' ]]; then bspc monitor eDP1 -d I II III IV V VI VII VIII IX X elif [[ $(hostname) == 'otherhost' ]]; then bspc monitor VGA-0 -d I II III IV V bspc monitor VGA-1 -d VI VII VIII IX X elif [[ $(hostname) == 'yetanotherhost' ]]; then bspc monitor DVI-I-3 -d VI VII VIII IX X bspc monitor DVI-I-2 -d I II III IV V fi </nowiki> ===全てのウィンドウがフロートするデスクトップの設定=== 以下はフリーティングウィンドウだけを表示するデスクトップ3を設定するスクリプトです。マルチウィンドウの GIMP などのアプリケーションで役に立ちます。 $PATH の通っているディレクトリに以下のスクリプトを配置して {{ic|.xinitrc}} などから呼び出してください (呼び出すときは末尾に & を付けます): #!/bin/bash <nowiki> # change the desktop number here FLOATING_DESKTOP_ID=$(bspc query -D -d '^3') bspc subscribe node_manage | while read -a msg ; do desk_id=${msg[2]} wid=${msg[3]} [ "$FLOATING_DESKTOP_ID" = "$desk_id" ] && bspc node "$wid" -t floating done </nowiki> ([https://github.com/baskerville/bspwm/issues/428#issuecomment-199985423 ソース]) ===キーボード=== Bspwm はキーボード入力を一切扱わず、代わりに ''bspc'' プログラムをインタフェースとして提供します。 キーボードショートカットを使用するには、{{Pkg|sxhkd}} (開発版は {{AUR|sxhkd-git}}) のようなホットキーデーモンを設定する必要があります。 ==トラブルシューティング== ===画面が表示されずキーバインドが機能しない=== デバッグする方法はあまりありません。まず、画面が表示されないのは問題ありません。bspwm が動いているということだからです。 xinitrc が以下のようになっているか確認してください: {{bc|<nowiki> sxhkd & exec bspwm </nowiki>}} アンパサンド (&) は重要です。次に、xinitrc でターミナルを実行して正しく位置取りがされるか確認してください。画面の"中心"に表示されるはずです。ターミナルを実行するには、{{ic|.xinitrc}} に以下を記述します: {{bc|<nowiki> sxhkd & urxvt & exec bspwm </nowiki>}} 何も表示されない場合、おそらく urxvt がインストールされていません。表示はされるが画面全体を覆ってしまう場合、BSPWM が正しく起動していません。{{ic|chmod +x ~/.config/bspwm/bspwmrc}} を実行したか確認してください。 次に、表示されたターミナルに {{ic|pidof sxhkd}} と入力してみてください。数字が返ってくるはずです。返ってこない場合、sxhd が動いていません。{{ic|sxhkd -c ~/.config/sxhkd/sxhkdrc}} で明示的に実行してみてください。sxhkdrc で Super キーを Alt キーなどに変更して何か変わらないかも確認してください。また、サンプルファイルから (物理的にファイルをコピーしないで) テキストをコピーしたときに何か問題があった可能性もあります。コードをコピーアンドペーストするとインデントに何か不具合が生じることがあり、sxhkd はそれによって上手く動作しなくなったのかもしれません。 ===カーソルテーマがデスクトップに適用されない=== こちらを参照、 [[カーソルテーマ#形が X のデフォルトカーソルの変更]] ===ウィンドウボックスがアプリケーションよりも大きく表示される=== GTK3 アプリを使っている場合にダイアログボックスでこの問題が起こることがあります。gtk3 のテーマファイル ({{ic|~/.config/gtk-3.0/gtk.css}}) に以下を作成・追加することで解決できます: {{bc|<nowiki> .window-frame, .window-frame:backdrop { box-shadow: 0 0 0 black; border-style: none; margin: 0; border-radius: 0; } .titlebar { border-radius: 0; } </nowiki>}} (ソース: [https://bbs.archlinux.org/viewtopic.php?pid=1404973#p1404973 Bspwm フォーラムスレッド]) ===Java アプリケーションの問題=== Java アプリケーションのウィンドウがリサイズできない、メニューがクリックするとすぐ閉じてしまうなどの問題が起こる場合、[[Java]] を見て下さい。 ===fish を使用する場合のキーバインドの問題=== [[fish]] を使うと、デスクトップが切り替えられなくなります。これは bspc が ^ 文字を使っており fish と互換性がないためです。コマンドを実行するときは bash を使うように sxhkd を設定することで解決できます: $ set -U SXHKD_SHELL /usr/bin/bash もしくは、sxhkdrc ファイルの ^ 文字をバックスラッシュでエスケープすることもできます。 ===fish を使用した時のパフォーマンスの問題=== [[sxhkd]] は、SHELL 環境変数に設定されたシェルを使用してコマンドを実行します。[[fish]] は、設定ファイルが大きいか不適切に設定されているため、初期化に時間がかかる場合があります。そのため、すべての sxhkd コマンドは、他のシェルよりも実行に時間がかかる場合があります。デフォルトのシェルを変更せずにこれを修正するには、sxhkd に明示的に bash を使うように指示するか、別のより高速なシェルでコマンドを実行するように指示します (たとえば、sh) $ set -U SXHKD_SHELL sh ===起動時に "Could not grab key 43 with modfield 68" というエラーメッセージ=== 同じキーを二回使用としたか、sxhkd を二回起動しようとしています。bspwmrc や {{ic | ~/.profile}}、{{ic | ~/.bash_profile}} などをチェックして sxhkd を二重に起動してないか確認してください。 ==参照== *メーリングリスト: bspwm ''at'' librelist.com. *{{ic|#bspwm}} - IRC チャンネル at irc.freenode.net *https://bbs.archlinux.org/viewtopic.php?id=149444 - Arch フォーラムスレッド *https://github.com/baskerville/bspwm - GitHub プロジェクト *https://github.com/windelicato/dotfiles/wiki/bspwm-for-dummies - earsplit's "bspwm for dummies" *https://github.com/smlb/dotfiles/wiki/Bspwm - smlb の wiki
このページで使用されているテンプレート:
テンプレート:AUR
(
ソースを閲覧
)
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Lowercase title
(
ソースを閲覧
)
テンプレート:META Related articles start
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
テンプレート:Related articles end
(
ソースを閲覧
)
テンプレート:Related articles start
(
ソースを閲覧
)
Bspwm
に戻る。
検索
検索
Bspwmのソースを表示
話題を追加