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}} を実行します。 ==設定== '''重要:''' $XDG_CONFIG_HOME 環境変数を設定しないと bspwmrc が認識されません。{{ic|1=export XDG_CONFIG_HOME="$HOME/.config"}} を {{ic|~/.profile}} に追加してください。 設定例は、{{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}' とそれぞれのデスクトップを指定することができます。 ===ルール=== ウィンドウルールを設定する方法は2つあります ([https://github.com/baskerville/bspwm/commit/cd97a3290aa8d36346deb706fa307f5f8faa2f34 cd97a32])。 1番目の方法は組み込まれている rule コマンドを使う方法です。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 こちらのサンプル] を見て下さい。 特定のウィンドウが設定したルールのとおりに動かない場合、プログラムのクラス名を確認してください。{{ic|xprop <nowiki>|</nowiki> grep WM_CLASS}} を実行することでクラス名を確認することができます。 ===パネル=== ====lemonbar を使用する==== {{AUR|lemonbar-git}} のパネルのサンプルが GitHub ページの examples フォルダに存在します。[[Lemonbar]] の wiki ページで何か考えが得られるかもしれません。パネルは bspwmrc の {{ic|panel &}} を置き換えることで実行できます。bspwm パッケージの opt-depends を確認して、必要なパッケージをチェックしてください。 様々なシステムコールを使うことでステータスバーにシステム情報を表示することが可能です。以下の例では {{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>}} ====yabar を使用する==== lemonbar を使用してサンプルパネルを使用するには、環境 (.profile) を設定し、パネルスクリプトがパス上にあることを確認する必要があります。設定するファイルは、 {{AUR|yabar}} で、設定ファイルは1つだけです。 ====polybar を使用する==== [[Polybar]] を使用するには、bspwmrc 設定ファイルに {{ic|polybar ''example'' &}} を追加します。{{ic|''example''}} はバーの名前です。 ===スクラッチパッド=== ====pid を使う==== bspwm のウィンドウフラグを使うことで (i3 のスクラッチパッド機能でターミナルを表示したときのような) ドロップダウンターミナルを模す事ができます。bspwm の設定ファイルの末尾に以下を追加してください (使用しているターミナルエミュレータに置き換えてください): {{bc|<nowiki> bspc rule -a scratchpad sticky=on state=floating hidden=on # check scratchpad already running [ "$(ps -x | grep -c 'scratchpad')" -eq "1" ] && st -c scratchpad -e ~/bin/scratch & </nowiki>}} スティッキーフラグによってウィンドウが常時デスクトップに表示されるようになります。そして {{ic|~/bin/scratch}} は以下のようにします: {{bc|<nowiki> #!/usr/bin/sh # only add floating scratchpad window node id to /tmp/scratchid bspc query -N -n .floating | xargs -i sh -c 'bspc query --node {} -T | grep -q scratchpad && echo {} > /tmp/scratchid' exec $SHELL </nowiki>}} スクラッチパッドを切り替えるホットキーは以下のように指定してください: {{bc|<nowiki> id=$(cat /tmp/scratchid);\ bspc node $id --flag hidden;bspc node -f $id </nowiki>}} スクラッチパッドでは定義済みのルールがないどんなウィンドウタイプでも使うことができます。参照: [https://www.reddit.com/r/bspwm/comments/3xnwdf/i3_like_scratch_for_any_window_possible/cy6i585]。 多数のターミナルに対応して、tmuxinator/tmux のセッションを任意で起動したり、ウィンドウを即座にスクラッチパッドに変えたり、モニターに合わせてスクラッチパッドのサイズを自動的に調整する、高性能なスクラッチパッドスクリプトを探している場合 {{AUR|tdrop-git}} を見て下さい。 ====クラス名を使う==== この例では、ドロップダウン端末としてカスタムクラス名を持つ ''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のソースを表示
話題を追加