- Accueil
- » Forum
- » XFCE
- » Mutter + xfce
Pages : 1
#1 Le 03/07/2014, à 12:36
- Christophe C
Mutter + xfce
je test xfce avec le windows manager Mutter au lieu de Xfwm4, pour voir.
C'est plus joli aux fermetures et ouvertures de fenêtres, par contre j'ai 2 pbs / questions.
- Changement de bureau : le changement ne se fait plus par la molette souris. Il faut faire ctrle-alt-flèche gauche (ou droite). Pas très pratique.
Quelqu'un sait-il si on peut avoir un affichage des bureau en mode exposé, ou si on peut récupérer le changement via la molette ?
Je n'utilise pas cairo-dock (qui a un utilitaire pour cela). Pas la peine de me le proposer .
- Conky ne s'affiche pas au démarrage. Je peut le lancer à la main, mais il disparait très vite. Je le lance avec un différé de quelques secondes, mais rien.
Voilà, ce n'est pas majeur, mais si vous avez une idée ...
BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».
Hors ligne
#2 Le 09/07/2014, à 19:57
- Compte anonymisé
Re : Mutter + xfce
Bonsoir,
Pour le changement de bureau à la molette, j'avais fait ce programme C il n'y a qq années (switch_workspace_metacity.c) :
/*
* 15/05/2009
* Change de bureau avec la molette de la souris pour le gestionaire
* de fenetre metacity (a la mode de compiz-fusion).
*
* Compile :
* gcc switch_workspace_metacity.c -o switch_workspace_metacity -lX11
*
* (Required library : libX11-dev)
*
* Pour arreter : CTRL+C ou 'killall switch_workspace_metacity'
*
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <signal.h>
#include <unistd.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#define DEBUG 0
/*--------------------------------------------------------------------------*/
unsigned int get_nb_desktop(Display *disp, Window root)
{
Atom a;
Atom xa_ret_type;
int ret_format;
unsigned long ret_nitems;
unsigned long ret_bytes_after;
unsigned char *ret_prop;
unsigned int nb_desktop;
a = XInternAtom(disp, "_NET_NUMBER_OF_DESKTOPS", False);
if (XGetWindowProperty(disp, root, a, 0,
1, False, XA_CARDINAL, &xa_ret_type, &ret_format,
&ret_nitems, &ret_bytes_after, &ret_prop) != Success)
{
fprintf(stderr,"Probleme avec _NET_NUMBER_OF_DESKTOPS (1)\n");
return -1;
}
if (xa_ret_type != XA_CARDINAL)
{
fprintf(stderr,"Probleme avec _NET_NUMBER_OF_DESKTOPS (2)\n");
XFree(ret_prop);
return -1;
}
assert(ret_nitems == 1);
assert(ret_format == 32);
memcpy((unsigned char *) &nb_desktop, ret_prop, 4);
XFree(ret_prop);
return nb_desktop;
}
unsigned int get_cur_desktop(Display *disp, Window root)
{
Atom a;
Atom xa_ret_type;
int ret_format;
unsigned long ret_nitems;
unsigned long ret_bytes_after;
unsigned char *ret_prop;
unsigned int cur_desktop;
a = XInternAtom(disp, "_NET_CURRENT_DESKTOP", False);
if (XGetWindowProperty(disp, root, a, 0,
1, False, XA_CARDINAL, &xa_ret_type, &ret_format,
&ret_nitems, &ret_bytes_after, &ret_prop) != Success)
{
fprintf(stderr,"Probleme avec _NET_CURRENT_DESKTOP (1)\n");
return -1;
}
if (xa_ret_type != XA_CARDINAL)
{
fprintf(stderr,"Probleme avec _NET_CURRENT_DESKTOP (2)\n");
XFree(ret_prop);
return -1;
}
assert(ret_nitems == 1);
assert(ret_format == 32);
memcpy((unsigned char *) &cur_desktop, ret_prop, 4);
XFree(ret_prop);
return cur_desktop;
}
void set_cur_desktop(Display *disp, Window root, unsigned int cur_desktop)
{
Atom a;
XEvent xevent;
a = XInternAtom(disp, "_NET_CURRENT_DESKTOP", False);
xevent.type = ClientMessage;
xevent.xclient.type = ClientMessage;
xevent.xclient.display = disp;
xevent.xclient.window = root;
xevent.xclient.message_type = a;
xevent.xclient.format = 32;
xevent.xclient.data.l[0] = cur_desktop;
xevent.xclient.data.l[1] = CurrentTime;
xevent.xclient.data.l[2] = 0;
xevent.xclient.data.l[3] = 0;
xevent.xclient.data.l[4] = 0;
XSendEvent(disp, root, False,
SubstructureNotifyMask | SubstructureRedirectMask,
&xevent);
}
void grab_buttons(Display *disp, Window win)
{
int i;
for(i = 4; i <= 5; i++) /* UP (4) & DOWN (5) */
{
XGrabButton(disp,i,AnyModifier,win,
False, ButtonPressMask,
GrabModeAsync, GrabModeAsync,
None,None);
}
}
void ungrab_buttons(Display *disp, Window root, Window win)
{
int i;
XSync(disp,False);
for(i = 4; i <= 5; i++)
{
XUngrabButton(disp,i,AnyModifier,win);
}
XUngrabButton(disp, AnyButton, AnyModifier, root);
XSync(disp,False);
}
Window find_window(Display *disp, Window root, char *wname)
{
Window r;
Window win;
Window *kids;
unsigned i,nkids;
char *title;
XQueryTree(disp,root,&r,&win,&kids,&nkids);
win = root;
for (i = 0; i < nkids; i++)
{
XFetchName(disp,kids[i],&title);
if (title && strcmp(title,wname) == 0)
{
win = kids[i];
XFree(title);
break;
}
if (title)
XFree(title);
}
XFree(kids);
return win;
}
void handler_signal(int param)
{
/* CTRL-C or KILL */
exit(0);
}
void switch_workspace_with_mousewheel(char *desktop_name)
{
Display *disp;
XEvent xe;
Window root,desktop;
unsigned int cur_desktop;
unsigned int nb_desktop;
int wait_desktop;
disp = XOpenDisplay(NULL);
if (!disp)
{
fprintf(stdout,"Erreur XOpenDisplay()\n");
exit(-1);
}
root = DefaultRootWindow(disp);
wait_desktop = 0;
desktop = root;
while ((wait_desktop < 15) && (desktop == root))
{
desktop = find_window(disp, root, desktop_name);
sleep(1);
wait_desktop++;
}
#if DEBUG != 0
fprintf(stdout,"Attente desktop : %d s\n",wait_desktop);
#endif
if (desktop != root)
{
fprintf(stdout,
"\n>>> Change de workspace via la molette souris pour metacity\n\n");
nb_desktop = get_nb_desktop(disp,root);
cur_desktop = get_cur_desktop(disp,root);
#if DEBUG != 0
fprintf(stdout,"nb_desktop = %d, cur_desktop = %d\n",
nb_desktop,cur_desktop);
#endif
XAllowEvents(disp,AsyncBoth,CurrentTime);
grab_buttons(disp,desktop);
signal(SIGINT,handler_signal);
signal(SIGTERM,handler_signal);
#if DEBUG != 0
fprintf(stdout,"Attent la molette ...\n");
fflush(stdout);
#endif
while (1)
{
XNextEvent(disp,&xe);
if(xe.type == ButtonPress)
{
#if DEBUG != 0
fprintf(stdout," %s\n",xe.xbutton.button == 5 ? "DOWN" : "UP");
fflush(stdout);
#endif
if (xe.xbutton.button == 5)
{
cur_desktop = (cur_desktop + 1) % nb_desktop;
}
else
{
if (cur_desktop)
cur_desktop--;
else
cur_desktop = nb_desktop - 1;
}
set_cur_desktop(disp, root, cur_desktop);
}
}
ungrab_buttons(disp,root,desktop);
}
else
fprintf(stdout,"Desktop non trouve !!!\n");
fprintf(stdout,"Bye bye\n");
XCloseDisplay(disp);
}
int main(int na, char *arg[])
{
if (na > 1)
switch_workspace_with_mousewheel(arg[1]);
else
switch_workspace_with_mousewheel("Bureau");
return 0;
}
Qui fonctionne sous mutter (14.04).
Pour le compiler, faut installer libx11-dev et faire :
gcc -Wall -O2 switch_workspace_metacity.c -o switch_workspace_metacity -lX11
Le programme suppose que la fenêtre du bureau se nomme "Bureau" (le cas avec nemo). Pour XFCE et thunar faut lancer dans un terminal :
xwininfo
et cliquer sur le bureau. Normalement doit apparaitre les infos de la fenêtre du style :
xwininfo: Window id: 0x200000b "Bureau"
Absolute upper-left X: 0
........
Le nom de la fenêtre est la fin de la ligne Window id.
Pour exécuter le programme (dans le répertoire de compilation) :
./switch_workspace_metacity "Le_nom_de_la_fenetre_du_bureau"
Si ok, reste à mettre le programme au démarrage de session...
Dernière modification par alx (Le 09/07/2014, à 20:40)
#3 Le 10/07/2014, à 12:44
- Christophe C
Re : Mutter + xfce
Ah, c'est un peu lourd pour moi, mais merci.
BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».
Hors ligne
#4 Le 10/07/2014, à 15:02
- metalux
Re : Mutter + xfce
Bonjour Christophe C,
As-tu essayé cette extension?
Ça ne fonctionne pas directement sur le bureau, il faut se rendre sur l'un des côtés de l'écran mais ça peut être une alternative.
Hors ligne
#5 Le 11/07/2014, à 12:23
- Christophe C
Re : Mutter + xfce
Mais c'est une extension gnome ? Ca ne marchera pas dans Xfce, même avec Mutter ?
BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».
Hors ligne
#6 Le 11/07/2014, à 22:48
- metalux
Re : Mutter + xfce
Pffff...j'ai rien dis
Mutter seul, effectivement ça ne fonctionnera pas. Désolé du dérangement.
Hors ligne
#7 Le 12/07/2014, à 08:28
- Christophe C
Re : Mutter + xfce
ya-pa-de-mal
BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».
Hors ligne
#8 Le 15/08/2014, à 16:15
- fibou
Re : Mutter + xfce
Bonjour,
Je déterre le post, pour avoir des infos à propos de mutter et Xfce.
Est-ce que ça reste stable d'utiliser les deux ? Et aussi quelle manip faut-il faire pour remplacer xfwm par mutter ?
Et la dernière pour la route, est-ce que dans mutter tu as les fenêtres "côte à cote" (chacune la moitier de l'écran) ?
Merci d'avance !
Hors ligne
#9 Le 16/08/2014, à 16:49
- Christophe C
Re : Mutter + xfce
1/ oui, mutter est stable. Par contre j'ai les pbs expliqués dans mon 1er post.
2/ pour activer mutter :
- sudo apt-get install mutter
- ouvrir le fichier ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml
- dans la ligne <value type="string" value="xfwm4"/>, remlacer xfwm4 par mutter
- sauvegarder puis redémarrer la session
3/ Le grid (le positionnement des fenetres en 1/2 écran) fonctionne parfaitement.
Dernière modification par Christophe C (Le 16/08/2014, à 16:52)
BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».
Hors ligne
#10 Le 17/08/2014, à 11:58
- fibou
Re : Mutter + xfce
Merci pour les renseignements. J'ai installé mutter, en effet ça fonctionne et ça a pas l'air de bugger. Par contre les décorations des fenêtres sont assez hideuse (je vais essayer de chopper les thèmes pour mutter).
Pour la configuration, elle se fait avec dconf-editor c'est bien ça ?
Aussi je trouve que ça manque légèrement de fluidité au niveau des changement de bureau, je verrai à l'usage.
Hors ligne
#11 Le 17/08/2014, à 15:51
- Christophe C
Re : Mutter + xfce
dconf, oui. La clé, c'est org.gnome.mutter
BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».
Hors ligne
Pages : 1
- Forum
- » XFCE
- » Mutter + xfce