[dwm] patch nmaster (résolu)

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
Répondre
Avatar de l’utilisateur
Marzikill
archer
Messages : 121
Inscription : sam. 07 févr. 2009, 19:20

[dwm] patch nmaster (résolu)

Message par Marzikill »

Bonjour !

Je découvre depuis peu les joies des tillings managers, et je dois dire que je ne suis pas déçu par dwm. wmiii, en mieux. ;)
Cependant, j'ai un petit soucis lorsqu'il s'agit d'inclure un fichier .c pour apporter de nouvelles fonctionnalités au wm. En effet, comme décrit sur le site officiel, et sur la plupart des fichiers de configuration que j'ai pu voir, il faut tout d'abord insérer un #include"file.c". Seulement, c'est ici que j'ai le problème.
In file included from config.h:36:0,
from dwm.c:255:
nmaster.c: In function ‘incnmaster’:
nmaster.c:18:20: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:18:31: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:18:58: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:20:17: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:21:20: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:22:18: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:23:2: erreur: too few arguments to function ‘arrange’
dwm.c:135:13: note: declared here
nmaster.c: In function ‘setnmaster’:
nmaster.c:28:20: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:28:31: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:28:58: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:30:17: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:31:2: erreur: too few arguments to function ‘arrange’
dwm.c:135:13: note: declared here
nmaster.c: In function ‘ntile’:
nmaster.c:41:28: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:42:17: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:43:8: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:43:35: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:48:9: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:48:20: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:49:8: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:51:9: erreur: déréférencement d'un pointeur de type incomplet
nmaster.c:52:8: erreur: déréférencement d'un pointeur de type incomplet
etc etc...

Mon config.h :

Code : Tout sélectionner

/* See LICENSE file for copyright and license details. */

/* appearance */
static const char font[]            = "-*-*-medium-*-*-*-10-*-*-*-*-*-*-*";
static const char normbordercolor[] = "#cccccc";
static const char normbgcolor[]     = "#000000";
static const char normfgcolor[]     = "#D5D5D5";
static const char selbordercolor[]  = "#9B3C35";
static const char selbgcolor[]      = "#000000";
static const char selfgcolor[]      = "#688C57";
static const unsigned int borderpx  = 2;        /* border pixel of windows */
static const unsigned int snap      = 32;       /* snap pixel */
static const unsigned int gappx     = 3;        /* gap pixel between windows */ 
static const Bool showbar           = True;     /* False means no bar */
static const Bool topbar            = True;     /* False means bottom bar */


/* tagging */
static const char *tags[] = { "[Web]", "[Chat]", "[Sys]", "[Files]", "[Dll]", "[Film]", "[Foo]", "[Bar]" };

static const Rule rules[] = {
	/* class                instance    title       tags mask     isfloating   monitor */
	{ "Gimp",               NULL,       NULL,       0,            True,        -1 },
	{ "Firefox",            NULL,       NULL,       1 << 8,       False,       -1 },
	{ "Pidgin",             NULL,       NULL,       2,            False,       -1 },
	{ "Deluge",             NULL,       NULL,       5,            False,       -1 },
	{ "Vlc",                NULL,       NULL,       0,            True,        -1 },
	{ "Gnome-mplayer",      NULL,       NULL,       0,            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 int nmaster = 2;  /* default number of clients in the master area */

#include "nmaster.c"

static const Layout layouts[] = {
	/* symbol     arrange function */
	{ "[T]",      tile },    /* first entry is default */
	{ "[~]",      NULL },    /* no layout function means floating behavior */
	{ "[M]",      monocle },
        { "-|=",      ntile },
};

/* key definitions */
#define MODKEY Mod1Mask
#define MODKEY2 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 *termcmd[]  = { "uxterm", "-fa", "xft:Bitstream Vera Sans Mono:style=Roman:pixelsize=12:antialias=true",                NULL };

/* Programs */
static const char *navigator[]       = { "firefox",                        NULL };
static const char *chat[]            = { "pidgin",                         NULL };
static const char *torrent[]         = { "deluge",                         NULL };
static const char *verbes[]          = { "verbiste-gtk",                   NULL };
static const char *printScreen[]     = { "scrot", "~/Capture/png",         NULL };
static const char *printSel[]        = { "scrot", "-bs", "~/Capture/png",  NULL };
static const char *shutdown[]        = { "sudo", "halt",                   NULL };
static const char *reboot[]          = { "sudo", "reboot",                 NULL };
static const char *nextSong[]        = { "mpc", "next",                    NULL };
static const char *prevSong[]        = { "mpc", "prev",                    NULL };
static const char *togglePlay[]      = { "mpc", "toggle",                  NULL };
static const char *soundUp[]         = { "amixer", "sset", "PCM", "3+", "unmute",  NULL };
static const char *soundDown[]       = { "amixer", "sset", "PCM", "3-", "unmute",  NULL };

static Key keys[] = {
	/* modifier                     key        function        argument */
	{ MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
	{ MODKEY,                       XK_Return, spawn,          {.v = termcmd } },
        /* Program launching */ 
	{ MODKEY2,                      XK_i, spawn,               {.v = navigator } },
	{ MODKEY2,                      XK_c, spawn,               {.v = chat } },
	{ MODKEY2,                      XK_t, spawn,               {.v = torrent } },
	{ MODKEY2,                      XK_v, spawn,               {.v = verbes } },
	{ MODKEY2,                      XK_p, spawn,               {.v = printScreen } },
	{ MODKEY|MODKEY2,               XK_v, spawn,               {.v = printSel } },
        /* End program launching */
        /* Sound managing */ 
	{ MODKEY|ControlMask,           XK_a, spawn,               {.v = nextSong } },
	{ MODKEY|ControlMask,           XK_z, spawn,               {.v = prevSong } },
	{ MODKEY|ControlMask,           XK_s, spawn,               {.v = togglePlay } },
	{ MODKEY|ControlMask,           XK_q, spawn,               {.v = soundUp } },
	{ MODKEY|ControlMask,           XK_w, spawn,               {.v = soundDown } },
        /* End mpd managing */
        /* Power */
	{ MODKEY|ShiftMask,             XK_s, spawn,               {.v = shutdown } },
	{ MODKEY|ShiftMask,             XK_r, spawn,               {.v = reboot } },
        /* End power */
	{ 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,                    XK_BackSpace, zoom,           {0} },
	{ MODKEY,                       XK_Tab,    view,           {0} },
	{ MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
        /*Layout bindings */
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
        { MODKEY,                       XK_n,      setlayout,      {.v = &layouts[3]} },
        { MODKEY,                       XK_b,      setlayout,      {.v = &layouts[4]} },
        { MODKEY,                       XK_g,      setlayout,      {.v = &layouts[5]} },
	{ MODKEY,                       XK_space,  setlayout,      {0} },
        /*End layout binding */
	{ 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 } },
        TAGKEYS(                        0x26,                      0)
        TAGKEYS(                        0xe9,                      1)
        TAGKEYS(                        0x22,                      2)
        TAGKEYS(                        0x27,                      3)
        TAGKEYS(                        0x28,                      4)
        TAGKEYS(                        0x2d,                      5)
        TAGKEYS(                        0xe8,                      6)
        TAGKEYS(                        0x5f,                      7)
        TAGKEYS(                        0xe7,                      8)
	{ MODKEY|ShiftMask,             XK_q,      quit,           {0} },
};

/* 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,         Button3,        resizemouse,    {0} },
	{ ClkTagBar,            0,              Button1,        view,           {0} },
	{ ClkTagBar,            0,              Button3,        toggleview,     {0} },
	{ ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
	{ ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
};
Sauriez vous d'où vient le problème ? C'est sûrement tout bête, car j'ai l'impression d'être le seul à qui ce cas se pose.

Amicalement
Marzikill.

--> conflit avec le patch pertag.diff, version 5.7.2
Dernière modification par Marzikill le mer. 12 mai 2010, 18:31, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17596
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [dwm] Inclure un fichier .c

Message par benjarobin »

Sans le fichier concerne "nmaster.c" je ne vois pas comment on peut aider.
De plus inclure un fichier .c je n'aime pas cela du tout en terme de design.
Normalement tu créer un fichier .h que tu implémente dans le .c (Celui-ci inclura le fichier .h)
Et tu rajoute le include du fichier .h dans config.h

De plus comment tu compile...
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [dwm] Inclure un fichier .c

Message par tuxce »

vérifies si t'as récupéré le bon nmaster.c, s'il correspond pas à la version de dwm, c'est pas le bon.

http://dwm.suckless.org/patches/nmaster
Avatar de l’utilisateur
Marzikill
archer
Messages : 121
Inscription : sam. 07 févr. 2009, 19:20

Re: [dwm] patch nmaster

Message par Marzikill »

Merci pour vos réponses.
Je vais tenter d'être le plus clair possible.

Tout d'abord, la méthode que j'utilise est celle conseillée sur le site de dwm. N'y connaissant (pas grand chose) au C, je ne sais pas pourquoi ce n'est pas esthétique. ;)
Mon fichier nmaster.c est strictement celui récupéré sur le site officiel.
Je compile suivant la méthode préconisée via le wiki dwm sur archlinux.org :

Code : Tout sélectionner

makepkg -efi --skipinteg

dans mon répertoire contenant le dossier src/.

Enfin, j'ai téléchargé le dernier nmaster.c (mais le même problème se pose sur tous les fichiers .c que j'ai essayé (push.c, bstack.c, gaplessgrid.c ...). Je précise que ma version de dwm est celle disponible sur [community], à savoir la 5.7.2-2. Le problème viendrait de la différence de versions ?


Merci pour votre aide.
Amicalement
Marzikill.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [dwm] patch nmaster

Message par tuxce »

Tu peux donner le lien d'où t'as téléchargé nmaster.c ?
Avatar de l’utilisateur
Marzikill
archer
Messages : 121
Inscription : sam. 07 févr. 2009, 19:20

Re: [dwm] patch nmaster

Message par Marzikill »

Ici
Je suis le seul a avoir ce problème ?
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [dwm] patch nmaster

Message par tuxce »

justement celui ci est pour la version 5.6.x, regarde la page dont j'ai donné le lien.
Avatar de l’utilisateur
Marzikill
archer
Messages : 121
Inscription : sam. 07 févr. 2009, 19:20

Re: [dwm] patch nmaster

Message par Marzikill »

J'ai beau essayer avec la version de nmaster-sym.c estampillée 5.7.1, cela ne fonctionne pas. Toujours la même erreur, a savoir "nmaster-sym.c:18:20: erreur: déréférencement d'un pointeur de type incomplet", tout comme pour la version 5.6.1.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [dwm] patch nmaster

Message par tuxce »

je sais pas comment tu fais pour avoir cette erreur:

Code : Tout sélectionner

mkdir dwm
cd dwm
yaourt -G dwm
cd src/dwm-5.7.2/
wget "http://dwm.suckless.org/patches/nmaster-sym.c" -O nmaster.c
cd ../..
# rajouter:
# static const int nmaster = 2;  
# #include "nmaster.c"
# dans config.h
makepkg -efi --skipinteg
Avatar de l’utilisateur
Marzikill
archer
Messages : 121
Inscription : sam. 07 févr. 2009, 19:20

Re: [dwm] patch nmaster

Message par Marzikill »

Heh bien... Moi non plus. Je n'en ai franchement aucune idée !
Je suppose que je vais devoir reprendre tout depuis le début, proprement.
Car ta méthode fonctionne parfaitement ! :D
Cela pourrait-il venir des patchs .diff que j'ai appliqué au dwm.c ?

Merci pour ton aide. ;)
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [dwm] patch nmaster

Message par tuxce »

Marzikill a écrit : Cela pourrait-il venir des patchs .diff que j'ai appliqué au dwm.c ?
déjà que j'ai eu du mal à te faire dire le lien de téléchargement, j'allais attendre longtemps pour savoir que t'avais patché... :|
Avatar de l’utilisateur
Marzikill
archer
Messages : 121
Inscription : sam. 07 févr. 2009, 19:20

Re: [dwm] patch nmaster

Message par Marzikill »

Oups, désolé.
Donc oui, dwm est patché avec les patchs (ceux de suckless) suivants : attachabove-5.6.1.diff, dwm-5.7.2-pertag.diff, dwm-uselessgap-5.8.diff.
Cela change-t-il quelque chose ?

Edit : Après quelques essais, cela vient bien des patchs, plus précisément du patch pertag.diff. Cela est tout de même ennuyeux. Il était bien pratique.
Répondre