<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://www.rz-amper.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Dwm_on_CentOS</id>
	<title>Dwm on CentOS - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://www.rz-amper.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Dwm_on_CentOS"/>
	<link rel="alternate" type="text/html" href="http://www.rz-amper.de/wiki/index.php?title=Dwm_on_CentOS&amp;action=history"/>
	<updated>2026-04-19T21:43:28Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in RZ-Amper Wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.rz-amper.de/wiki/index.php?title=Dwm_on_CentOS&amp;diff=29&amp;oldid=prev</id>
		<title>WikiSysop am 10. Juni 2020 um 21:28 Uhr</title>
		<link rel="alternate" type="text/html" href="http://www.rz-amper.de/wiki/index.php?title=Dwm_on_CentOS&amp;diff=29&amp;oldid=prev"/>
		<updated>2020-06-10T21:28:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 10. Juni 2020, 21:28 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{lowercase}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This article is not about '''dmw''' only but about setting up a simple Linux Workstation based on CentOS 7.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This article is not about '''dmw''' only but about setting up a simple Linux Workstation based on CentOS 7.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Packages ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Packages ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>http://www.rz-amper.de/wiki/index.php?title=Dwm_on_CentOS&amp;diff=28&amp;oldid=prev</id>
		<title>WikiSysop: Die Seite wurde neu angelegt: „{{lowercase}} This article is not about '''dmw''' only but about setting up a simple Linux Workstation based on CentOS 7. == Packages == First things first. Yo…“</title>
		<link rel="alternate" type="text/html" href="http://www.rz-amper.de/wiki/index.php?title=Dwm_on_CentOS&amp;diff=28&amp;oldid=prev"/>
		<updated>2020-06-10T21:25:35Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „{{lowercase}} This article is not about &amp;#039;&amp;#039;&amp;#039;dmw&amp;#039;&amp;#039;&amp;#039; only but about setting up a simple Linux Workstation based on CentOS 7. == Packages == First things first. Yo…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{lowercase}}&lt;br /&gt;
This article is not about '''dmw''' only but about setting up a simple Linux Workstation based on CentOS 7.&lt;br /&gt;
== Packages ==&lt;br /&gt;
First things first. You need the following to get packages installed.&lt;br /&gt;
 yum install -y ncurses-term epel-release xterm ftp libX11-devel libXinerama-devel&lt;br /&gt;
If you want to get gnome-terminal version 3.6.2 running you will have to install the following packages.&lt;br /&gt;
 yum install -y glib2-devel gtk2-devel gtk3-devel GConf2-devel vte3-devel gsettings-desktop-schemas-devel libSM-devel itstool&lt;br /&gt;
If you want to use feh (image viewer) you need the followig packages to get it compiled.&lt;br /&gt;
 yum install -y imlib2-devel libcurl-devel libXt libXt-devel libXft libXft-devel&lt;br /&gt;
&lt;br /&gt;
== Personalization ==&lt;br /&gt;
=== Bash and VI ===&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 # .bashrc&lt;br /&gt;
 PS1='\h\w\$ '&lt;br /&gt;
 export EDITOR=vi&lt;br /&gt;
 export TERM=dtterm&lt;br /&gt;
 PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin&lt;br /&gt;
 # User specific aliases and functions&lt;br /&gt;
 alias vi='/usr/bin/vim -X'&lt;br /&gt;
 alias l='/bin/ls --group-directories-first -lah | more'&lt;br /&gt;
&lt;br /&gt;
~/.vim&lt;br /&gt;
 syntax on&lt;br /&gt;
 filetype indent plugin off&lt;br /&gt;
 filetype indent off&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;set number              &amp;quot;show line numbers&lt;br /&gt;
 set nowrap                &amp;quot;dont wrap lines&lt;br /&gt;
 &amp;quot;set linebreak           &amp;quot;wrap lines at convenient points&lt;br /&gt;
 set t_Co=256            &amp;quot;tell the term has 256 colors&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;vertical/horizontal scroll off settings&lt;br /&gt;
 set scrolloff=3&lt;br /&gt;
 set sidescrolloff=7&lt;br /&gt;
 set sidescroll=1&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;mouse support&lt;br /&gt;
 &amp;quot;set mouse=a&lt;br /&gt;
 &amp;quot;set ttymouse=xterm2&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;default indent settings&lt;br /&gt;
 set tabstop=4&lt;br /&gt;
 set shiftwidth=4&lt;br /&gt;
 set softtabstop=4&lt;br /&gt;
 set expandtab&lt;br /&gt;
 &amp;quot;set autoindent&lt;br /&gt;
 &lt;br /&gt;
 set backspace=2&lt;br /&gt;
 set incsearch           &amp;quot;find the next match as we type the search&lt;br /&gt;
 set nohlsearch          &amp;quot;no hilight of search string&lt;br /&gt;
 set ruler&lt;br /&gt;
&lt;br /&gt;
== XDMCP ==&lt;br /&gt;
It seems that XDMCP is working on CentOS 6/6.5 but does not work on CentOS 7 anymore. However, a configuration similar to the following should do the trick.&amp;lt;br /&amp;gt;&lt;br /&gt;
/etc/gdm/custom.conf&lt;br /&gt;
 # GDM configuration storage&lt;br /&gt;
 &lt;br /&gt;
 [daemon]&lt;br /&gt;
 User=gdm&lt;br /&gt;
 Group=gdm&lt;br /&gt;
 &lt;br /&gt;
 [security]&lt;br /&gt;
 DisallowTCP=false&lt;br /&gt;
 AllowRemoteRoot=true&lt;br /&gt;
 &lt;br /&gt;
 [xdmcp]&lt;br /&gt;
 Enable=true&lt;br /&gt;
 DisplayPerHost=10&lt;br /&gt;
 HonorIndirect=false&lt;br /&gt;
 MaxPending=4&lt;br /&gt;
 MaxSessions=32&lt;br /&gt;
 MaxWait=30&lt;br /&gt;
 MaxWaitIndirect=30&lt;br /&gt;
 Port=177&lt;br /&gt;
 &lt;br /&gt;
 [greeter]&lt;br /&gt;
 IncludeAll=true&lt;br /&gt;
 &lt;br /&gt;
 [chooser]&lt;br /&gt;
 Multicast=false&lt;br /&gt;
 &lt;br /&gt;
 [debug]&lt;br /&gt;
 Enable=false&lt;br /&gt;
&lt;br /&gt;
== dwm Configuration ==&lt;br /&gt;
=== config.h ===&lt;br /&gt;
Keep in mind to get patches installed first.&lt;br /&gt;
 /* See LICENSE file for copyright and license details. */&lt;br /&gt;
 &lt;br /&gt;
 /* appearance */&lt;br /&gt;
 // static const char font[] = &amp;quot;-*-courier-*-*-*--14-*-*-*-*-*-*-*&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 static const char font[] = &amp;quot;-*-xbmicons-medium-r-*-*-12-*-*-*-*-*-*-*&amp;quot; &amp;quot;,&amp;quot;&lt;br /&gt;
                            &amp;quot;-*-terminus-medium-r-*-*-12-*-*-*-*-*-*-*&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 #define NUMCOLORS 12&lt;br /&gt;
 static const char colors[NUMCOLORS][ColLast][9] = {&lt;br /&gt;
   // border foreground background&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#999999&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 1 = normal (grey on black)&lt;br /&gt;
   { &amp;quot;#f0c674&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 2 = selected (white on black)&lt;br /&gt;
   { &amp;quot;#dc322f&amp;quot;, &amp;quot;#1d1f21&amp;quot;, &amp;quot;#f0c674&amp;quot; }, // 3 = urgent (black on yellow)&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#282a2e&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 4 = darkgrey on black (for glyphs)&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#1d1f21&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // 5 = black on darkgrey (for glyphs)&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#cc6666&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 6 = red on black&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#b5bd68&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 7 = green on black&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#de935f&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 8 = orange on black&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#f0c674&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // 9 = yellow on darkgrey&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#81a2be&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // A = blue on darkgrey&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#b294bb&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // B = magenta on darkgrey&lt;br /&gt;
   { &amp;quot;#282a2e&amp;quot;, &amp;quot;#8abeb7&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // C = cyan on darkgrey&lt;br /&gt;
 };&lt;br /&gt;
   // border foreground background&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#373b41&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 1 = normal (grey on black)&lt;br /&gt;
   // { &amp;quot;#f0c674&amp;quot;, &amp;quot;#c5c8c6&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 2 = selected (white on black)&lt;br /&gt;
   // { &amp;quot;#dc322f&amp;quot;, &amp;quot;#1d1f21&amp;quot;, &amp;quot;#f0c674&amp;quot; }, // 3 = urgent (black on yellow)&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#282a2e&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 4 = darkgrey on black (for glyphs)&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#1d1f21&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // 5 = black on darkgrey (for glyphs)&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#cc6666&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 6 = red on black&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#b5bd68&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 7 = green on black&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#de935f&amp;quot;, &amp;quot;#1d1f21&amp;quot; }, // 8 = orange on black&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#f0c674&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // 9 = yellow on darkgrey&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#81a2be&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // A = blue on darkgrey&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#b294bb&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // B = magenta on darkgrey&lt;br /&gt;
   // { &amp;quot;#282a2e&amp;quot;, &amp;quot;#8abeb7&amp;quot;, &amp;quot;#282a2e&amp;quot; }, // C = cyan on darkgrey&lt;br /&gt;
   // };&lt;br /&gt;
   //&lt;br /&gt;
 &lt;br /&gt;
 // static const char normbordercolor[] = &amp;quot;#bbbbbb&amp;quot;;&lt;br /&gt;
 // static const char normbgcolor[]     = &amp;quot;#222222&amp;quot;;&lt;br /&gt;
 // static const char normfgcolor[]     = &amp;quot;#999999&amp;quot;;&lt;br /&gt;
 // static const char selbordercolor[]  = &amp;quot;#005577&amp;quot;;&lt;br /&gt;
 // static const char selbgcolor[]      = &amp;quot;#005577&amp;quot;;&lt;br /&gt;
 // static const char selfgcolor[]      = &amp;quot;#ffffff&amp;quot;;&lt;br /&gt;
 static const char normbordercolor[]     = &amp;quot;#073642&amp;quot;;&lt;br /&gt;
 static const char normbgcolor[]         = &amp;quot;#002b36&amp;quot;;&lt;br /&gt;
 static const char normfgcolor[]         = &amp;quot;#fdf6e3&amp;quot;;&lt;br /&gt;
 static const char selbordercolor[]      = &amp;quot;#586e75&amp;quot;;&lt;br /&gt;
 static const char selbgcolor[]          = &amp;quot;#073642&amp;quot;;&lt;br /&gt;
 static const char selfgcolor[]          = &amp;quot;#fdf6e3&amp;quot;;&lt;br /&gt;
 static const unsigned int borderpx  = 0;        /* border pixel of windows */&lt;br /&gt;
 static const unsigned int snap      = 5;       /* snap pixel */&lt;br /&gt;
 static const Bool showbar           = True;     /* False means no bar */&lt;br /&gt;
 static const Bool topbar            = True;     /* False means bottom bar */&lt;br /&gt;
 &lt;br /&gt;
 /* tagging */&lt;br /&gt;
 static const char *tags[] = { &amp;quot;Geile Terminals&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;, &amp;quot;RDP&amp;quot;, &amp;quot;Windows&amp;quot;, &amp;quot;Citrix&amp;quot;, &amp;quot;Mail&amp;quot;, &amp;quot;Web&amp;quot; };&lt;br /&gt;
 &lt;br /&gt;
 static const Rule rules[] = {&lt;br /&gt;
         /* class                  instance          title                   tags mask     isfloating   monitor */&lt;br /&gt;
         { &amp;quot;Gimp&amp;quot;,                 NULL,             NULL,                   0,            True,         -1 },&lt;br /&gt;
         { &amp;quot;Xfce4-terminal&amp;quot;,       NULL,             NULL,                   0,            False,        -1 },&lt;br /&gt;
         { &amp;quot;VirtualBox&amp;quot;,           &amp;quot;VirtualBox&amp;quot;,     NULL,                   0,            True,         -1 },&lt;br /&gt;
         { &amp;quot;Firefox&amp;quot;,              &amp;quot;Navigator&amp;quot;,      NULL,                   1 &amp;lt;&amp;lt; 8,       False,        -1 },&lt;br /&gt;
         { &amp;quot;Firefox&amp;quot;,              &amp;quot;Browser&amp;quot;,        &amp;quot;Firefox Preferences&amp;quot;,  1 &amp;lt;&amp;lt; 8,       True,         -1 },&lt;br /&gt;
         { &amp;quot;Thunderbird&amp;quot;,          NULL,             NULL,                   1 &amp;lt;&amp;lt; 7,       False,        -1 },&lt;br /&gt;
         { &amp;quot;Thunderbird&amp;quot;,          &amp;quot;Msgcompose&amp;quot;,     NULL,                   1 &amp;lt;&amp;lt; 7,       True,         -1 },&lt;br /&gt;
         { &amp;quot;Wfica&amp;quot;,                NULL,             NULL,                   1 &amp;lt;&amp;lt; 6,       True,         -1 },&lt;br /&gt;
         { &amp;quot;xfreerdp&amp;quot;,             NULL,             NULL,                   1 &amp;lt;&amp;lt; 4,       True,         -1 },&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 /* layout(s) */&lt;br /&gt;
 static const float mfact      = 0.55; /* factor of master area size [0.05..0.95] */&lt;br /&gt;
 static const int nmaster      = 1;    /* number of clients in master area */&lt;br /&gt;
 static const Bool resizehints = True; /* True means respect size hints in tiled resizals */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;bstack.c&amp;quot;&lt;br /&gt;
 #include &amp;quot;bstackhoriz.c&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 static const Layout layouts[] = {&lt;br /&gt;
        /* symbol     arrange function */&lt;br /&gt;
        { &amp;quot;[]=&amp;quot;,      tile },    /* first entry is default */&lt;br /&gt;
        { &amp;quot;&amp;gt;&amp;lt;&amp;gt;&amp;quot;,      NULL },    /* no layout function means floating behavior */&lt;br /&gt;
        { &amp;quot;[M]&amp;quot;,      monocle },&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 /* key definitions */&lt;br /&gt;
 #define MODKEY Mod1Mask&lt;br /&gt;
 #define TAGKEYS(KEY,TAG) \&lt;br /&gt;
        { MODKEY,                       KEY,      view,           {.ui = 1 &amp;lt;&amp;lt; TAG} }, \&lt;br /&gt;
        { MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 &amp;lt;&amp;lt; TAG} }, \&lt;br /&gt;
        { MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 &amp;lt;&amp;lt; TAG} }, \&lt;br /&gt;
        { MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 &amp;lt;&amp;lt; TAG} },&lt;br /&gt;
 &lt;br /&gt;
 /* helper for spawning shell commands in the pre dwm-5.0 fashion */&lt;br /&gt;
 #define SHCMD(cmd) { .v = (const char*[]){ &amp;quot;/bin/sh&amp;quot;, &amp;quot;-c&amp;quot;, cmd, NULL } }&lt;br /&gt;
 &lt;br /&gt;
 /* commands */&lt;br /&gt;
 static const char *dmenucmd[] = { &amp;quot;dmenu_run&amp;quot;, &amp;quot;-fn&amp;quot;, font, &amp;quot;-nb&amp;quot;, normbgcolor, &amp;quot;-nf&amp;quot;, normfgcolor, &amp;quot;-sb&amp;quot;, selbgcolor, &amp;quot;-sf&amp;quot;, selfgcolor, NULL };&lt;br /&gt;
 static const char *termcmd[]  = { &amp;quot;gnome-terminal&amp;quot;, NULL };&lt;br /&gt;
 &lt;br /&gt;
 static Key keys[] = {&lt;br /&gt;
        /* modifier                     key        function        argument */&lt;br /&gt;
        { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },&lt;br /&gt;
        { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = termcmd } },&lt;br /&gt;
        { MODKEY,                       XK_b,      togglebar,      {0} },&lt;br /&gt;
        { MODKEY,                       XK_j,      focusstack,     {.i = +1 } },&lt;br /&gt;
        { MODKEY,                       XK_k,      focusstack,     {.i = -1 } },&lt;br /&gt;
        { MODKEY,                       XK_i,      incnmaster,     {.i = +1 } },&lt;br /&gt;
        { MODKEY,                       XK_d,      incnmaster,     {.i = -1 } },&lt;br /&gt;
        { MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },&lt;br /&gt;
        { MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },&lt;br /&gt;
        { MODKEY,                       XK_Return, zoom,           {0} },&lt;br /&gt;
        { MODKEY,                       XK_Tab,    view,           {0} },&lt;br /&gt;
        { MODKEY,                       XK_q,      killclient,     {0} },&lt;br /&gt;
        { MODKEY,                       XK_t,      setlayout,      {.v = &amp;amp;layouts[0]} },&lt;br /&gt;
        { MODKEY,                       XK_f,      setlayout,      {.v = &amp;amp;layouts[1]} },&lt;br /&gt;
        { MODKEY,                       XK_m,      setlayout,      {.v = &amp;amp;layouts[2]} },&lt;br /&gt;
        { MODKEY,                       XK_space,  setlayout,      {0} },&lt;br /&gt;
        { MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },&lt;br /&gt;
        { MODKEY,                       XK_0,      view,           {.ui = ~0 } },&lt;br /&gt;
        { MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } },&lt;br /&gt;
        { MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },&lt;br /&gt;
        { MODKEY,                       XK_period, focusmon,       {.i = +1 } },&lt;br /&gt;
        { MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },&lt;br /&gt;
        { MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },&lt;br /&gt;
        TAGKEYS(                        XK_1,                      0)&lt;br /&gt;
        TAGKEYS(                        XK_2,                      1)&lt;br /&gt;
        TAGKEYS(                        XK_3,                      2)&lt;br /&gt;
        TAGKEYS(                        XK_4,                      3)&lt;br /&gt;
        TAGKEYS(                        XK_5,                      4)&lt;br /&gt;
        TAGKEYS(                        XK_6,                      5)&lt;br /&gt;
        TAGKEYS(                        XK_7,                      6)&lt;br /&gt;
        TAGKEYS(                        XK_8,                      7)&lt;br /&gt;
        TAGKEYS(                        XK_9,                      8)&lt;br /&gt;
        { MODKEY|ShiftMask,             XK_q,      quit,           {0} },&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 /* button definitions */&lt;br /&gt;
 /* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */&lt;br /&gt;
 static Button buttons[] = {&lt;br /&gt;
        /* click                event mask      button          function        argument */&lt;br /&gt;
        { ClkLtSymbol,          0,              Button1,        setlayout,      {0} },&lt;br /&gt;
        { ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &amp;amp;layouts[2]} },&lt;br /&gt;
        { ClkWinTitle,          0,              Button2,        zoom,           {0} },&lt;br /&gt;
        { ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },&lt;br /&gt;
        { ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },&lt;br /&gt;
        { ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },&lt;br /&gt;
        { ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },&lt;br /&gt;
        { ClkTagBar,            0,              Button1,        view,           {0} },&lt;br /&gt;
        { ClkTagBar,            0,              Button3,        toggleview,     {0} },&lt;br /&gt;
        { ClkTagBar,            MODKEY,         Button1,        tag,            {0} },&lt;br /&gt;
        { ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
=== X Session ===&lt;br /&gt;
Create a .desktop file so you can choose '''dwm''' from the gdm greeter.&lt;br /&gt;
/usr/share/xsessions/dwm.desktop&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Name=dwm&lt;br /&gt;
 Comment=The dwm tiling window manager&lt;br /&gt;
 Exec=/usr/local/bin/dwm-wrapper&lt;br /&gt;
 # no icon yet, only the top three are currently used&lt;br /&gt;
 Icon=&lt;br /&gt;
 Type=Application&lt;br /&gt;
&lt;br /&gt;
=== dwm-wrapper ===&lt;br /&gt;
The .desktop file will call the dwm-wrapper, which sets the top menu bar.&lt;br /&gt;
/usr/local/bin/dwm-wrapper&lt;br /&gt;
 #! /bin/sh&lt;br /&gt;
 # setxkbmap -option terminate:ctrl_alt_bksp&lt;br /&gt;
 # feh --bg-scale /home/shaun/img/arch.png&lt;br /&gt;
 # conky -x 0 -y 0 -d&lt;br /&gt;
 # Colour codes from dwm/config.h&lt;br /&gt;
 colour_gry=&amp;quot;\x01&amp;quot; # grey on black&lt;br /&gt;
 colour_wht=&amp;quot;\x02&amp;quot; # white on black&lt;br /&gt;
 colour_dgry=&amp;quot;\x04&amp;quot; # darkgrey on black&lt;br /&gt;
 colour_blk=&amp;quot;\x05&amp;quot; # black on darkgrey&lt;br /&gt;
 colour_red=&amp;quot;\x06&amp;quot; # colour_red on black&lt;br /&gt;
 colour_grn=&amp;quot;\x07&amp;quot; # green on black&lt;br /&gt;
 colour_dylw=&amp;quot;\x08&amp;quot; # orange on black&lt;br /&gt;
 colour_ylw=&amp;quot;\x09&amp;quot; # yellow on black&lt;br /&gt;
 colour_blu=&amp;quot;\x0A&amp;quot; # colour_blue on darkgrey&lt;br /&gt;
 colour_mag=&amp;quot;\x0B&amp;quot; # colour_magenta on darkgrey&lt;br /&gt;
 colour_cyn=&amp;quot;\x0C&amp;quot; # cyan on darkgrey&lt;br /&gt;
 &lt;br /&gt;
 # Icon glyphs from font xbmicons.pcf&lt;br /&gt;
 glyph_msc=&amp;quot;\uE00E&amp;quot;&lt;br /&gt;
 glyph_cpu=&amp;quot;\uE00F&amp;quot;&lt;br /&gt;
 glyph_mem=&amp;quot;\uE010&amp;quot;&lt;br /&gt;
 glyph_dl=&amp;quot;\uE011&amp;quot;&lt;br /&gt;
 glyph_ul=&amp;quot;\uE012&amp;quot;&lt;br /&gt;
 glyph_com=&amp;quot;\uE013&amp;quot;&lt;br /&gt;
 glyph_eml=&amp;quot;\uE014&amp;quot;&lt;br /&gt;
 glyph_vol=&amp;quot;\uE015&amp;quot;&lt;br /&gt;
 glyph_tim=&amp;quot;\uE016&amp;quot;&lt;br /&gt;
 glyph_tor=&amp;quot;\uE017&amp;quot;&lt;br /&gt;
 sep_solid=&amp;quot;\uE01A&amp;quot;&lt;br /&gt;
 sep_line=&amp;quot;\uE01B&amp;quot;&lt;br /&gt;
 sep_bar=&amp;quot;\uE020&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 print_mem_used() {&lt;br /&gt;
     mem_used=&amp;quot;$(free -m | awk 'NR==3 {print $3}')&amp;quot;&lt;br /&gt;
     echo -ne &amp;quot;${sep_line} ${glyph_mem} ${mem_used}M &amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 print_volume() {&lt;br /&gt;
     volume=&amp;quot;$(amixer get IEC958 | tail -n1 | sed -r 's/.*\[(.*)%\].*/\1/')&amp;quot;&lt;br /&gt;
     echo -ne &amp;quot;${colour_dgry}${sep_solid}${colour_mag} ${glyph_vol} ${volume}% &amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 print_datetime() {&lt;br /&gt;
     datetimeloc=&amp;quot;$(date &amp;quot;+%A %d.%m.%Y %Z=%H:%M&amp;quot;)&amp;quot;&lt;br /&gt;
     datetimeusc=&amp;quot;$(TZ=US/Central date &amp;quot;+%Z=%H:%M&amp;quot;)&amp;quot;&lt;br /&gt;
     datetime=&amp;quot;$(date &amp;quot;+%a %d %b ${sep_line} %H:%M&amp;quot;)&amp;quot;&lt;br /&gt;
     echo -ne &amp;quot;${colour_blk}${sep_solid}${colour_wht} ${glyph_tim} ${datetimeloc} ${datetimeusc}&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 rx_old=$(cat /sys/class/net/em1/statistics/rx_bytes)&lt;br /&gt;
 tx_old=$(cat /sys/class/net/em1/statistics/tx_bytes)&lt;br /&gt;
 &lt;br /&gt;
 while true; do&lt;br /&gt;
     # get new cpu idle and total usage&lt;br /&gt;
     eval $(awk '/^cpu /{print &amp;quot;cpu_idle_now=&amp;quot; $5 &amp;quot;; cpu_total_now=&amp;quot; $2+$3+$4+$5 }' /proc/stat)&lt;br /&gt;
     cpu_interval=$((cpu_total_now-${cpu_total_old:-0}))&lt;br /&gt;
 &lt;br /&gt;
     # calculate cpu usage (%)&lt;br /&gt;
     let cpu_used=&amp;quot;100 * ($cpu_interval - ($cpu_idle_now-${cpu_idle_old:-0})) / $cpu_interval&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     # get new rx/tx counts&lt;br /&gt;
     rx_now=$(cat /sys/class/net/em1/statistics/rx_bytes)&lt;br /&gt;
     tx_now=$(cat /sys/class/net/em1/statistics/tx_bytes)&lt;br /&gt;
 &lt;br /&gt;
     # calculate the rate (K) and total (M)&lt;br /&gt;
     let rx_rate=($rx_now-$rx_old)/1024&lt;br /&gt;
     let tx_rate=($tx_now-$tx_old)/1024&lt;br /&gt;
     # let rx_total=$rx_now/1048576&lt;br /&gt;
     # let tx_total=$tx_now/1048576&lt;br /&gt;
 &lt;br /&gt;
     # output vars&lt;br /&gt;
     print_cpu_used() {&lt;br /&gt;
         printf &amp;quot;%-14b&amp;quot; &amp;quot;${colour_dgry}${sep_solid}${colour_blu} ${glyph_cpu} ${cpu_used}%&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     print_rx_rate() {&lt;br /&gt;
         printf &amp;quot;%-15b&amp;quot; &amp;quot;${colour_blk}${sep_solid}${colour_grn} ${glyph_dl} ${rx_rate}K&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     print_tx_rate() {&lt;br /&gt;
         printf &amp;quot;%-14b&amp;quot; &amp;quot;${colour_gry}${sep_line}${colour_red} ${glyph_ul} ${tx_rate}K&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     # Pipe to status bar, not indented due to printing extra spaces/tabs&lt;br /&gt;
     xsetroot -name &amp;quot;$(print_cpu_used)$(print_mem_used)\&lt;br /&gt;
     $(print_rx_rate)$(print_tx_rate)\&lt;br /&gt;
     $(print_volume)\&lt;br /&gt;
     $(print_datetime)&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     # reset old rates&lt;br /&gt;
     rx_old=$rx_now&lt;br /&gt;
     tx_old=$tx_now&lt;br /&gt;
     cpu_idle_old=$cpu_idle_now&lt;br /&gt;
     cpu_total_old=$cpu_total_now&lt;br /&gt;
 &lt;br /&gt;
     # loop stats every 1 second&lt;br /&gt;
     sleep 1s&lt;br /&gt;
 done &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 /bin/xset fp+ /usr/share/fonts/terminus &amp;amp;&lt;br /&gt;
 /bin/xset fp+ /usr/share/fonts/terminus2 &amp;amp;&lt;br /&gt;
 /bin/xset fp+ /usr/share/fonts/xbmicons_pcf &amp;amp;&lt;br /&gt;
 /bin/xset fp rehash &amp;amp;&lt;br /&gt;
 /usr/local/bin/feh --bg-scale /usr/share/backgrounds/funeral.jpg &amp;amp;&lt;br /&gt;
 /bin/sleep 1; /bin/xset dpms force off &amp;amp;&lt;br /&gt;
 /bin/xrandr --output DP2 --rotate left&lt;br /&gt;
 &lt;br /&gt;
 exec /usr/local/bin/dwm&lt;br /&gt;
&lt;br /&gt;
=== .Xresources ===&lt;br /&gt;
In my .Xresources, I'm setting the UXTerm color to white on black, as well as fixing a bug with the Alt key in SSH sessions. The last line is to set the window URGENT flag when the window uses the system bell.&lt;br /&gt;
 UXTerm*eightBitInput: false&lt;br /&gt;
 UXTerm*metaSendsEscape: true&lt;br /&gt;
 UXTerm*reverseVideo: true&lt;br /&gt;
 UXTerm*bellIsUrgent: true&lt;br /&gt;
&lt;br /&gt;
=== Tweaking dwm ===&lt;br /&gt;
==== Rules ====&lt;br /&gt;
What does ‘rules’ do?&lt;br /&gt;
&lt;br /&gt;
The rules array allows to treat certain applications (clients) in a special way. A rule has a matching and an action part. When a new client appears (sends a maprequest), it is matched against the rules based on its class, instance (WM_CLASS) and title (WM_NAME) properties and then the given tag and floating mode setting actions are performed. The default tag mask is 0, which means the currently viewed tags, and the default mode is tiled so isfloating is False. Example from the default config:&lt;br /&gt;
 static Rule rules[] = {&lt;br /&gt;
    /* class      instance    title       tags mask     isfloating   monitor */&lt;br /&gt;
    { &amp;quot;Gimp&amp;quot;,     NULL,       NULL,       0,            True,        -1 },&lt;br /&gt;
    { &amp;quot;Firefox&amp;quot;,  NULL,       NULL,       1 &amp;lt;&amp;lt; 8,       True,        -1 },&lt;br /&gt;
 };&lt;br /&gt;
These rules make every Gimp and Firefox window floating and makes Firefox windows appear on tag 9 instead of the currently viewed tags.&lt;br /&gt;
==== How does the matching work? ====&lt;br /&gt;
A client is matched if its properties contain the given strings as substrings (case-sensitively) or NULL is given (which means anything is matched there).&lt;br /&gt;
More than one rule can be applied to a client, the rules are matched in order.&lt;br /&gt;
==== How to check these properties of a client? ====&lt;br /&gt;
The xprop utility can be used to get this information: WM_CLASS is (instance, class) WM_NAME (or _NET_WM_NAME) is the title.&lt;br /&gt;
For example this shell script prints the relevant properties of the selected client (if the properties does not contain ‘=’ or ‘,’):&lt;br /&gt;
 xprop |awk '&lt;br /&gt;
    /^WM_CLASS/{sub(/.* =/, &amp;quot;instance:&amp;quot;); sub(/,/, &amp;quot;\nclass:&amp;quot;); print}&lt;br /&gt;
    /^WM_NAME/{sub(/.* =/, &amp;quot;title:&amp;quot;); print}'&lt;br /&gt;
&lt;br /&gt;
== Hints and Tips ==&lt;br /&gt;
Battery status&lt;br /&gt;
 upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep 'percentage' | sed -r 's/^\s*percentage:\s*([0-9]*)\.?.*$/bat: \1%/'&lt;br /&gt;
 upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep 'state' | awk '{print $2}'&lt;br /&gt;
&lt;br /&gt;
== Links to usefull web sites ==&lt;br /&gt;
* [https://wiki.archlinux.org/index.php/Dwm#Customizing_config.h|dwm -ArchWiki]&lt;br /&gt;
* [https://wiki.archlinux.org/index.php/Display_Power_Management_Signaling|Display Power Management Signaling]&lt;br /&gt;
* [http://http://ptspts.blogspot.be/2009/10/screen-blanking-dpms-screen-saver.html|Screen blanking, DPMS, screen saver control and timeout settings on X11]&lt;br /&gt;
* [https://github.com/chjj/dwm/blob/master/dwm-status|dwm status bar]&lt;br /&gt;
https://github.com/chjj/dwm/blob/master/dwm-status&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
</feed>