Openbox (日本語)

From ArchWiki
Revision as of 12:13, 14 June 2013 by Kusakata (Talk | contribs)

Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary end

Openbox は軽量で設定が自由なウィンドウマネージャです。Openbox の機能については、公式ウェブサイト にドキュメントがあります。この記事では Arch Linux での Openbox のインストールに関して扱います。

Contents

インストール

公式リポジトリから openbox をインストールしてください。インストールした後、デフォルトの設定ファイル rc.xml, menu.xml, autostart, environment~/.config/openbox にコピーする必要があります:

Note: 以下は一般ユーザーで実行してください、root で行なってはいけません。
$ mkdir -p ~/.config/openbox
$ cp /etc/xdg/openbox/{rc.xml,menu.xml,autostart,environment} ~/.config/openbox

これら4つのファイルは openbox の基本的な設定をするためのものです。ファイルにはそれぞれ役割が割り振られています:

rc.xml
メインの設定ファイルです。キーボードショートカット・テーマ・仮想デスクトップなどを定義します。
menu.xml
右クリックメニューの中身を定義するファイルです。アプリケーションのランチャーやその他のショートカットを定義します。#メニューセクションを見て下さい。
autostart
このファイルは起動時に openbox-session によって読み込まれます。autostart には起動時に実行するプログラムを記述します。通常は、環境変数のセット・パネルやドックの起動・壁紙の設定・その他スタートアップスクリプトの実行などのために使われます。Openbox Wiki を見て下さい。
environment
このファイルは起動時に openbox-session によって読み込まれます。Openbox のコンテキストでセットされる環境変数を記述します。ここで設定した変数は Openbox 自身やメニューから起動したプログラムで使われます。

Openbox 3.5 へのアップグレード

Openbox 3.5 以降にアップグレードする際は、以下の変更に注意してください:

  • 新しい設定ファイル environment/etc/xdg/openbox から ~/.config/openbox にコピーする必要があります。
  • 以前の autostart.sh 設定ファイルは autostart に名前が変わりました。拡張子の .sh を削除するようにしてください。
  • rc.xml の設定構文に修正があります。Openbox が古いオプションを認識しないときは、/etc/xdg/openbox とあなたの設定を見比べてどの変更が影響を受けているか確認するとよいでしょう。

Openbox をスタンドアロンの WM として使う

Openbox は単独のウィンドウマネージャ (WM) として使うことができます。デスクトップ環境と一緒に Openbox を使うよりもインストールや設定はシンプルになります。openbox だけを使うことは CPU やメモリの使用量を減らすこともできます。

Openbox をスタンドアロンのウィンドウマネージャとして実行するには、以下を ~/.xinitrc に追加してください:

exec openbox-session

logind (や consolekit) セッションの維持などについては xinitrc (日本語) を見て下さい。

以前に他のウィンドウマネージャ (Xfwm 等) を使っていて、Openbox が起動しないときは、autostart フォルダを削除してみてください:

mv ~/.config/autostart ~/.config/autostart.bak
Note: python2-xdg は Openbox の xdg-autostart に必要です。

Openbox をデスクトップ環境の WM として使う

Openbox をフル装備のデスクトップ環境のウィンドウマネージャの代わりとして用いることができます。Openbox を使うための作業はデスクトップ環境によって異なります。

GNOME 2.24 と 2.26

以下の内容で /usr/share/applications/openbox.desktop を作成してください:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=OpenBox
Exec=openbox
NoDisplay=true
# name of loadable control center module
X-GNOME-WMSettingsModule=openbox
# name we put on the WM spec check window
X-GNOME-WMName=OpenBox

gconf で /desktop/gnome/session/required_components/windowmanageropenbox に設定してください:

$ gconftool-2 -s -t string /desktop/gnome/session/required_components/windowmanager openbox

そして、GDM のセッションメニューで GNOME セッションを選んで下さい。

GNOME 2.26 redux

If the previous guide for GNOME 2.24 fails:

If, when attempting to log into a "Gnome/Openbox" session -- and it consistently fails to start, try the following. This is one way of achieving your goal of using Openbox as the WM anytime you open a Gnome session:

  1. Log into your Gnome-only session (it should still be using Metacity as its window manager).
  2. Install Openbox if you have not done so already
  3. Navigate your menus to System → Preferences → Startup Applications (possibly named 'Session' in older Gnome versions)
  4. Open Startup Application, select '+ Add' and enter the text shown below. Omit the text after #.
  5. Click the 'Add' button for the data entry window. Make sure the checkbox beside your new entry is selected.
  6. Log out from your Gnome session and log back in
  7. You should now be running openbox as your window manager.
Name:    Openbox Windox Manager          # Can be changed
Command: openbox --replace               # Text should not be removed from this line, but possibly added to it
Comment: Replaces metacity with openbox  # Can be changed

This creates a startup list entry which is executed by Gnome each time the user's session is started.

KDE

  1. KDM を使っている場合、"KDE/Openbox" ログインオプションを選んで下さい。
  2. システム設定 > デフォルトのアプリケーション (in the Workspace Appearance and Behaviour section) を開き、デフォルトのウィンドウマネージャを Openbox に変更してください (this will also avoid having to log out and log back in again)。
  3. startx を使っている場合、exec openbox-kde-session~/.xinitrc に追加してください
  4. シェルから次を実行してください:
$ xinit /usr/bin/openbox-kde-session

Xfce4

通常の Xfce4 セッションにログインして、端末から次を入力してください:

$ killall xfwm4 ; openbox & exit

このコマンドによって xfwm4 が kill され、Openbox が開き、端末が閉じます。"次回のログインのためセッションを保存"をチェックしてログアウトしてください。次にログインしたとき、Xfce4 はウィンドウマネージャとして Openbox を使うはずです。

Alternatively, you can chooose Settings -> Session and Startup from menu, go to the Application Autostart tab and add openbox --replace to the list of automatically started applications.

To enable exiting from a session using xfce4-session, edit ~/.config/openbox/menu.xml. If the file is not there, copy it from /etc/xdg/openbox/. Look for the following entry:

 <item label="Exit Openbox">
   <action name="Exit">
     <prompt>yes</prompt>
   </action>
 </item>

Change it to:

 <item label="Exit Openbox">
   <action name="Execute">
     <prompt>yes</prompt>
    <command>xfce4-session-logout</command>
   </action>
 </item>

Otherwise, choosing "Exit" from the root-menu causes Openbox to terminate its execution, leaving you with no window manager.

If you have a problem changing virtual desktops with the mouse wheel skipping over desktops, edit ~/.config/openbox/rc.xml. Move the mouse binds with... actions "DesktopPrevious" and "DesktopNext" from context Desktop to the context Root. Note that you may need to create a definition for the Root context as well.

When using the Openbox root-menu instead of Xfce's menu, you may exit the Xfdesktop with this terminal command:

$ xfdesktop --quit

Xfdesktop manages the wallpaper and desktop icons, requiring you to use other utilities such as ROX for these functions.

(When terminating Xfdesktop, the above issue with the virtual desktops is no longer a problem.)

If you want have rc.xml separated than your default openbox session rc.xml

Edit the ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml or (to make the change for all XFCE users) /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml: Replace the xfwm startup command,

<property name="Client0_Command" type="array">
  <value type="string" value="xfwm4"/>
</property>

with the following:

<property name="Client0_Command" type="array">
       <value type="string" value="openbox"/>
       <value type="string" value="--config-file"/>
       <value type="string" value="~/.config/xfce4/openbox/rc.xml"/>
</property>

and also the menu, you can set the separated menu ex: xfce4-menu.xml , change it to your custom xfce4 rc.xml , but notice that the menu must be place at ~/.config/openbox/.

Openbox for multihead users

While Openbox provides better than average multihead support on its own, the openbox-multihead-gitAUR package from the AUR provides a development branch called Openbox Multihead that gives multihead users per-monitor desktops. This model is not commonly found in floating window managers, but exists mainly in tiling window managers. It is explained well on the Xmonad web site. Also, please see README.MULTIHEAD for a more comprehensive description of the new features and configuration options found in Openbox Multihead.

Openbox Multihead will function like normal Openbox when only a single head is available.

A downside to using Openbox Multihead is that it breaks the EWMH assumption that one and only one desktop is visible at any time. Thus, existing pagers will not work well with it. To remedy this, pager-multihead-gitAUR can be found in the AUR and is compatible with Openbox Multihead. Screenshots.

Finally, a new version of PyTyle that will work with Openbox Multihead can also be found in the AUR: pytyle3-gitAUR.

Both pytyle3 and pager-multihead-git will work without Openbox Multihead if only one monitor is active.

設定

Openbox の設定を編集する方法は複数存在します:

マニュアル設定

手動で Openbox を設定するには、テキストエディタで ~/.config/openbox/rc.xml ファイルを編集してください。このファイルにはすみずみまで説明のコメントが書かれています。設定についてより詳しく知るには Openbox wiki を見て下さい。

ObConf

ObConf は Openbox の設定ツールです。テーマ・仮想デスクトップ・ウィンドウ装飾など設定をするために使われます。ObConf は 公式リポジトリにある obconf パッケージでインストールできます。

ObConf ではキーボードショートカットなどを設定することができません。これらの機能については rc.xml を手動で設定してください。もしくは AURobkeyAUR を使うこともできます。

アプリケーションのカスタマイズ

Openbox ではアプリケーション毎のカスタマイズが可能です。プログラム別にルールを定義することでこれを行います。例えば:

  • ウェブブラウザは特定の仮想デスクトップで起動する。
  • ターミナルを開く時はウィンドウ装飾を使わない (window chrome)。
  • 特定のスクリーン位置で bit-torrent クライアントを開くようにする。

アプリケーション毎の設定は ~/.config/openbox/rc.xml で定義します。このファイルのコメントに説明が入っています。さらに詳細は Openbox wiki にあります。

メニュー

デフォルトの Openbox メニューにはさまざまなメニューアイテムが始めから入っています。アイテムの多くは、あなたが不要だと思っていたり、まだインストールしてなかったり、インストールするつもりもないアプリケーションを起動するものです。いつか必ず menu.xml をカスタマイズすることになるでしょう。カスタマイズする方法は多々あります。

メニューのマニュアル設定

テキストエディタで ~/.config/openbox/menu.xml を編集します。設定にはそれぞれ説明が付いています。Openbox wiki の Help:Menus にはさらに詳しい説明が書かれています。

メニューのアイコン

バージョン 3.5.0 からメニューエントリの横にアイコンを表示することができるようになりました。アイコンを表示するには:

  1. rc.xml ファイルの <menu> セクションに <showIcons>yes</showIcons> を加えて下さい
  2. menu.xml 内のメニューエントリを編集して以下のように icons="<path>" を追加します:
<menu id="apps-menu" label="SomeApp" icon="/home/user/.icons/application.png">

メニューが正しく更新されないときは $ openbox --reconfigure$ openbox --restart を実行してください。

MenuMaker

MenuMaker は Openbox を含む複数のウィンドウマネージャに対応した XML メニューを作成します。MenuMaker はあなたのコンピュータにある実行可能ファイルを検索して、その結果からメニューファイルを作成します。特定のアプリケーション (GNOME, KDE, etc) を省くように設定することも可能です。MenuMaker は公式リポジトリの menumaker パッケージからインストールしてください。

Once installed, generate a menu file (named menu.xml) by running the program.

$ mmaker -v OpenBox3     #  Will not overwrite an existing menu file.
$ mmaker -vf OpenBox3    #  Force option permits overwriting the menu file.
$ mmaker --help          #  See the full set of options for MenuMaker.

MenuMaker creates a comprehensive menu.xml. You may edit this file by hand or regenerate it after installing software.

Obmenu

Obmenu は Openbox 用のメニューエディタです。この GUI アプリケーションは XML コードを編集したくない人にうってつけでしょう。Obmenu は公式リポジトリにある obmenu パッケージでインストールできます。

インストールしたら、obmenu を実行して、好きなようにアプリケーションを追加・削除してください。

Obm-xdg

obm-xdg is a command-line tool that comes with Obmenu. It generates a categorized sub-menu of installed GTK/GNOME applications.

To use obm-xdg with other menus, add the following line to ~/.config/openbox/menu.xml:

<menu execute="obm-xdg" id="xdg-menu" label="xdg"/>

Then add the following line under your root-menu entry where you want to have the menu appear:

<menu id="xdg-menu"/>

Then run $ openbox --reconfigure to refresh the Openbox menu. You should now see a sub-menu labeled xdg in your menu.

To use obm-xdg by itself, create ~/.config/openbox/menu.xml and add these lines:

<openbox_menu>
 <menu execute="obm-xdg" id="root-menu" label="apps"/>
</openbox_menu>
Note: If you do not have GNOME installed, you need to install the package gnome-menus for obm-xdg.

XDG-menu

公式リポジトリにある archlinux-xdg-menu は Openbox のメニューを XDG ファイルから自動で作成することができます。XDG-menu の使い方については Xdg-menu#OpenBox を見て下さい。

openbox-menu

Openbox-menu は LXDE プロジェクトによる menu-cache を使って Openbox のダイナミックメニューを作成します。

If you get an error while trying to open this menu try adding icons to the Openbox menu.

It can be installed with the package openbox-menuAUR, available in the AUR.

Python-based xdg menu script

This script is found in Fedora's Openbox package. You have only to put the script somewhere and create a menu entry. The latest version of the script can be found here.

Download the script from the above repository and Place int into any directory you want.

Open menu.xml with your text editor and add the following entry. Of course, you can modify the label as you see fit.

<menu id="apps-menu" label="xdg-menu" execute="python2 /path/to/xdg-menu"/>

Save the file and run $ openbox --reconfigure.

Note: If you do not have GNOME installed, you need to install the package gnome-menus for xdg-menu.

Openbox メニュージェネレーター

obmenugen

Obmenugen can be installed with the package obmenugenAUR, available in the AUR. creates the menu file from .desktop files. Obmenugen provides a text file which filters (hides) menu items using basic regular expressions.

$ obmenugen               # Create a menu file
$ openbox --reconfigure   # To see the menu you generated

obmenu-generator

Obmenu-generator is a pipe/static menu generator for Openbox with icon support. You can install obmenu-generatorAUR from AUR.

The following command generates a pipe menu with icons:

$ obmenu-generator -p -i

To see a list of options type this:

$ obmenu-generator -h

パイプメニュー

Like other window managers, Openbox allows for scripts to dynamically build menus (menus on-the-fly). Examples are system monitors, media player controls, or weather monitors. Pipe menu script examples are found in the Openbox:Pipemenus page at Openbox's site.

Some interesting pipe menus provided by Openbox users:

  • obfilebrowser — A pipe menu file browser.
http://xyne.archlinux.ca/projects/obfilebrowser/ || obfilebrowserAUR
  • wifi-pipe — A pipe menu for scanning and connecting to wireless hot spots using netcfg.
https://github.com/pbrisbin/wifi-pipe || not packaged? search in AUR
  • obdevicemenu — A pipe menu for managing removable devices using Udisks.
https://bbs.archlinux.org/viewtopic.php?id=114702 || obdevicemenuAUR

スタートアッププログラム

Openbox はスタートアップ時のプログラムの起動をサポートしています。これは openbox-session によって行われます。

autostart を有効にする

autostart を有効にする方法は2つあります:

  1. セッションの開始に startx や xinit を使っている場合は、~/.xinitrc を編集してください。openbox を実行してる行を openbox-session に変えてください。
  2. GDM や KDM を使っている場合、Openbox セッションを選択したときに自動で autostart スクリプトが実行されます。

Autostart スクリプト

Openbox provides a system-wide startup script which applies to all users and is located at /etc/xdg/openbox/autostart. A user may also create his own startup script to be executed after the system-wide script by creating the file ~/.config/openbox/autostart. This file is not provided by default and must be created by the user.

Further instructions are available in the Help:Autostart article at the official Openbox site.

Note: The autostart files used to be named autostart.sh prior to OpenBox 3.5.0. While these scripts will presently still work, users who are upgrading are advised to drop the .sh extension.
Note: All the programs in the autostart file should be run as daemons or run in the background,otherwise the items in /etc/xdg/autostart/ won't be started!

Autostart ディレクトリ

Openbox also starts any *.desktop files in /etc/xdg/autostart - this happens regardless of whether a user startup script is present. nm-applet, for example, installs a file at this location, and may cause it to run twice for users with the usual (sleep 3 && /usr/bin/nm-applet --sm-disable) & in their startup script. There is a discussion on managing the effects of this at [1].

テーマと外観

Template:Box

Openbox テーマ

テーマは、ウィンドウ・タイトルバー・ボタンの外観を変えます。また、メニューの外観やオンスクリーンディスプレイ (OSD) もコントロールします。いくつかの Openbox テーマは公式リポジトリopenbox-themes パッケージからインストール可能です。

カーソル・アイコン・壁紙

Xcursor themes can be installed with the package xcursor-themes, available in the official repositories, or with other packages from such as xcursor-bluecurve, xcursor-vanilla-dmz or xcursor-pinux. Many other themes can be found in the official repositories or the AUR.

Icon themes are also available in the repositories, for example lxde-icon-theme, tangerine-icon-theme or gnome-icon-theme can be found in the official repositories with many more in the AUR.

Wallpapers are easily set with utilities such as Nitrogen, Feh or hsetroot.

Please see Openbox Themes and Apps for information on these GUI customizations.

Recommended programs

Template:Box

Tips and tricks

Window snap behaviour

Windows 7 and other VMs supports a window behaviour to snap windows when they are moved to the edge of the screen. This effect can also be achieved through an Openbox keybinding. Openbox supports specifying percentages, and actions. To simulate Aero Snap:

~/.config/openbox/rc.xml
<keybind key="W-Left">
    <action name="UnmaximizeFull"/>
    <action name="MaximizeVert"/>
    <action name="MoveResizeTo">
        <width>50%</width>
    </action>
    <action name="MoveToEdge"><direction>west</direction></action>
</keybind>
<keybind key="W-Right">
    <action name="UnmaximizeFull"/>
    <action name="MaximizeVert"/>
    <action name="MoveResizeTo">
        <width>50%</width>
    </action>
    <action name="MoveToEdge"><direction>east</direction></action>
</keybind>

The only issue with any methods around, is that once maximized to an edge - it stays full (vertically) until you maximize and restore. So you can add the next few lines to simulate the other windows behaviors (maximize, restore). That will speed up pulling a window from a screen edge as well.

~/.config/openbox/rc.xml
<keybind key="W-Down">
    <action name="Unmaximize"/>
</keybind>
<keybind key="W-Up">
    <action name="Maximize"/>
</keybind>

Then reconfigure Openbox and try it.

$ openbox --reconfigure

As an alternative/extension you can use opensnap. It provides Aero Snap like functionality and resizes windows if you drag them to an edge of the screen. It does not provide keyboard shortcuts however.

ファイルの関連付け

Openbox とアプリケーションは統合されていないので、ファイルブラウザからファイルを開くときに困るかもしれません。あなたのブラウザは特定の種類のファイルにどのプログラムを使えばいいのかわからない可能性があります。

AUR の gnome-defaults-listAUR パッケージには Gnome デスクトップにあわせたファイルタイプとプログラムのリストが含まれています。このリストは /etc/gnome/defaults.list にインストールされます。

Open this file with your text editor. Here you can replace a given application with the name of the program of your choosing. For example, replace totem with vlc or eog with mirage. Save the file to ~/.local/share/applications/defaults.list.

Another way of setting file associations is to install package perl-file-mimeinfo from the official repositories and invoke mimeopen like this:

mimeopen -d /path/to/file

You are asked which application to use when opening /path/to/file:

Please choose a default application for files of type text/plain
       1) notepad  (wine-extension-txt)
       2) Leafpad  (leafpad)
       3) OpenOffice.org Writer  (writer)
       4) gVim  (gvim)
       5) Other...

Your answer becomes the default handler for that type of file. Mimeopen is installed as /usr/bin/perlbin/vendor/mimetype.

コピーアンドペースト

From a terminal Template:Keypress for copy and Template:Keypress for paste.

Also Template:Keypress for copy and mouse middle-click for paste (in terminals).

Other applications most likely use the conventional keyboard shortcuts for copy and paste.

ウィンドウ透過

transset-df が公式リポジトリから利用できます。transset-df を使えばすぐにウィンドウ透過を有効にできます。

例えば以下を <mouse> セクションに追加すれば、タイトルバー上でマウスをスクロールすることでウィンドウの透明度を調整できるようになります:

~/.config/openbox/rc.xml
<context name="Titlebar">
    . . .
    <mousebind button="Up" action="Click">
        <action name= "Execute" >
        <execute>transset-df -p .2 --inc  </execute>
        </action>
    </mousebind>
    <mousebind button="Down" action="Click">
        <action name= "Execute" >
        <execute>transset-df -p .2 --dec </execute>
        </action>
    </mousebind>
      . . .
</context>
Warning: It appears to work only when no additional actions are defined within the action group.

Xprop values for applications

Xprop can be installed with the package xorg-xprop, available in the official repositories.

If you use per-application settings frequently, you might find this bash alias handy:

alias xp='xprop | grep "WM_WINDOW_ROLE\|WM_CLASS" && echo "WM_CLASS(STRING) = \"NAME\", \"CLASS\""'

To use, run xp and click on the running program that you would like to define with per-app settings. The result displays only the info that Openbox requires, namely the WM_WINDOW_ROLE and WM_CLASS (name and class) values:

$ xp
WM_WINDOW_ROLE(STRING) = "roster"
WM_CLASS(STRING) = "gajim.py", "Gajim.py"
WM_CLASS(STRING) = "NAME", "CLASS"

Xprop for Firefox

For whatever reason, Firefox and like-minded equivalents ignore application rules (e.g. <desktop>) unless class="Firefox*" is used. This applies irrespective of whatever values xprop may report for the program's WM_CLASS.

Linking the menu to a button

Some people want to link the Openbox menu (or any menu) to an object. This is useful for creating a panel button to pop up a menu. Although Openbox does not provide this, a program called xdotool simulates a keypress. Openbox can be configured to bind that keypress to the ShowMenu action.

After installing xdotool, add the following to the <keyboard> section:

~/.config/openbox/rc.xml
<keybind key="A-C-q">
    <action name="ShowMenu">
        <menu>root-menu</menu>
    </action>
</keybind>

Then execute openbox --reconfigure or openbox --restart to use the new configuration. The following command summons a menu at your cursor position. The command may given as-is, linked to an object, or placed in a script.

$ xdotool key ctrl+alt+q

Of course, change the key shortcut to your liking. Here is a snippet from a Tint2 configuration file which pops up a menu when the clock area is clicked. Each key combination is set to open a menu within Openbox's rc.xml configuration file. The right‑click menu is different from the left‑click menu:

clock_rclick_command = xdotool key --clearmodifiers "ctrl+XF86PowerOff"
clock_lclick_command = xdotool key --clearmodifiers "alt+XF86PowerOff"

Running a terminal emulator as desktop background

With Openbox, running a terminal as desktop background is easy. You will not need devilspie here.

The following example shows how to run the terminal emulator Urxvt as desktop background:

First you must enable transparency, open your ~/.Xdefaults file (if it does not exist yet, create it).

URxvt*transparent:true
URxvt*scrollBar:false
URxvt*geometry:124x24    #I do not use the whole screen, if you want a full screen term do not bother with this and see below.
URxvt*borderLess:true
URxvt*foreground:Black   #Font color. My wallpaper is White, you may wish to change this to White.

Then add the following to the <applications> section:

~/.config/openbox/rc.xml
<application name="urxvt">
    <decor>no</decor>
    <focus>yes</focus>
    <position>
        <x>center</x>
        <y>20</y>
    </position>
    <layer>below</layer>
    <desktop>all</desktop>
    <maximized>true</maximized> #Only if you want a full size terminal.
</application>

The magic comes from the <layer>below</layer> line, which place the application under all others. Here urxvt is displayed on all desktops, change it to your convenience.

Tip: Instead of using <application name="urxvt">, you can use another name ("urxvt-bg" for example), and use the -name option when starting uxrvt. That way, only the urxvt terminals which you choose to name urxvt-bg would be captured and modified by the application rule in rc.xml. For example:
$ urxvt -name urxvt-bg

ToggleShowDesktop exception

If you use ToggleShowDesktop to minimize all your application and show the desktop it will also minimize the urxvt window. Several methods are available to bypass this, but none works properly:

  • one method is explained in this forum post. This involves editing Urxvt's source code.
Warning: This method seems to have been broken in a recent update, now leading to a memory leak when the patched Urxvt is run.
  • the best method is outlined here. It still has a big disadvantage: it makes ToggleShowDesktop a one-way action, not restoring the other desktop applications when ToggleShowDesktop is run for a second time. It does create the opportunity to use a different terminal emulator than Urxvt, however.

Another solution

Window settings:

~/.config/openbox/rc.xml
    <application name="RootTerm">
      <decor>no</decor>
      <skip_taskbar>yes</skip_taskbar>
      <skip_pager>yes</skip_pager>
      <layer>normal</layer>
      <position>
        <x>center</x>
        <y>0</y>
      </position>
      <focus>yes</focus>
      <desktop>all</desktop>
      <maximized>true</maximized>
    </application>

Keyboard binding:

~/.config/openbox/rc.xml
    <keybind key="W-d">
        <action name="Execute"> <command>~/.config/openbox/toggle_shell.sh</command> </action>
    </keybind>

And the toggle script:

~/.config/openbox/toggle_shell.sh
#!/bin/bash
term_id=$(xdotool search --limit 1 --classname RootTerm)
wind_id=$(xdotool getwindowfocus)

if [ $term_id -eq $wind_id ]
then 
	wind_num=$(xdotool search --all --desktop `xdotool get_desktop` --name .+ | wc -l)
	if [ $wind_num -ne 0 ]
	then
		xdotool windowminimize $term_id
		xdotool windowfocus `xdotool getwindowfocus`
		echo "hide"
	fi
else
	xdotool windowactivate $term_id
	echo "show"
fi

Add the following lines to start urxvt on login.

This prevents closing urxvt by accident.

~/.config/openbox/autostart

(for ((;;)); do urxvt -name RootTerm; done;) &

キーボードレイアウトの切り替え

キーボードレイアウトの管理に他のプログラムを使いたくない場合、特定のキーボードショートカットでレイアウトを切り替えるように X を手動で設定することができます。詳しい方法は Xorg (日本語)#キーボードレイアウトの切り替え を見て下さい。

キーボードによるボリュームコントロール

ALSA

If you use ALSA for sound, you can use the amixer program (part of the alsa-utils package) to adjust the sound volume. You can use Openbox's keybindings to map different shortcuts to actions. If you want to use the multimedia keys, but do not know their names, you could look at the Multimedia Keys page to find out.

For example, add the following in the <keyboard> section:

~/.config/openbox/rc.xml
<keybind key="W-Up">
    <action name="Execute">
        <command>amixer set Master 5%+</command>
    </action>
</keybind>

This binds Template:Keypress to increase your master ALSA volume by 5%. Corresponding binding for volume down:

~/.config/openbox/rc.xml
<keybind key="W-Down">
    <action name="Execute">
        <command>amixer set Master 5%-</command>
    </action>
</keybind>

As another example you can also use the XF86Audio* keybindings:

~/.config/openbox/rc.xml
<keybind key="XF86AudioRaiseVolume">
    <action name="Execute">
        <command>amixer set Master 5%+ unmute</command>
    </action>
</keybind>
<keybind key="XF86AudioLowerVolume">
    <action name="Execute">
        <command>amixer set Master 5%- unmute</command>
    </action>
</keybind>
<keybind key="XF86AudioMute">
    <action name="Execute">
        <command>amixer set Master toggle</command>
    </action>
</keybind>

The above example should work for the majority of multimedia keyboards. It should enable to raise, lower and mute the Master control of your audio device by using the respective multimedia keyboard keys. Notice also that in this example:

  • The "Mute" key should unmute the Master control if it is already in mute mode.
  • The "Raise" and "Lower" keys should unmute the Master control if it is in mute mode.

Pulseaudio

If you are using PulseAudio with ALSA as a backend the above keybinding are slightly different as amixer must be told to use PulseAudio. As always, add the following to the <keyboard> section to get the proper behaviour:

~/.config/openbox/rc.xml
<keybind key="XF86AudioRaiseVolume">
    <action name="Execute">
        <command>amixer -D pulse set Master 5%+ unmute</command>
    </action>
</keybind>
<keybind key="XF86AudioLowerVolume">
    <action name="Execute">
        <command>amixer -D pulse set Master 5%- unmute</command>
    </action>
</keybind>
<keybind key="XF86AudioMute">
    <action name="Execute">
        <command>amixer set Master toggle</command>
    </action>
</keybind>

This keybindings should work for most of the systems. Other examples can be found here.

OSS

With OSS, you can use keybindings to raise or lower specific mixers. This is useful in cases where you wish to change the volume of a specific application (such as an audio player) without changing the system's volume. Note that the application must be first set up to use its own mixer. In this example, MPD is configured to have its own mixer, named mpd:

~/.config/openbox/rc.xml
<keybind key="KEY_BINDING">
    <action name="Execute">
        <command>ossmix -- mpd -1</command>
    </action>
</keybind>

This example decreases the volume of the mpd mixer by one dB. To increase the volume, replace the mixer value (-1) with a positive one. The -- that appears after ossmix are added, as listed in ossmix's man page, to prevent any negative value from being treated as an argument.

Troubleshooting Openbox 3.5

X サーバーがクラッシュする

Problems have been detected after upgrade to version 3.5, that the X server might crash in attempt to start Openbox, ending with this error message:

(metacity:25137): GLib-WARNING **: In call to g_spawn_sync(), exit status of a child process \
                   was requested but SIGCHLD action was set to SIG_IGN and ECHILD was received by waitpid(), so exit \
                   status can't be returned. This is a bug in the program calling g_spawn_sync(); either do not request \
                   the exit status, or do not set the SIGCHLD action.
xinit: connection to X server lost
waiting for X server to shut down

In this particular case, some problem with metacity package has been identified as the cause of the X server crash issue. To solve the problem reinstall the metacity and compiz-decorator-gtk packages. If that does not solve the problem, try removing them.

Also, plenty of similar cases have been found on the Internet, that not only metacity package might be causing the X server to crash. Thus, whatever else instead of metacity you get in the error output message, try to reinstall it (or remove if necessary) in an attempt to get rid of this X server crash.

Autostarting unwanted applications in 3.5

If unwanted applications start with your Openbox session even though they are not listed in your ~/.config/openbox/autostart, check the ~/.config/autostart/ directory, it might contain the residues from your previously used desktop environment (GNOME, KDE, etc.), and remove unwanted files.

SSH agent no longer starting

Whereas Openbox 3.4.x allowed launching an SSH agent from ~/.config/openbox/autostart, with 3.5 that no longer seems to work. You need to put the following code in ~/.config/openbox/environment:

SSHAGENT="/usr/bin/ssh-agent"
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
        eval $($SSHAGENT $SSHAGENTARGS)
        trap "kill $SSH_AGENT_PID" 0
fi

Openbox not registering with D-Bus

Just like with SSH agent, lots of people used to have D-Bus code in ~/.config/openbox/autostart - which no longer works (e.g. Thunar does not see any removable devices anymore).

Windows load behind the active window

Some application windows (such as Firefox windows) may load behind the currently active window, causing you to need to switch to the window you just created to focus it. To fix this behavior add this to your ~/.config/openbox/rc.xml file, inbetween the <openbox_config> and </openbox_config> tags:

<applications>
  <application class="*">
    <focus>yes</focus>
  </application>
</applications>

参照