Filed under Linux

I like Gnome Shell

Since the Gnome Shell (also known as Gnome 3) launch, every now and then there is an article, a blog post, or a Linus Torvalds thoughts saying that Shell is horrible, that it's useless, that it's bad. I think that most of the people saying that are just resistant to change. Of course, there is also the point that Gnome didn't respect his philosophy (incremental improvements, as read on The Register), but that's another debate.

I never was a big Gnome fan. Yeah it did the work. Yeah it was light enough. But I always chose KDE, or a very lightweight desktop, or a very customizable desktop, but never Gnome. And since KDE started to become more and more heavy, I was searching for a new desktop. And BAM, Gnome Shell arrived.

The extensions

In my start-up, we love Shell. Seriously. Some of us use the out-of-the-box experience, but most of us use one of his big strength : his plugin system. Sure, out of the box there is some missing functionality, but it's still interesting, and I had clearly a better first impression with Shell than with Canonical's Unity. But there is already a lot of plugins, and since it's javascript, there will be a whole lot of others.

gTile screenshot For example, one of the best is gTile. With it, you can organize your windows on screen very easily. You want to have 1/3 of the screen used by Chrome, and the other 2/3 with an equal split of four terminal ? Easy. And it's only one extension. I also like the multi-screen capable dock, the removable drive menu, and a lot more.

Ok, I agree, there is some of them that must have been inside Shell from the beginning, like the removable drive menu. But isn't it great to be able to fix your desktop so easily ? Sure, there is other desktop that have a plugins system, like Mint's Cinnamon, but nothing I tested was as stable as Shell. Nor has a community as big as the Gnome's community.

Good ergonomics

There is more. I have a lot of experience with Windows 7, because I'm a gamer, and my last company was forcing us to use Windows, for security reason (yeah, never understood either). And regardless of your a priori against Microsoft or Windows, it's undeniable that 7 was a big leap forward in ergonomics : Moving a window on a side border resize it to take half the screen To open a program, just type the windows key and enter the name of the program (or just the first letters in most case) And some more. And you know what ? Shell does it too. And faster. And customizable (like the default search when nothing is found after typing the windows key, actually is calling wikipedia, and you can change that). So now, when I want to open gedit, for example, I just type "Super key > ged > enter". If I want to talk to my co-worker on gtalk, "Super key > his name > enter", and the contact window open (yeah, I need to found or create a plugin to be able to open the chat window directly).

And as I talk about chatting, the social integration is pretty cool. If you don't want to use it, don't. There won't be a popup from time to time asking you to connect an account or anything. As we are pretty close to Google in my company, it's really helpful to be able to see if I missed a chat message just via Shell.

The dark side

But of course, as a new project, Shell isn't finish. And it misses some features that I couldn't fix via existing plugins. As I said, if we were able to directly open a chat from the super search menu, it would be awesome. It would be good too to have the Google Apps fully integrated, with e-mail, calendar & all. Or at least an integration without Thunderbird. I mean there is a lot of protocol to share calendars or e-mail, if they were built in Shell, it would be very useful.

And finally, the darkest side of all : the keyboard use.

Shell in itself is pretty good :

  • You have the super key to open the explode view and access the awesome search
  • You can switch workspace with Ctrl+Alt+Up/Down
  • There is of course the Alt+Tab switch window
  • Ctrl+Alt+T open a terminal
  • You can access your shell notification (Super + M)

The only missing point in here is the selection of a window while in explode mode. Maybe there is a way, but I haven't found it yet.

However, the shell extensions are mostly not usable by keyboard. That's a shame, and though it's not entirely up to the Gnome Team, they must do something to ensure that most of the extension's developer make the extra effort of making it usable via shortcut. For example, gTile would be even more awesome if I could use it with my keyboard.

Imagine : Your working on a website in Vim, you want to have your Vim window side by side with your terminal used to build/deploy the site, and also a Chrome window to test it (I'm not an expert of using a browser via keyboard, but it must exists), and from your keyboard you make your window organization, without any script like on other linux desktop, just by calling the extension via a shortcut and then making your configuration with it's graphical interface, but again using only keyboard. That would be awesome.

Despite those little youth error, I really like Gnome Shell. I'm gonna use it a lot more, and watching his evolution, but clearly, as a developer, I'm clearly winning productivity, especially on such a small resolution.

Tagged , ,

Debian Squeeze on Intel H77 motherboard

This week-end, I built my own home server. I don't care if it's a big tower, but I wanted something silent, energy efficien, with a capacity of at least 5 hard drives, and capable of decoding 1080p videos. Yeah I know, a server shoudln't be used for multimedia, just for storage, but it was cheaper to do that instead of buying a video receiver apart.

For the size, I found a good compromize between silence, quality and size, the Fractal Design Define Mini. It's classy, well built, relatively cheap, and it looks good in my living room, perfectly integrated with my TV stand (almost the same height). And when I said silence, I mean I can't hear it unless I put my head right on it. My fridge and my house ventilation are way louder, and even them, I almost can't hear them.

And for the 1080p decodin, I chose the combination of the mother board ASRock H77 Pro4-M and the Pentium G860. And with the integrated graphics of the processor, I was all set (minus RAM & co of course).

So I built it, pretty easily, thanks to the built quality of Fractal, and installed OpenMediaVault. I used the HDMI port during the installation, and after that, put the server beside my TV stand, and started configuring it. All seems to worked perfectly, except for the video drivers and the sound. Too bad for a media center right ?

The video card

The HDMI port worked out of the box, but the video drivers weren't working. The display was at the lowest resolution in the terminal mode, or with a X server (I installed LXDE to test the drivers), and there was no graphic acceleration, ie there was no OpenGL available. It seems that the integrated graphic cards is too recent for the 2.6 kernel used by Debian Squeeze. Maybe there is some workarounds to stay with this kernel, but after some googling, the answer mostly given to this problem was to upgrade the kernel. I did it using the Squeeze backports :

$ echo "deb squeeze-backports main" > /etc/apt/sources.list.d/debian-backports.list
$ sudo apt-get update
$ sudo apt-get install linux-image-3.2.0-0.bpo.3-amd64

After that, reboot, select the new kernel in the Grub list, and ta-da ! Your on a 3.2 kernel. There was some warnings about some firmware during the package installation, but it seems it isn't important because all is working (for me at least). But that's not all. Now that we are in 3.2, we still have some package to install for the video cards to fully work. I struggled a little at this point, in fact I spent most of my time trying to solve that problem. But thanks to T_Send on StackOverflow, I solved it using the Debian Wheezy repo :

$ echo "deb testing main contrib non-free" > /etc/apt/sources.list.d/debian-testing.list
$ apt-get update
$ apt-get install --reinstall -t testing libdrm2 libdrm-intel1 xserver-xorg-video-intel xserver-xorg-core libgl1-mesa-glx libgl1-mesa-dri mesa-utils

dpkg-reconfigure xserver-xorg

And this time, we did it ! OpenGL works, and you can use the rightful resolution when using the server directly.

The sound

The second problem was the sound. No sound card were found out of the box. But by using the 3.2 kernel, we almost entirely solved that problem. But there is still a problem : the sound doesn't come out via the HDMI port. Again, too bad for a media center. But thanks to the famous Alsa, it's not that hard. Before starting, let me say that the following configuration will set the HDMI port as the default sound output. If you want to be able to switch automatically when pluging/unpluging a HDMI cable, there is a lot of information about that on the net, and it will be based on the information gathered by the above operations.

First, we need to install the alsa tools

$ sudo apt-get install alsa-base alsa-tools

Second, we need to find the HDMI output

Please keep in mind that your results may differ.

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

From this results, we're going to test all the cards and devices. Speakers (via TV, screen or anything) must be connected to the HDMI port you want to use at this time.

$ alsamixer -c 0 # 0 because my HDMO port is on the card 0
# In alsamixer, unmute all your channel and set raise all the volume to max, except the microphones. Use Esc to exit.
$ aplay -D plughw:0,3 /usr/share/sounds/alsa/Noise.wav # Card 0, device 3
$ aplay -D plughw:0,7 /usr/share/sounds/alsa/Noise.wav # Card 0, device 7
$ aplay -D plughw:0,8 /usr/share/sounds/alsa/Noise.wav # Card 0, device 8

For one of the device, you'll hear a "shhhhhhh" through your speakers. From there, you now what card/device is your HDMI port.

Finally, we set the device as default audio output

For this step, just use your favorite text editor to edit/create the /etc/asound.conf file :

pcm.!default {
    type plug
    slave {
        pcm "hw:0,8" # My HDMI device is on card 0, device 8

And there you are, video and sound working on your server ! Now you can install VLC and play your audio/video files, or make a real media center and install XBMC.

Tagged , ,