SEARCH

Enter your search query in the box above ^, or use the forum search tool.

You are not logged in.

#326 2012-03-19 16:12:09

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

Day 15 (halfway there!). Today we are looking at dwm, the dynamic window manager. This is a window manager with a long history and an excellent web site. It comes from suckless.org, the people who also brought us dmenu, and has served as the inspiration for many other window managers, including awesome, xmonad, and scrotwm.

Dwm is small, fast, and light. In its default configuration, dwm can tile windows with a master area on the left and a vertical stack on the right:

2012_03_18_102255_1280x1024_scrot.jpg

It can also run in "monocle" mode where one window takes up the entire available area below the status bar, and it can manage floating windows and dialog boxes:

2012_03_18_102453_1280x1024_scrot.jpg

Dwm version 5.8 is in the stable repo, and version 6.0 is in the testing and sid repos. If you just want to try dwm and use the default key bindings, installing with apt-get is fine. However, dwm can only be reconfigured by modifying its config.h file and rebuilding, and if you want to apply any of the many available patches to add functionality you will also need to rebuild.

In its default configuration, dwm is a very simple tiling window manager. Dwm uses the master-stack model we saw first in the review of scrotwm. In tiling mode, starting a new application puts the new app in the "master" area on the left side of the screen, and puts the old "master" app in a tile in the vertical stack on the right side. Dwm has a status bar showing the available workspaces (eight by default) and each workspace that contains running applications has an indicator next to it. The status bar can be sitched from visible to hidden with a key sequence.

There are bound keys for switching from one workspace to another, and you can also switch to a different workspace by clicking on the workspace name or number in the status bar. There are bound keys for starting a terminal and dmenu. By default dwm uses the alt key as its mod key, and alt+p starts dmenu. There are easy key sequences for increasing and decreasing the size of the master area and for swapping stacked apps into and out of the master area. Applications can be "tagged" to send them to any other workspace (or to all workspaces at once).There are many more -- you can see a list of the default key sequences on the man page. Even without reconfiguring, dwm is very usable.

Configuration

As I mentioned, if you want to change anything about dwm's configuration you must edit its config.h file and rebuild. Don't let this keep you from trying dwm -- I have very little experience building from source, and I was able to do it, so you should be able to do it too. All of dwm's code is contained in a single small file, and it is not difficult to build. The latest version can be downloaded from the suckless.org web site, and there are good build directions on the web site, but if you get completely stuck just post on the forum and one way or another we'll get it sorted out.

If you build dwm from source, the make process will install dwm to your /usr/bin folder but will not create a .desktop file. You can do this following the directions in one of the other window manager reviews (such as this one); just change the name and exec line to "dwm."

The config.h file is very easy to understand and modify. For example, to change the mod key from the alt key to the super key, just find this line

#define MODKEY Mod1Mask

and change it to this

#define MODKEY Mod4Mask

The keybindings are also easy to find and change. In this screen shot you can see all the available key bindings and how I currently have them mapped. I changed the "swap master" sequence (called "zoom" in the config file) from its default mod+return to mod+z (which is easier for me to type with my left hand, and how I have it mapped in scrotwm).

2012_03_18_125527_1280x1024_scrot.jpg

Dwm includes bound keys to start a terminal and dmenu, but it is easy to add additional custom keybindings to start applications. To set the key sequence mod+w to start iceweasel, add this code in the /* commands */ section:

static const char *webcmd[]  = { "iceweasel", NULL };

and then add this code to the keys[] section

{ MODKEY,  XK_t,  spawn,  {.v = webcmd } },

   
The config.h file also contains theme information, including statusbar and focus/unfocus colors, window border width, and whether the status bar is shown at the top of the screen, at the bottom, or not at all. I did not try to modify much of this information because I like the defaults, although I did find that I preferred having the status bar at the bottom of the screen once I tried it.

Even after you modify the bound keys and colors to suit your preferences, dwm is still just a simple tiling window manager. Here is where it gets interesting -- there is a large pile of patches available for dwm on the suckless.org web site. There are patches to change the layout, to change master/stack behavior, and all sorts of other things. By default, workspaces are numbered, and they can only be given names by changing config.h and rebuilding, but there is a patch that allows the names to be changed while dwm is running. There is also a patch to change the default "focus follows mouse" to "click to focus." The really nice thing about this method is that if you don't want or need a patch, you don't have to install it. You can install any or all of them, as your needs and desires dictate. This keeps dwm small and fast for most people.

I installed the "bottom stack" and "attach aside" patches just to see how hard it was to do, and it's quite easy -- there are detailed directions on the web site. The patches are small simple diff files that describe what to take out of or add to the source code, and you just download the patch, run this in the folder containing the dwm code:

patch -p1 < path/to/patch.diff

and then rebuild.

In its default configuration dwm puts a newly started app in the master area and moves the current master app to a tile. I prefer to have the new app start in a tile (preserving whatever I was using in the master area) and then switch if I need to -- the "attach aside" patch produces this behavior. And as I've mentioned before, I have an older 4x3 monitor and I prefer to have my tile stack on the bottom of the screen so the master area can use the entire width. The "bottom stack" patch puts the stack at the bottom of the screen, with the master area on top.

2012_03_18_115855_1280x1024_scrot.jpg  2012_03_18_115911_1280x1024_scrot.jpg

It is also easy to add conky to the status bar. The right side of the status bar shows the current root-window title, so adding this code to my dwm startup script put my simple conky on the status bar:

(conky | while read LINE; do xsetroot -name "$LINE"; done) &

Dwm's power really comes from its configurability, and I can only begin to describe all the ways this can be done. The suckless.org web site has a lot of details and a lot of good information.

What I Like About It

It's simple and small. With iceweasel, sakura, and thunar running dwm used only ~120 MB of memory. It is easy to configure and to patch. It has a very useful status bar which (unlike scrotwm) can show you which workspaces contain running apps. This one may become my default tiler after the 30-day experiment.

What I Don't Like About It

Not much. Before I learned how to patch it I wasn't happy with its default vertical stack and master behavior. Now that I know how easy it is to add patches, I might spend too much time playing with all the available patches.

Links

"man dwm"
dwm home page
dwm patches on the suckless.org site
the great #! forums dwm thread
dwm search on #! forum

tomorrow: catwm and dminiwm
back to the top

Last edited by 2ManyDogs (2012-03-25 13:24:16)


Be eggsalad to each other.

Offline

Be excellent to each other!

#327 2012-03-19 18:43:08

PackRat
#! Die Hard
From: USA
Registered: 2011-03-03
Posts: 1,204

Re: 30 Window Managers in 30 days

Nice work on these tilers 2ManyDogs - some of those other patches for dwm look interesting; you'll have to post your patched final in the "starting with dwm" thread.


"It does not require many words to speak the truth." - Chief Joseph, Nez Perce tribe

Offline

#328 2012-03-19 18:49:57

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

Thanks PackRat.


Be eggsalad to each other.

Offline

#329 2012-03-20 02:10:21

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

Wow. No one else has anything to add? I know you're out there reading (or at least "viewing") -- the thread went from 9890 views to 10,071 today (10k! -- a long way to go to the 25k+ the scrotwm thread has, but I can hope...)

Last edited by 2ManyDogs (2012-03-20 02:10:38)


Be eggsalad to each other.

Offline

#330 2012-03-20 05:55:29

mahatman2
#! Die Hard
From: Chattanooga TN
Registered: 2009-09-13
Posts: 550

Re: 30 Window Managers in 30 days

2ManyDogs, I must admit I've been "viewing" a good deal wink I even installed i3 because of you! (And to update it I borked my computer changing all the ppas to testing ... oh well big_smile ) So anyway...thanks for all this work! It's really helpful!


Punch all your friends.

Offline

#331 2012-03-20 07:26:59

kri5
#! Die Hard
From: L.G.C. UK
Registered: 2011-11-10
Posts: 568

Re: 30 Window Managers in 30 days

Another great review, well done 2ManyDogs!

I'm am a recovering Distro Hopper and fighting the urge to install all of these WM's lol
However I'm sure I am not alone here but so far my love for Openbox has been reinforced.
There's absolutely nothing wrong with any of these other WM's and indeed I'm very curious to give a tiler a go but Openbox is my true love and she's well and truely got her claws into me.


#! Waldorf - 64bit - Xfce

Offline

#332 2012-03-20 09:57:37

gensym
#! Junkie
Registered: 2011-10-17
Posts: 447

Re: 30 Window Managers in 30 days

@2Many:
Good work as always!

It might also be useful to add possible ways of getting the DWM sources:

#either
 apt-get source dwm
#or
hg clone http://hg.suckless.org/dwm

Last edited by gensym (2012-03-20 11:25:44)


'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.', {Eric}

Offline

#333 2012-03-20 10:04:37

kri5
#! Die Hard
From: L.G.C. UK
Registered: 2011-11-10
Posts: 568

Re: 30 Window Managers in 30 days

gensym wrote:

@2Many:
Good work as always!

It might also be useful to add possible ways of getting the DWM source:


#either
apt-get source dwm
#or
hg clone http://hg.suckless.org/dwm

(noob time) I take it these would install the latest version from suckless and not the version in the repo?


#! Waldorf - 64bit - Xfce

Offline

#334 2012-03-20 10:16:41

gensym
#! Junkie
Registered: 2011-10-17
Posts: 447

Re: 30 Window Managers in 30 days

apt-get source installs the source from the repo (as in the source code of the package in the repo), and hg clone installs the stock version from suckless.
There isn't really much of a difference between the two if you are on the unstable or the testing branch. The debian version just has some nice debian specific shortcuts (Alt+Enter defaults to x-terminal-emulator instead of a fixed terminal app).
The debian version also makes packaging easier (compile -> build debs -> install it with dpkg) which makes managing it a bit easier (i.e uninstalling it with apt).

Last edited by gensym (2012-03-20 10:48:51)


'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.', {Eric}

Offline

#335 2012-03-20 12:07:44

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

Thanks gensym. I just downloaded the tarball from the suckless web site and unpacked it. Mercurial is not installed by default, so it was just easier for me to get the tarball on my stable test machine. If stable users want to use mercurial to get the latest code, they can follow these instructions and then also install the patches using mercurial (instead of patch):

hg patch path/to/patch.diff

I'm a bit of a noob myself with this stuff, so I don't always know the best way to do things hmm

Maybe you could start a "building from source" how-to thread -- I know there are people here who are afraid to even try it, and we could all learn something from your experience... I know I could use more tips.

Last edited by 2ManyDogs (2012-03-20 12:35:38)


Be eggsalad to each other.

Offline

#336 2012-03-20 12:36:38

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

mahatman2 wrote:

2ManyDogs, I must admit I've been "viewing" a good deal wink I even installed i3 because of you! (And to update it I borked my computer changing all the ppas to testing ... oh well big_smile ) So anyway...thanks for all this work! It's really helpful!

Oh man, sorry about the borkage sad. I hope you got it fixed...


Be eggsalad to each other.

Offline

#337 2012-03-20 13:28:28

gensym
#! Junkie
Registered: 2011-10-17
Posts: 447

Re: 30 Window Managers in 30 days

2ManyDogs wrote:

Thanks gensym. I just downloaded the tarball from the suckless web site and unpacked it. Mercurial is not installed by default, so it was just easier for me to get the tarball on my stable test machine

Ah I forgot that mercurial isn't installed by default (damn that comfy welcome script big_smile ).


'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.', {Eric}

Offline

#338 2012-03-20 14:28:59

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

Day 16. Another two-for-one Tuesday. Today we are going to look at a couple of tiny tiling window managers written by users of another distro, which I will call "distro X" to avoid the lynch mob el_K and gutterslob might gather otherwise.

Catwm

First up is catwm, the "cute and tiny window manager" (I know, I don't like it either, but I like the "cat" name if I forget the "cute and tiny" part). Then we'll look at dminiwm, a slightly more sophisticated fork from catwm.

Both of these window managers must be built from source, but they are on github, so it's very easy. I'll put a little "how-to" at the end of the reviews for people who have never built anything with git. Neither of these window managers creates a .desktop file, so you will need to create one before they will show up in the sessions list in GDM. If you don't remember how to do this, refer to any of the light stacking window manager reviews (such as this one) for more information.

Using and Configuring

Catwm is a simple window manager. It has no status bar or desktop indicators. It has only two modes, master/stacker tiling where the master area is on the left and the stacked tiles are on the right, and "monocle" or full-screen mode. By default it has ten virtual desktops. It has very few key bindings; this screen shot shows the entire key-binding section in config.h:

2012_03_19_090317_1280x1024_scrot.jpg

Notice that the "open file" dialog for geany is in a tile -- this is how catwm handles dialog boxes because it cannot manage floating windows. If the dialog tile is too small, you can easily switch the dialog into the master area.

Pretty much all you can do is increase and decrease the size of the master area, swap apps into and out of the master area, switch between tile and monocle mode, and navigate through the tiles and desktops. The mouse can interact with apps, but all window navigation must be done with the keyboard.

You can change any of the bound key sequences. As I mentioned with dwm, I like to use the mod+z sequence to swap tiles into and out of the master area, so I changed this

{  MOD, XK_Return, swap_master, {NULL}},

to this

{  MOD, XK_z, swap_master, {NULL}},

before I built the window manager. The mod key may be changed (but by default it is set to the super key, so I left it alone) as well as the initial size of the master area, and the colors of focused and unfocused window borders. Mod+p starts dmenu and mod+t starts a terminal, but you may also add add custom key binds to start apps. First, you define the command to start:

const char* webcmd[]  = {"iceweasel", NULL};

and then you add the key binding to the "keys" section:

{  MOD, XK_w, spawn, {.com = webcmd}},

and rebuild. Building takes only a second or two. All of this should look familiar from the dwm review.
   
What I Like About It

It's very simple. It already runs in "attach aside" mode, where new apps start in a tile and must be switched into the master area. Its code is so simple that I was able to find where the window border width is set and change it, even though this is not a configuration option in config.h. I may come back to the code after the 30-day experiment and play with it a bit more.

What I Don't Like About It

I wish it could handle floating dialog boxes, and I wish I could select windows with the mouse. For what it does, it's actually pretty usable.

Links

catwm on github
catwm in the arch wiki
catwm thread on the Arch forum

Dminiwm

Next up is dminiwm, which started as features were added to catwm, and ended up as a separate fork. Dminiwm can run in vertical tile mode (stack on the right side), horizontal tile mode (stack on the bottom), grid mode, or monocle mode. Its attach aside behavior can be changed, and it can leave room for a panel at the top or bottom of the screen (but it does not create a panel). The panel space can be toggled on and off from the keyboard. The mouse can be used for navigation, and dminiwm's mouse focus mode can be changed (from focus-follows-mouse to click-to-focus).

There are more keyboard shortcuts for moving focus and moving tiles. Tiles may be moved up and down or left and right, depending on their current orientation, and alt-tab can be used to cycle through the visible tiles (or apps running on the desktop in monocle mode). The number of desktops may be changed, and dminiwm has a "follow client to desktop" -- this moves the selected tile to a new desktop and activates that desktop at the same time.

Dminiwm can also start applications on specific desktops. This code in config.h causes thunar to start on desktop 2 and iceweasel to start on desktop 3:

static const Convenience convenience[] = { \
    /*  class     desktop follow */
    { "Thunar",       2,    1 },
    { "Iceweasel",    3,    0 },
};

The "desktop follow" flag set to 1 for thunar means that when thunar starts on desktop 2 the desktop is activated. When iceweasel starts on desktop 3 you must manually switch to that desktop.

As with catwm, mod+p starts dmenu and mod+t starts a terminal, and other custom bound keys may be added. Like catwm, you can also set the initial size of the master area in config.h, as well as the color of focused and unfocused window borders. The default mode (the titling mode dminiwm starts in) can be set, as well as attach aside and mouse focus behavior. The config.h file is only slightly larger than catwm's, so it is still very easy to read and understand. As with other tiling window managers, having a copy of the config file open (or printed) will help you navigate.

Here's what dminiwm looks like with geany running and the "open" dialog floating, and with conky in the panel space. Notice that it is possible to change the size of the stacked tiles (this is not possible in catwm):

2012_03_19_104813_1280x1024_scrot.jpg

Dminiwm in "grid" mode, with geany showing a few of the configurable bound keys:

2012_03_19_103823_1280x1024_scrot.jpg

And in grid mode with a bunch of stuff open. I don't know why you'd run it like this, but you can:

2012_03_19_105352_1280x1024_scrot.jpg

What I Like About It

It has bottom-stack mode and grid modes. It is a little more configurable than catwm, and I like the "follow to desktop" function. I can use the mouse to navigate. It can handle floating dialog windows.

What I Don't Like About It

Even when I specify "attach aside" the focus still stays with the master window, and I have to manually select the new window. I'd like the focus to switch to the new window, and I can't seem to make this happen with the available configuration options.

Links

dminiwm on github
dminiwm on the Arch forum

back to the top

Postscript -- Building

If you already know how to build from github, you don't need to read this.

First, you need to install git (if you've never built from source, you probably don't have it):

sudo apt-get install git

Then you "clone" the source code onto your machine. Git will create a folder for the code, but I like to keep things a little more organized, so I have a "~/code" folder that contains all my build folders. You can, of course, keep the code anywhere you like.

mkdir ~/code
cd ~/code
git clone https://github.com/pyknite/catwm

This will create a "catwm" subfolder and place all the necessary files in the subfolder. All you have to do to build it is

cd catwm
make

If you want to use anything other than the default key bindings you will need to edit the config.h file. Once you're sure the config is they way you like it, you just run

sudo make clean install

To make and install catwm to /usr/bin. Try it out, edit, make, repeat as necessary.

Tomorrow: snapwm and monsterwm
back to the top

Last edited by 2ManyDogs (2012-03-21 14:07:24)


Be eggsalad to each other.

Offline

#339 2012-03-20 14:31:01

gutterslob
#! Resident Bum
Registered: 2009-11-03
Posts: 2,983

Re: 30 Window Managers in 30 days

Nice dwm and musca write-ups, Mr. 2MD
Is musca still in development? I though it died and got forked.


Point & Squirt

Offline

#340 2012-03-20 14:34:04

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

^ you're a little ahead of me there mr. G -- I haven't written the musca review yet (unless I did it and don't remember). I don't know if it's still being developed; what did it fork to?

Last edited by 2ManyDogs (2012-03-20 14:34:23)


Be eggsalad to each other.

Offline

#341 2012-03-20 14:41:30

gutterslob
#! Resident Bum
Registered: 2009-11-03
Posts: 2,983

Re: 30 Window Managers in 30 days

^Ack. Sorry.
There was some Musca discussion going on in another forum in another tab on my browser.
Excuse my brain fart. >_<

Again, good stuff on dwm. Haven't used it much lately, but it'll probably be the one I go back to one day. It's still the king in many ways.


Point & Squirt

Offline

#342 2012-03-20 15:04:22

PackRat
#! Die Hard
From: USA
Registered: 2011-03-03
Posts: 1,204

Re: 30 Window Managers in 30 days

More good stuff 2ManyDogs.

A couple of comments, the Dwm and Wmfs status bars support color for those that prefer that aethetic. And i3 does have debian repositories for those that like to customize their apt sources:

http://i3wm.org/docs/repositories.html


"It does not require many words to speak the truth." - Chief Joseph, Nez Perce tribe

Offline

#343 2012-03-20 15:10:51

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

^ thanks PackRat


Be eggsalad to each other.

Offline

#344 2012-03-20 15:37:56

servingwater
#! Junkie
Registered: 2009-02-28
Posts: 443

Re: 30 Window Managers in 30 days

gutterslob wrote:

Is musca still in development? I though it died and got forked.

I think you are right.
Musca did "die" but I think was picked up again by another developer just to die again, as 'herbstluftwm' was pretty much the wm the new devel wanted to take muca to. Or something to that matter......

I think I read that in the Arch forums once, if I can find it i could post a link I guess.

Offline

#345 2012-03-20 15:40:26

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

^ thanks but no need, I found that thread. I think I'll still review musca, as I've put a little time into learning how to use it and I like it, but I'll probably also review herbstluftwm eventually.

(the musca web site is still up and you can still get the code and build it)

Last edited by 2ManyDogs (2012-03-20 15:42:58)


Be eggsalad to each other.

Offline

#346 2012-03-20 15:47:18

servingwater
#! Junkie
Registered: 2009-02-28
Posts: 443

Re: 30 Window Managers in 30 days

@2ManyDogs

Absolutely! smile
Just because it's "dead" doesn't necessarily mean it not useful.
I mean people still use ratpoison for example and have no problem with it.
I could be wrong but dwm didn't have an update in quite some time, too.

And I'm sure there are countless of others.

Looking forward to your review of musca and perhaps herbstluftwm and maybe even subtlewm big_smile wink

Last edited by servingwater (2012-03-20 15:48:19)

Offline

#347 2012-03-20 16:49:34

el_koraco
#!/loony/bun
From: inside Ed
Registered: 2011-07-25
Posts: 4,749

Re: 30 Window Managers in 30 days

gutterslob wrote:

Again, good stuff on dwm. Haven't used it much lately, but it'll probably be the one I go back to one day. It's still the king in many ways.

Har har. I've been toying with config.h ever since scrotum lost its ballz. The simplicity of the source code and the ease of mercurial patching is very suckless. Plus, it has better floating definitions than spectrwm.

AND dwm doesn't originate on the dark side, which is also a plus.

Last edited by el_koraco (2012-03-20 16:50:12)

Offline

#348 2012-03-20 17:12:22

mahatman2
#! Die Hard
From: Chattanooga TN
Registered: 2009-09-13
Posts: 550

Re: 30 Window Managers in 30 days

2ManyDogs wrote:
mahatman2 wrote:

2ManyDogs, I must admit I've been "viewing" a good deal wink I even installed i3 because of you! (And to update it I borked my computer changing all the ppas to testing ... oh well big_smile ) So anyway...thanks for all this work! It's really helpful!

Oh man, sorry about the borkage sad. I hope you got it fixed...

Ah dude don't be sorry! My computer works well enough, and I'm getting it closer to when I had my Arch install (which I liked better anyway - I had to come back to Debian because of the school network and lsb-release...more on that never wink ). So no worries! And I'm loving i3!


Punch all your friends.

Offline

#349 2012-03-20 17:21:37

ivanovnegro
Ivan #000000
From: unstable madness
Registered: 2011-06-02
Posts: 5,422

Re: 30 Window Managers in 30 days

Somehow I lost track about the great DWM review, the weekend was birthday time anyway, too much Rakija I guess. smile

Great review on that one, @2ManyWMs. I really like it. It comes second after Scrotwm for me. If it just would not be this source compiling, not because compiling is a pain, I do not get it, that I have to recompile it after making changes to the config. Maybe I will try it again, definiteley one of the best tilers for me among Scrotwm.

Offline

Be excellent to each other!

#350 2012-03-20 18:36:09

2ManyDogs
dv#!
From: elsewhere
Registered: 2011-11-22
Posts: 1,346

Re: 30 Window Managers in 30 days

^ I agree Ivan, but the compiling doesn't really bother me. As much as I like the others I've looked at, dwm is the only one (so far) that might replace scrotwm on my main machine when I'm done with the reviews.


Be eggsalad to each other.

Offline

Board footer

Powered by FluxBB

Copyright © 2012 CrunchBang Linux.
Proudly powered by Debian. Hosted by Linode.
Debian is a registered trademark of Software in the Public Interest, Inc.

Debian Logo