The Ubuntistas magazine (in Greek)
Ubuntistas is an e-magazine by Ubuntu-gr, the Greek Ubuntu community.
This is the 9th issue of Ubuntistas for May-June-July. You can click on the image above and have a look at the issue. The text should look Greek to you
but you can get the gist of the content.
The contributors for the 9th issue of Ubuntistas are
- Almpanopoulos Nikos (editing)
- Diamantis Dimitris (author)
- Kwstaras Giannis (author)
- Papadopoulos Dimitris (author, desktop publishing)
- Petoumenou Jennie (editing)
- Savvidis Solon (author, public relations)
- Fwtiadis Grigoris (design)
- Fwtiadis Fillipos (author)
- Hatzipantelis Pantelis (author, desktop publishing)
I remember the first discussions that led to the creation of the Ubuntistas magazine. It happened at the Ubuntu-gr forum where I was a moderator at that time. As moderator, our goal was to provide a friendly environment so that users get quality help and continue to use Ubuntu. As a result of that, the chances that some of these users would end up giving back to the community would be higher.
My input to the discussion was that there are many way to contribute back and I gave a list of (very boring) things to do. I felt that a magazine endeavor requires many people to cooperate and it was quite complicated task. My belief however was that they should give it a go anyway.
Workaround for bad fonts in Google Earth 5 (Linux)
Update Jan 2010: The following may not work anymore. Use with caution. See relevant discussions at http://forum.ubuntu-gr.org/viewtopic.php?f=5&t=15607 and especially http://kigka.blogspot.com/2010/11/google-6.html
Older post follows:
So you just installed Google Earth 5 and you can't figure out what's wrong with the fonts? If your language does not use the Latin script, you cannot see any text?
Here is the workaround. The basic info comes from this google earth forum post and the reply that suggests to mess with the QT libraries.
Google Earth 5 is based on the Qt library, and Google is using their own copies of the Qt libraries. This means that the customisation (including fonts) that you do with qtconfig-qt4 does not affect Google Earth. Here we use Ubuntu 8.10, and we simply installed the Qt libraries in order to use some Qt programs. You probably do not have qtconfig-qt4 installed, so you need to get it.
So, by following the advice in the post above and replacing key Qt libraries from Google Earth with the ones provided by our distro, solves (read: workaround) the problem. Here comes the science:
If you have a 32-bit version of Ubuntu,
cd /opt/google-earth/ sudo mv libQtCore.so.4 libQtCore.so.4.bak sudo mv libQtGui.so.4 libQtGui.so.4.bak sudo mv libQtNetwork.so.4 libQtNetwork.so.4.bak sudo mv libQtWebKit.so.4 libQtWebKit.so.4.bak sudo ln -s /usr/lib/libQtCore.so.4.4.3 libQtCore.so.4 sudo ln -s /usr/lib/libQtGui.so.4.4.3 libQtGui.so.4 sudo ln -s /usr/lib/libQtNetwork.so.4.4.3 libQtNetwork.so.4 sudo ln -s /usr/lib/libQtWebKit.so.4.4.3 libQtWebKit.so.4
If you have the 64-bit version of Ubuntu, try
cd /opt/google-earth/
sudo getlibs googleearth-bin
sudo mv libQtCore.so.4 libQtCore.so.4.bak
sudo mv libQtGui.so.4 libQtGui.so.4.bak
sudo mv libQtNetwork.so.4 libQtNetwork.so.4.bak
sudo mv libQtWebKit.so.4 libQtWebKit.so.4.bak
sudo ln -s /usr/lib32/libQtCore.so.4.4.3 libQtCore.so.4
sudo ln -s /usr/lib32/libQtGui.so.4.4.3 libQtGui.so.4
sudo ln -s /usr/lib32/libQtNetwork.so.4.4.3 libQtNetwork.so.4
sudo ln -s /usr/lib32/libQtWebKit.so.4.4.3 libQtWebKit.so.4
Requires to have getlibs installed, and when prompted, install the 32-bit versions of the packages as instructed.
Now, with qtconfig-qt you can configure the font settings.
Playing with Git
Git is a version control system (VCS) software that is used for source code management (SCM). There are several examples of VCS software, such as CVS and SVN. What makes Git different is that it is a distributed VCS, that is, a DVCS.
Being a DVCS, when you use Git you create fully capable local repositories that can be used for offline work. When you get the files of a repository, you actually grab the full information (this makes the initial creation of local repositories out of a remote repository slower, and the repositories are bigger).
You can install git by installing the git package. You can test it by opening a terminal window, and running
git clone git://github.com/schacon/whygitisbetter.git
The files appear in a directory called whygitisbetter. In a subdirectory called .git/,git stores all the controlling information it requires to manage the local repository. When you enter the repository directory (whygitisbetter in our case), you can issue commands that will figure out what's going on because of the info in .git/.
With git, we create local copies of repositories by cloning. If you have used CVS or SVN, this is somewhat equivalent to the checkout command. By cloning, you create a full local repository. When you checkout with CVS or SVN, you get the latest snapshot only of the source code.
What you downloaded above is the source code for the http://www.whygitisbetterthanx.com/ website. It describes the relative advantages of git compared to other VCS and DVCS systems.
Among the different sources of documentation for git, I think one of the easiest to read is the Git Community Book. It is consise and easy to follow, and it comes with video casting (videos that show different tasks, with audio guidance).
You can create local repositories on your system. If you want to have a remote repository, you can create an account at GitHub, an attractive start-up that offers 100MB free space for your git repository. Therefore, you can host your pet project on github quite easily.
GitHub combines source code management with social networking, no matter how strange that may look like. It comes with tools that allows to maintain your own copies of repositories (for example, from other github users), and helps with the communication. For example, if I create my own copy of the whygitisbetter repository and add something nice to the book, I can send a pull request (with the click of a button) to the maintainer to grab my changes!
If you have already used another SCM tool (non-distributed), it takes some time to get used to the new way of git. It is a good skill to have, and the effort should pay off quickly. There is a SVN to Git crash course available.
If you have never used an SCM, it is cool to go for git. There is nothing to unlearn, and you will get a new skill.
Git is used for the developement of the Linux kernel, the Perl language, Ruby On Rails, and others.
Code of conduct και ελληνικές κοινότητες ΕΛ/ΛΑΚ
Ένα πρόβλημα με τις κοινότητες ελ/λακ είναι ότι μερικά από τα μέλη δεν ακολουθούν τους τυπικούς κανόνες συμπεριφοράς, και αυτό έχει το αποτέλεσμα να δημιουργείται συχνά ένα αρνητικό κλίμα.
Ένα πρόσφατο παράδειγμα είναι στη λίστα gnome-i18n, όπου ένας νέος μεταφραστής ήταν πολύ αρνητικός και προσβλητικός στη συμπεριφορά του απέναντι στο συντονιστή της συγκεκριμένης γλώσσας και άλλα άτομα που έλαβαν μέρος στη συζήτηση (=όπως εμένα!). Κατά τη συζήτηση, έγινε αναφορά στο λεγόμενο Code of conduct του GNOME, απλοί κανόνες καλής συμπεριφοράς. Αν θέλεις να συμμετέχεις στο GNOME, πρέπει να ακολουθείς τους κανόνες καλής συμπεριφοράς. Εννοείται ότι ο καθένας που λαμβαίνει μέρος στην ανάπτυξη του GNOME ακολουθεί τους κανόνες αυτούς· ωστόσο μπορεί κάποιος και να υπογράψει ότι ακολουθεί τους κανόνες. Το ίδιο συμβαίνει με την κοινότητα του Ubuntu Linux όπου ο χρήστης μπορεί να υπογράψει ψηφιακά το Code of Conduct με το κλειδί του, και να λάβει το χαρακτηρισμό Ubuntero.
Στην ελληνική πραγματικότητα δεν έχουμε φτάσει ακόμα σε τέτοια επίπεδα και η κατάσταση είναι σχεδόν ad-hoc. Αναφερθήκαμε πρόσφατα στο πρόβλημα με το φόρουμ Linux του Adslgr.com.Ένα πράγμα που θεωρώ πολύ σημαντικό είναι ότι πρέπει να υπάρχει σεβασμός και τήρηση των τυπικών κανόνων καλής συμπεριφοράς. Παλαιότερα που έβλεπα τη λίστα LGU, παρατηρούσα ότι υπήρχαν συχνές «παραβάσεις», με αποτέλεσμα να επικρατεί αρνητικό κλίμα, να μην βγαίνουν αποτελέσματα στις συζητήσεις, ο καθένας να προσπαθεί να κάνει τον έξυπνο και να «την βγει» στον άλλο, και ουσιαστικά να γίνεται κακό στην κοινότητα, στους νέους χρήστες. Για τώρα δεν γνωρίζω, έχω την εντύπωση ότι τα πράγματα δεν έχουν καλυτερέψει σημαντικά. Είδα την πρόσφατη συζήτηση στην LGU για το σχολιασμό της μετάφρασης από ΕΛΟΤ των θεμελιωδών όρων πληροφορικής. Πολλά άτομα απάντησαν, ωστόσο στη συζήτηση αυτή δεν παρατήρησα κάποιο χειροπιαστό αποτέλεσμα.
Ένα άλλο πρόσφατο παράδειγμα είναι με αυτό το γράμμα στη λίστα public@hellug.gr. Ανεξάρτητα αν έχει δίκιο ή όχι ο αποστολέας, το γράμμα αυτό είναι από τα πιο τυπικά για να κάνει μια συζήτηση να αποσυντονιστεί. Ο δε αποστολέας του γράμματος δεν είναι νέος χρήστης· είναι μέλος της κοινότητας πάνω από δέκα χρόνια. Αντί να έχει την ωριμότητα να κλείσει το θέμα, το ανοίγει περισσότερο.
Βλέπω αυτό το εχθρικό περιβάλλον να διαιωνίζεται σε συγκεκριμένες κοινότητες, με μικρές ελπίδες για αλλαγή.
Προσωπικά αφιερώνω χρόνο στο φόρουμ του ελληνικού Ubuntu, στο http://ubuntu.opengr.net/ όπου υπάρχει έντονη προσπάθεια να έχουμε ένα θετικό περιβάλλον. Βλέπουμε να έχουμε αποτελέσματα, και να γίνονται μέλη περισσότεροι νέοι χρήστες της διανομής. Το ίδιο θετικό περιβάλλον υπάρχει στη λίστα του Ubuntu-gr.
Αντιγράφω εδώ τους κανόνες καλής συμπεριφοράς του GNOME,
Advice
- Be respectful and considerate:
- Disagreement is no excuse for poor behaviour or personal attacks. Remember that a community where people feel uncomfortable is not a productive one.
- Be patient and generous:
- If someone asks for help it is because they need it. Do politely suggest specific documentation or more appropriate venues where appropriate, but avoid aggressive or vague responses such as "RTFM".
- Assume people mean well:
- Remember that decisions are often a difficult choice between competing priorities. If you disagree, please do so politely.
- If something seems outrageous, check that you did not misinterpret it. Ask for clarification, but do not assume the worst.
- Try to be concise:
- Avoid repeating what has been said already. Making a conversation larger makes it difficult to follow, and people often feel personally attacked if they receive multiple messages telling them the same thing.
What to see in OpenOffice.org 3.1 Writer;
At the User Experience mailing list at OpenOffice.org there is a thread to discuss & plan what new things should make it to OpenOffice.org 3.1. Here is the first email,
From: Christian Jansen
Date: Wed, Jun 25, 2008 at 8:35 AM
Hi,
OpenOffice.org 3.1 planning will start soon, thus I'd like to collect some ideas (from an UX-perspective) for improving OpenOffice.org Writer.
- What drives you nuts?
- What works pretty well?
- My most wanted feature is:
Thanks for your feedback!
Regards,
Christian [Jansen]
Source: http://ux.openoffice.org/servlets/ReadMsg?list=discuss&msgNo=1890
Feedback started pouring in. Make your way to the user-experience discuss@ux.openoffice.org mailing list to add your views. When you log in to OpenOffice.org, you click to subscribe to the mailing list. That is, you need to make an account first.
Converting between XKB and XML
I completed the stage that takes keyboard layout files from XKB (X.Org) and converts them to XML documents, based on a keyboard layout Relax NG schema. Then, these XML documents can also be converted back to keyboard layout files.
Here is an imaginary example of a keyboard layout file.
// Keyboard layout for the Zzurope country (code: zz).
// Yeah.
partial alphanumeric_keys alternate_group hidden
xkb_symbols "bare" {
key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
};
partial alphanumeric_keys alternate_group
xkb_symbols "basic" {
name[Group1] = "ZZurope";
include "zz(bare)"
key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
key <AC07> { [ j, J, idiaeresis, Idiaeresis ] };
key <AB02> { [ x, X, oe, OE ] };
key <AB04> { [ v, V, registered, registered ] };
};
partial alphanumeric_keys alternate_group
xkb_symbols "extended" {
include "zz(basic)"
name[Group1] = "ZZurope Extended";
key.type = "THREE_LEVEL"; // We use three levels.
override key <AD01> { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
[ U1C9, U1C8], [ any, U1C7 ] }; // q
override key <AD02> { [ U1CC, U1CB, any,U1CA ],
type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" }; // w
key <BKSP> {
type[Group1]="CTRL+ALT",
symbols[Group1]= [ BackSpace, Terminate_Server ]
};
key <BKSR> { virtualMods = AltGr, [ 1, 2 ] };
modifier_map Control { Control_L };
modifier_map Mod5 { <LVL3>, <MDSW> };
key <BKST> { [1, 2,3, 4] };
};
When converted to an XML document, it looks like
<?xml version="1.0" encoding="UTF-8"?>
<layout layoutname="zz">
<symbols>
<mapoption>hidden</mapoption>
<mapoption>xkb_symbols</mapoption>
<mapname>bare</mapname>
<mapmaterial>
<tokenkey override="False">
<keycodename>AE01</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>1</symbol>
<symbol>exclam</symbol>
<symbol>onesuperior</symbol>
<symbol>exclamdown</symbol>
</symbolsgroup>
</keysymgroup>
</tokenkey>
</mapmaterial>
</symbols>
<symbols>
<mapoption>xkb_symbols</mapoption>
<mapname>basic</mapname>
<mapmaterial>
<tokenname name="ZZurope"/>
<tokeninclude>zz(bare)</tokeninclude>
<tokenkey override="False">
<keycodename>AD04</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>r</symbol>
<symbol>R</symbol>
<symbol>ediaeresis</symbol>
<symbol>Ediaeresis</symbol>
</symbolsgroup>
</keysymgroup>
</tokenkey>
<tokenkey override="False">
<keycodename>AC07</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>j</symbol>
<symbol>J</symbol>
<symbol>idiaeresis</symbol>
<symbol>Idiaeresis</symbol>
</symbolsgroup>
</keysymgroup>
</tokenkey>
<tokenkey override="False">
<keycodename>AB02</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>x</symbol>
<symbol>X</symbol>
<symbol>oe</symbol>
<symbol>OE</symbol>
</symbolsgroup>
</keysymgroup>
</tokenkey>
<tokenkey override="False">
<keycodename>AB04</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>v</symbol>
<symbol>V</symbol>
<symbol>registered</symbol>
<symbol>registered</symbol>
</symbolsgroup>
</keysymgroup>
</tokenkey>
</mapmaterial>
</symbols>
<symbols>
<mapoption>xkb_symbols</mapoption>
<mapname>extended</mapname>
<mapmaterial>
<tokenname name="ZZurope Extended"/>
<tokeninclude>zz(basic)</tokeninclude>
<tokentype>THREE_LEVEL</tokentype>
<tokenmodifiermap state="Control">
<keycode value="Control_L"/>
</tokenmodifiermap>
<tokenmodifiermap state="Mod5">
<keycodex value="LVL3"/>
<keycodex value="MDSW"/>
</tokenmodifiermap>
<tokenkey override="True">
<keycodename>AD01</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>U1C9</symbol>
<symbol>U1C8</symbol>
</symbolsgroup>
<symbolsgroup>
<symbol>any</symbol>
<symbol>U1C7</symbol>
</symbolsgroup>
<typegroup value="SEPARATE_CAPS_AND_SHIFT_ALPHABETIC"/>
</keysymgroup>
</tokenkey>
<tokenkey override="True">
<keycodename>AD02</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>U1CC</symbol>
<symbol>U1CB</symbol>
<symbol>any</symbol>
<symbol>U1CA</symbol>
</symbolsgroup>
<typegroup value="SEPARATE_CAPS_AND_SHIFT_ALPHABETIC"/>
</keysymgroup>
</tokenkey>
<tokenkey override="False">
<keycodename>BKSP</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>BackSpace</symbol>
<symbol>Terminate_Server</symbol>
</symbolsgroup>
<typegroup value="CTRL+ALT"/>
</keysymgroup>
</tokenkey>
<tokenkey override="False">
<keycodename>BKSR</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>1</symbol>
<symbol>2</symbol>
</symbolsgroup>
<tokenvirtualmodifiers value="AltGr"/>
</keysymgroup>
</tokenkey>
<tokenkey override="False">
<keycodename>BKST</keycodename>
<keysymgroup>
<symbolsgroup>
<symbol>1</symbol>
<symbol>2</symbol>
<symbol>3</symbol>
<symbol>4</symbol>
</symbolsgroup>
</keysymgroup>
</tokenkey>
</mapmaterial>
</symbols>
</layout>
When we convert the XML document back to the XKB format, it looks like
hidden xkb_symbols "bare"
{
key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
};
xkb_symbols "basic"
{
name = "ZZurope";
include "zz(bare)"
key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
key <AC07> { [ j, J, idiaeresis, Idiaeresis ] };
key <AB02> { [ x, X, oe, OE ] };
key <AB04> { [ v, V, registered, registered ] };
};
xkb_symbols "extended"
{
name = "ZZurope Extended";
include "zz(basic)"
key.type = "THREE_LEVEL";
modifier_map Control { Control_L };
modifier_map Mod5 { <LVL3>, <MDSW> };
override key <AD01> { [ U1C9, U1C8 ], [ any, U1C7 ], type = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" };
override key <AD02> { [ U1CC, U1CB, any, U1CA ], type = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" };
key <BKSP> { [ BackSpace, Terminate_Server ], type = "CTRL+ALT" };
key <BKSR> { [ 1, 2 ], virtualMods = AltGr };
key <BKST> { [ 1, 2, 3, 4 ] };
};
Some things are missing such as partial, alphanumeric_keys and alternate_group, which I discussed with Sergey and he said they should be ok to go away.
In addition, we simplify by keeping just Group1 (we do not specify it, as it is implied).
I performed the round-trip with all layout files, and all parsed and validated OK (there is some extra work with the level3 file remaining, though).
Some issues that are remaining, include
- Figuring out how to use XLink to link to documents in the same folder (+providing a parameter; the name of the variant), and how to represent that in the Relax NG schema.
- Sort the layout entries by keycode value.
Using Anjuta in Ubuntu 8.04 to develop a GNOME C++ application (gtkmm)
You can install Anjuta 2.4.1 from the Synaptic package manager. You also need to install a few development packages. I do not know if there is a nice meta-package such as build-essential (used to install compilers et al), so I'll just ask you to install the packages by hand. A more elegant way would be very much appreciated to see in the comments.
$ sudo apt-get install build-essential libgtkmm-2.4-dev autogen automake libtool intltool libglademm-2.4-dev
That is the order of installation when you go trial by error inside Anjuta to compile a project. Each package draws in several other packages. Also, if you have the Ubuntu 8.04 DVD in your drive, most of these packages will be installed in a jiffy. We have the Greek localisation enabled, so bear with us. Thanks to Giannis Katsampiris for completing the recent update of the Anjuta 2.4 localisation.

Once Anjuta is installed, you are presented with the Anjuta main window.
We then click on File/New/Project (Αρχείο/Νέο/1. Έργο),
We click on Forward here.
There are many many project types. We wade through and we pick to use C++ and GTKMM (C++ bindings for GTK+). We could pick any other variation; GTKMM was a request from the Ubuntu-gr mailing list.
We then fill in some contact details.
There is an option to specify at this stage external packages. We opt not to specify them now.
Once you click Apply (Εφαρμογή) - the button with the green tick, Anjuta will create an initial dummy package (actually a hello world application), and will run automatically the equivalent of ./configure for you.
Now, this is the final screen, when you start working. Here you would click on Κατασκευή/Κατασκευή έργου (Build/Build Project), so that the project gets compiled.
Then, you would click on Κατασκευή/Εκτέλεση προγράμματος... (Build/Run program...) to run the program!
Here is shows that we have located the source file (main.cc), and we see main().
It takes about 3 second to compile a program with g++ (at least on my system). Therefore, the dead time between (a) Let's compile it and (b) Oh, I am running my program!, is under 5 seconds, which is good.
Greek Campaign for Open-Source Software
mathe.ellak.gr is an campaign to promote free and open-source software to the Greek-speaking audience.
The purpose of the campaign is to provide a short and concise message to the visitors; and also helps to direct people to the website when they show interest about FLOSS.
It comes with logos of different sizes that you can put on your website so that you can direct your visitors to the campaign.
Got to put on on the Greek planet, planet.ellak.gr.
Create flash videos of your desktop with recordmydesktop
John Varouhakis is the author of recordmydesktop and gtk-recordmydesktop (front-end) which is a tool to help you record a session on your Linux desktop and save it to a Flash video (.flv).
To install, click on System/Administration/Synaptic Package Manager, and search for gtk-recordmydesktop. Install it. Then, the application is available from Applications/Sound&Video/gtkRecordMyDesktop.
Before you are ready to capture your Flash video, you need to select the video area. There are several ways to do this; the most common is to click on Select Window, then click on the Window you want to record. A common mistake is that people try to select the window from the preview above. If you do that, when you would have selected the recorder itself to make a video of, which is not really useful. You need to click on the real window in order to select it; then, in the desktop preview you can see the selected window. In the above case, I selected the OpenOffice Writer window.
Assuming that you do not need to do any further customisation, you can simple press Record to start recording. Generally, it is good to check the recording settings using the GNOME Sound recorder beforehand. While recording, you can notice a special icon on the top panel. This is gtk-recordmydesktop. Once you press it, recording stops and the program will do the post-processing of the recording. The resulting file goes into your home folder, and has the extension .ogv.
Some common pitfalls include
- I did not manage to get audio recording to work well for my system; I had to disable libasound so that the audio recording would not skip. With ALSA, sound skips while with OSS emulation it does not. Weird. Does it work for you?
- The post-processing of the recording takes some time. If you have a long recording, it may take some time to show that it makes progress, so you might think it crashed. Have patience.
I had made one such recording, which can be found at the Greek OLPC mailing list. John told me that the audio part of the video was not loud enough, and one can use extra post-processing to make it sound better. For example, one could extract the audio stream of the video, remove the noise, beautify (how?) and then add back to the video.
It's good to try out gtk-recordmydesktop, even for a small recording. Do you have some cool tips from your Linux desktop that you want to share? Record your desktop!












