[SOLVED] dwm.c

Hi, I followed the tutroial on the wiki for setting up dwm, but now I need to find my dwm.c file so I can define some functions.
My build scripts are in ~/dwm
Last edited by Mesher (2009-03-02 22:06:49)

Don't follow the wiki on this one.  Download the source code yourself, configure, and then compile.
http://www.suckless.org/dwm/

Similar Messages

  • [solved]DWM apply systray patch

    [solved]I am trying to appply the systray6.1 patch to dwm. The "patch" goes fine but when I make I get the below errors:
        dwm build options:
        CFLAGS   = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os -I/usr/X11R6/include -I/usr/include/freetype2 -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=2     -DVERSION="6.1" -DXINERAMA
        LDFLAGS  = -s -L/usr/X11R6/lib -lX11 -lXinerama -lfontconfig -lXft
        CC       = cc
        CC drw.c
        CC dwm.c
        dwm.c: In function ‘clientmessage’:
        dwm.c:589:26: error: incompatible types when assigning to type ‘long unsigned int’ from type ‘XftColor’
        swa.background_pixel  = scheme[SchemeNorm].bg->rgb;
                              ^
        dwm.c: In function ‘updatesystray’:
        dwm.c:2221:18: error: incompatible type for argument 9 of ‘XCreateSimpleWindow’
       systray->win = XCreateSimpleWindow(dpy, root, x, m->by, w, bh, 0, 0, scheme[SchemeSel].bg->rgb);
                      ^
        In file included from dwm.c:36:0:
        /usr/include/X11/Xlib.h:1621:15: note: expected ‘long unsigned int’ but argument is of type ‘XftColor’
        extern Window XCreateSimpleWindow(
                   ^
        dwm.c:2224:24: error: incompatible types when assigning to type ‘long unsigned int’ from type ‘XftColor’
        wa.background_pixel  = scheme[SchemeNorm].bg->rgb;
                            ^
        dwm.c:2244:24: error: incompatible types when assigning to type ‘long unsigned int’ from type ‘XftColor’
        wa.background_pixel  = scheme[SchemeNorm].bg->rgb;
                            ^
        dwm.c:2263:2: error: incompatible type for argument 3 of ‘XSetForeground’
        XSetForeground(dpy, drw->gc, scheme[SchemeNorm].bg->rgb);
        ^
        In file included from dwm.c:36:0:
        /usr/include/X11/Xlib.h:3227:12: note: expected ‘long unsigned int’ but argument is of type ‘XftColor’
         extern int XSetForeground(
                ^
        Makefile:18: recipe for target 'dwm.o' failed
        make: *** [dwm.o] Error 1
    I haven't applied any other patches. Any idea what I am doing wrong? I can go into dwm.c and see the lines the error is refering to but I am not sure what the problem is.
    Thanks
    Last edited by derrickcope (2015-05-01 02:30:45)

    I just got the latest one off of the repo at git.suckless.org/dwm. the page says 6.0 but my config.mk says version 6.1. I did try the 6.0 version but the patch had errors. I am a little confused. The other patches come back with errors too. I am using an unpatched version at the moment so I would think most patches should work.
    What should I do?

  • [SOLVED] DWM+pertag+bstack error

    hi
    i'm trying to compile dwm with pertag diff patch and bstack.c
    i get an error while compiling it:
    CC dwm.c
    In file included from config.h:42,
    from dwm.c:254:
    bstack.c: En la función 'bstack':
    bstack.c:7: error: puntero deferenciado a tipo de dato incompletoº
    bstack.c:11:error:puntero..
    make: *** [dwm.o] Error 1
    ==> ERROR: Falló la compilación.ª
    Abortando...
    º means: dereference pointer to incomplete data type
    ª means: Compilation failed.
    it sucks 'cos i want to read pdf on top of my 10" screen and write documents at bottom, without the problem of change to another desktop and have to move to another layout, i.e., floating for gimp
    another thing: for write this post i must to write the code manually, 'cos a don't know how to copy from urxvt and paste it to firefox.. yep, that's a newbie question
    Edit: solved here
    Last edited by kismet010 (2010-02-08 05:51:09)

    Looks like this workaround isn't enough to get it to compile on the latest hg clone.
    dwm build options:
    CFLAGS = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/include/X11 -DVERSION="5.8" -DXINERAMA
    LDFLAGS = -s -L/usr/lib -lc -L/usr/lib/X11 -lX11 -L/usr/lib/X11 -lXinerama
    CC = cc
    CC dwm.c
    dwm.c: In function 'gaplessgrid':
    dwm.c:262: error: dereferencing pointer to incomplete type
    dwm.c:276: error: dereferencing pointer to incomplete type
    dwm.c:276: error: dereferencing pointer to incomplete type
    dwm.c:279: error: dereferencing pointer to incomplete type
    dwm.c:282: error: dereferencing pointer to incomplete type
    dwm.c:282: error: dereferencing pointer to incomplete type
    dwm.c:283: error: dereferencing pointer to incomplete type
    dwm.c:284: error: dereferencing pointer to incomplete type
    make: *** [dwm.o] Error 1
    Line 262 for me is:
    for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next))
    I've tried many things and maybe i'm missing something very simple here.

  • [SOLVED] dwm: cannot open mixer

    I've been setting up dwm through the last hours and I had an issue with sound playback. Firstly, I can play any sound from the console or any other wm. The problem appears when I start dwm by using xinit but loading it through gdm seems to solve the problem but still I'm not satisfied with that solution. I think that gdm do something in order to grant access to the sound card but on the other hand I still have another problem with multiple running applications that playback sound, only the first opened application can.
    After starting dwm with xinit I get "amixer: Mixer attach default error: No such file or directory" and by running alsamixer I get "cannot open mixer: No such file or directory".
    Thanks in advance
    Last edited by russo (2011-06-20 04:01:15)

    Well, I checked those posts.
    /dev/mixer exists
    I tried to load the snd-pcm-oss but nothing changed.
    However I noticed that I can run alsamixer as root. I'm not sure but maybe having to run gdm as root while running xinit as user made the difference but still it doesn't make sense since I can run openbox with xinit and everything works fine. I'll keep trying
    EDIT: Finally, I tried to load openbox through xinit and had the same problem. Next I tried to reboot removing gdm from the daemons and start dwm directly with the xinitrc options. Now it seems to work fine. Maybe gdm blocked the sound card once it opened.
    Last edited by russo (2011-06-20 04:00:56)

  • [SOLVED]dwm-sprinkles: can't right click

    Just installed dwm-sprinkles (compiled from source grabbed using svn because there's nothing in AUR or ABS for it), and I can no longer right click in firefox or use the drop-down menus.  Drop downs on websites work fine, but I can't use anything in the firefox toolbar.  ie, File, Edit, address bar history, ABP menu, etc.  These things all work fine in gftp and goggles, which are the only other gui apps that I really use.
    It worked fine in vanilla dwm, which I built from the package in AUR.  Switched to dwm sprinkles because patching was a pain in the ass and sprinkles already has pretty much everything I need.  I'm guessing there is something in config.h that is causing this but I haven't changed anything except colors and terminal command. 
    Sorry if this has been posted/solved before, but there's just not much in-depth documentation on DWM out there (which is why I switched to a pre-patched version of it in the first place).
    Last edited by clutch (2010-06-04 22:08:28)

    ok, it works now after a reboot.  No idea. 

  • [SOLVED] dwm config

    [SOLVED]
    Hi,
    I am asking for help with my dwm config. What I want it to do is, instead of snapping directly to the edge of the screen, I want it to snap a certain distance away from it (and maybe other windows). Can someone point me in the right direction?
    Also, this is less relevant, but I want to include the system time in the title bar of dwm. Any help there?
    Last edited by latenitekid (2013-03-12 00:43:30)

    The time is included in the example status bar on the wiki page: https://wiki.archlinux.org/index.php/Dw … _statusbar
    The snapping thing sounds like a variant of useless gaps...

  • [SOLVED] [dwm] Can't start dwm

    Hi!
    I've recently entered the world of tiling WM and started with dwm.
    Since I'm kinda insecure, and wanted to keep gnome as well, I've followed every single step in the wiki article and used the ~/.Xclients way, so I could start dwm from gdm (I've followed also the steps in the discussion page as well).
    Then, when I tried to startup dwm from gdm, it doesn't start, and goes back again to gdm.
    My ~/.Xclients file is the following:
    setxkbmap -layout pt
    #relogio
    while true; do
    xsetroot -name "$( date +"%F %R" )"
    sleep 1m # Update time every minute
    done &
    # #estado da bateria
    # while true; do
    # batt=$(LC_ALL=C acpi -b)
    # case $batt in
    # *Discharging*)
    # batt="${batt#* * * }"
    # batt="${batt%%, *} "
    # batt=""
    # esac
    # xsetroot -name "$batt$(date +%R)"
    # sleep 60
    # done &
    #conky bar
    conky | while read -r; do xsetroot -name "$REPLY"; done &
    #executar o dwm
    exec dwm
    It's all things copied from the wiki page, just for testing if everything was fine...
    My /usr/share/xsessions/dwm.desktop file is:
    [Desktop Entry]
    Encoding=UTF-8
    Name=Dwm
    Comment=Dynamic window manager
    Exec=/usr/local/bin/dwm
    Icon=dwm
    Type=XSession
    And I've created a /usr/share/xsessions/user.desktop file that looks like this:
    [Desktop Entry]
    Encoding=UTF-8
    Name=User XSession script
    Comment=Runs your ~./Xsession script
    Exec=/etc/X11/Xsession
    Type=Application
    Thanks in advance for any help, I've searched the forums and used google and couldn't find any answer to this problem :S
    Last edited by Aeriel (2011-09-01 17:19:02)

    haxit, thanks I've managed to solve the problem!
    I've installed SLiM and set up everything in .xinitrc.
    The dwm.desktop doesn't match with yours because I've changed somethings and because I didn't backup the file (I know, it's super dumb and stupid) I had to paste the defaults I found in the web.
    Thanks.
    Fellow gdm and dwm users, an advice, put everything in .xinitrc. It's easier.
    Last edited by Aeriel (2011-09-01 17:19:30)

  • [Solved] Dwm reconfigure after update.

    The problem is simple, after update to last version of Dwm i had to build and install it from scratch. I don't want to do that for any new version of Dwm. Is there a way to avoid that process?
    Cheers.
    Last edited by n0dix (2010-06-04 13:40:46)

    skanky wrote:
    I had this issue on my other machine (this one uses scrotwm). Trying to remember what I did to resolve it.
    There were no errors after makepkg -efi but the version kept reverting back to the previous one. I think it happened updating to that one, too. Anyway, I *think* what I did was to copy my config.h elsewhere, clear out the dir I used for building it, updated abs, copied the dwm-5.8.1 files in and rebuilt. Search for dwm-5.8.1 using grep to make sure you have the right files.
    There may be a step missing from that though.
    Exactly the same problem and the solution helps a lot. Indeed, this is the way i solved the issue. But the question is: exists any way to do automatically those steps? I know, i can make a shell script, but apart from that there is another?

  • [SOLVED] dwm Recompile Difficulty

    I am currently running dwm. I followed the abs intall method from the ArchWiki, but have run into trouble when I attempt to make changes to the config.h and recompile. If I make a single simple change to config.h (ex. change the value of "static const char ...color" or "static unsigned int borderpx") I do not notice any change in dwm upon restarting it.
    [filam@lotte dwm]$ makepkg -efi
    ==> Making package: dwm 5.3-1 i686 (Tue Dec 30 11:47:02 EST 2008)
    ==> Checking Runtime Dependencies...
    ==> Checking Buildtime Dependencies...
    ==> WARNING: Skipping source retrieval -- using existing src/ tree
    ==> WARNING: Skipping source integrity checks -- using existing src/ tree
    ==> WARNING: Skipping source extraction -- using existing src/ tree
    ==> Removing existing pkg/ directory...
    ==> Entering fakeroot environment...
    ==> Starting build()...
    dwm build options:
    CFLAGS = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/include/X11 -DVERSION="5.3"
    LDFLAGS = -s -L/usr/lib -lc -L/usr/lib/X11 -lX11
    CC = cc
    CC dwm.c
    CC -o dwm
    dwm build options:
    CFLAGS = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/X11R6/include -DVERSION="5.3"
    LDFLAGS = -s -L/usr/lib -lc -L/usr/X11R6/lib -lX11
    CC = cc
    installing executable file to /home/filam/dwm/pkg/usr/bin
    installing manual page to /home/filam/dwm/pkg/usr/share/man/man1
    ==> Tidying install...
    -> Compressing man pages...
    -> Stripping debugging symbols from binaries and libraries...
    ==> Creating package...
    -> Generating .PKGINFO file...
    -> Adding install script...
    -> Compressing package...
    ==> Leaving fakeroot environment.
    ==> Finished making: dwm 5.3-1 i686 (Tue Dec 30 11:47:04 EST 2008)
    ==> Installing package dwm with pacman -U...
    We trust you have received the usual lecture from the local System
    Administrator. It usually boils down to these three things:
    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.
    Password:
    filam is not in the sudoers file. This incident will be reported.
    As a reletively new end-user I can imagine I have made some simple mistake, but just can't imagine what that might be.
    Last edited by filam (2008-12-30 16:57:29)

    Thanks for the help lake.
    string wrote:You need root privs to install packages but you don't need them in order to create packages. You are running `makepkg -efi` which will try to install the package after its creation. The solution is simple, first create the package as a regular user via `makepkg -ef` (the `i` flag has been stripped), then, log in as root and run `pacman -U /full/path/to/your/newly/created/package`.
    Thanks string. Perfect explanation. This solution was exactly what I was looking for. Worked like a charm.

  • [SOLVED] dwm pertag patch no working properly

    Hello everybody! I recently had to redo my system.
    Before this change I was using the DWM 6.0 with patches NMaster and pertag.
    link to the source code used - https://github.com/abara/config/tree/master/dwm-pertag
    But now, after having reinstalled the base system, I realized that the same code that I used before is no longer behaving as it should.
    He is working as if there is no patch applied in dwm.c
    I wonder what would be the possible reasons.
    P.S. will not use sprinkles fork
    Last edited by abarahc (2013-07-11 23:14:07)

    ANOKNUSA wrote:NMaster patch is now part of the base code, so applying a patch for it is superfluous.
    Yeah, that's what I meant ;P http://dwm.suckless.org/patches/nmaster
    I'm using dwm with pertag patch and things are working as expected.

  • [solved] dwm + conky + mpd

    I have the following .conkyrc:
    background no
    out_to_console yes
    update_interval 2
    total_run_times 0
    use_spacer none
    TEXT
    $if_mpd_playing ^i(/home/hithere/.dwm/dzen/xbm8x8/note.xbm) ${mpd_smart}$endif • ^i(/home/hithere/.dwm/dzen/xbm8x8/cpu.xbm) ${cpu}% • ^i(/home/hithere/.dwm/dzen/xbm8x8/mem.xbm) ${memperc}% • ^i(/home/hithere/.dwm/dzen/xbm8x8/fs_01.xbm) /sda1: ${fs_used_perc /}% | /sda2: ${fs_used_perc /home}% • ^i(/home/hithere/.dwm/dzen/xbm8x8/net_down_03.xbm) ${downspeedf eth0} ^i(/home/hithere/.dwm/dzen/xbm8x8/net_up_03.xbm) ${upspeedf eth0} • ^fg(\#696969)${time %H:%M}^fg()
    When I play a music file via ncmpc++, the conky display gets shifted to the right, thus hiding my download/upload speeds, clock, etc. Is there a way to anchor my conky display information and have mpd fill the music file information to the left?
    Last edited by ntness (2010-05-30 06:13:38)

    Ok, played with -x and -w a bit. Increasing -w truncates the clock/up and down speed/drive information (apparently shifting things off the screen to the right). Decreasing -w truncates almost everything and shifts the code towards the center of the screen. The same holds for increasing and decreasing the value of -x; increasing shifts everything to the right (off screen) and decreasing shifts everything towards the center (albeit, with no truncation). Now I'm positive this would all work out merrily if I had my cpu information in the top left and so could put the mpd code at the end of my file

  • [SOLVED] dwm + dzen2 + conky-cli misconfigured

    I have been trying to pipe conky status to dzen2 and it is doing my head in.
    My .xinitrc
    #!/bin/sh
    # ~/.xinitrc
    setxkbmap -option terminate:ctrl_alt_bksp &
    eval `cat ~/.fehbg` &
    numlockx &
    xscreensaver -no-splash &
    # Dzen & conky
    conky | dzen2 -fg '#dcdcdc' -bg '#3f3f3f' -ta r -fn '-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*' &
    # Start dwm
    exec ck-launch-session ~/Scripts/dwm-start
    .conkyrc
    background no
    out_to_console yes
    update_interval 2
    total_run_times 0
    use_spacer none
    double_buffer yes
    TEXT
    ${if_existing /sys/class/power_supply/BAT0/present}^fg(#999999)BAT^fg()${battery_percent}%${else}AC${endif} * CPU ${cpu cpu1}% RAM ${memperc}% * / ${fs_used_perc /}% /home ${fs_used_perc /home}% * PKG ${execpi 900 ~/Scripts/pacman-up.pl} * ${if_existing /proc/net/route ra0}Down ${downspeedf ra0}K/s Up ${upspeedf ra0}K/s ${else} ${if_existing /proc/net/route eth0} Down ${downspeedf ra0}K/s Up ${upspeedf ra0}K/s${endif} ${endif}* ${time %I:%M%P}
    Start dwm script
    conky | while read line; do
    xsetroot -name "$line";
    done | while true; do
    dwm > /dev/null; done;
    Could anyone point me at what I am doing wrong? I have tried following examples in the forums, including this one and this one -- but I either end up with dwm 5.7.2 in the corner, or conky prints out the ^fg etc...
    Any help would be appreciated at this point...
    Last edited by jasonwryan (2009-11-20 06:11:51)

    Thanks for the suggestions Skanky. The broken line in conky was a copy/paste error into the browser - it is a single line conky (I've edited the OP to reflect that).
    I think it is a problem with the way conky-cli and dzen work together. If I run:
    echo "testing" | dzen2 -fg '#dcdcdc' -bg '#3f3f3f' -ta r -fn '-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*' -p
    it prints as expected.
    Similarly, if I comment the conky | dzen2 line in .xinintrc and just run conky-cli from the start script it works...
    Trying to get then to work together, however, is another matter.
    /edit
    Some progress: it seems that it is being drawn - if I Mod-Shift-q the dwm status bar briefly disappears and I can see conky momentarily. I tried starting conky | dzen2 after dwm but that didn't work.
    I have also added some options, which seem to have helped, my .xinintrc entry now looks like:
    conky | dzen2 -x '500' -e '' -fg '#dcdcdc' -bg '#3f3f3f' -ta r -fn '-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*' -p &
    Last edited by jasonwryan (2009-11-19 16:57:13)

  • [SOLVED]dwm and Diablo II?

    Hi all,
    Quick question--well maybe?
    Decided to plunge into the world of tiling wm's and have so far decided on dwm.  So far really like it and it helps out my old T21 Thinkpad.  I do play some games on the laptop when I'm out of town but Diablo II in wine doesn't seem to work properly.  I've searched and googled to death and haven't really found a definitive answer.  It just seems to resize the screen and then freezes.
    Edit: To tell the truth, it doesn't really freeze.  I can still bring up another terminal or something else but the resolution is all messed up.
    Last edited by bgc1954 (2008-11-19 05:50:25)

    1)  Yes, I run both e17 and pekwm on this laptop.  It works in both other wm's.
    2)  Haven't tried running it from terminal yet.  I'll try that and see what happens, though.
    3)  No changes made other than installing dwm.
    Edit: well, here's what spits out when run from terminal:
    [brian@archlaptop ~]$ wine 'c:\\Program Files\\Diablo II\\Diablo II.exe'
    [brian@archlaptop ~]$ fixme:win:EnumDisplayDevicesW ((null),0,0x33ebfc,0x00000000), stub!
    fixme:xrandr:X11DRV_XRandR_SetCurrentMode Cannot change screen BPP from 16 to 8
    fixme:d3d:IWineD3DDeviceImpl_CreateSwapChain The app requests more than one back buffer, this can't be supported properly. Please configure the application to use double buffering(=1 back buffer) if possible
    fixme:xrandr:X11DRV_XRandR_SetCurrentMode Cannot change screen BPP from 16 to 8
    fixme:d3d:IWineD3DDeviceImpl_CreateSwapChain The app requests more than one back buffer, this can't be supported properly. Please configure the application to use double buffering(=1 back buffer) if possible
    err:d3d:IWineD3DDeviceImpl_SetupFullscreenWindow (0x132200): Want to change the window parameters of HWND 0x20028, but another style is stored for restoration afterwards
    err:x11settings:X11DRV_ChangeDisplaySettingsEx No matching mode found 640x480x32 @0! (XRandR)
    And,  I'll try what thayer suggests, thanks.   Yeh, I tried setting float before running the script I use and didn't help.  I'll try the config.h route next.
    Last edited by bgc1954 (2008-11-19 05:13:51)

  • [SOLVED] DWM Compile Errors

    Hey guys,
    I'm new to arch linux, and newish to linux in general. I'm trying to compile dwm and keep running into the same error. I have been trying to follow the wiki entry on dwm to a T but have not had success thus far.
    Currently what I've done is:
    1. update abs
    2. copy makepkg files to ~/dwm
    3. edit config.h, save
    4. makepkg -f >> PKGFILE
    5. makepkg -efi
    Then I get this
    Any suggestions would be greatly appreciate
    thanks
    Last edited by raidicus (2010-05-29 23:43:57)

    Well, its definitely possible that I misunderstood the process of compiling. i thought you needed to edit dwm's config.h before you compiled it...
    IE you get a bunch of config files, edit them, then make an installable package out of them.
    in other words i thought I *was* following the wiki...but now I see that I mixed up the steps a little bit..
    So basically config.h doesn't have to be messed with then compiled...

  • [SOLVED] dwm doesn't compile with moveresize function

    I'am trying to compile dwm with moveresize function but I get this error:
    dwm build options:
    CFLAGS = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/include/X11 -DVERSION="5.7.2" -DXINERAMA
    LDFLAGS = -s -L/usr/lib -lc -L/usr/lib/X11 -lX11 -L/usr/lib/X11 -lXinerama
    CC = cc
    CC dwm.c
    In file included from dwm.c:254:0:
    config.h: In function 'moveresize':
    config.h:23:7: error: dereferencing pointer to incomplete type
    config.h:23:34: error: dereferencing pointer to incomplete type
    config.h:26:9: error: dereferencing pointer to incomplete type
    config.h:26:17: error: dereferencing pointer to incomplete type
    config.h:27:6: error: dereferencing pointer to incomplete type
    config.h:28:6: error: dereferencing pointer to incomplete type
    config.h:29:6: error: dereferencing pointer to incomplete type
    make: *** [dwm.o] Error 1
    Here's my config.h
    /* See LICENSE file for copyright and license details. */
    /* appearance */
    static const char font[] = "-*-terminus-*-*-*-*-12-*-*-*-*-*-*-*";
    static const char normbordercolor[] = "#454545";
    static const char normbgcolor[] = "#454545";
    static const char normfgcolor[] = "#C0C0C0";
    static const char selbordercolor[] = "#C0C0C0";
    static const char selbgcolor[] = "#454545";
    static const char selfgcolor[] = "#FFFFFF";
    static const unsigned int borderpx = 1; /* border pixel of windows */
    static const unsigned int snap = 32; /* snap pixel */
    static const Bool showbar = True; /* False means no bar */
    static const Bool topbar = True; /* False means bottom bar */
    /* moveresize */
    static void moveresize(const Arg *arg) {
    XEvent ev;
    Monitor *m = selmon;
    if(!(m->sel && arg && arg->v && m->sel->isfloating))
    return;
    resize(m->sel, m->sel->x + ((int *)arg->v)[0],
    m->sel->y + ((int *)arg->v)[1],
    m->sel->w + ((int *)arg->v)[2],
    m->sel->h + ((int *)arg->v)[3],
    True);
    while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
    /* tagging */
    static const char *tags[] = { "term", "web", "fm", "im", "media", "float" };
    static const Rule rules[] = {
    /* class instance title tags mask isfloating monitor */
    { "Gimp", NULL, NULL, 1 << 5, True, -1 },
    { "Chromium", NULL, NULL, 1 << 1, True, -1 },
    { "MPlayer", NULL, NULL, 0, True, -1 },
    { "Wine", NULL, NULL, 1 << 5, True, -1 },
    { "Gpicview", NULL, NULL, 0, True, -1 },
    { "Pcmanfm", NULL, NULL, 1 << 2, True, -1 },
    { "Xarchiver", NULL, NULL, 0, True, -1 },
    { "Amsn", NULL, NULL, 1 << 3, True, -1 },
    /* layout(s) */
    static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
    static const Bool resizehints = False; /* True means respect size hints in tiled resizals */
    static const Layout layouts[] = {
    /* symbol arrange function */
    { "[]=", tile }, /* first entry is default */
    { "><>", NULL }, /* no layout function means floating behavior */
    { "[M]", monocle },
    /* key definitions */
    #define MODKEY Mod4Mask
    #define TAGKEYS(KEY,TAG) \
    { MODKEY, KEY, view, {.ui = 1 << TAG} }, \
    { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
    { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
    { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
    /* helper for spawning shell commands in the pre dwm-5.0 fashion */
    #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
    /* commands */
    static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
    static const char *tdmenucmd[] = { "tdmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
    static const char *termcmd[] = { "roxterm", NULL };
    static const char *mutecmd[] = { "amixer", "-q", "sset", "Master", "toggle", NULL };
    static const char *volupcmd[] = { "amixer", "-q", "sset", "Master", "5-", "unmute", NULL };
    static const char *voldowncmd[] = { "amixer", "-q", "sset", "Master", "5+", "unmute", NULL };
    static const char *bgltupcmd[] = { "xbacklight", "-inc", "15", NULL };
    static const char *bgltdowncmd[] = { "xbacklight", "-dec", "1", NULL };
    static const char *displayoff[] = { "xset", "dpms", "force", "off", NULL };
    static const char *suspend[] = { "sudo", "pm-suspend", NULL };
    static Key keys[] = {
    /* modifier key function argument */
    { 0, 0x1008ff12, spawn, {.v = mutecmd } },
    { 0, 0x1008ff11, spawn, {.v = volupcmd } },
    { 0, 0x1008ff13, spawn, {.v = voldowncmd } },
    { 0, 0x1008ff02, spawn, {.v = bgltupcmd } },
    { 0, 0x1008ff03, spawn, {.v = bgltdowncmd } },
    { 0, 0x1008ff59, spawn, {.v = displayoff } },
    { 0, 0x1008ff2f, spawn, {.v = suspend } },
    { MODKEY, XK_p, spawn, {.v = dmenucmd } },
    { MODKEY, XK_r, spawn, {.v = tdmenucmd } },
    { MODKEY, XK_Return, spawn, {.v = termcmd } },
    { MODKEY, XK_b, togglebar, {0} },
    { MODKEY, XK_j, focusstack, {.i = +1 } },
    { MODKEY, XK_k, focusstack, {.i = -1 } },
    { MODKEY, XK_h, setmfact, {.f = -0.05} },
    { MODKEY, XK_l, setmfact, {.f = +0.05} },
    { MODKEY|ShiftMask, XK_Return, zoom, {0} },
    { MODKEY, XK_Tab, view, {0} },
    { MODKEY, XK_c, killclient, {0} },
    { MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
    { MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
    { MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
    { MODKEY, XK_space, setlayout, {0} },
    { MODKEY|ShiftMask, XK_space, togglefloating, {0} },
    { MODKEY, XK_0, view, {.ui = ~0 } },
    { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
    { MODKEY, XK_comma, focusmon, {.i = -1 } },
    { MODKEY, XK_period, focusmon, {.i = +1 } },
    { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
    { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
    { MODKEY|ShiftMask, XK_q, quit, {0} },
    { MODKEY, XK_Down, moveresize, {.v = (int []){ 0, 25, 0, 0 }}},
    { MODKEY, XK_Up, moveresize, {.v = (int []){ 0, -25, 0, 0 }}},
    { MODKEY, XK_Right, moveresize, {.v = (int []){ 25, 0, 0, 0 }}},
    { MODKEY, XK_Left, moveresize, {.v = (int []){ -25, 0, 0, 0 }}},
    { MODKEY|ShiftMask, XK_Down, moveresize, {.v = (int []){ 0, 0, 0, 25 }}},
    { MODKEY|ShiftMask, XK_Up, moveresize, {.v = (int []){ 0, 0, 0, -25 }}},
    { MODKEY|ShiftMask, XK_Right, moveresize, {.v = (int []){ 0, 0, 25, 0 }}},
    { MODKEY|ShiftMask, XK_Left, moveresize, {.v = (int []){ 0, 0, -25, 0 }}},
    TAGKEYS( XK_1, 0)
    TAGKEYS( XK_2, 1)
    TAGKEYS( XK_3, 2)
    TAGKEYS( XK_4, 3)
    TAGKEYS( XK_5, 4)
    TAGKEYS( XK_6, 5)
    TAGKEYS( XK_7, 6)
    TAGKEYS( XK_8, 7)
    TAGKEYS( XK_9, 8)
    /* button definitions */
    /* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
    static Button buttons[] = {
    /* click event mask button function argument */
    { ClkLtSymbol, 0, Button1, setlayout, {0} },
    { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
    { ClkWinTitle, 0, Button2, zoom, {0} },
    { ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
    { ClkClientWin, MODKEY, Button1, movemouse, {0} },
    { ClkClientWin, MODKEY, Button2, togglefloating, {0} },
    { ClkClientWin, MODKEY|ShiftMask, Button1, resizemouse, {0} },
    { ClkTagBar, 0, Button1, view, {0} },
    { ClkTagBar, 0, Button3, toggleview, {0} },
    { ClkTagBar, MODKEY, Button1, tag, {0} },
    { ClkTagBar, MODKEY, Button3, toggletag, {0} },
    Last edited by Aakko (2010-05-30 18:21:30)

    ber_t wrote:A vanilla dwm compiles fine with your config.h. So I guess you're using other patches that rearrange the #include directive for config.h in dwm.c, e.g. pertag. If that's the case, you have to put the moveresize function in dwm.c and declare it before config.h get's included, just like any other function in dwm.c.
    Yes I had dwm.c patched with pertag. Vanilla compiles fine. Thanks!

  • [SOLVED] DWM - how do you apply patches with patch?

    I'm totally new to dwm (it's working great by the way) and patching. I'm having problems understanding how to use the patch program. The basic usage on dwm site says basically:
    patch -p1 < path/to/patch.diff
    Great, now I have the patch file ~/builds/dwn/patch/dwm-5.9-statuscolors.diff and my altered ~/builds/dwn/config.h. Here's what I did
    herman@sam ~/builds/dwm $ patch -p1 <patch/dwm-5.9-statuscolors.diff
    can't find file to patch at input line 4
    Perhaps you used the wrong -p or --strip option?
    The text leading up to this was:
    |diff -up dwm-5.9/config.def.h dwm-5.9-colors/config.def.h
    |--- dwm-5.9/config.def.h 2011-07-10 16:24:25.000000000 -0400
    |+++ dwm-5.9-colors/config.def.h 2011-08-18 02:02:47.033830823 -0400
    File to patch: config.def.h
    config.def.h: No such file or directory
    Skip this patch? [y]
    Skipping patch.
    2 out of 2 hunks ignored
    can't find file to patch at input line 41
    Perhaps you used the wrong -p or --strip option?
    The text leading up to this was:
    |Only in dwm-5.9: config.h
    |Only in dwm-5.9: dwm
    |diff -up dwm-5.9/dwm.c dwm-5.9-colors/dwm.c
    |--- dwm-5.9/dwm.c 2011-07-10 16:24:25.000000000 -0400
    |+++ dwm-5.9-colors/dwm.c 2011-08-18 02:07:20.788935100 -0400
    File to patch: dwm.c
    dwm.c: No such file or directory
    Skip this patch? [y]
    Skipping patch.
    12 out of 12 hunks ignored
    and it asks me for the filename it didn't find at line 4. Looking at the patch, I see it's a diff on config.def.h so I suppose this is the file to be patched and that I should supply this filename and the same with dwm.c? I'm not new to C coding but fresh out when it comes to diffing and patching, how do I actually go forward from here?
    Edit:
    More info  - I used the description using ABS to download the PKGBUILD for dwm and making dwm. My files
    herman@sam ~/builds/dwm $ ls -R
    PKGBUILD config.h dwm-5.9-2-x86_64.pkg.tar.xz dwm-5.9.tar.gz dwm.desktop dwm.install patch pkg src
    ./patch:
    dwm-5.9-statuscolors.diff
    ./pkg:
    usr
    ./pkg/usr:
    bin share
    ./pkg/usr/bin:
    dwm
    ./pkg/usr/share:
    doc licenses man xsessions
    ./pkg/usr/share/doc:
    dwm
    ./pkg/usr/share/doc/dwm:
    README
    ./pkg/usr/share/licenses:
    dwm
    ./pkg/usr/share/licenses/dwm:
    LICENSE
    ./pkg/usr/share/man:
    man1
    ./pkg/usr/share/man/man1:
    dwm.1.gz
    ./pkg/usr/share/xsessions:
    dwm.desktop
    ./src:
    config.h dwm-5.9 dwm-5.9.tar.gz dwm.desktop
    ./src/dwm-5.9:
    LICENSE Makefile README config.def.h config.def.h.orig config.def.h.rej config.h config.mk dwm dwm.1 dwm.c dwm.o
    Last edited by roygbiv (2011-12-06 20:37:40)

    Ok thanks but I'm confused again (I know..). I managed to patch the files config.def.h and dwm.c in the source dir and noticed there is yet another config.h file there as well. Now, the in the top level dir with the PKGBUILD I also have a config.h, which is the one I do my config changes. I'm confused because I now have these three header files (2x config.h + config.def.h) which are supposed to have the same source code? I've read around on the net, but haven't gotten any further answers yet. What are the purpose of each config and how should I use/update/manage them when recompiling? This is my situation:
    herman@sam ~/build/dwm $ tree .
    ├── PKGBUILD
    ├── config.h <----------------------------------------------------- this one
    ├── dwm-5.9-2-x86_64.pkg.tar.xz
    ├── dwm-5.9.tar.gz
    ├── dwm.desktop
    ├── dwm.install
    ├── pkg
    │   └── usr
    │   ├── bin
    │   │   └── dwm
    │   └── share
    │   ├── doc
    │   │   └── dwm
    │   │   └── README
    │   ├── licenses
    │   │   └── dwm
    │   │   └── LICENSE
    │   ├── man
    │   │   └── man1
    │   │   └── dwm.1.gz
    │   └── xsessions
    │   └── dwm.desktop
    └── src
    ├── config.h -> /home/herman/build/dwm/config.h
    ├── dwm-5.9
    │   ├── LICENSE
    │   ├── Makefile
    │   ├── README
    │   ├── config.def.h <-----------------------------------------------------this one
    │   ├── config.def.h.orig
    │   ├── config.h <----------------------------------------------------------this one
    │   ├── config.mk
    │   ├── dwm
    │   ├── dwm-5.9-statuscolors.diff
    │   ├── dwm.1
    │   ├── dwm.c
    │   ├── dwm.c.orig
    │   └── dwm.o
    ├── dwm-5.9.tar.gz -> /home/herman/build/dwm/dwm-5.9.tar.gz
    └── dwm.desktop -> /home/herman/build/dwm/dwm.desktop
    Thanks guys!
    Last edited by roygbiv (2011-12-06 20:06:10)

Maybe you are looking for