https://wiki.archlinux.org/api.php?action=feedcontributions&user=Stlarch&feedformat=atomArchWiki - User contributions [en]2024-03-29T07:59:21ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Snapwm&diff=211017Snapwm2012-06-23T15:00:44Z<p>Stlarch: /* Icons */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky. You can also use a font like [https://aur.archlinux.org/packages.php?ID=58930 stlarch_font] that just contains icons. You can use it in combination with another font using a comma to seperate them in your config.h or rc.conf:<br />
static const char defaultfontlist[] = "-*-stlarch-medium-r-*-*-10-*-*-*-*-*-*-*,-*-terminus-medium-r-*-*-12-*-*-*-*-*-*-*";<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.rc.conf file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the AUR ===<br />
<br />
Download {{AUR|snapwm-git}} from the [[Arch User Repository|AUR]]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The {{ic|sample.rc.conf}} will be installed in {{ic|/usr/share/snapwm-git/}}. Create the directory {{ic|~/.config/snapwm/}}:<br />
$ mkdir -p ~/.config/snapwm/<br />
Copy {{ic|/usr/share/snapwm-git/sample.rc.conf}} to {{ic|~/.config/snapwm/rc.conf}} and edit to suit.<br />
<br />
=== Using Git ===<br />
<br />
The latest version can be downloaded using [[Git]]. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with {{ic|git pull}}. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you will notice that in moetunes' GitHub, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like {{ic|~/bin}} for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an auto-complete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210477Snapwm2012-06-19T20:35:39Z<p>Stlarch: </p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.rc.conf file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the AUR ===<br />
<br />
Download {{AUR|snapwm-git}} from the [[Arch User Repository|AUR]]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The {{ic|sample.rc.conf}} will be installed in {{ic|/usr/share/snapwm-git/}}. Create the directory {{ic|~/.config/snapwm/}}:<br />
$ mkdir -p ~/.config/snapwm/<br />
Copy {{ic|/usr/share/snapwm-git/sample.rc.conf}} to {{ic|~/.config/snapwm/rc.conf}} and edit to suit.<br />
<br />
=== Using Git ===<br />
<br />
The latest version can be downloaded using [[Git]]. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with {{ic|git pull}}. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you will notice that in moetunes' GitHub, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like {{ic|~/bin}} for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an auto-complete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210469Snapwm2012-06-19T18:08:13Z<p>Stlarch: /* Using the AUR */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.rc.conf file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the [[AUR]] ===<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$ mkdir -p ~/.config/snapwm/<br />
Copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
<br />
=== Using [[Git]] ===<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210468Snapwm2012-06-19T18:07:55Z<p>Stlarch: /* Using the AUR */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.rc.conf file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the [[AUR]] ===<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$ mkdir -p ~/.config/snapwm/<br />
copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
<br />
=== Using [[Git]] ===<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210467Snapwm2012-06-19T18:07:32Z<p>Stlarch: /* Using the AUR */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.rc.conf file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the [[AUR]] ===<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$ mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
<br />
=== Using [[Git]] ===<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210466Snapwm2012-06-19T18:06:45Z<p>Stlarch: /* Using the AUR */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.rc.conf file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the [[AUR]] ===<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$ mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
=== Using [[Git]] ===<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210465Snapwm2012-06-19T18:05:42Z<p>Stlarch: /* rc file */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.rc.conf file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the [[AUR]] ===<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
<br />
=== Using [[Git]] ===<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210457Snapwm2012-06-19T17:24:55Z<p>Stlarch: /* Installation */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the [[AUR]] ===<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
<br />
=== Using [[Git]] ===<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210456Snapwm2012-06-19T17:23:30Z<p>Stlarch: /* Installation */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
'''Using the [[AUR]]'''<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
<br />
'''Using [[Git]]'''<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210455Snapwm2012-06-19T17:23:05Z<p>Stlarch: /* Installation */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
'''Using the [[AUR]]'''<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
<br />
'''Using [[Git]]'''<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210454Snapwm2012-06-19T17:22:45Z<p>Stlarch: /* Using Git */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
'''Using the [[AUR]]'''<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
'''Using [[Git]]'''<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210453Snapwm2012-06-19T17:22:11Z<p>Stlarch: /* Using the AUR */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
'''Using the [[AUR]]'''<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
== Using [[Git]] ==<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210452Snapwm2012-06-19T17:20:17Z<p>Stlarch: /* rc file */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to $HOME/.config/snapwm/rc.conf and edited. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
== Using the [[AUR]] ==<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
== Using [[Git]] ==<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210451Snapwm2012-06-19T17:17:38Z<p>Stlarch: /* Using the AUR */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to .snapwmrc in $HOME and edited, with the correct path defined in config.h. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
== Using the [[AUR]] ==<br />
<br />
Download [https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
== Using [[Git]] ==<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210450Snapwm2012-06-19T17:17:07Z<p>Stlarch: /* Using the AUR */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to .snapwmrc in $HOME and edited, with the correct path defined in config.h. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
== Using the [[AUR]] ==<br />
<br />
Download [//https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
== Using [[Git]] ==<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210449Snapwm2012-06-19T17:16:06Z<p>Stlarch: /* Using git */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to .snapwmrc in $HOME and edited, with the correct path defined in config.h. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
== Using the [[AUR]] ==<br />
<br />
Download [http://https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
<br />
== Using [[Git]] ==<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=210448Snapwm2012-06-19T17:12:31Z<p>Stlarch: /* Installation */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has five layout modes: vertical, horizontal, grid, fullscreen and center stacking. The default layout for all desktops is set in the config.h file and the rc file, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in the config.h and rc file, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
|Master| |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
With three or four windows open the master window and the window *W*<br />
can be resized. There are no useless gaps.<br />
<br />
=== Center Stacking ===<br />
<br />
-------------<br />
| ___ |<br />
| |___| |<br />
| ___ |<br />
| |___||<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*The window *W* at the top of the stack can be resized.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the config.h and rc file to have the bar shown at the top, the bottom or not at all. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the bar are defined in defaultbarcolor[] in config.h and in BARTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the text in the bar are defined in defaulttextcolor[] in config.h and in TEXTTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : the current desktop font in the switcher and also the first color for external text.<br />
*'''Color 1''' : the unfocused desktops font in the switcher and also the second color for external text.<br />
*'''Color 2''' : the unfocused desktops with opened windows font in the switcher and also the third color for external text.<br />
*'''Color 3''' : the focused window name font and also the fourth color for external text.<br />
*'''Colors 4, 5, and 6''' : the fourth, fifth and sixth colors for external text.<br />
<br />
The colors for the windows are defined in defaultwincolor[] in config.h and in WINDOWTHEME in .snapwmrc.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in snapwmrc/config.h or your script/conky.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done first by copying config.h.def to config.h, editing config.h and running make. Most options are also in the rc file.<br />
<br />
The defined number of desktops must match the DESKTOPCHANGE keys<br />
<br />
After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't necessarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h.def. You can change them to suit, of course.<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
So make the command and the keyboard shortcut in the appropriate sections in the config.h.<br />
const char* xtermcmd[] = {"xterm","-bg","black","-fg","white",NULL};<br />
<br />
{ MOD1, XK_x, spawn, {.com = xtermcmd}},<br />
<br />
=== Window Manager Functions ===<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + c/f/g/h/v<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
=== rc file ===<br />
snapwm comes with a rc file that can implement changes to most options on the fly, without the need for recompiling and which will take precedence over the compiled in options at startup. There is a sample.snapwmrc.file included that should be copied to .snapwmrc in $HOME and edited, with the correct path defined in config.h. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
== Using the [[AUR]] ==<br />
<br />
Download [http://https://aur.archlinux.org/packages.php?ID=60164 snapwm-git]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
{{Note|If you have a working config.h, you can copy it to the saved PKGBUILD's directory before running makepkg and it will be used, or else the default config.h.def will be used.}}<br />
The sample.rc.conf will be installed in /usr/share/snapwm-git/. Create the directory $HOME/.config/snapwm/:<br />
$mkdir -p ~/.config/snapwm/<br />
and copy /usr/share/snapwm-git/sample.rc.conf to ~/.config/snapwm/rc.conf and edit to suit.<br />
The README.md is located in /usr/share/doc/snapwm-git/.<br />
<br />
<br />
== Using [[git]] ==<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The config.h.def comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
const char* dmenucmd[] = {"dmenu_run","-i","-nb","#666622","-nf","white",NULL};<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Window_manager&diff=195323Window manager2012-04-20T07:27:36Z<p>Stlarch: /* Dynamic window managers */</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
{{i18n|Window Manager}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|A window manager is system software that controls the placement and appearance of windows within a windowing system in a graphical user interface. This article provides a general overview and listing of popular window managers.}}<br />
{{Article summary heading|Overview}}<br />
{{Article summary text|{{Graphical user interface overview}}}}<br />
{{Article summary end}}<br />
<br />
A window manager (WM) is one component of a system's graphical user interface (GUI). Users may prefer to install a full-fledged [[Desktop Environment]], which provides a complete user interface, including icons, windows, toolbars, wallpapers, and desktop widgets.<br />
<br />
== X Window System == <!-- please keep this section synchronized with [[Desktop Environment#X Window System]] --><br />
The [[Wikipedia:X Window System|X Window System]] provides the foundation for a graphical user interface. Prior to installing a window manager, a functional X server installation is required. See [[Xorg]] for detailed information.<br />
<br />
:''X provides the basic framework, or primitives, for building such GUI environments: drawing and moving windows on the screen and interacting with a mouse and keyboard. X does not mandate the user interface — individual client programs known as window managers handle this. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces. X is built as an additional (application) abstraction layer on top of the operating system kernel.''<br />
<br />
The user is free to configure their GUI environment in any number of ways.<br />
<br />
==Window managers==<br />
Window managers (WMs) are X clients that provide the border around a window. The window manager controls the appearance of an application and how it is managed: the border, titlebar, size, and ability to resize a window are handled by window managers. Many window managers provide other functionality such as places to stick [http://dockapps.windowmaker.org/ dockapps] like [[Window Maker]], a menu to start programs, menus to configure the WM and other useful things. [[Fluxbox]], for example, has the ability to tab windows.<br />
<br />
Window managers generally do not provide ''extras'' like desktop icons, which are commonly seen in [[desktop environment]]s (though it is possible to add icons in a WM with another program).<br />
<br />
Because of the lack of ''extras'', WMs are much lighter on system resources.<br />
<br />
===Types===<br />
*'''Stacking''' (aka floating) window managers provide the traditional desktop metaphor used in commercial operating systems like Windows and OS X. Windows act like pieces of paper on a desk, and can be stacked on top of each other.<br />
*'''Tiling''' window managers "tile" the windows so that none are overlapping. They usually make very extensive use of key-bindings and have less (or no) reliance on the mouse. Tiling window managers may be manual, offer predefined layouts, or both.<br />
*'''Dynamic''' window managers can dynamically switch between tiling or floating window layout.<br />
<br />
* [[:Category:Stacking WMs (English)]]<br />
* [[:Category:Tiling WMs (English)]]<br />
* [[:Category:Dynamic WMs (English)]]<br />
<br />
See [[Comparison of Tiling Window Managers]] and [[Wikipedia:Comparison of X window managers]] for comparison of window managers.<br />
<br />
== List of window managers==<br />
<br />
=== Stacking WMs ===<br />
<br />
*{{App|aewm|aewm is a modern, minimal window manager for X11. It is controlled entirely with the mouse, but contains no visible UI apart from window frames. The command set is sort of like vi: designed back in the dawn of time (1997) to squeeze speed out of low-memory machines, completely unintuitive and new-user-hostile, but quick and elegant in its own way.|http://www.red-bean.com/decklin/aewm/|{{AUR|aewm}} [unsupported]}}<br />
<br />
*{{App|[[Wikipedia:AfterStep|AfterStep]]|AfterStep is a window manager for the Unix X Window System. Originally based on the look and feel of the NeXTStep interface, it provides end users with a consistent, clean, and elegant desktop. The goal of AfterStep development is to provide for flexibility of desktop configuration, improving aestetics, and efficient use of system resources.|http://www.afterstep.org/|{{AUR|afterstep}} [unsupported]}}<br />
<br />
*{{App|[[Wikipedia:Blackbox|Blackbox]]|Blackbox is the fast, lightweight window manager for the X Window System you have been looking for, without all those annoying library dependencies. Blackbox is built with C++ and contains completely original code (even though the graphics implementation is similar to that of WindowMaker).|http://blackboxwm.sourceforge.net/|{{Pkg|blackbox}}}}<br />
<br />
*{{App|[[Compiz]]|Compiz is an OpenGL compositing manager that uses GLX_EXT_texture_from_pixmap for binding redirected top-level windows to texture objects. It has a flexible plug-in system and it is designed to run well on most graphics hardware.|http://www.compiz.org/|{{Pkg|compiz-core}}}}<br />
<br />
*{{App|[[Enlightenment]]|Enlightenment is not just a window manager for Linux/X11 and others, but also a whole suite of libraries to help you create beautiful user interfaces with much less work than doing it the old fashioned way and fighting with traditional toolkits, not to mention a traditional window manager.|http://www.enlightenment.org/|{{Pkg|enlightenment}}}}<br />
<br />
*{{App|[[evilwm]]|A minimalist window manager for the X Window System. 'Minimalist' here does not mean it is too bare to be usable - it just means it omits a lot of the stuff that make other window managers ''un''usable.|http://www.6809.org.uk/evilwm/|{{Pkg|evilwm}}}}<br />
<br />
*{{App|Firebox|Firebox is yet another Window Manager for X11 systems. Still in development, it is not forked from Openbox, Fluxbox, Blackbox or even Hackedbox; it is written from scratch, in C language.|http://firebox.intuxication.org/|{{AUR|firebox}} [unsupported]}}<br />
<br />
*{{App|[[Fluxbox]]|Fluxbox is a window manager for X that was based on the Blackbox 0.61.1 code. It is very light on resources and easy to handle but yet full of features to make an easy and extremely fast desktop experience. It is built using C++ and licensed under the MIT License.|http://www.fluxbox.org/|{{Pkg|fluxbox}}}}<br />
<br />
*{{App|[[Wikipedia:FLWM|Flwm]]|Flwm is my attempt to combine the best ideas I have seen in several window managers. The primary influence and code base is from wm2 by Chris Cannam.|http://flwm.sourceforge.net/|{{AUR|flwm}} [unsupported]}}<br />
<br />
*{{App|[[FVWM]]|FVWM is an extremely powerful ICCCM-compliant multiple virtual desktop window manager for the X Window system. Development is active, and support is excellent.|http://www.fvwm.org/|{{Pkg|fvwm}}}}<br />
<br />
*{{App|[[Wikipedia:Hackedbox|Hackedbox]]|Hackedbox is a stripped down version of Blackbox - The X11 Window Manager. The toolbar and Slit have been removed. The goal of Hackedbox is to be a small "feature-set" window manager, with no bloat. There are no plans to add any functionality, only bugfixes and speed enhancements whenever possible.|http://scrudgeware.org/projects/Hackedbox/|{{AUR|hackedbox}} [unsupported]}}<br />
<br />
*{{App|[[IceWM]]|IceWM is a window manager for the X Window System. The goal of IceWM is speed, simplicity, and not getting in the user's way.|http://www.icewm.org/|{{Pkg|icewm}}}}<br />
<br />
*{{App|[[JWM]]|JWM is a window manager for the X11 Window System. JWM is written in C and uses only Xlib at a minimum.|http://joewing.net/programs/jwm/|{{Pkg|jwm}}}}<br />
<br />
*{{App|Karmen|Karmen is a window manager for X, written by Johan Veenhuizen. It is designed to "just work." There is no configuration file and no library dependencies other than Xlib. The input focus model is click-to-focus. Karmen aims at ICCCM and EWMH compliance.|http://karmen.sourceforge.net/|{{AUR|karmen}} [unsupported]}}<br />
<br />
*{{App|[[Wikipedia:KWin|KWin]]|KWin, the standard KDE window manager in KDE 4.0, ships with the first version of built-in support for compositing, making it also a compositing manager. This allows KWin to provide advanced graphical effects, similar to Compiz, while also providing all the features from previous KDE releases (such as very good integration with the rest of KDE, advanced configurability, focus stealing prevention, a well-tested window manager, robust handling of misbehaving applications/toolkits, etc.).|http://techbase.kde.org/Projects/KWin|{{Pkg|kdebase-workspace}}}}<br />
<br />
*{{App|[[Wikipedia:Lightweight window manager|lwm]]|lwm is a window manager for X that tries to keep out of your face. There are no icons, no button bars, no icon docks, no root menus, no nothing: if you want all that, then other programs can provide it. There is no configurability either: if you want that, you want a different window manager; one that helps your operating system in its evil conquest of your disc space and its annexation of your physical memory.|http://www.jfc.org.uk/software/lwm.html|{{Pkg|lwm}}}}<br />
<br />
*{{App|[[Wikipedia:Metacity|Metacity]]|This is not the Metacity home page. There is no Metacity home page. This is for the same reason there is no flashy logo: Metacity strives to be quiet, small, stable, get on with its job, and stay out of your attention.|http://blogs.gnome.org/metacity/|{{Pkg|metacity}}}}<br />
<br />
*{{App|[[Openbox]]|Openbox is a highly configurable, next generation window manager with extensive standards support. The *box visual style is well known for its minimalistic appearance. Openbox uses the *box visual style, while providing a greater number of options for theme developers than previous *box implementations. The theme documentation describes the full range of options found in Openbox themes.|http://openbox.org/wiki/Main_Page|{{Pkg|openbox}}}}<br />
<br />
*{{App|[[Pawm]]|Pawm is a window manager for the X Window system. So it is not a 'desktop' and does not offer you a huge pile of useless options, just the facilities needed to run your X applications and at the same time having a friendly and easy to use interface.|http://www.pleyades.net/pawm/|{{Pkg|pawm}}}}<br />
<br />
*{{App|[[pekwm]]|pekwm is a window manager that once upon a time was based on the aewm++ window manager, but it has evolved enough that it no longer resembles aewm++ at all. It has a much expanded feature-set, including window grouping (similar to Ion, PWM, or Fluxbox), auto-properties, Xinerama, keygrabber that supports keychains, and much more.|http://www.pekwm.org/projects/pekwm|{{Pkg|pekwm}}}}<br />
<br />
*{{App|[[Sawfish]]|Sawfish is an extensible window manager using a Lisp-based scripting language. Its policy is very minimal compared to most window managers. Its aim is simply to manage windows in the most flexible and attractive manner possible. All high-level WM functions are implemented in Lisp for future extensibility or redefinition.|http://sawfish.wikia.com/wiki/Main_Page|{{Pkg|sawfish}}}}<br />
<br />
*{{App|TinyWM|TinyWM is a tiny window manager that I created as an exercise in minimalism. It is also maybe helpful in learning some of the very basics of creating a window manager. It is only around 50 lines of C. There is also a Python version using python-xlib.|http://incise.org/tinywm.html|{{AUR|tinywm}} [unsupported]}}<br />
<br />
*{{App|[[twm]]|twm is a window manager for the X Window System. It provides titlebars, shaped windows, several forms of icon management, user-defined macro functions, click-to-type and pointer-driven keyboard focus, and user-specified key and pointer button bindings.|http://cgit.freedesktop.org/xorg/app/twm/|{{Pkg|xorg-twm}}}}<br />
<br />
*{{App|[[WindowLab]]|WindowLab is a small and simple window manager of novel design. It has a click-to-focus but not raise-on-focus policy, a window resizing mechanism that allows one or many edges of a window to be changed in one action, and an innovative menubar that shares the same part of the screen as the taskbar. Window titlebars are prevented from going off the edge of the screen by constraining the mouse pointer, and when appropriate the pointer is also constrained to the taskbar/menubar in order to make target menu items easier to hit.|http://nickgravgaard.com/windowlab/|{{Pkg|windowlab}}}}<br />
<br />
*{{App|[[Window Maker]]|Window Maker is an X11 window manager originally designed to provide integration support for the GNUstep Desktop Environment. In every way possible, it reproduces the elegant look and feel of the NEXTSTEP user interface. It is fast, feature rich, easy to configure, and easy to use. It is also free software, with contributions being made by programmers from around the world.|http://windowmaker.org/|{{Pkg|windowmaker}}}}<br />
<br />
*{{App|Xfwm|The Xfce window manager manages the placement of application windows on the screen, provides beautiful window decorations, manages workspaces or virtual desktops and natively supports multiscreen mode. It provides its own compositing manager (from the X.Org Composite extension) for true transparency and shadows. The Xfce window manager also includes a keyboard shortcuts editor for user specific commands and basic windows manipulations and provides a preferences dialog for advanced tweaks.|http://www.xfce.org/projects/xfwm4/|{{Pkg|xfwm4}}}}<br />
<br />
=== Tiling window managers ===<br />
*{{App|[[dswm]]|dswm(Deep Space Window Manager) is an offshoot of [[Stumpwm]]|https://github.com/dss-project/dswm|{{AUR|dswm}} [unsupported]}}<br />
<br />
*{{App|[[euclid-wm]]|euclid-wm is a simple and lightweight tiling and floating window manager for X11, with support for minimizing windows. A text configuration file controls key bindings and settings. It started as a dwm fork with easier configuration, and became a full-featured reparenting window manager with EWMH support. It has an EWMH-compatible panel/taskbar called {{AUR|ourico}}. | http://euclid-wm.sourceforge.net/index.php|{{AUR|euclid-wm}} [unsupported]}}<br />
<br />
*{{App|[[Herbstluftwm]]|herbstluftwm is a manual tiling window manager for X11 using Xlib and Glib. The layout is based on splitting frames into subframes which can be split again or can be filled with windows (similar to i3/ musca). Tags (or workspaces or virtual desktops or …) can be added/removed at runtime. Each tag contains an own layout. Exactly one tag is viewed on each monitor. The tags are monitor independent (similar to xmonad). It is configured at runtime via ipc calls from herbstclient. So the configuration file is just a script which is run on startup. (similar to wmii/ musca)|http://wwwcip.cs.fau.de/~re06huxa/herbstluftwm|{{AUR|herbstluftwm-git}} [unsupported]}}<br />
<br />
*{{App|[[i3]]|i3 is a tiling window manager, completely written from scratch. i3 was created because wmii, our favorite window manager at the time, did not provide some features we wanted (multi-monitor done right, for example) had some bugs, did not progress since quite some time and was not easy to hack at all (source code comments/documentation completely lacking). Notable differences are in the areas of multi-monitor support and the tree metaphor. For speed the Plan 9 interface of wmii is not implemented. |http://i3wm.org/|{{Pkg|i3-wm}}}}<br />
<br />
*{{App|[[Ion3]]|Ion is a tiling tabbed X11 window manager designed with keyboard users in mind. It was one of the first of the “new wave" of tiling windowing environments (the other being LarsWM, with quite a different approach) and has since spawned an entire category of tiling window managers for X11 – none of which really manage to reproduce the feel and functionality of Ion. It uses Lua as an embedded interpreter which handles all of the configuration. |http://tuomov.iki.fi/software|{{AUR|ion3}} [unsupported]}}<br />
<br />
*{{App|[[Musca]]|A simple dynamic window manager for X, with features nicked from ratpoison and dwm. Musca operates as a tiling window manager by default. The user determines how the screen is divided into non-overlapping frames, with no restrictions on layout. Application windows always fill their assigned frame, with the exception of transient windows and popup dialog boxes which float above their parent application at the appropriate size. Once visible, applications do not change frames unless so instructed.|http://aerosuidae.net/musca.html|{{AUR|musca}} [unsupported]}}<br />
<br />
*{{App|[[Notion]]|Notion is a tiling, tabbed window manager for the X window system that utilizes 'tiles' and 'tabbed' windows. <br />
**Tiling: you divide the screen into non-overlapping 'tiles'. Every window occupies one tile, and is maximized to it<br />
**Tabbing: a tile may contain multiple windows - they will be 'tabbed'<br />
**Static: most tiled window managers are 'dynamic', meaning they automatically resize and move around tiles as windows appear and disappear. Notion, by contrast, does not automatically change the tiling. <br />
:Notion is a fork of Ion3.|http://notion.sf.net/|{{Pkg|notion}}}}<br />
<br />
*{{App|[[Ratpoison]]|Ratpoison is a simple Window Manager with no fat library dependencies, no fancy graphics, no window decorations, and no rodent dependence. It is largely modeled after GNU Screen which has done wonders in the virtual terminal market. Ratpoison is configured with a simple text file. The information bar in Ratpoison is somewhat different, as it shows only when needed. It serves as both an application launcher as well as a notification bar. Ratpoison does not include a system tray.|http://www.nongnu.org/ratpoison/|{{Pkg|ratpoison}}}}<br />
<br />
*{{App|[[Stumpwm]]|Stumpwm is a tiling, keyboard driven X11 Window Manager written entirely in Common Lisp. Stumpwm attempts to be customizable yet visually minimal. It does have various hooks to attach your personal customizations, and variables to tweak, and can be reconfigured and reloaded while running. There are no window decorations, no icons, no buttons, and no system tray. Its information bar can be set to show constantly or only when needed.|http://www.nongnu.org/stumpwm/|{{AUR|stumpwm-git}} [unsupported]}}<br />
<br />
*{{App|[[subtle]]|subtle is a manual tiling window manager with a rather uncommon approach of tiling: Per default there is no typical layout enforcement, windows are placed on a position (gravity) in a custom grid. The user can change the gravity of each window either directly per grabs or with rules defined by tags in the config. It has workspace tags and automatic client tagging, mouse and keyboard control as well as an extendable statusbar. |http://subforge.org/projects/subtle|{{Pkg|subtle}} [unsupported]}}<br />
<br />
*{{App|[[WMFS]]|WMFS (Window Manager From Scratch) is a lightweight and highly configurable tiling window manager for X. It can be configured with a configuration file, supports Xft (FreeType) fonts and is compliant with the Extended Window Manager Hints (EWMH) specifications, Xinerama and Xrandr. WMFS can be driven with Vi based commands (ViWMFS).|https://github.com/xorg62/wmfs|{{AUR|wmfs}} [unsupported]}}<br />
<br />
*{{App|[[wmii]]|wmii is a small, dynamic window manager for X11. It is scriptable, has a 9P filesystem interface and supports classic and tiling (Acme-like) window management. It aims to maintain a small and clean (read hackable and beautiful) codebase. The default configuration is in bash and [http://rc.cat-v.org rc (the Plan 9 shell)], but programs exist written in ruby, and any program that can work with text can configure it. It has a status bar and launcher built in, and also an optional system tray ({{Ic|witray}}). |http://wmii.suckless.org/|{{Pkg|wmii}}}}<br />
<br />
=== Dynamic window managers ===<br />
<br />
*{{App|[[awesome]]|awesome is a highly configurable, next generation framework window manager for X. It is very fast, extensible and licensed under the GNU GPLv2 license. Configured in Lua, it has a system tray, information bar, and launcher built in. There are extensions available to it written in Lua. Awesome uses XCB as opposed to Xlib, which may result in a speed increase. Awesome has other features as well, such as an early replacement for notification-daemon, a right-click menu similar to that of the *box window managers, and many other things. |http://awesome.naquadah.org/|{{AUR|awesome}} [unsupported]}}<br />
<br />
*{{App|[[catwm]]|catwm is a small window manager, even simpler than dwm, written in C. Configuration is done by modifying the config.h file and recompiling.|https://github.com/pyknite/catwm|{{AUR|catwm-git}} [unsupported]}}<br />
<br />
*{{App|[[dwm]]|dwm is a dynamic window manager for X. It manages windows in tiled, monocle and floating layouts. All of the layouts can be applied dynamically, optimising the environment for the application in use and the task performed. does not include a tray app or automatic launcher, although dmenu integrates well with it, as they are from the same author. It has no text configuration file. Configuration is done entirely by modifying the C source code, and it must be recompiled and restarted each time it is changed. The program size is already at the self-imposed line limit, restricting further development.|http://dwm.suckless.org/|{{Pkg|dwm}}}}<br />
<br />
*{{App|[[echinus]]|Simple and lightweight tiling and floating window manager for X11. Started as a dwm fork with easier configuration, echinus became full-featured re-parenting window manager with EWMH support. It has an EWMH-compatible panel/taskbar, called {{AUR|ourico}}|http://plhk.ru/echinus|{{AUR|echinus}}}}<br />
<br />
*{{App|[[monsterwm]]| is a minimal, lightweight, tiny but monsterous dynamic tiling window manager. It will try to stay as small as possible. Currently under 750 lines with the config file included. It provides a set of four different layout modes (vertical stack, bottom stack, grid and monocle/fullscreen), and has floating mode support. Each virtual desktop has its own properties, unaffected by other desktops' settings. Configuration is done entirely by modifying the C source code, and it must be recompiled and restarted each time it is changed. There are many available patches supported upstream, found as different git branches.|https://github.com/c00kiemon5ter/monsterwm|{{AUR|monsterwm}} [unsupported]}}<br />
<br />
*{{App|[[snapwm]]| is a small, lightweight dynamic tiling window manager based on catwm and dminiwm. It has a built in status bar with clickable workspaces and five modes (vertical, horizontal, grid, fullscreen, and stacking). It has other features, like status colors, pertag, attachaside, a reloadable rc file, transparency support, dmenu integration and more. |https://github.com/moetunes/Nextwm|}}<br />
<br />
*{{App|[[spectrwm]]|Spectrwm is a small dynamic tiling window manager for X11, largely inspired by xmonad and dwm. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and is configured with a text file. It was written by hackers for hackers and it strives to be small, compact and fast. It has a built-in status bar fed from a user-defined script|https://opensource.conformal.com/wiki/spectrwm|{{Pkg|spectrwm}} [community]}}<br />
<br />
*{{App|[[xmonad]]|xmonad is a dynamically tiling X11 window manager that is written and configured in Haskell. In a normal WM, you spend half your time aligning and searching for windows. xmonad makes work easier, by automating this. For all configuration changes, xmonad must be recompiled, so the Haskell compiler (over 485MB) must be installed. A large library called {{Pkg|xmonad-contrib}} provides many additional features|http://xmonad.org/|{{Pkg|xmonad}}}}</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Window_manager&diff=195162Window manager2012-04-19T06:29:27Z<p>Stlarch: </p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
{{i18n|Window Manager}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|A window manager is system software that controls the placement and appearance of windows within a windowing system in a graphical user interface. This article provides a general overview and listing of popular window managers.}}<br />
{{Article summary heading|Overview}}<br />
{{Article summary text|{{Graphical user interface overview}}}}<br />
{{Article summary end}}<br />
<br />
A window manager (WM) is one component of a system's graphical user interface (GUI). Users may prefer to install a full-fledged [[Desktop Environment]], which provides a complete user interface, including icons, windows, toolbars, wallpapers, and desktop widgets.<br />
<br />
== X Window System == <!-- please keep this section synchronized with [[Desktop Environment#X Window System]] --><br />
The [[Wikipedia:X Window System|X Window System]] provides the foundation for a graphical user interface. Prior to installing a window manager, a functional X server installation is required. See [[Xorg]] for detailed information.<br />
<br />
:''X provides the basic framework, or primitives, for building such GUI environments: drawing and moving windows on the screen and interacting with a mouse and keyboard. X does not mandate the user interface — individual client programs known as window managers handle this. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces. X is built as an additional (application) abstraction layer on top of the operating system kernel.''<br />
<br />
The user is free to configure their GUI environment in any number of ways.<br />
<br />
==Window managers==<br />
Window managers (WMs) are X clients that provide the border around a window. The window manager controls the appearance of an application and how it is managed: the border, titlebar, size, and ability to resize a window are handled by window managers. Many window managers provide other functionality such as places to stick [http://dockapps.windowmaker.org/ dockapps] like [[Window Maker]], a menu to start programs, menus to configure the WM and other useful things. [[Fluxbox]], for example, has the ability to tab windows.<br />
<br />
Window managers generally do not provide ''extras'' like desktop icons, which are commonly seen in [[desktop environment]]s (though it is possible to add icons in a WM with another program).<br />
<br />
Because of the lack of ''extras'', WMs are much lighter on system resources.<br />
<br />
===Types===<br />
*'''Stacking''' (aka floating) window managers provide the traditional desktop metaphor used in commercial operating systems like Windows and OS X. Windows act like pieces of paper on a desk, and can be stacked on top of each other.<br />
*'''Tiling''' window managers "tile" the windows so that none are overlapping. They usually make very extensive use of key-bindings and have less (or no) reliance on the mouse. Tiling window managers may be manual, offer predefined layouts, or both.<br />
*'''Dynamic''' window managers can dynamically switch between tiling or floating window layout.<br />
<br />
* [[:Category:Stacking WMs (English)]]<br />
* [[:Category:Tiling WMs (English)]]<br />
* [[:Category:Dynamic WMs (English)]]<br />
<br />
See [[Comparison of Tiling Window Managers]] and [[Wikipedia:Comparison of X window managers]] for comparison of window managers.<br />
<br />
== List of window managers==<br />
<br />
=== Stacking WMs ===<br />
<br />
*{{App|aewm|aewm is a modern, minimal window manager for X11. It is controlled entirely with the mouse, but contains no visible UI apart from window frames. The command set is sort of like vi: designed back in the dawn of time (1997) to squeeze speed out of low-memory machines, completely unintuitive and new-user-hostile, but quick and elegant in its own way.|http://www.red-bean.com/decklin/aewm/|{{AUR|aewm}} [unsupported]}}<br />
<br />
*{{App|[[Wikipedia:AfterStep|AfterStep]]|AfterStep is a window manager for the Unix X Window System. Originally based on the look and feel of the NeXTStep interface, it provides end users with a consistent, clean, and elegant desktop. The goal of AfterStep development is to provide for flexibility of desktop configuration, improving aestetics, and efficient use of system resources.|http://www.afterstep.org/|{{AUR|afterstep}} [unsupported]}}<br />
<br />
*{{App|[[Wikipedia:Blackbox|Blackbox]]|Blackbox is the fast, lightweight window manager for the X Window System you have been looking for, without all those annoying library dependencies. Blackbox is built with C++ and contains completely original code (even though the graphics implementation is similar to that of WindowMaker).|http://blackboxwm.sourceforge.net/|{{Pkg|blackbox}}}}<br />
<br />
*{{App|[[Compiz]]|Compiz is an OpenGL compositing manager that uses GLX_EXT_texture_from_pixmap for binding redirected top-level windows to texture objects. It has a flexible plug-in system and it is designed to run well on most graphics hardware.|http://www.compiz.org/|{{Pkg|compiz-core}}}}<br />
<br />
*{{App|[[Enlightenment]]|Enlightenment is not just a window manager for Linux/X11 and others, but also a whole suite of libraries to help you create beautiful user interfaces with much less work than doing it the old fashioned way and fighting with traditional toolkits, not to mention a traditional window manager.|http://www.enlightenment.org/|{{Pkg|enlightenment}}}}<br />
<br />
*{{App|[[evilwm]]|A minimalist window manager for the X Window System. 'Minimalist' here does not mean it is too bare to be usable - it just means it omits a lot of the stuff that make other window managers ''un''usable.|http://www.6809.org.uk/evilwm/|{{Pkg|evilwm}}}}<br />
<br />
*{{App|Firebox|Firebox is yet another Window Manager for X11 systems. Still in development, it is not forked from Openbox, Fluxbox, Blackbox or even Hackedbox; it is written from scratch, in C language.|http://firebox.intuxication.org/|{{AUR|firebox}} [unsupported]}}<br />
<br />
*{{App|[[Fluxbox]]|Fluxbox is a window manager for X that was based on the Blackbox 0.61.1 code. It is very light on resources and easy to handle but yet full of features to make an easy and extremely fast desktop experience. It is built using C++ and licensed under the MIT License.|http://www.fluxbox.org/|{{Pkg|fluxbox}}}}<br />
<br />
*{{App|[[Wikipedia:FLWM|Flwm]]|Flwm is my attempt to combine the best ideas I have seen in several window managers. The primary influence and code base is from wm2 by Chris Cannam.|http://flwm.sourceforge.net/|{{AUR|flwm}} [unsupported]}}<br />
<br />
*{{App|[[FVWM]]|FVWM is an extremely powerful ICCCM-compliant multiple virtual desktop window manager for the X Window system. Development is active, and support is excellent.|http://www.fvwm.org/|{{Pkg|fvwm}}}}<br />
<br />
*{{App|[[Wikipedia:Hackedbox|Hackedbox]]|Hackedbox is a stripped down version of Blackbox - The X11 Window Manager. The toolbar and Slit have been removed. The goal of Hackedbox is to be a small "feature-set" window manager, with no bloat. There are no plans to add any functionality, only bugfixes and speed enhancements whenever possible.|http://scrudgeware.org/projects/Hackedbox/|{{AUR|hackedbox}} [unsupported]}}<br />
<br />
*{{App|[[IceWM]]|IceWM is a window manager for the X Window System. The goal of IceWM is speed, simplicity, and not getting in the user's way.|http://www.icewm.org/|{{Pkg|icewm}}}}<br />
<br />
*{{App|[[JWM]]|JWM is a window manager for the X11 Window System. JWM is written in C and uses only Xlib at a minimum.|http://joewing.net/programs/jwm/|{{Pkg|jwm}}}}<br />
<br />
*{{App|Karmen|Karmen is a window manager for X, written by Johan Veenhuizen. It is designed to "just work." There is no configuration file and no library dependencies other than Xlib. The input focus model is click-to-focus. Karmen aims at ICCCM and EWMH compliance.|http://karmen.sourceforge.net/|{{AUR|karmen}} [unsupported]}}<br />
<br />
*{{App|[[Wikipedia:KWin|KWin]]|KWin, the standard KDE window manager in KDE 4.0, ships with the first version of built-in support for compositing, making it also a compositing manager. This allows KWin to provide advanced graphical effects, similar to Compiz, while also providing all the features from previous KDE releases (such as very good integration with the rest of KDE, advanced configurability, focus stealing prevention, a well-tested window manager, robust handling of misbehaving applications/toolkits, etc.).|http://techbase.kde.org/Projects/KWin|{{Pkg|kdebase-workspace}}}}<br />
<br />
*{{App|[[Wikipedia:Lightweight window manager|lwm]]|lwm is a window manager for X that tries to keep out of your face. There are no icons, no button bars, no icon docks, no root menus, no nothing: if you want all that, then other programs can provide it. There is no configurability either: if you want that, you want a different window manager; one that helps your operating system in its evil conquest of your disc space and its annexation of your physical memory.|http://www.jfc.org.uk/software/lwm.html|{{Pkg|lwm}}}}<br />
<br />
*{{App|[[Wikipedia:Metacity|Metacity]]|This is not the Metacity home page. There is no Metacity home page. This is for the same reason there is no flashy logo: Metacity strives to be quiet, small, stable, get on with its job, and stay out of your attention.|http://blogs.gnome.org/metacity/|{{Pkg|metacity}}}}<br />
<br />
*{{App|[[Openbox]]|Openbox is a highly configurable, next generation window manager with extensive standards support. The *box visual style is well known for its minimalistic appearance. Openbox uses the *box visual style, while providing a greater number of options for theme developers than previous *box implementations. The theme documentation describes the full range of options found in Openbox themes.|http://openbox.org/wiki/Main_Page|{{Pkg|openbox}}}}<br />
<br />
*{{App|[[Pawm]]|Pawm is a window manager for the X Window system. So it is not a 'desktop' and does not offer you a huge pile of useless options, just the facilities needed to run your X applications and at the same time having a friendly and easy to use interface.|http://www.pleyades.net/pawm/|{{Pkg|pawm}}}}<br />
<br />
*{{App|[[pekwm]]|pekwm is a window manager that once upon a time was based on the aewm++ window manager, but it has evolved enough that it no longer resembles aewm++ at all. It has a much expanded feature-set, including window grouping (similar to Ion, PWM, or Fluxbox), auto-properties, Xinerama, keygrabber that supports keychains, and much more.|http://www.pekwm.org/projects/pekwm|{{Pkg|pekwm}}}}<br />
<br />
*{{App|[[Sawfish]]|Sawfish is an extensible window manager using a Lisp-based scripting language. Its policy is very minimal compared to most window managers. Its aim is simply to manage windows in the most flexible and attractive manner possible. All high-level WM functions are implemented in Lisp for future extensibility or redefinition.|http://sawfish.wikia.com/wiki/Main_Page|{{Pkg|sawfish}}}}<br />
<br />
*{{App|TinyWM|TinyWM is a tiny window manager that I created as an exercise in minimalism. It is also maybe helpful in learning some of the very basics of creating a window manager. It is only around 50 lines of C. There is also a Python version using python-xlib.|http://incise.org/tinywm.html|{{AUR|tinywm}} [unsupported]}}<br />
<br />
*{{App|[[twm]]|twm is a window manager for the X Window System. It provides titlebars, shaped windows, several forms of icon management, user-defined macro functions, click-to-type and pointer-driven keyboard focus, and user-specified key and pointer button bindings.|http://cgit.freedesktop.org/xorg/app/twm/|{{Pkg|xorg-twm}}}}<br />
<br />
*{{App|[[WindowLab]]|WindowLab is a small and simple window manager of novel design. It has a click-to-focus but not raise-on-focus policy, a window resizing mechanism that allows one or many edges of a window to be changed in one action, and an innovative menubar that shares the same part of the screen as the taskbar. Window titlebars are prevented from going off the edge of the screen by constraining the mouse pointer, and when appropriate the pointer is also constrained to the taskbar/menubar in order to make target menu items easier to hit.|http://nickgravgaard.com/windowlab/|{{Pkg|windowlab}}}}<br />
<br />
*{{App|[[Window Maker]]|Window Maker is an X11 window manager originally designed to provide integration support for the GNUstep Desktop Environment. In every way possible, it reproduces the elegant look and feel of the NEXTSTEP user interface. It is fast, feature rich, easy to configure, and easy to use. It is also free software, with contributions being made by programmers from around the world.|http://windowmaker.org/|{{Pkg|windowmaker}}}}<br />
<br />
*{{App|Xfwm|The Xfce window manager manages the placement of application windows on the screen, provides beautiful window decorations, manages workspaces or virtual desktops and natively supports multiscreen mode. It provides its own compositing manager (from the X.Org Composite extension) for true transparency and shadows. The Xfce window manager also includes a keyboard shortcuts editor for user specific commands and basic windows manipulations and provides a preferences dialog for advanced tweaks.|http://www.xfce.org/projects/xfwm4/|{{Pkg|xfwm4}}}}<br />
<br />
=== Tiling window managers ===<br />
*{{App|[[dswm]]|dswm(Deep Space Window Manager) is an offshoot of [[Stumpwm]]|https://github.com/dss-project/dswm|{{AUR|dswm}} [unsupported]}}<br />
<br />
*{{App|[[euclid-wm]]|euclid-wm is a simple and lightweight tiling and floating window manager for X11, with support for minimizing windows. A text configuration file controls key bindings and settings. It started as a dwm fork with easier configuration, and became a full-featured reparenting window manager with EWMH support. It has an EWMH-compatible panel/taskbar called {{AUR|ourico}}. | http://euclid-wm.sourceforge.net/index.php|{{AUR|euclid-wm}} [unsupported]}}<br />
<br />
*{{App|[[Herbstluftwm]]|herbstluftwm is a manual tiling window manager for X11 using Xlib and Glib. The layout is based on splitting frames into subframes which can be split again or can be filled with windows (similar to i3/ musca). Tags (or workspaces or virtual desktops or …) can be added/removed at runtime. Each tag contains an own layout. Exactly one tag is viewed on each monitor. The tags are monitor independent (similar to xmonad). It is configured at runtime via ipc calls from herbstclient. So the configuration file is just a script which is run on startup. (similar to wmii/ musca)|http://wwwcip.cs.fau.de/~re06huxa/herbstluftwm|{{AUR|herbstluftwm-git}} [unsupported]}}<br />
<br />
*{{App|[[i3]]|i3 is a tiling window manager, completely written from scratch. i3 was created because wmii, our favorite window manager at the time, did not provide some features we wanted (multi-monitor done right, for example) had some bugs, did not progress since quite some time and was not easy to hack at all (source code comments/documentation completely lacking). Notable differences are in the areas of multi-monitor support and the tree metaphor. For speed the Plan 9 interface of wmii is not implemented. |http://i3.zekjur.net/|{{Pkg|i3-wm}}}}<br />
<br />
*{{App|[[Ion3]]|Ion is a tiling tabbed X11 window manager designed with keyboard users in mind. It was one of the first of the “new wave" of tiling windowing environments (the other being LarsWM, with quite a different approach) and has since spawned an entire category of tiling window managers for X11 – none of which really manage to reproduce the feel and functionality of Ion. It uses Lua as an embedded interpreter which handles all of the configuration. |http://tuomov.iki.fi/software|{{AUR|ion3}} [unsupported]}}<br />
<br />
*{{App|[[Musca]]|A simple dynamic window manager for X, with features nicked from ratpoison and dwm. Musca operates as a tiling window manager by default. The user determines how the screen is divided into non-overlapping frames, with no restrictions on layout. Application windows always fill their assigned frame, with the exception of transient windows and popup dialog boxes which float above their parent application at the appropriate size. Once visible, applications do not change frames unless so instructed.|http://aerosuidae.net/musca.html|{{AUR|musca}} [unsupported]}}<br />
<br />
*{{App|[[Notion]]|Notion is a tiling, tabbed window manager for the X window system that utilizes 'tiles' and 'tabbed' windows. <br />
*Tiling: you divide the screen into non-overlapping 'tiles'. Every window occupies one tile, and is maximized to it<br />
*Tabbing: a tile may contain multiple windows - they will be 'tabbed'<br />
*Static: most tiled window managers are 'dynamic', meaning they automatically resize and move around tiles as windows appear and disappear. Notion, by contrast, does not automatically change the tiling. <br />
Notion is a fork of Ion3.|http://notion.sf.net/|{{Pkg|notion}}}}<br />
<br />
*{{App|[[Ratpoison]]|Ratpoison is a simple Window Manager with no fat library dependencies, no fancy graphics, no window decorations, and no rodent dependence. It is largely modeled after GNU Screen which has done wonders in the virtual terminal market. Ratpoison is configured with a simple text file. The information bar in Ratpoison is somewhat different, as it shows only when needed. It serves as both an application launcher as well as a notification bar. Ratpoison does not include a system tray.|http://www.nongnu.org/ratpoison/|{{Pkg|ratpoison}}}}<br />
<br />
*{{App|[[Stumpwm]]|Stumpwm is a tiling, keyboard driven X11 Window Manager written entirely in Common Lisp. Stumpwm attempts to be customizable yet visually minimal. It does have various hooks to attach your personal customizations, and variables to tweak, and can be reconfigured and reloaded while running. There are no window decorations, no icons, no buttons, and no system tray. Its information bar can be set to show constantly or only when needed.|http://www.nongnu.org/stumpwm/|{{AUR|stumpwm-git}} [unsupported]}}<br />
<br />
*{{App|[[subtle]]|subtle is a manual tiling window manager with a rather uncommon approach of tiling: Per default there is no typical layout enforcement, windows are placed on a position (gravity) in a custom grid. The user can change the gravity of each window either directly per grabs or with rules defined by tags in the config. It has workspace tags and automatic client tagging, mouse and keyboard control as well as an extendable statusbar. |http://subforge.org/projects/subtle|{{Pkg|subtle}} [unsupported]}}<br />
<br />
*{{App|[[WMFS]]|WMFS (Window Manager From Scratch) is a lightweight and highly configurable tiling window manager for X. It can be configured with a configuration file, supports Xft (FreeType) fonts and is compliant with the Extended Window Manager Hints (EWMH) specifications, Xinerama and Xrandr. WMFS can be driven with Vi based commands (ViWMFS).|http://wmfs.info/projects/wmfs|{{AUR|wmfs}} [unsupported]}}<br />
<br />
*{{App|[[wmii]]|wmii is a small, dynamic window manager for X11. It is scriptable, has a 9P filesystem interface and supports classic and tiling (Acme-like) window management. It aims to maintain a small and clean (read hackable and beautiful) codebase. The default configuration is in bash and [http://rc.cat-v.org rc (the Plan 9 shell)], but programs exist written in ruby, and any program that can work with text can configure it. It has a status bar and launcher built in, and also an optional system tray ({{Ic|witray}}). |http://wmii.suckless.org/|{{Pkg|wmii}}}}<br />
<br />
=== Dynamic window managers ===<br />
<br />
*{{App|[[awesome]]|awesome is a highly configurable, next generation framework window manager for X. It is very fast, extensible and licensed under the GNU GPLv2 license. Configured in Lua, it has a system tray, information bar, and launcher built in. There are extensions available to it written in Lua. Awesome uses XCB as opposed to Xlib, which may result in a speed increase. Awesome has other features as well, such as an early replacement for notification-daemon, a right-click menu similar to that of the *box window managers, and many other things. |http://awesome.naquadah.org/|{{AUR|awesome}} [unsupported]}}<br />
<br />
*{{App|[[catwm]]|catwm is a small window manager, even simpler than dwm, written in C. Configuration is done by modifying the config.h file and recompiling.|https://github.com/pyknite/catwm|{{AUR|catwm-git}} [unsupported]}}<br />
<br />
*{{App|[[dwm]]|dwm is a dynamic window manager for X. It manages windows in tiled, monocle and floating layouts. All of the layouts can be applied dynamically, optimising the environment for the application in use and the task performed. does not include a tray app or automatic launcher, although dmenu integrates well with it, as they are from the same author. It has no text configuration file. Configuration is done entirely by modifying the C source code, and it must be recompiled and restarted each time it is changed. The program size is already at the self-imposed line limit, restricting further development.|http://dwm.suckless.org/|{{Pkg|dwm}}}}<br />
<br />
*{{App|[[echinus]]|Simple and lightweight tiling and floating window manager for X11. Started as a dwm fork with easier configuration, echinus became full-featured re-parenting window manager with EWMH support. It has an EWMH-compatible panel/taskbar, called {{AUR|ourico}}|http://plhk.ru/echinus|{{AUR|echinus}}}}<br />
<br />
*{{App|[[monsterwm]]| is a minimal, lightweight, tiny but monsterous dynamic tiling window manager. It will try to stay as small as possible. Currently under 750 lines with the config file included. It provides a set of four different layout modes (vertical stack, bottom stack, grid and monocle/fullscreen), and has floating mode support. Each virtual desktop has its own properties, unaffected by other desktops' settings. Configuration is done entirely by modifying the C source code, and it must be recompiled and restarted each time it is changed. There are many available patches supported upstream, found as different git branches.|https://github.com/c00kiemon5ter/monsterwm|{{AUR|monsterwm}} [unsupported]}}<br />
<br />
*{{App|[[snapwm]]| is another minimal, lightweight dynamic tiling window manager based on catwm and dminiwm. It has a built in status bar with clickable workspaces and five modes (vertical, horizontal, grid, fullscreen, and stacking). It has other features, like status colors, pertag, a reloadable rc file, transparency support, and dmenu integration. |https://github.com/moetunes/Nextwm|}}<br />
<br />
*{{App|[[spectrwm]]|Spectrwm is a small dynamic tiling window manager for X11, largely inspired by xmonad and dwm. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and is configured with a text file. It was written by hackers for hackers and it strives to be small, compact and fast. It has a built-in status bar fed from a user-defined script|https://opensource.conformal.com/wiki/spectrwm|{{Pkg|spectrwm}} [community]}}<br />
<br />
*{{App|[[xmonad]]|xmonad is a dynamically tiling X11 window manager that is written and configured in Haskell. In a normal WM, you spend half your time aligning and searching for windows. xmonad makes work easier, by automating this. For all configuration changes, xmonad must be recompiled, so the Haskell compiler (over 485MB) must be installed. A large library called {{Pkg|xmonad-contrib}} provides many additional features|http://xmonad.org/|{{Pkg|xmonad}}}}</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186606Snapwm2012-02-27T08:02:39Z<p>Stlarch: Made the main categories bold</p>
<hr />
<div>[[Category:Dynamic WMs (English)]]<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Layout Modes''' ==<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
=== Fullscreen ===<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
=== Colors ===<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. So 0 would be the first color for external text, 1 would be the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
=== Icons ===<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== '''Configuration''' ==<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
=== rc file ===<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186603Snapwm2012-02-27T07:39:43Z<p>Stlarch: /* Installation */ spelling/grammer</p>
<hr />
<div>[[Category:Dynamic WMs (English)]]<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== Layout Modes ==<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
=== Fullscreen ===<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
== Status Bar ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
=== '''Colors''' ===<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. So 0 would be the first color for external text, 1 would be the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
=== '''Icons''' ===<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== Configuration ==<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
=== rc file ===<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== Installation ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like ~/bin for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== Additional Resources ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186596Snapwm2012-02-27T07:11:33Z<p>Stlarch: Changed Colors and Icons to sub-categories of Status bar</p>
<hr />
<div>[[Category:Dynamic WMs (English)]]<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== Layout Modes ==<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
=== Fullscreen ===<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
== Status Bar ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
=== '''Colors''' ===<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. So 0 would be the first color for external text, 1 would be the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
=== '''Icons''' ===<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== Configuration ==<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
=== rc file ===<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== Installation ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== Additional Resources ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186594Snapwm2012-02-27T07:07:56Z<p>Stlarch: /* Colors */ Grammer/spelling</p>
<hr />
<div>[[Category:Dynamic WMs (English)]]<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== Layout Modes ==<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
=== Fullscreen ===<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
== Status Bar ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
== Colors ==<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. The numbers start at 0. So 0 would be the first color for external text, 1 would be the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
== Icons ==<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== Configuration ==<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
=== rc file ===<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== Installation ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== Additional Resources ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186593Snapwm2012-02-27T07:04:16Z<p>Stlarch: /* Icons */ fixed link</p>
<hr />
<div>[[Category:Dynamic WMs (English)]]<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== Layout Modes ==<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
=== Fullscreen ===<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
== Status Bar ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
== Colors ==<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
== Icons ==<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== Configuration ==<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
=== rc file ===<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== Installation ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== Additional Resources ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186592Snapwm2012-02-27T06:59:33Z<p>Stlarch: Changed category from Desktop environments to Dynamic WMs</p>
<hr />
<div>[[Category:Dynamic WMs (English)]]<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== Layout Modes ==<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
=== Fullscreen ===<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
== Status Bar ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
== Colors ==<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
== Icons ==<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== Configuration ==<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
=== rc file ===<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== Installation ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== Additional Resources ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186589Snapwm2012-02-27T06:42:12Z<p>Stlarch: /* Fullscreen */</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== Layout Modes ==<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
=== Fullscreen ===<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
== Status Bar ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
== Colors ==<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
== Icons ==<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== Configuration ==<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
=== rc file ===<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
=== Transparency ===<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== Installation ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== Additional Resources ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186576Snapwm2012-02-27T04:25:26Z<p>Stlarch: /* Additional Resources */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186575Snapwm2012-02-27T04:25:15Z<p>Stlarch: /* Installation */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186574Snapwm2012-02-27T04:25:02Z<p>Stlarch: /* Configuration */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186573Snapwm2012-02-27T04:24:51Z<p>Stlarch: /* Status Bar */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186572Snapwm2012-02-27T04:24:32Z<p>Stlarch: /* Layout Modes */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal, grid, and fullscreen.<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186571Snapwm2012-02-27T04:23:54Z<p>Stlarch: /* Installation */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It integrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186570Snapwm2012-02-27T04:23:18Z<p>Stlarch: /* Configuration */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186569Snapwm2012-02-27T04:23:02Z<p>Stlarch: /* Status Bar */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an integrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186495Snapwm2012-02-26T22:12:30Z<p>Stlarch: /* Additional Resources */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) and (XCB port)author Cloudef are both helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186493Snapwm2012-02-26T22:08:16Z<p>Stlarch: /* Additional Resources */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186492Snapwm2012-02-26T22:08:02Z<p>Stlarch: /* Installation */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186490Snapwm2012-02-26T22:07:48Z<p>Stlarch: /* Configuration */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186489Snapwm2012-02-26T22:06:47Z<p>Stlarch: /* Status Bar */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar and reloadable rc file. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with a rc file that can implement some changes on the fly, without the need for recompiling. There is a sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. To change something in the running window manager edit the rc file and save it, then hit the (default) Alt+u keys.<br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186486Snapwm2012-02-26T21:16:32Z<p>Stlarch: /* Additional Resources */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. (Shameless plugs!) Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186485Snapwm2012-02-26T21:16:20Z<p>Stlarch: /* Installation */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. (Shameless plugs!) Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186484Snapwm2012-02-26T21:16:06Z<p>Stlarch: /* Configuration */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. (Shameless plugs!) Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186483Snapwm2012-02-26T21:15:54Z<p>Stlarch: /* Status Bar */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. (Shameless plugs!) Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186482Snapwm2012-02-26T21:15:37Z<p>Stlarch: /* Installation */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. (Shameless plugs!) Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186481Snapwm2012-02-26T21:13:53Z<p>Stlarch: /* Configuration */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. (Shameless plugs!) Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186480Snapwm2012-02-26T21:13:21Z<p>Stlarch: /* Status Bar */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. (Shameless plugs!) Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186479Snapwm2012-02-26T21:12:10Z<p>Stlarch: /* Status Bar */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. (Shameless plugs!)<br />
Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186478Snapwm2012-02-26T21:10:34Z<p>Stlarch: /* Configuration */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] (Shameless plugs!)<br />
Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186477Snapwm2012-02-26T21:10:22Z<p>Stlarch: /* Status Bar */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
*'''"Icons"'''<br />
<br />
The status bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread on the forum]. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] (Shameless plugs!)<br />
Another example of using them with conky:<br />
&2${execi 1800 printf '\xB6'} &1${time %I:%M}<br />
This will display a clock "icon" from terminusmod font in the third color for external text and the time in the second color.<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarchhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=186476Snapwm2012-02-26T20:55:33Z<p>Stlarch: /* Configuration */</p>
<hr />
<div><br />
== '''Snapwm''' ==<br />
<br />
<br />
[https://github.com/moetunes/Nextwm Snapwm] is a very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), and [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite). It's basically dminiwm with a status bar. It's primarily keyboard driven but has some mouse support also.<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
<br />
<br />
It has four layout modes: vertical, horizontal(bottom stack in dwm), grid, and fullscreen(monocle in dwm).<br />
<br />
<br />
'''Vertical'''<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
It allows the "normal" method of tiling window managers(with the new window as the master) or with the new window opened at the bottom of the stack(like dwm's attach aside).<br />
<br />
<br />
'''Horizontal'''<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Same as bottom stack in dwm. (Note that it's only the bottom stack part and does not include bottom stack horizontal as in the dwm patch).<br />
<br />
<br />
'''Grid'''<br />
<br />
-------------<br />
| | W |<br />
| | |<br />
|------|----|<br />
| | |<br />
-------------<br />
<br />
<br />
'''Fullscreen'''<br />
<br />
Self explanatory. Same as monocle in dwm. There are no borders in fullscreen mode.<br />
<br />
<br />
*You can have different layout modes for each desktop(same as pertag in dwm).<br />
*The window *W* at the top of the stack can be resized on a per desktop basis.<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the others.<br />
*There is no floating mode other than for transient windows(popups).<br />
<br />
<br />
<br />
== '''Status Bar''' ==<br />
<br />
Snapwm has an intregrated statusbar that has a clickable desktop switcher. It has support for different colors(like statuscolors in dwm) and text can be piped into the bar from .xinitrc(for example) the same way as in dwm. The bar uses the root window's name to display information, which can be changed with xsetroot<br />
-name. For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done & <br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. You can toggle the bar and have the option of showing it on top or bottom or not at all.<br />
<br />
<br />
*'''Colors'''<br />
<br />
The colors for the status bar are defined in config.h and in .snapwmrc.<br />
<br />
*'''Color 1''' : focused window border and desktop in switcher.<br />
*'''Color 2''' : unfocused window border and desktop in switcher.<br />
*'''Color 3''' : desktop in switcher with open windows.<br />
*'''Color 4''' : the bars border.<br />
*'''Color 5''' : the focused window name font and first color for external text.<br />
*'''Color 6''' : the desktop switcher font and also the second color for external text.<br />
*'''Colors 7, 8, and 9''' : the third, fourth, and fifth colors for external text.<br />
<br />
<br />
The colors for external text can be represented by placing & in front of the number of the color. And the numbers start at 0. So 0 would be the first color for external text, 1 for the second color, etc. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
<br />
Configuration changes are done by editing config.h.def, copying it to config.h and recompiling. After you get a working config.h, you should compare that with the new config.h.def when updating and make any changes that are needed. You should familiarize yourself with the config.h. It's fairly self explanatory and well commented. You don't nessasarily need any knowledge of C. You can look at other people's configs for examples and ideas, but don't just blindly copy and paste. At least try to understand what you're doing first. Remember to change the path for your .snapwmrc in config.h. At first, you'll need to at least learn a few of the basic keystrokes for opening a terminal, running dmenu, closing windows, quitting, etc. All of these can be found in the config.h. You can change them to suit, of course.<br />
<br />
<br />
*'''rc file'''<br />
Unlike dwm, snapwm comes with an rc file that can implement some changes on the fly, without the need for recompiling. There is an sample.snapwmrc.file included that should be edited and copied to .snapwmrc in $HOME. <br />
<br />
<br />
*'''Transparency'''<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a composting manager(like cairo-compmgr).<br />
<br />
== '''Installation''' ==<br />
<br />
The latest version can be downloaded using git. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with git pull. See the [[git]] wiki page or man git for more info.<br />
<br />
<br />
*Note: While the official name of the window manager and executable is snapwm, you'll notice that in moetunes github, the directory is named Nextwm which may cause some confusion.<br />
<br />
<br />
Xlib is all that is required. The installation method is as folows:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
<br />
*'''Alternative Method'''<br />
<br />
Instead of actually installing it system-wide (with #make install) as above, you can simply run make and then copy the single executable to somewhere in your path, like ~/bin, for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
<br />
*'''Dmenu'''<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an autocomplete for typing the name of binaries. It intregrates well with tiling window managers like dwm and snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
<br />
== '''Additional Resources''' ==<br />
<br />
*See the README.md and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread] The author(moetunes) is helpful, friendly and active on the forum.<br />
<br />
*[https://github.com/c00kiemon5ter/monsterwm Monsterwm] is another lightweight dynamic tiling window manager forked from dminiwm. The author(c00kiemon5ter) is helpful and friendly as well and also active on the forum.<br />
*[https://bbs.archlinux.org/viewtopic.php?id=132122 Monsterwm forum thread]<br />
*[[Monsterwm]] wiki page.<br />
<br />
*[http://suckless.org/dwm Dwm] is a popular lightweight dynamic window manager. The website is a good source of info. There are various threads on the forum about dwm.<br />
*[[dwm]] wiki page.</div>Stlarch