Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
HERBSTLUFTWM-TUTORI(7)					  HERBSTLUFTWM-TUTORI(7)

NAME
     herbstluftwm-tutorial - A tutorial introduction to herbstluftwm

DESCRIPTION
     This  tutorial explains how to create a basic herbstluftwm setup and intro-
     duces the major herbstluftwm features. This  tutorial  neither  covers  all
     features nor specifies the mentioned features entirely; see herbstluftwm(1)
     for a compact and more complete description.

     This tutorial covers these topics:

     *	 Basic installation

     *	 Usage of the client

     *	 The tiling method

     *	 Tags (or workspaces...)

     *	 Multi-Monitor handling

BASIC INSTALLATION
     This  describes  two  alternate installation methods. In any case, you also
     have to install the dependencies.	Beside	the  standard  libraries  (XLib)
     which  are found on nearly any system, you should install dzen2 (as current
     as possible) which is needed by the default panel.sh.

   Via the package manager
     You always should prefer installing herbstluftwm via your	package  manager
     on your system. It should be called herbstluftwm.

     After  installing	it,  the  default configuration file has to be copied to
     your home directory:

	 mkdir -p ~/.config/herbstluftwm
	 cp /etc/xdg/herbstluftwm/autostart ~/.config/herbstluftwm/

     You also should activate the tab completion for herbstclient.  In	case  of
     bash,  you  can either activate the tab completion in general or source the
     herbstclient-completion  from  the  bash_completion.d  directory  in   your
     bashrc. In case of zsh the tab-completion normally is activated already (if
     not, consider activating it).

   Directly from git
     If  there is no package for your platform or if you want to use the current
     git version, then you can pull directly from the main repository:

	 git clone https://github.com/herbstluftwm/herbstluftwm
	 cd herbstluftwm
	 make # build the binaries

	 # install files
	 mkdir -p ~/bin
	 # you also have to put $HOME/bin to your path, e.g. by:
	 echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc # or to your zshrc, etc...
	 ln -s `pwd`/herbstluftwm ~/bin/
	 ln -s `pwd`/herbstclient ~/bin/

	 # copy the configuration
	 mkdir -p ~/.config/herbstluftwm/
	 cp share/autostart ~/.config/herbstluftwm/
	 cp share/panel.sh ~/.config/herbstluftwm/

     *	 If you are using bash, then source the bash  completion  file	in  your
	 ~/.bashrc

	     source path-to/herbstluftwm/share/herbstclient-completion

     *	 If you are using zsh, then copy the share/_herbstclient file to the ap-
	 propriate zsh-completion directory.

     Each  time  there	is an update, you have to do the following steps in your
     herbstluftwm directory:

	 git pull
	 make

CONFIGURE HERBSTLUFTWM AS YOUR WINDOW MANAGER
     As usual you can define herbstluftwm as your window manager by  either  se-
     lecting  herbstluftwm  in	your  login  manager  or  by starting it in your
     ~/.xinitrc, mostly by writing to your xinitrc (or .xsession  on  some  sys-
     tems):

	 exec herbstluftwm

     After  logging  in  the next time, you will get a default herbstluftwm ses-
     sion.

FIRST START
     After starting herbstluftwm, the screen is surrounded by a green frame ini-
     tially, which indicates that there is only one large frame. A  frame  is  a
     container where actual windows can be placed or which can be split into two
     frames.

     Start an xterm by pressing Alt-Return, which will fill your entire screen.

USING THE CLIENT
     The only way to communicate to herbstluftwm is by using the client applica-
     tion  called herbstclient. Its usual syntax is: herbstclient COMMAND [ARGU-
     MENTS]. This calls a certain COMMAND within your running  herbstluftwm  in-
     stance. This causes some effect (which depends on the given COMMAND and AR-
     GUMENTS),	produces  some	output which is printed by herbstclient and lets
     herbstclient exit with a exit-code (e.g. 0 for  success)  like  many  other
     UNIX tools:

	     shell		COMMANDS,
		a^2 COMMAND,	  ARGUMENTS
		 a^2 ARGUMENTS aaaaaaaaaaaaaa(R)
		  a^2	       a	    a
		   V	     a		  V
		  herbstclient	       herbstluftwm
		   a+/- 	^	     a
		  a+/- output,	a	     a	      _
		 a+/- exit-code a<degree>aaaaaaaaaaaaa
		V		output,
	  shell/terminal       exit-code

     The most simple command only prints the herbstluftwm version:

	 $ # lines prefixed with $ describes what to type, other lines describe the
	 $ # typical output
	 $ # Type: her<tab>c<tab> ve<tab>
	 $ herbstclient version
	 herbstluftwm 0.4.1 (built on Aug 30 2012)
	 $ herbstclient set window_border_active_color red
	 $ # now the window border turned red

     The  configuration  of  herbstluftwm  only  is done by calling commands via
     herbstclient. So the only configuration file  is  the  autostart  which  is
     placed  at ~/.config/herbstluftwm/ and which is a sequence of those herbst-
     client calls.

     Open it in your favourite text editor and replace the Mod-line by	this  to
     use the Super-key (or also called Windows-key) as the main modifier:

	 # Mod=Mod1 # use alt as the main modifier
	 Mod=Mod4 # use Super as the main modifier

     After saving the autostart file, you have to reload the configuration:

	 # the following line is identical to directly calling:
	 # ~/.config/herbstluftwm/autostart
	 herbstclient reload

     Now  you may notice that the red border color of your terminal turned green
     again, because the color is set in the default autostart. That's the  typi-
     cal configuration workflow:

      1. Try some new settings in the command line

      2. Add them to the autostart file

       3. Press  Mod-Shift-r  which calls the reload command or directly execute
	 the autostart file from your shell to get the error messages  if  some-
	 thing went wrong.

     To learn more about herbstluftwm, just go through the man page line by line
     and  check using the herbstluftwm(1) man page what it does. For a quick in-
     troduction to the central paradigms, continue reading this.

TILING
     Initially there is one frame. Each frame has one of the two following  pos-
     sible types:

      1. It serves as a container for windows, i.e. it can hold zero up to arbi-
	 trarily  many	windows.  Launch several more terminals to see what hap-
	 pens: If there are multiple windows in one frame, they are aligned  be-
	 low each other. To change this layout algorithm, press Mod-space to cy-
	 cle all the available layouting algorithms for the focused frame.

      2. A frame also can be split into two subframes, which can be aligned next
	 to  or  below	each other. Press Mod-o to split to an horizontal align-
	 ment. To navigate to the fresh frame right of the old one press  Mod-l.
	 Press Mod-u to split vertically. The intuitive navigation is:

		   a<section> h (or a) a<<		   a<section> left
		   aa j (or a) aa   means	  aa down
	     Mod + a" k (or a) a~  aaaaaaa> focus a" up
		   a(C) l (or a) a		   a(C) right

	 To undo splitting, you can remove a frame via Mod-r. To shift some win-
	 dow  from  one  frame	to  one of its neighbours, use the same keyboard
	 shortcut while holding the Shift key pressed. It is not possible to re-
	 size single windows, only to  resize  frames.	The  according	keyboard
	 shortcut is the same while holding Control pressed. All in all it is:

				 a<section> h (or a) a<<			  a<section> left
		   a<section>	      a<<   aa j (or a) aa  means  a<section> focus frame  a<< aa down
	     Mod + a" Shift   a~ + a" k (or a) a~  aaaaa> a" move window  a~ a" up
		   a(C) Control a   a(C) l (or a) a	    a(C) resize frame a a(C) right

     With this, you can define a custom layout. It can be printed via the layout
     command:

	 $ herbstclient layout
	 a3/4aa horizontal 50% selection=1
	   aaa vertical 70% selection=0
	   a aaa1/4 vertical: 0x1400009
	   a aaa1/4 vertical:
	   aaa1/4 max: 0x1a00009 [FOCUS]

     Just  play  with  it  a bit to understand how it works. You also can perma-
     nently save the layout using the dump command:

	 $ herbstclient dump
	 (split horizontal:0.500000:1
	     (split vertical:0.700000:0
		 (clients vertical:0 0x1400009)
		 (clients vertical:0))
	     (clients max:0 0x1a00009))
	 $ layout=$(herbstclient dump)

     And after some changes you can rewind to the original layout with the  load
     command:

	 $ herbstclient load "$layout"	     # mind the quotes!

TAGS (OR WORKSPACES OR VIRTUAL DESKTOPS OR ....)
     A	tag  consists  of a name and a frame layout with clients on it. With the
     default autostart, there are nine tags named 1 to 9. You can switch to  the
     ith  tag using Mod-i, e.g. Mod-4 to switch to tag 4 or with the command use
     4. A window can be move to tag i via Mod-Shift-i, i.e. with the  move  com-
     mand.

MONITORS
     The  notion  of a monitor in herbstluftwm is treated much more abstract and
     general than in other window managers: A monitor just is a rectangular part
     of your screen which shows exactly one tag on it.

     Initially there is only one large monitor ranging over your entire screen:

	 $ herbstclient list_monitors
	 0: 1440x900+0+0 with tag "1" [FOCUS]

     The output shows that there is only one monitor with index  0  at	position
     +0+0  of size 1440x900 showing tag 1. In most cases, the herbstluftwm moni-
     tors will match the list of physical monitors. So to add  another	physical
     monitor, you have to perform several steps:

       1. Enable  it,  such  that  it  shows  a part of your screen. You can use
	 xrandr, xinerama or any other tool you like.

      2. Register it in herbstluftwm: Lets assume your new monitor has the reso-
	 lution 1024x768 and is right of your main screen, then you can activate
	 it via:

	     $ herbstclient set_monitors 1440x900+0+0 1024x768+1440+0

	 Alternatively, if xinerama or xrandr works for your setup, simply run:

	     $ herbstclient detect_monitors

     For even more automation, you can enable the setting  auto_detect_monitors.
     For more advanced examples, look at the q3terminal.sh example script, which
     implements a drop-down-terminal like monitor where you can put any applica-
     tion you like.

  herbstluftwm 0.9.6		   2026-04-03		  HERBSTLUFTWM-TUTORI(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=herbstluftwm-tutorial&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help