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
       introduces 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
	   appropriate 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
       selecting herbstluftwm in your login manager or by starting it in your
       ~/.xinitrc, mostly by writing to	your xinitrc (or .xsession on some
       systems):

	   # start herbstluftwm	in locked mode (it will	be unlocked at the end of your
	   # autostart)
	   exec	herbstluftwm --locked

       After logging in	the next time, you will	get a default herbstluftwm
       session.

FIRST START
       After starting herbstluftwm, the	screen is surrounded by	a green	frame
       initially, 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
       application called herbstclient.	Its usual syntax is: herbstclient
       COMMAND [ARGUMENTS]. This calls a certain COMMAND within	your running
       herbstluftwm instance. This causes some effect (which depends on	the
       given COMMAND and ARGUMENTS), 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,
		   COMMAND,	 ARGUMENTS
		    ARGUMENTS

		     V			   V
		    herbstclient	 herbstluftwm
			      ^
		     output,
		    exit-code
		  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
       herbstclient 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 typical 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 something 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 introduction to the central paradigms, continue reading this.

TILING
       Initially there is one frame. Each frame	has one	of the two following
       possible	types:

	1. It serves as	a container for	windows, i.e. it can hold zero up to
	   arbitrarily many windows. Launch several more terminals to see what
	   happens: If there are multiple windows in one frame,	they are
	   aligned below each other. To	change this layout algorithm, press
	   Mod-space to	cycle 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
	   alignment. To navigate to the fresh frame right of the old one
	   press Mod-l.	Press Mod-u to split vertically. The intuitive
	   navigation is:

		      h	(or )			left
		      j	(or )	 means		down
	       Mod +  k	(or )	> focus	 up
		      l	(or )			right

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

				    h (or )			       left
				  j (or	)   means   focus frame	   down
	       Mod +  Shift    +  k (or	)   >  move window    up
		      Control	  l (or	)	    resize frame   right

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

	   $ herbstclient layout
	    horizontal 50% selection=1
	      vertical 70% selection=0
	       vertical: 0x1400009
	       vertical:
	      max: 0x1a00009 [FOCUS]

       Just play with it a bit to understand how it works. You also can
       permanently 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	command.

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 monitors 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
	   resolution 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 application you like.

  herbstluftwm 0.9.5		  2022-07-30		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+14.3.quarterly>

home | help