Echoes Corsac.net - Echoes camshot
jeudi 21 mai 2015 (1 post)
  • Followup on Debian grsec kernels for Jessie

So, following the previous post, I've indeed updated the way I'm making my grsec kernels.

I wanted to upgrade my server to Jessie, and didn't want to keep the 3.2 kernel indefinitely, so I had to update to at least 3.14, and find something to make my life (and maybe some others) easier.

In the end, like planned, I've switched to the make deb-pkg way, using some scripts here and there to simplify stuff.

The scripts and configs can be found in my debian-grsec-config repository. The repository layout is pretty much self-explaining:

The bin/ folder contains two scripts:

  • get-grsec.sh, which will pick the latest grsec patch (for each branch) and applies it to the correct Linux branch. This script should be run from a git clone of the linux-stable git repository;
  • kconfig.py is taken from the src:linux Debian package, and can be used to merge multiple KConfig files

The configs/ folder contains the various configuration bits:

  • config-* files are the Debian configuration files, taken from the linux-image binary packages (for amd64 and i386);
  • grsec* are the grsecurity specifics bits (obviously);
  • hardening* contain non-grsec stuff still useful for hardened kernels, for example KASLR (cargo-culting nonwidthstanding) or strong SSP (available since I'm building the kernels on a sid box, YMMV).

I'm currently building amd64 kernels for Jessie and i386 kernels will follow soon, using config-3.14 + hardening + grsec. I'm hosting them on my apt repository. You're obviously free to use them, but considering how easy it is to rebuild a kernel, you might want to use a personal configuration (instead of mine) and rebuild the kernel yourself, so you don't have to trust my binary packages.

Here's a very quick howto (adapt it to your needs):

mkdir linux-grsec && cd linux-grsec
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
git clone git://anonscm.debian.org/users/corsac/grsec/debian-grsec-config.git
mkdir build
cd linux-stable
../debian-grsec-config/bin/get-grsec.sh stable2 # for 3.14 branch
../debian-grsec-config/bin/kconfig.py ../build/.config ../debian-grsec-config/configs/config-3.14-2-amd64 ../debian-grsec-config/configs/hardening ../debian-grsec-config/configs/grsec
make KBUILD_OUTPUT=../build -j4 oldconfig
make KBUILD_OUTPUT=../build -j4 deb-pkg

Then you can use the generated Debian binary packages. If you use the Debian config, it'll need a lot of disk space for compilation and generate a huge linux-image debug package, so you might want to unset CONFIG_DEBUG_INFO locally if you're not interested. Right now only the deb files are generated but I've submitted a patch to have a .changes file which can be then used to manipulate them more easily (for example for uploading them a local Debian repository).

Note that, obviously, this is not targeted for inclusion to the official Debian archive. This is still not possible for various reasons explained here and there, and I still don't have a solution for that.

I hope this (either the scripts and config or the generated binary packages) can be useful. Don't hesitate to drop me a mail if needed.

Yves-Alexis@22:36:11 (Debian)

samedi 09 mai 2015 (1 post)
  • Xfce 4.12 in Debian sid

So, following the Jessie release, and after a quick approval by the release team for the 4.12 transition, we've uploaded Xfce 4.12 to sid and have asked the RT to schedule the relevant binNMUs for the libxfce4util and xfce4-panel reverse dependencies.

It went apparently well (besides some hickups here and there, lilke some lag on sparc, and some build-failulres on hurd). So Xfce 4.12 is now in sid, and should migrate to Stretch in the following weeks, provided nothing release critical is found.

Yves-Alexis@21:05:55 (Debian)

lundi 30 mars 2015 (1 post)
  • 3.2.68 Debian/grsec kernel and update on the process

It's been a long time since I updated my repository with a recent kernel version, sorry for that. This is now done, the kernel (sources, i386 and amd64) is based on the (yet unreleased) 3.2.68-1 Debian kernel, patched with grsecurity 3.1-3.2.68-201503251805, and has the version 3.2.68-1~grsec1.

It works fine here, but as always, no warranty. If any problem occurs, try to reproduce using vanilla 3.2.68 + grsec patch before reporting here.

And now that Jessie release approaches, the question of what to do with those Debian/grsec kernel still arrise: the Jessie kernel is based on the 3.16 branch, which is not a (kernel.org) long term branch. Actually, the support already ended some times ago, and the (long term) maintainance is now assured by the Canonical Kernel Team (thus the -ckt suffix) with some help from the Debian kernel maintainers. So there's no Grsecurity patch following 3.16, and there's no easy way to forward-port the 3.14 patches.

At that point, and considering the support I got the last few years on this initiative, I don't think it's really worth it to continue providing those kernels.

One initiative which might be interesting, though, is the Mempo kernels. The Mempo team works on kernel reproducible builds, but they also include the grsecurity patch. Unfortunately, it seems that building the kernel their way involves calling a bash script which calls another one, and another one. A quick look at the various repositories is only enough to confuse me about how actually they build the kernel, in the end, so I'm unsure it's the perfect fit for a supposedly secure kernel. Not that the Debian way of building the kernel doesn't involves calling a lot of scripts (either bash or python), but still. After digging a bit, it seems that they're using make-kpkg (from the kernel-package package), which is not the recommended way anymore. Also, they're currently targeting Wheezy, so the 3.2 kernel, and I have no idea what they'll chose for Jessie.

In the end, for myself, I might just do a quick script which takes a git repository at the right version, pick the latest grsec patch for that branch, applies it, then run make deb-pkg and be done with it. That still leaves the problem of which branch to follow:

  • run a 3.14 kernel instead of the 3.16 (I'm unsure how much I'd lose / not gain from going to 3.2 to 3.14 instead of 3.16);
  • run a 3.19 kernel, then upgrade when it's time, until a new LTS branch appears.

There's also the config file question, but if I'm just using the kernels for myself and not sharing them, it's also easier, although if some people are actually interested it's not hard to publish them.

Yves-Alexis@22:27:21 (Debian)

mercredi 25 mars 2015 (1 post)
  • LXCs upgrade to Jessie

So I started migrating some of my LXCs to Jessie, to test the migration in advance. The upgrade itself was easy (the LXC is mostly empty and only runs radicale), but after the upgrade I couldn't login anymore (using lxc-console since I don't have lxc-attach, the host is on Wheezy). So this is mostly a note to self.

auth.log was showing:

Mar 25 22:10:13 lxc-sync login[1033]: pam_loginuid(login:session): Cannot open /proc/self/loginuid: Read-only file system
Mar 25 22:10:13 lxc-sync login[1033]: pam_loginuid(login:session): set_loginuid failed
Mar 25 22:10:13 lxc-sync login[1033]: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
Mar 25 22:10:13 lxc-sync login[1033]: Cannot make/remove an entry for the specified session

The last message isn't too useful, but the first one gave the answer. Since LXC isn't really ready for security stuff, I have some hardening on top of that, and one measure is to not have rw access to /proc. I don't really need pam_loginuid there, so I just disabled that. I just need to remember to do that after each LXC upgrade.

Other than that, I have to boot using SystemV init, since apparently systemd doesn't cope too well with the various restrictions I enforce on my LXCs:

lxc-start -n sync
Failed to mount sysfs at /sys: Operation not permitted

(which is expected, since I drop CAP_SYS_ADMIN from my LXCs). I didn't yet investigate how to stop systemd doing that, so for now I'm falling back to SystemV init until I find the correct customization:

lxc-start -n sync /lib/sysvinit/init   
INIT: version 2.88 booting
[info] Using makefile-style concurrent boot in runlevel S.
hostname: you must be root to change the host name
mount: permission denied
mount: permission denied
[FAIL] udev requires a mounted sysfs, not started ... failed!
 failed!
mount: permission denied
[info] Setting the system clock.
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --debug option to see the details of our search for an access method.
[warn] Unable to set System Clock to: Wed Mar 25 21:21:43 UTC 2015 ... (warning).
[ ok ] Activating swap...done.
mount: permission denied
mount: permission denied
mount: permission denied
mount: permission denied
[ ok ] Activating lvm and md swap...done.
[....] Checking file systems...fsck from util-linux 2.25.2
done.
[ ok ] Cleaning up temporary files... /tmp.
[ ok ] Mounting local filesystems...done.
[ ok ] Activating swapfile swap...done.
mount: permission denied
mount: permission denied
[ ok ] Cleaning up temporary files....
[ ok ] Setting kernel variables ...done.
[....] Configuring network interfaces...RTNETLINK answers: Operation not permitted
Failed to bring up lo.
done.
[ ok ] Cleaning up temporary files....
[FAIL] startpar: service(s) returned failure: hostname.sh udev ... failed!
INIT: Entering runlevel: 2
[info] Using makefile-style concurrent boot in runlevel 2.
dmesg: read kernel buffer failed: Operation not permitted
[ ok ] Starting Radicale CalDAV server : radicale.
Yes, there are a lot of errors, but they seem to be handled just fine.

Yves-Alexis@22:26:04 (Debian)

samedi 14 mars 2015 (1 post)
  • ThinkPad X250

So, I also got myself a new toy. My current ThinkPad is a bit ancient, but still sturdy. It's an X201s from 2010 (brought refurbished), and it's still working pretty fine, but eh, I couldn't resist.

The X230 was nice, but didn't have a large resolution screen (1366×768). The X240 brought a full HD (1920×1080) IPS screen, but lost the hardware trackpoint buttons. Finally, the X250 brings back the buttons, still have a nice screen (not qHD or some other trendy resolutions, but still FHD and IPS). And on top of that, it comes with Broadwell, so that means I get smap.

It runs mostly fine out of the box on Debian sid, but for full support some tuning is needed. I've setup a page with more information on the laptop, and some images can be found over there.

Yves-Alexis@16:59:22 (Debian)

samedi 03 janvier 2015 (1 post)
  • Blues Bar-b-q

Alors c'est testé et validé : le Blues Bar-b-q, dans le 11ème (M. Bréguet Sabin). Petit restau texan, tenu par une texane (du coup il parait nettement plus naturel de parler anglais).

Les usual suspects de la cuisine sud états-uniennes : cornbread, bbq beef brisket, ribs, plus quelques découvertes (les Outlaw Chili Cheese Fries). Une sauce barbecue qui déchire, un beef brisket hyper tendre. Sans oublier les desserts : leur cheesecake est le plus dense que je connaisse (à part peut être celui de Marie) et la southern pecan pie déchire bien aussi.

Enfin du personnel adorable, de la tenancière au cuistot en passant par la serveuse (dont c'était le premier jour). Et de la musique du coin aussi, histoire d'accompagner. Bref, que du bon, allez-y.

Corsac@21:52:56 (Roadbook)

lundi 22 décembre 2014 (1 post)
  • Hiver

Aujourd'hui les jours rallongent \o/

Corsac@00:03:00 (Roadbook)

mercredi 26 novembre 2014 (1 post)
  • Parce que sinon elle râle !

Bonne fête Delphine !

Corsac@23:13:02 (Roadbook)

lundi 29 septembre 2014 (1 post)
  • Thanks

So, sometimes, you had a somehow rough day, it's raining and you're tired.

And then, in your mailbox, out of the blue, there's a “thank you” mail.

That really enlightens the day…

Corsac@21:16:46 (Roadbook)

mercredi 11 juin 2014 (1 post)
  • Debian, Xfce, policykit and permissions

So, it seems that for a lot of people using unstable, hardware-related permissions (shutdown/reboot, suspend/hibernate, devices mount/umount etc.) have been broken since some times.

That's usually the case for people using GNOME with lightdm display manager, Xfce with either gdm or lightdm.

It seems that recently, policykit (which is used by GNOME and Xfce) switched from consolekit backend to logind backend (yeah, systemd-logind). So applications using policykit needs to handle that correctly, and that means beeing sure a logind session is correctly setup, which is done by installing the package libpam-systemd.

For now, it's still possible to not switch to systemd as init system, by installing the systemd-shim package before libpam-systemd. Be aware that (at least with the current state of affairs), this is only true with logind before 204. When systemd maintainers start transitionning to a later version, only systemd-sysv (so, systemd as init system) will work.

For people reluctant to switch to systemd, they can use systemd-shim for now. Then when systemd 205+ enters the archive, either lose those hardware permissions, or try to improve systemd-shim to handle that situation.

There's not much we (Xfce/LightDM maintainers) can do about that.

Yves-Alexis@20:51:57 (Debian)

lundi 07 avril 2014 (1 post)
  • CVE-2014-0160 / heartbleed

Short version:

  • yes we're affected;
  • we're currently working on it;
  • we didn't have an early warning so we're doing as fast as we can.

DSA should be in your INBOX in a few moments, and the updates on the mirror a moment later.

[UPDATE Tue, 08 Apr 2014 01:06:42 +0200]

After the upgrade, you really need to restart all TLS application using libssl1.0.0 to get the fix. Usual suspects are webservers, mailservers etc. Don't forget to restart clients too. Easiest way is to completely reboot the sever, but in case that's not a solution, you can check the process still using the old library with the following snippet:

grep -l 'libssl.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u

Some people seem to indicate that the 64kB leak can enable an attacker to get pretty much anything from the process memory space, including the certificate private key. While we weren't able to confirm that yet, that's not really impossible, so you might also want to regenerate those private keys, although that's not something you should do in a rush either.

Yves-Alexis@23:35:30 (Debian)

samedi 08 mars 2014 (1 post)
  • Météo

Avec les semaines pourries qu'on s'est tapé ces derniers temps, ça fait quand même plaisir :

Corsac@11:10:57 (Roadbook)

dimanche 05 janvier 2014 (1 post)
  • Films 2013

La cuvée 2013, donc, comme d'habitude en début d'année suivante. Une année pas très prolifique (17 films) mais bon. À noter une forte concentration au début de l'année (il fallait écluser les congés 2012 avant la fin mars) ainsi que fin octobre (suite à mon marathon).

  • Django Unchained : 22 janvier 2013, MK2 Beaubourg
  • Zero Dark Thirty : 7 février 2013, UGC Ciné Cité les Halles
  • Gangster squad : 13 février 2013, UGC Ciné Cité les Halles
  • Die Hard 5 : 1er mars 2013, UGC Montparnasse
  • No : 22 mars 2013, MK2 Quai de Seine
  • Cloud Atlas : 25 mars 2013, MK2 Quai de Loire
  • Mariage à l'anglaise : 12 avril 2013, MK2 Quai de Loire
  • Iron Man 3 : 19 mai 2013, UGC Ciné Cité Bercy
  • Prisoners : 26 octobre 2013, UGC Montparnasse
  • Sheriff Jackson : 26 octobre 2013, UGC Ciné Cité Les Halles
  • Malavita : 27 octobre 2013, UGC Ciné Cité Les Halles
  • Omar : 27 octobre 2013, UGC Ciné Cité Les Halles
  • La vie d'Adèle : 27 octobre 2013, UGC Ciné Cité Les Halles
  • Jeune & jolie : 28 octobre 2013, MK2 Parnasse
  • Blue Jasmine : 29 octobre 2013, UGC Ciné Cité Les Halles
  • Gravity : 30 octobre 2013, UGC Maillot
  • The lunchbox : 30 décembre 2013, UGC Ciné Cité Les Halles

Dans l'ensemble, là encore, un plutôt bon cru. Faut dire que quand on va moins souvent au cinéma, on sélectionne aussi plus, évidemment. Quelques petites déceptions (plus ou moins attendues, disons), mais aussi quelques pétites. J'ai déjà parlé de de la série PrisonersMalavitaOmarLa vie d'Adèle et Gravity, mais j'ai aussi vraiment beaucoup apprécié The lunchbox, et évidemment Django Unchained.

Corsac@19:01:30 (Echoes)

vendredi 27 décembre 2013 (1 post)
  • On the road

Aujourd'hui, sur l'autoroute, trois voitures sur la file de gauche, derrière moi, m'ont gentiment cédé le passage alors que j'étais sur la file de droite, afin de me permettre de faire un dépassement.

J'en reviens toujours pas. C'est Noël ?!

Corsac@21:36:20 (Roadbook)

samedi 21 décembre 2013 (1 post)
  • Hiver

Aujourd'hui les jours rallongent \o/

Corsac@11:17:00 (Roadbook)

vendredi 20 décembre 2013 (1 post)
  • Tour Eiffel

Je suis pas raide dingue de la Tour Eiffel, mais à force de la voir tous les jours, voire à passer devant, on finit quand même par l'apprécier.

Et comme j'aime bien le principe des photos du jour, j'ai profité l'été dernier d'aller/retour sur le champ de mars pour en prendre, et monter ça en petite vidéo pour rigoler.

Évidemment il aurait fallu que ça dure un peu plus longtemps, mais ça rend pas si mal que ça…

Corsac@22:47:51 (Echoes)

mardi 26 novembre 2013 (1 post)
  • Parce que sinon elle râle !

Ne soustrayons pas à la tradition.

Bonne fête Delphine !

Corsac@09:58:47 (Roadbook)

samedi 02 novembre 2013 (1 post)
  • Cinéma

C'est le moins qu'on puisse dire que notre fréquentation des salles obscures a nettement baissé depuis trois ans. Quasiment nulle la première année, on a réussi à augmenter quand même un peu la fréquentation les années suivantes (merci les RTTs d'ailleurs).

Ce coup ci, merci les vacances de la Toussaint. Profitant de quelques jours d'absence des miss, puis du centre de loisir, je me suis dit que j'allais me faire « quelques » toiles. N'ayant pas fait les choses à moitié, voilà le résultat :

Dans l'ensemble, je suis vraiment content du lot, hormis Sheriff Jackson, un peu moins bien et Blue Jasmine (vraie déception pour le coup). Dans la grande majorité des cas (en fait tout sauf La vie d'Adèle et Gravity) je n'avais pas la moindre information sur le film, et j'ai donc choisi à l'horaire (c'est en fait pas si évident que ça de caler trois films dont un de trois heure dans la même journée).

Une mention spéciale à Prisoners et Malavita, ainsi que La vie d'Adèle.

Corsac@21:59:09 (Echoes)

dimanche 25 août 2013 (1 post)
  • Expiration extension on PGP subkeys

So, last year I've switched to an OpenPGP smartcard setup for my whole personal/Debian PGP usage. When doing so, I've also switched to subkeys, since it's pretty natural when using a smartcard. I initially set up an expiration of one year for the subkeys, and everything seems to be running just fine for now.

The expiration date was set to october 27th, and I though it'd be a good idea to renew them quite in advance, considering there's my signing key in there, which is (for example) used to sign packages. If the Debian archive considers my signature subkey expired, that means I can't upload packages anymore, which is a bit of a problem (although I think I could still upload packages signed by the main key). dak (Debian Archive Kit, the software managing the Debian archive) uses keys from the keyring provided by Debian admins, which is usually updated every month or so from the keyring.debian.org public key server, so pushing the expiration date two months before the due date seemed like a good idea.

I've just did that, and it was pretty easy, actually. For those who followed my setup last year, here's how I did it:

First, I needed my main smartcard (the one storing the main key), since it's the only one able to do operations on the subkeys. So I plug it, and then:

corsac@scapa: gpg --edit-key 71ef0ba8
gpg (GnuPG) 1.4.14; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

pub  4096R/71EF0BA8  created: 2009-05-06  expires: never       usage: SC  
                     trust: ultimate      validity: ultimate
sub  4096g/36E31BD8  created: 2009-05-06  expires: never       usage: E   
sub  2048R/CC0E273D  created: 2012-10-17  expires: 2013-10-27  usage: A   
sub  2048R/A675C0A5  created: 2012-10-27  expires: 2013-10-27  usage: S   
sub  2048R/D98D0D9F  created: 2012-10-27  expires: 2013-10-27  usage: E   
[ultimate] (1). Yves-Alexis Perez <corsac@corsac.net>
[ultimate] (2)  Yves-Alexis Perez (Debian) <corsac@debian.org>

gpg&> key 2

pub  4096R/71EF0BA8  created: 2009-05-06  expires: never       usage: SC  
                     trust: ultimate      validity: ultimate
sub  4096g/36E31BD8  created: 2009-05-06  expires: never       usage: E   
sub* 2048R/CC0E273D  created: 2012-10-17  expires: 2013-10-27  usage: A   
sub  2048R/A675C0A5  created: 2012-10-27  expires: 2013-10-27  usage: S   
sub  2048R/D98D0D9F  created: 2012-10-27  expires: 2013-10-27  usage: E   
[ultimate] (1). Yves-Alexis Perez <corsac@corsac.net>
[ultimate] (2)  Yves-Alexis Perez (Debian) <corsac@debian.org>

gpg> expire
Changing expiration time for a subkey.
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 429d
Key expires at mar. 28 oct. 2014 12:43:35 CET
Is this correct? (y/N) y

At that point, a pinentry dialog should ask you the PIN, and the smartcard will sign the subkey. Repear for all the subkeys (in my case, 3 and 4). If you ask for PIN confirmation at every signature, the pinentry dialog should reappear each time.

When you're done, check that everything is ok, and save:

gpg> save
corsac@scapa: gpg --list-keys 71ef0ba8
gpg: checking the trustdb
gpg: public key of ultimately trusted key AF2195C9 not found
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   4  signed:   5  trust: 0-, 0q, 0n, 0m, 0f, 4u
gpg: depth: 1  valid:   5  signed:  53  trust: 5-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2013-12-28
pub   4096R/71EF0BA8 2009-05-06
uid                  Yves-Alexis Perez <corsac@corsac.net>
uid                  Yves-Alexis Perez (Debian) <corsac@debian.org>
sub   4096g/36E31BD8 2009-05-06 [expires: 2014-10-28]
sub   2048R/CC0E273D 2012-10-17 [expires: 2014-10-28]
sub   2048R/A675C0A5 2012-10-27 [expires: 2014-10-28]
sub   2048R/D98D0D9F 2012-10-27 [expires: 2014-10-28]

Now that we have the new subkeys definition locally, we need to push it to the keyservers so other people get it too. In my case, I also need to push it to Debian keyring keyserver so it gets picked at the next update:

corsac@scapa: gpg --send-keys 71ef0ba8
gpg: sending key 71EF0BA8 to hkp server subkeys.pgp.net
corsac@scapa: gpg --keyserver keyring.debian.org --send-keys 71ef0ba8
gpg: sending key 71EF0BA8 to hkp server keyring.debian.org

Main smartcard now back in safe place. As far as I can tell, there's no operation needed on the daily smartcard (which only holds the subkeys), but you will need to refresh your public key on any machine you use it on before it gets the updated expiration date.

Yves-Alexis@14:18:12 (Debian)

samedi 06 juillet 2013 (1 post)
  • Xfce 4.10, final part

Someone recently asked me about the Debian Xfce 4.10 status, as apparently I forgot to update this post series.

So, as you might have noticed, the full Xfce 4.10 desktop environment is currently in Debian Jessie (current name for testing). All in all, the transition went well and smooth.

One of the most regular question I get about Xfce 4.10 is the panel behavior when it comes to the “task bar” expansion. In xfce4-panel 4.8, when people wanted to have a full side panel with a task bar plugin inside, they added a “Windows buttons” plugin and configured the panel to 100% length. Then the “Windows buttons” would expand to occupy all the free space on the panel. It was a special case plugins, as usually other plugins only used a fixed space. Now, in 4.10, this is not the case anymore. “Windows button” uses a fixed size. And the plugins are left-aligned, which means usually people end up with some space at the far right of the panel. To restore the previous behavior back (which is actually the pre-4.8 behavior, 4.8 was an exception by itself), one needs to add a “Separator” plugin, then configure it to expand (and optionnally select a transparent handle). Then move it next right to the “Windows buttons” plugin.

Another thing which might be a bit surprising for upgrading users is the change in the “Action buttons” plugin, which people usually use to logout. In 4.8, by default, it's set to run the logout dialog. In 4.10, by default, it's set to logout directly (but with a confirmation dialog). If you prefer the previous behavior, you can just configure the “Action buttons” plugin and select the “Log out…” item instead of the “Log out” one (I know, it's a bit confusing).

If you have any question, don't hesitate to reach us by mail or on irc (#debian-xfce on Freenode). Other than that remember that Xfce really needs you help, both in Debian and upstream (and at that point, I'd say *especially* upstream). There's a lot of unmaintained project under the Xfce umbrella, some of them part of the core (like xfce4-power-manager), so if you have some spare time and some C/GTK+ knowledge, feel free to contact the Xfce team on the mailing list.

Yves-Alexis@10:53:57 (Debian)

Images
Stats
  • 1492 posts
  • 4770 jours
  • 0.31 posts/jour
  • IRC
  • Last.fm
Stuff
Gallery
Tech
Webcomics
Weblogs
Desktop