GNOME.ORG

24 hours a day, 7 days a week, 365 days per year...

November 16, 2016

Ομαδικές φωτογραφίες από συνέδρια στο εξωτερικό που έχω συμμετάσχει

Μετά από το post μου με τίτλο: "Συναντήσεις μου με famous και λιγότερο famous σε συνέδρια και όχι μόνο", σκέφτηκα να ψάξω και ομαδικές φωτογραφίες από τα συνέδρια του εξωτερικού που έχω συμμετάσχει ως ανάμνηση. Υπάρχουν και τα συνέδρια FOSSCOMM στην Ελλάδα, αλλά ίσως γράψω κάτι όταν πλησιάζει ο καιρός να συμμετάσχω στο επόμενο FOSSCOMM.

Έχουμε και λέμε:

2011


Το desktop summit διεξήχθη για τελευταία φορά το 2011 στο Βερολίνο. Είναι η πρώτη φορά που επισκέπτομαι το Βερολίνο. Επίσης είναι η πρώτη φορά που βγαίνω στο εξωτερικό μετά από ένα χρόνο που είχαμε ξεκινήσει την κοινότητα openSUSE στην Ελλάδα μαζί με τον Κώστα.



2012

Το 2012 συμμετείχα ως εθελοντής στο παγκόσμιο συνέδριο openSUSE στην Πράγα. Συμμετείχαμε πολλοί Έλληνες (δείτε παρακάτω) επειδή την επόμενη χρονιά θα διοργανώναμε στην Θεσσαλονίκη το αντίστοιχο συνέδριο.


Η ομάδα των Ελλήνων

Το συνέδριο ήταν συνδιοργάνωση με άλλα 2 συνέδρια.



2013

Την χρονιά αυτή, το παγκόσμιο συνέδριο openSUSE διοργανώθηκε στην Θεσσαλονίκη. Συμμετείχα ενεργά τόσο στην οργάνωσή του όσο και στην διάρκειά του, με την διαχείριση των μέσων κοινωνικής δικτύωσης.



2014

Το παγκόσμιο συνέδριο openSUSE διοργανώθηκε στο Dubrovnik στην Κροατία. Έχοντας αποκτήσει εμπειρία, μου ανατέθηκε ο ρόλος των μέσων κοινωνικής δικτύωσης.



2015

Το 2015 συμμετείχα στο συνέδριο ownCloud στο Βερολίνο. Ήταν η χρονιά που είχα κάνει πολλές παρουσιάσεις και αρκετή προώθηση του ownCloud στην Ελλάδα. Είχα κερδίσει την συμμετοχή μου στο συνέδριο μέσω της πλατφόρμας προώθησης που χρησιμοποιούσε εκείνη την εποχή το ownCloud.



2016

Το 2016 συμμετείχα σε δυο συνέδρια. Ο λόγος ήταν ο διαχωρισμός-διάσπαση σε ownCloud και Nextcloud (είναι δυο διαφορετικές εταιρίες με δυο εντελώς διαφορετικά projects).

Αρχικά ως προσκεκλημένος του ownCloud.


Στη συνέχεια ως προσκεκλημένος-εθελοντής του Nextcloud.


Σύντομα θα ακολουθήσουν και άλλα...

November 10, 2016

Ultimate Scripts Pack: Μια σειρά με βοηθήματα στο δεξί σας κλικ [Linux]

Ultimate Scripts Pack: Μια σειρά με βοηθήματα στο δεξί σας κλικ [Linux]

Αν το σκεφτείτε, ένα από τα πιο βολικά και χρηστικά σημεία του desktop μας είναι το δεξί κλικ. Να μπορούσαμε δηλαδή με δεξί κλικ σε κάποιο/α αρχείο/α ή διαδρομές να έχουμε με μια-δυο κινήσεις τις όποιες επιλογές χρειαζόμαστε με μια κίνηση. Καλώς ή κακώς, oι διανομές έρχονται με ελάχιστες επιλογές στο δεξί κλικ, μα αυτό μπορεί να διορθωθεί εύκολα με την προσθήκη κάποιων scripts προκειμένου να αυξηθούν οι επιλογές μας. Μιλάμε βέβαια για Linux διανομές που χρησιμοποιούν Gnome-based desktop και File Managers σαν τους Ναυτίλο, Nemo και Caja, δηλαδή για Ubuntu, Mint και παράγωγες διανομές, με Unity, Mate και GnomeShell σαν γραφικό περιβάλλον.

Μια τέτοια επιλογή προσφέρει το «The Ultimate Nautilus/Nemo Scripts Pack» που έρχεται με μια λίστα που περιλαμβάνει κάπου 1000 διαφορετικά scripts με επιλογές για το δεξί σας κλικ. Αυτά είναι κατηγοριοποιημένα ανά είδος, όπως για παράδειγμα: «Multimedia» με αμέτρητες επιλογές για μετατροπές βίντεο, ηχητικών αρχείων εικόνων, multiplay, μετονομασία, εύρεσης υποτίτλων, «File Manager» για διαχείριση όλων των αρχείων (μετονομασίες, μετακινήσεις, διαγραφές, απόκρυψη) μα και άλλα όπως για εκτύπωση, μετατροπές, επεξεργασία pdf's και άλλων αρχείων κειμένου, επιλογές για wallpaper (ορισμός βίντεο wallpaper ή slide-show κλπ), δημιουργία ISO αρχείων, μεταφραστή, για ασφάλεια και πολλά ακόμα πιο ειδικευμένα:


Εγκατάσταση του Ultimate Nautilus/Nemo Scripts Pack:

Πρώτα θα το κατεβάσετε:

[DOWNLOAD Ultimate Nautilus/Nemo Scripts Pack]

Μόλις κατέβει, θα το αποσυμπιέσετε. Ανοίγοντας αυτόν τον αποσυμπιεσμένο φάκελο, θα βρείτε έναν άλλον, με την ονομασία: «nemo-scripts».
Αυτόν τον φάκελο θα πρέπει να τον μεταφέρετε στον προσωπικό σας και πιο συγκεκριμένο στον κρυφό υποφάκελο «.gnome2» που μέσα του περιλαμβάνεται ένας άλλος με την ονομασία: «nemo-scripts»
H διαδρομή δηλαδή, είναι:

/home > /.gnome2/ > nemo-scripts

Αν ο File Manager σας είναι ο Ναυτίλος, ο φάκελος θα ονομάζεται «nautilus-scripts» και θα είναι στην αντίστοιχη διαδρομή:

/home > /.gnome2 > /nautilus-scripts

Αν έχετε Mate desktop και τον Caja File Manager, η διαδρομή είναι διαφορετική:

/home > /.config > caja > scripts

Σε κάθε περίπτωση, αν δεν υπάρχει ο φάκελος με τα scripts, τον δημιουργείτε.
Επειδή τα αρχεία «.gnome2» και «.config» είναι κρυφά, θα πρέπει να επιλέξετε την εμφάνιση των κρυφών αρχείων. Αυτό μπορεί να γίνει και από το μενού του File-Manager σας, αλλά και πατώντας συγχρόνως τα πλήκτρα Ctrl+H.

Φυσικά, δεν είναι ανάγκη να τα κρατήσετε όλα. Όποια δεν θέλετε, απλά τα διαγράφετε και μπορείτε επίσης να κάνετε δική σας αναδιάταξη σε φακέλους ή να τα βάλετε, όποια θέλετε, χύμα στον φάκελο με τα scripts
Δεν ξέρω αν δουλεύουν όλα καλά, μα αρκετά από όσα δοκίμασα λειτουργήσανε χωρίς πρόβλημα.

Αυτό ήταν, πλέον θα τα έχετε στο δεξί κλικ > «Σενάρια εντολών», σε οποιοδήποτε σημείο του desktop σας.

November 03, 2016

Νοέμβριος, μήνας Bug Squash

gnome_bugsquash_nov_2016

21 Σεπτεμβρίου 2016 είχαμε την κυκλοφορία της νέας έκδοσης του GNOME. Συνηθίζεται μετά από ένα μήνα, να κυκλοφορεί η διορθωμένη έκδοση 3.22.1. Στην διορθωμένη έκδοση, βλέπουμε τα σφάλματα που δεν προβλέφθηκαν πριν την επίσημη κυκλοφορία και διορθώνουμε όσα περισσότερα μπορούμε. Όλες οι αναφορές σφαλμάτων βρίσκονται στο bugtracker.

Τι είναι το Bug Squash και πως μπορείτε να βοηθήσετε;

Σε μερικά σφάλματα που βρίσκονται στο bugzilla του GNOME μπορεί να μην δοθεί ιδιαίτερη σημασία από τους προγραμματιστές του GNOME. Τα σφάλματα αυτά είναι όμως κρίσιμα για την εύρυθμη λειτουργία του γραφικού περιβάλλοντος. Η ομάδα Bugsquad προσπαθεί ώστε να μην μείνουν στην αφάνεια αυτά τα σφάλματα. Δεν χρειάζεται να είστε προγραμματιστές για να συμμετέχετε σε αυτή την ομάδα. Μάλιστα είναι ο καλύτερος τρόπος για να προσφέρετε στην κοινότητα GNOME.

Στο κανάλι #bugs στο IRC θα υπάρχουν μέλη του Bugsquad που μπορούν να σας βοηθήσουν με τη διαδικασία του Triage. Οι μέρες που έχουν οριστεί είναι οι ακόλουθες:

  • Σάββατο, 5 Νοεμ.
  • Παρασκευή, 11 Νοεμ.
  • Πέμπτη 17 Νοεμ.
  • Τετάρτη 30 Νοεμ.

Ως ελληνική κοινότητα GNOME, θα λάβουμε μέρος σε αυτή την πρωτοβουλία και μέλη της κοινότητας μας θα είναι διαθέσιμα στο κανάλι #gnome-el στο δίκτυο του GNOME και του Freenode, για οποιαδήποτε απορία έχετε σχετικά με τη διαδικασία.

Πρόσκληση σε ομάδες ανοιχτού λογισμικού

Εάν έχετε μια ομάδα (LUG, Hackerspace, Linux Team κλπ) και θέλετε να προσφέρετε στην κοινότητα GNOME, μπορείτε να οργανώσετε ένα party και να το δηλώσετε στο wiki αλλά και να ενημερώσετε την Ελληνική κοινότητα, ώστε να βρίσκονται την ίδια μέρα online άτομα που βρίσκονται μακρυά από τον χώρο σας και θέλουν να προσφέρουν και αυτοί.

Είμαστε ανοικτοί σε προτάσεις και θα χαρούμε να βοηθήσουμε!

 

– Ελληνική κοινότητα GNOME

October 25, 2016

Συναντήσεις μου με famous και λιγότερο famous σε συνέδρια και όχι μόνο

Στα ελάχιστα χρόνια ενασχόλησής μου με το ΕΛΛΑΚ, έχω συναντήσει αρκετά άτομα που διαβάζουμε στις ειδήσεις γι'αυτούς. Η ενασχόλησή μου με κοινότητες (openSUSE, GNOME, ownCloud τώρα Nextcloud) αλλά και με αρκετή συνεισφορά τόσο σε προώθηση των projects όσο και μεταφράσεις, με έχουν κάνει σεβαστό και υπολογίσιμο όταν βγαίνω στο εξωτερικό σε συνέδρια. Έχω καταφέρει να είμαι μέλος της κοινότητας openSUSE (από το 2010) ενώ είμαι και μέλος του GNOME Foundation.

Πρώτος διάσημος σε χρονολογική σειρά ήταν το 2010 ο Richard Stallman. Ο Stallman ήταν καλεσμένος του GreekLUG (του οποίου είμαι ιδρυτικό μέλος). Ήταν ίσως η μεγαλύτερη "επιτυχία" μας. Μέχρι τότε συμμετείχαμε σε μικρότερες πανελλαδικές και πολλές τοπικές εκδηλώσεις.


Γενικά έχω συμμετάσχει σε πολλά συνέδρια, τόσο στο εξωτερικό όσο και στο εσωτερικό. Αυτό που έχω καταλάβει είναι ότι δεν πρόκειται να παρουσιαστεί μια σουπερ ντουπερ τεχνολογία που πιθανό να μην γνωρίζουμε. Τις περισσότερες φορές γίνονται απλά για να βρίσκονται από κοντά τα άτομα μιας κοινότητας ώστε να γεμίσουν ενέργεια και να δουλέψουν πιο αποδοτικά για την κοινότητα και το project.

Στο συνέδριο Desktop Summit το 2011 (Βερολίνο), ήταν η πρώτη μου έξοδος σε παγκόσμιο συνέδριο. Εκεί συνάντησα μερικά από τα πιο "γνωστά ονόματα" στον χώρο του ΕΛΛΑΚ. Συμμετείχα στο booth του openSUSE.

Στο συνέδριο αυτό συνάντησα τον Mark Shuttleworth του Ubuntu.



Με την Izabel Valverde και τον Mark Shuttleworth

ΠΑΡΕΛΕΙΠΟΜΕΝΑ ΓΙΑ ΜΑΡΚ: Εμφανίστηκε την 2η μέρα το μεσημέρι (την ώρα που όλοι βρισκόταν στο εστιατόριο για μεσημεριανό). Μπαίνοντας στην άδεια αίθουσα παρουσιάσεων, μας χαιρέτησε, σαν να μας γνώριζε. Κατά την αναμονή μας στη σειρά στο εστιατόριο, βρισκόταν πίσω μας. Όταν ήρθε η σειρά του, του ζητήθηκε το κουπόνι φαγητού που μας χορηγούνταν κατά την εγγραφή μας. Επειδή δεν είχε (είπαμε ήρθε αργοπορημένος), αναγκάστηκε να ανέβει στις αίθουσες του συνεδρίου, να κάνει την εγγραφή του και να κατέβει στο εστιατόριο.

Εκεί συνάντησα για πρώτη φορά τον Jos Portvliet. Τότε κατείχε την θέση του community manager για την κοινότητα openSUSE.


Έκτοτε έχουμε συναντηθεί σε άλλα 4 συνέδρια.

Την κοπέλα της φωτογραφίας με τον Mark Shuttleworth ίσως δεν την γνωρίζετε. Είναι η Izabel Valverde από την Βραζιλία. Η Izabel είναι γνωστή από το έργο της τόσο για το openSUSE αλλά κυρίως για το GNOME, τόσο στην χώρα της όσο και στην Λατινική Αμερική. Μιλάμε σχετικά συχνά.

Στο συνέδριο ήταν και ο Federico Mena Quintero. Η Izabel μου πρότεινε να μου τον γνωρίσει αλλά ήμουν τόσο ψαρωμένος, που δεν τον γνώρισα.

Επόμενο συνέδριο που συμμετείχα ήταν στο παγκόσμιο συνέδριο της κοινότητας openSUSE στην Πράγα. Και εκεί συνάντησα κάποιους σημαντικούς αλλά δεν έχω κάπου πρόχειρες φωτογραφίες. Στο συγκεκριμένο συνέδριο συμμετείχαμε περίπου 15 Έλληνες. Κάναμε την προώθηση της υποψηφιότητάς μας για το συνέδριο της επόμενης χρονιάς στη Θεσσαλονίκη.

Μετά από 3 χρόνια πετυχημένης πορείας ως Ελληνική κοινότητα openSUSE, μας ανατέθηκε η διοργάνωση του παγκόσμιου συνεδρίου. Ήταν η πρώτη φορά που η κοινότητα θα διοργάνωνε ένα τέτοιο συνέδριο.

Εδώ συνάντησα τον Ralf Flaxa (όπως λέει και ο τίτλος του, είναι President of Global Engineering at SUSE).


O Rihard Brown είναι πρόεδρος του openSUSE Board. Τον Richard τον συναντώ σε κάθε συνέδριο openSUSE.


Την συμμετοχή του Stefano Karapetsas, του συνεχιστή (μετά τον perberos) του γραφικού περιβάλλοντος MATE, την θεωρώ προσωπική μου επιτυχία. Η συμμετοχή του έγινε στα πλαίσια της προώθησης του MATE στο openSUSE. Ο στόχος επετεύχθη, το MATE είναι πλήρως λειτουργικό στο openSUSE. Μάλιστα το video στο youtube είχε τις περισσότερες θεάσεις ακόμα και από τα παλαιότερα βίντεο. Απ' όσο γνωρίζω, δεν ασχολείται τελευταία πολύ με το project λόγω επαγγελματικών υποχρεώσεων.


Στο συνέδριο της Θεσσαλονίκης συνάντησα ακόμα μια φορά την Izabel Valverde αλλά και άλλα δυο άτομα που δραστηριοποιούνται για το GNOME και το openSUSE στην Ασία. Τον Max Huang και την Inene Chen.


Σε κάθε συνέδριο βρισκόμαστε και με τον Andrew Waafa. Βλέπετε από την φωτογραφία (αλλά αν ψάξετε και άλλες) δεν φοβάται να τσαλακωθεί. Έχει ένα δίκιο πάντως. Και να δείχνεις σοβαρός, δεν κερδίζεις κάτι... ;-)


Την επόμενη χρονιά, το παγκόσμιο συνέδριο openSUSE διοργανώθηκε στο Dubrovnik. Εκεί συμμετείχα ως εθελοντής στην διοργάνωση αλλά οργάνωσα και το booth για το GNOME.

Στο συνέδριο αυτό συνάντησα τον Michael Meeks (γνωστός από την συνεισφορά του τόσο στο GNOME όσο και στο Libre Office).



Άννα, Αποστόλης, Wookey, εγώ, Michael Meeks, Κώστας

Στο ίδιο συνέδριο συμμετείχε από πλευράς GNOME ο Tobias Mueller. Ο Tobi εκείνη την εποχή νομίζω ότι ήταν μέλος του GNOME Foundation Board. Έχει προσφέρει πολλά στην κοινότητα GNOME.


Επόμενο συνέδριο ήταν αυτό του ownCloud το 2015 στο Βερολίνο. Εκείνη την χρονιά έτρεχε ένα marketing project που λεγόταν ownCloud insiders. Μια πλατφόρμα που είχε κάποιες εργασίες του στυλ διαβάστε αυτό το άρθρο και ποστράρετε στα social media ή κάντε μια παρουσίαση. Αυτές οι εργασίες είχαν ως ανταμοιβή πόντους. Οι πόντοι ανταλλάσσονταν με διάφορα "δώρα". Οι περισσότεροι Έλληνες έπαιρναν το Banana Pi. Προσωπικά είχα βάλει στόχο να συμμετέχω στο συνέδριο ΔΩΡΕΑΝ. Και το πέτυχα.

Εκεί συνάντησα το εμπνευστή του ownCloud (αλλά και αργότερα του Nextcloud), τον Frank Karlitschek. Με τον Frank μιλούσαμε μέσω mails μέχρι τότε.


Συνάντησα και έναν φίλο από το openSUSE, τον Klaas Freitag. Ο Klaas έφυγε από την SUSE για να εργαστεί στην εταιρία ownCloud.


Τελευταία συνέδρια που συμμετείχα ήταν το 2016 στο Βερολίνο. Η ιστορία και εδώ περίεργη. Δεν είχα σκοπό να συμμετάσχω επειδή δεν περίσσευαν χρήματα από τον προϋπολογισμό μου. Δέχτηκα πρόσκληση συμμετοχής στο συνέδριο ownCloud από τον Jonathan Kawol, τον νέο community manager του ownCloud, μετά από τα γεγονότα του καλοκαιριού. Το ανέφερα ότι αν μπορεί να καλύψει ένα ποσό, τότε θα μπορέσω να πάω. Μου απάντησε θετικά και ξεκίνησα την αναζήτηση. Έκλεισα αεροπορικό και διαμονή και την ίδια μέρα, το βραδάκι, μου στέλνει πρόσκληση και ο Jos Poortvliet. Του απάντησα ότι εάν έστελνε νωρίτερα, θα μπορούσα να συμμετάσχω και στο συνέδριο του Nextcloud. Μου πρόσφερε να καλύψει τις ημέρες μεταξύ των συνεδρίων αρκεί να αλλάξω το αεροπορικό εισιτήριο. Κατάφερα να το κάνω και μάλιστα το συνολικό ποσό να είναι λιγότερο από αυτό που μου πρότεινε. Οπότε συμμετείχα και στα δυο συνέδρια, γεγονός που ξεκαθάρισε λίγο το τοπίο.

Στο ownCloud συνάντησα τον Cornelius Schumacher, γνωστό από την συνεισφορά του στο KDE (ως προγραμματιστής αλλά και ως πρόεδρος του KDE ev) αλλά για μένα από την συνεισφορά του στο openSUSE.


Στο συνέδριο του Nextcloud συνάντησα την Karen Sandler, την φωνή στα τελευταία βίντεο του GNOME. Την είχα δει και στο Desktop Summit το 2010 όταν ήταν executive director του GNOME Foundation. Με μεγάλη μου έκπληξη, όταν πήγα να την χαιρετίσω λίγο πριν αρχίσει την ομιλία της, μου είπε ότι με γνωρίζει (προφανώς από την συνεισφορά μου στο GNOME).
Όπως είναι λογικό, συνάντησα τον καλό φίλο, Jos Poortvliet και τον ιδρυτή του Nextcloud, Frank Karlitschek.

Αυτούς συνάντησα μέχρι τώρα. Ίσως να λείπει από το κάδρο ο Linus Torvalds. Δυστυχώς βρίσκεται πολύ μακρυά για να τον συναντήσω σε κάποιο συνέδριο-ομιλία. Ποιος ξέρει; Ίσως στο μέλλον τον συναντήσω και αυτόν.

May 28, 2016

Flatpak: Η εγκατάσταση των Linux εφαρμογών αλλάζει πρόσωπο

Flatpak: Η εγκατάσταση των Linux εφαρμογών αλλάζει πρόσωπο

Βρισκόμαστε στην εποχή που ότι γνωρίζουμε σαν desktop και εφαρμογές, μπαίνει σε μια άλλη εποχή και αρκετά πράγματα αλλάζουν. Μάλλον θα ήταν άστοχο να προσπαθήσουμε να προβλέψουμε πού τελικά θα οδηγηθεί όλο αυτό, μα οι αλλαγές έρχονται σταδιακά αλλάζοντας πολλά από τα υπάρχοντα δεδομενα. Όσον αφορά το Linux υπάρχουν κάποια πράγματα τα οποία έχουν μείνει αναλλοίωτα εδώ και χρόνια. Ένα από αυτά είναι το Synaptic και ένα άλλο, ο τρόπος που εγκαθίστανται οι εφαρμογές. Στο Linux είχε αναπτυχθεί ένας ευφυής τρόπος γι' αυτό, ερχόμενος σε πλήρη αντιδιαστολή με την λογική που ακολουθούσαν τα Windows. Ο τρόπος αυτός έλεγε το εξής:

Θέλεις να εγκαταστήσεις καποιες εφαρμογές, μα όλες έχουν κάποιες κοινές εξαρτήσεις. Δεν χρειάζεται με κάθε εφαρμογή να κατεβάζεις και όλες τις εξαρτήσεις, μα θα υπάρχει μια βιβλιοθήκη απ' όπου θα αλιεύονται αυτές (οι εξαρτήσεις) για κοινή χρήση από όποιες εφαρμογές τις χρειάζονται για την λειτουργία τους.

Εντελώς χοντροκομμένα και απλοϊκά βέβαια τα πιο πάνω. Όπως και να έχει, ήταν ένα χαρακτηριστικό που δούλεψε, δεν σπαταλιόταν χώρος στον δίσκο, η διαδικασία της εγκατάστασης ήταν πιο εύκολη και γρήγορη και τέλος πάντων η δουλειά των Package-Μanagers ήταν λιγότερο πολύπλοκη.

Μα φυσικά, όπως συμβαίνει πάντα στο λογισμικό, τίποτα δεν είναι τέλειο και παράλληλα υπάρχουν μειονεκτήματα. Αυτό φάνηκε έντονα στην πορεία και με το πέρασμα του χρόνου, όσον αφορούσε τις εκδόσεις των εφαρμογών και διανομών (32b / 64b), "σπασίματα", συγκρούσεις εξαρτήσεων με διαφορετικές εκδόσεις, αλλαγές στην διανομή και συμβατότητες ή προβλήματα στις εφαρμογές, πολλές και διαφορετικές διανομές και αρκετά άλλα.
Μια βόλτα σε Linux forums ολόκληρου του πλανήτη μπορεί να το επαληθεύσει αυτό.

Έτσι λοιπόν, άρχισε να υπάρχει η σκέψη και υλοποίηση μιας διαφορετικής προσέγγισης, η οποία τελικά δεν είναι διαφορετική από εκείνη που αρχικά είχε διαφοροποιηθεί το Linux από τα Windows σε αυτό το θέμα. Δηλαδή, η κάθε εφαρμογή να κατεβάζει μαζί με το πακέτο της και όλες τις εξαρτήσεις που χρειάζεται αυτή.
Έχοντας πλέον περάσει οι δεκαετίες, αυτό σήμερα φαίνεται πιο λογικό, μα και συν τα άλλα είναι εύκολα υλοποιήσιμο στο Linux. Φυσικά, υπάρχουν και πολλές αντιδράσεις και ισχυρή επιχειρηματολογία εκατέρωθεν.
Προσωπικά, θεωρώ πως αυτό θα προχωρήσει και σε σύντομο διάστημα θα αποτελεί μια πραγματικότητα στο Linux οικοσύστημα, αν και υποθέτω πως θα εξακολουθήσουν να υπάρχουν και διανομές που θα παρέχουν την" κλασσική" αντιμετώπιση.
Τα Snappy-packages που θα υλοποιήσει η Canonical στο Ubuntu κάνουν αυτό ακριβώς. Το ίδιο - περίπου - κάνει και το Flatpak, ένα νέο framework για desktop εφαρμογές στο Linux, μα αρκετά διαφορετικά.

Τι είναι το Flatpak

Είναι η ανανέωση ενός πρότζεκτ που έχει ξεκινήσει κάμποσο καιρό πριν, με την ονομασία XDG-APP.
Κατά την άποψή μου, είναι μια από τις καλύτερες δουλειές που έχω δει μέχρι τώρα στο Linux και μάλλον, η πιο πετυχημένη υλοποίηση των όσων αναφέραμε. Βλέπετε, οι παράγοντες για να επιτευχθεί κάτι τέτοιο είναι πολλοί, μα πρώτιστο μέλημα του κάθε λειτουργικού συστήματος (πρέπει να) είναι η ασφάλεια. Και το πιο πάνω σύστημα, δεν ακούγεται και τόσο ασφαλές, έτσι δεν είναι;
Προφανώς αυτά τα έχουν λάβει σοβαρά υπόψιν τους οι προγραμματιστές του Gnome που αναπτύσσουν το Flatpak και για να μην πολυλογούμε, ώστε να δούμε τα ενδότερα, αυτό λύθηκε με την ενσωμάτωση ενός Sandbox (δείτε αυτό το άρθρο για καταλάβετε τι είναι, αν δεν ξέρετε).

Το Flatpak λοιπόν, έρχεται με σκοπό να απαλλάξει από τον πονοκέφαλο των διαφορετικών διανομών, εκδόσεων και το κάθε τι, με τις δικές του εκδόσεις στις libraries και στην μορφή συσκευασίας (packaging formats). Επιτρέπει στην ίδια εφαρμογή να εγκατασταθεί σε διαφορετικές διανομές Linux, συμπεριλαμβανομένων και των διαφόρων εκδόσεων. Και όπως είπαμε, έχει σχεδιαστεί από το μηδέν με την ασφάλεια στο μυαλό, έτσι ώστε οι εφαρμογές να είναι απομονωμένες η μία από την άλλη και από το υπόλοιπο σύστημα.

Θα χρησιμοποιεί Runtimes που θα περιέχουν τις εξαρτήσεις που χρησιμοποιούνται από τις εφαρμογές. Θα είναι πάντα η ίδια, ανεξάρτητα από την διανομή Linux που χρησιμοποιείται. Αυτό σημαίνει ότι οι εφαρμογές δεν χρειάζεται πλέον να ενημερώνονται (update) ώστε να συμβαδίσουν με τις αλλαγές διανομής.
Οι δε εξαρτήσεις, που δεν είναι σε runtime, θα μπορούν να συνδυαστούν ως μέρος της εφαρμογής. Αυτό καθιστά δυνατή την χρήση εξαρτήσεων οι οποίες δεν είναι στην διανομή, και σας δίνει την δυνατότητα να χρησιμοποιήσετε μια διαφορετική έκδοση μιας εξάρτησης από αυτήν που βρίσκεται σε διανομή.
Με την απομόνωση αυτών των εφαρμογών από το υπόλοιπο λειτουργικό σύστημα, παρέχει ασφάλεια για τους χρήστες και ένα προβλέψιμο περιβάλλον για τους προγραμματιστές.

Δοκιμάστε το Flatpak

Πρόκειται για ένα πρότζεκτ που βρίσκεται σε εξέλιξη και στην παρούσα φάση περιλαμβάνει αρκετές Gnome εφαρμογές, καθώς και nightly (δοκιμαστικές) εκδόσεις τους. Κάποιες εφαρμογές είναι οι εξής:

Builder
Calculator
Calendar
Characters
Clocks
Dictionary
Documents
Evince
Eye of Gnome
Games
Gedit
Gitg
Glade
Iagno
Maps
News
Notes (Bijiben)
Polari
Rhythmbox
Todo
Videos (Totem)
Web (Epiphany)
Weather

Εγκατάσταση Flatpak:

Για να μπορέσετε να εγκαταστήσετε εφαρμογές με το Flatpak, θα πρέπει να εγκαταστήσετε το ίδιο το Flatpak. Μπορεί να εγκατασταθεί σε όλες τις διανομές, μα δοκιμασμένο επί του παρόντος, είναι μόνο σε Fedora και Ubuntu (και σε παράγωγες διανομές θα πρέπει να δουλέψει). Την παρούσα στιγμή λοιπόν, μπορείτε να το εγκαταστήσετε ως εξής:

Σε Ubuntu (και παράγωγες διανομές):

Ανοίξτε το τερματικό σας και δώστε μια-μια τις ακόλουθες εντολές πατώντας Enter μετά την κάθε μια και εισάγοντας τον κωδικό σας μόλις ζητηθεί:

sudo add-apt-repository ppa:alexlarsson/flatpak
sudo apt update
sudo apt install flatpak

Σε Fedora 24:

Δώστε την παρακάτω εντολή, πατώντας Enter μετά και εισάγοντας τον κωδικό σας μόλις ζητηθεί:

sudo dnf install flatpak

Σε Arch, Debian, Mageia (και παράγωγες διανομές), δώστε την αντίστοιχη εντολή για την διανομή σας που θα δείτε εδώ.

Εγκατάσταση Flatpak αποθετηρίων:

Το Flatpak σας επιτρέπει να εγκαταστήσετε το λογισμικό από απομακρυσμένα αποθετήρια. Για αυτό το παράδειγμα, θα πάμε να χρησιμοποιήσουμε δύο αποθετήρια: ένα που περιέχει τις εφαρμογές του GNOME, και ένα που περιέχει το runtime το οποίο παρέχει τις εξαρτήσεις που χρειάζονται.

Δώστε, μια-μια, τις ακόλουθες εντολές για τα αποθετήρια:

wget https://sdk.gnome.org/keys/gnome-sdk.gpg
flatpak remote-add --gpg-import=gnome-sdk.gpg gnome https://sdk.gnome.org/repo/
flatpak remote-add --gpg-import=gnome-sdk.gpg gnome-apps https://sdk.gnome.org/repo-apps/

Προσθέστε και το runtime για τις εξαρτήσεις που χρειάζεται το πιο πάνω GNOME repository:

flatpak install gnome org.gnome.Platform 3.20

Μόλις αυτό ολοκληρωθεί, είστε έτοιμοι να εγκαταστήσετε κάποιες εφαρμογές. Επί του παρόντος, αυτό μπορεί να γίνει μόνο από την γραμμή εντολών (εγώ τουλάχιστον δεν είδα άλλον τρόπο).
Για να δείτε καταρχάς την λίστα με τις διαθέσιμες εφαρμογές, δώστε:

flatpak remote-ls gnome-apps --app

Για να κατεβάσετε και να εγκαταστήσετε μια εφαρμογή, (στο παράδειγμά μας το gedit), δώστε την εντολή:

flatpak install gnome-apps org.gnome.gedit stable

φυσικά, όπου gedit, θα βάλετε το όνομα της εφαρμογής που θέλετε να εγκαταστήσετε.

Οι εγκατεστημένες εφαρμογές θα πρέπει να εμφανίζονται στον συνήθη τόπο στο desktop σας. Μπορείτε επίσης να τις τρέξετε από την γραμμή εντολών:

flatpak run org.gnome.gedit

όπου gedit, θα βάλετε το όνομα της εφαρμογής που θέλετε να τρέξετε.

Αυτός είναι ο τρόπος εγκατάστασης και χρήσης του την παρούσα στιγμή, μα όπως καταλαβαίνετε πρόκειται για κάτι που έχει άπειρες δυνατότητες υλοποίησης και απαλλαγής από τα συνήθη σημερινά προβλήματα και, αρκετά σύντομα, οι διαδικασίες θα είναι ακόμα πιο απλές.

Να προσθέσουμε, πως παρέχει οδηγίες για το πώς οι δημιουργοί εφαρμογών μπορούν να το κάνουν με την χρήση του Flatpak, κάτι που είναι πολύ πιο εύκολο πλέον και σαφώς θα δούμε μια νέα άνθιση και σε λογισμικό.

>>> η ιστοσελίδα του Flatpak.

Το Flatpak είναι μια πολύ αξιόλογη προσπάθεια που προέκυψε μέσα από την σημερινή πραγματικότητα του Linux desktop και, όπως φαίνεται, θα αλλάξει ριζικά τα πράγματα στο άμεσο μέλλον. Η εποχή των καθαρών standalone εφαρμογών είναι πραγματικότητα.

May 16, 2016

Γιατί πρέπει να μεταφράζετε upstream

Ένα μεγάλο μέρος των έργων του ΕΛ/ΛΑΚ συντηρείται από τελικούς χρήστες που τους άρεσε η ιδέα και η φιλοσοφία που κρύβεται πίσω από το ΕΛ/ΛΑΚ και θέλησαν να συνεισφέρουν. Ο πιο απλός τρόπος συνεισφοράς των τελικών χρηστών είναι η μετάφραση κειμένων, είτε για άρθρα, είτε για σελίδες βοήθειας (wiki), είτε σε φόρουμ. Το κυριότερο και σημαντικότερο όμως όλων, είναι η μετάφραση των έργων, διότι αυτά είναι που χρησιμοποιούν καθημερινά οι περισσότεροι χρήστες.

Γιατί να μεταφράσετε;
Δεν σας πιέζει κανείς να το κάνετε. Υπάρχει η άποψη ότι επειδή είμαστε λίγοι στον χώρο, βοήθεια στα προβλήματά του βρίσκει κανείς σε αγγλόφωνα φόρουμ, λίστες IRC. Καλύτερα να έχει στα Αγγλικά το σύστημά του, ώστε να μπορεί να αναφέρει σωστά το πρόβλημά. Όμως τι γίνεται με τον κόσμο που δεν γνωρίζει Αγγλικά (π.χ. μικρά παιδιά), ή επιχειρήσεις που το χρησιμοποιούν σε εταιρικό περιβάλλον. Αυτόματα τους αποκλείει από χρήστες ΕΛ/ΛΑΚ (κάτι το οποίο είναι ενάντια στις αρχές του GNOME).

Να μεταφράσετε upstream ή να μεταφράσετε downstream;
Όλοι χρησιμοποιούμε μια διανομή. Αυτή η διανομή χρησιμοποιεί και κάποιο γραφικό περιβάλλον. Από αυτά τι αξίζει να μεταφράσετε περισσότερο; Εάν μεταφράσετε αποκλειστικά την διανομή, αυτή θα χρησιμοποιηθεί από ένα σεβαστό αριθμό τελικών χρηστών. Εάν όμως επιλέξετε να μεταφράσετε το γραφικό περιβάλλον, αυτό αφενός θα χρησιμοποιηθεί από τους χρήστες της διανομής που χρησιμοποιείτε, αφετέρου θα ενσωματωθεί και σε άλλες διανομές, οπότε θα επωφεληθούν περισσότεροι χρήστες.
Άρα συμφέρει να ολοκληρώσετε την μετάφραση του γραφικού περιβάλλοντος που χρησιμοποιείτε και στη συνέχεια να ασχοληθείτε με την μετάφραση της διανομής.

Πώς μπορείτε να μεταφράσετε στο GNOME;
Αναλυτικές οδηγίες βρίσκονται στην ιστοσελίδα μας http://www.gnome.gr/contribute/

Εάν έχετε κάποια απορία, μπορείτε να επικοινωνήσετε με την κοινότητα στην λίστα αλληλογραφίας https://mail.gnome.org/mailman/listinfo/gnome-el-list ή στα social media της κοινότητας.

– Ελληνική κοινότητα GNOME

January 09, 2016

Ubuntu 16.04 LTS Alpha 1 released

Η τρέχουσα υπό-ανάπτυξη έκδοση ονομάζεται Xenial Xerus και συμβολίζεται από έναν Αφρικανικό σκίουρο.
Πριν λίγο καιρό είχε ανακοινωθεί το όνομά της, όπως επίσης άνοιξαν και τα αποθετήρια για τους "βιαστικούς".
Πριν λίγες μέρες ανακοινώθηκε και η πρώτη Alpha έκδοση, στην λίστα ηλεκτρονικού ταχυδρομείου ubuntu-devel-announce.
Όσοι από εσάς θέλετε να δοκιμάσετε την νέα έκδοση, μπορείτε να κατεβάσετε την εικόνα iso που σας ενδιαφέρει και είτε να κάνετε εγκατάσταση (κανονικά ή σε εικονική μηχανή), είτε να τρέξετε την εικόνα iso από ένα USB stick.

Οι Alpha εκδόσεις δεν είναι για όλους!
Και όταν λέμε δεν είναι για όλους εννοούμε ότι περιέχουν το τελευταίο διαθέσιμο λογισμικό για το Ubuntu και βρίσκονται σε διαρκείς αλλαγές. Οπότε κάποια σφάλματα (bugs) είναι αναμενόμενα. Η διάθεση αυτών των εκδόσεων (Alpha, Beta..κλπ) μας δίνουν τη δυνατότητα να δοκιμάσουμε το λογισμικό, πριν αυτό γίνει διαθέσιμο ως σταθερή έκδοση, και να το βελτιώσουμε. Είτε αναφέροντας σφάλματα (bugs) , είτε συμμετέχοντας στον QA Tracker, είτε βελτιώνοντας την μετάφραση (αν εντοπίσουμε κάποιο μεταφραστικό λάθος ή/και αμετάφραστο μήνυμα).
Παρακάτω ακολουθούν χρήσιμοι σύνδεσμοι.

1) Αναφέροντας σφάλματα στο Launchpad (αναλυτικός οδηγός)
2) Συμμετέχοντας στον QA Tracker (αναλυτικός οδηγός και βίντεο)
3) Βελτιώνοντας την μετάφραση (μπορείτε να ρωτήσετε και στο φόρουμ για όποια απορία)

Διαθέσιμες εικόνες ISO Ubuntu 16.04 LTS
Από τα επίσημα παράγωγα του Ubuntu, αυτή τη στιγμή τα Lubuntu και Ubuntu MATE έχουν κυκλοφορήσει Alpha 1 εκδόσεις. Αναμένονται όμως και οι υπόλοιπες.

1) Lubuntu με γραφικό περιβάλλον LXDE
2) Ubuntu MATE με γραφικό περιβάλλον MATE

Άσχετα με τις Alpha 1 εκδόσεις, που αν μη τι άλλο υποδηλώνουν την ομαλή εξέλιξη της υπό-ανάπτυξης διανομής, για τα αγαπημένα γραφικά περιβάλλοντα του καθενός υπάρχουν daily εικόνες iso που μπορεί κάποιος να κατεβάσει.
Για παράδειγμα και για το Ubuntu GNOME, πηγαίνοντας σε αυτόν το σύνδεσμο: http://cdimage.ubuntu.com/ μπορούμε να πλοηγηθούμε στο ubuntu-gnome/releases/daily-live και να κατεβάσουμε την τελευταία, την πιο φρέσκια, εικόνα που είναι διαθέσιμη (ρίχνουμε και μια ματιά στην ημερομηνία μεταφόρτωσης), και συνήθως κατεβάζουμε την current.
Την ίδια διαδικασία μπορούμε να ακολουθήσουμε και για άλλες επίσημες διανομές του Ubuntu. Θα τις βρούμε όλες να φιλοξενούνται στο: http://cdimage.ubuntu.com/
Για το Ubuntu με γραφικό περιβάλλον Unity: http://cdimage.ubuntu.com/ubuntu/daily-live/current/

Μην ξεχνάμε ότι η 16.04 είναι η επόμενη LTS (Long Term Support) έκδοση και θα δοθεί ιδιαίτερη προσοχή σε ότι αφορά τη σταθερότητά της.

Το φόρουμ της Ελληνικής κοινότητας Ubuntu είναι διαθέσιμο για κάθε ερώτηση-απορία. Υπάρχει ειδικό θέμα-thread για την τρέχουσα δοκιμαστική έκδοση.

Καλές Δοκιμές !

January 01, 2016

Χρόνια Πολλά και Ευτυχισμένο το 2016

November 29, 2015

Μαθαίνοντας τα πρόσθετα του Gnome shell

Gnome logo

Το gnome shell είναι το νέο interface του GNOME 3.Ήρθε να αντικαταστήσει τη παλιά επιφάνεια εργασίας του Gnome επιφέροντας αρκετές αλλαγές στη λειτουργικότητα αλλά και στην εμφάνιση του Gnome.

Μαζί με το gnome shell ήρθαν και νέα extensions (οι devs λένε πως δεν ήρθαν να αντικαταστήσουν τα applets!) κάνοντας τη ζωή μας πιο εύκολη !! Παρακάτω θα παρουσιάσω μερικά από τα extensions που βρήκα και με τον ένα ή αλλο τρόπο μπορούν να χρησιμεύσουν στον καθένα μας.

Περιεχόμενα

Πως εγκαθιστώ τα extensions του Gnome Shell ;
Πως θα ενεργοποιήσω τα πρόσθετα ;

Extensions που υπάρχουν για το Gnome Shell

Dock
Alternate-tab
Alternate-status-menu
Drive-menu
Places-menu
User-theme
User-theme-selector

Κάντε το Gnome shell να μοιάζει με το Gnome 2 (extensions από Ron Yorston)

Move the clock
Favorites in panel
Disable dynamic workspaces
Applications menu in panel

Χρήση του GnomeTweakTool
Λοιπά – toDO

Πως εγκαθιστώ τα extensions του Gnome Shell ;

Πριν προχωρήσουμε,να πω ότι οι τοποθεσίες που βρίσκονται τα extensions είναι:

  • /usr/share/gnome-shell/extensions/ (διαθέσιμα για όλους τους χρήστες του συστήματος)
  • $HOME/.local/share/gnome-shell/extensions/ (διαθέσιμα μόνο για έναν χρήστη)

Υπάρχουν 2 τρόποι για να κάνετε εγκατάσταση τα extension του gnome shell.

Ο πρώτος είναι να υπάρχουν στα αποθετήρια της διανομής σας και μεσω του διαχειριστή πακέτων σας να τα κάνετε από εκεί εγκατάσταση.

Ο δεύτερος τρόπος είναι να κατεβάσετε το extension που θέλετε και να βάλετε σε μια από τις δύο τοποθεσίες που αναφέραμε πριν.

Πίσω στα περιεχόμενα..

Πως θα ενεργοποιήσω τα πρόσθετα ;

Απλά κάνετε μια επανεκκίνηση το gnome shell.Πατήστε alt+F2 πληκτρολογήστε το r,enter και είμαστε έτοιμοι!

Πίσω στα περιεχόμενα..

Dock

dock-1Ένα από τα πρόσθετα του gnome shell είναι το dock.Το dock εμφανίζει τις αγαπημένες εφαρμογές που έχουμε ορίσει στην επιφάνεια εργασίας,για να έχουμε γρήγορη πρόσβαση σε αυτές.

Λήψη του extension από το git του Gnome.

Εγκατάσταση

Fedora: yum install gnome-shell-extensions-dock
openSUSE: zypper install
Arch Linux: pacman -S gnome-shell-extension-dock

Αν για κάποιο λόγο δεν σας βολεύει το dock μπορείτε να χρησιμοποιήσετε το cairo-dock,awn κ.λπ που έχουν περισσότερες επιλογές.

dock-2 dock-3

Πίσω στα περιεχόμενα..

Alternate-tab

Το extension αυτό επαναφέρει τη συμπεριφορά της συντόμευσης Alt+Tab στη παλιά λειτουργία του.Συγκεκριμένα γίνεται εναλλαγή των εφαρμογών σε σχέση με τα ανοιχτά παράθυρα (όπως παλιά..) και όχι σε σχέση με τις ανοιγμένες εφαρμογές.

alt-tab-extension

Λήψη του extension από το git του Gnome.

Εγκατάσταση

Fedora: yum install gnome-shell-extensions-alternate-tab
openSUSE: zypper install
Arch Linux: pacman -S gnome-shell-extension-alternate-tab
Πίσω στα περιεχόμενα..

Alternate-status-menu

alt-menu-extensionΣτο τωρινό status menu η επιλογή suspend είναι η μόνη εμφανή επιλογή.Όταν θέλουμε να κλείσουμε τον υπολογιστή μας πρέπει να πατήσουμε το Alt και να κάνουμε κλικ στο Shutdown που θα εμφανιστεί.

Το extension αυτό εμφανίζει πάντα την επιλογή του Shutdown και του Hibernate όπως επίσης και αυτή του Suspend που υπήρχε ήδη.

Λήψη του extension από το git του Gnome.

Εγκατάσταση

Fedora: yum install gnome-shell-extensions-alternative-status-menu
openSUSE: zypper install
Arch Linux: pacman -S gnome-shell-extension-alternative-status-menu
Πίσω στα περιεχόμενα..

Drive-menu

drive-menu-extensionΤο συγκεκριμένο πρόσθετο κάθε φορά που συνδέουμε μια εξωτερική αποθηκευτική συσκευή ενεργοποιείται.Είτε είναι usb είτε εξωτερικός δίσκος θα εμφανιστεί δίνοντας μας δύο επιλογές.Του umount και του άνοιγμα του περιηγητή.

Λήψη του extension από το git του Gnome.

Εγκατάσταση

Fedora: yum install
openSUSE: zypper install gnome-shell-extensions-drive-menu
Arch Linux: pacman -S gnome-shell-extension-drive-menu
Πίσω στα περιεχόμενα..

Places-menu

places-menu-extensionΤο extension προσθέτει ένα μενού με τις τοποθεσίες του συστήματος.Έτσι έχουμε εύκολη και γρήγορη πρόσβαση όπου θελήσουμε!!

Λήψη του extension από το git του Gnome.

Εγκατάσταση

Fedora: yum install gnome-shell-extensions-places-menu
openSUSE: zypper install
Arch Linux: pacman -S gnome-shell-extension-places-menu

places-1

Πίσω στα περιεχόμενα..

User-theme

Το user theme extension μας δίνει τη δυνατότητα να προσθέσουμε θέματα στο gnome shell.
Αφού το κάνουμε εγκατάσταση,μετά απλώς τοποθετούμε το φάκελο του θέματος στη τοποθεσία: $HOME/.themes/

Τέλος για να γίνει η εφαρμογή του θέματος,πατάμε alt+F2 πληκτρολογούμε r και enter.

Επίσης ρίξτε μια ματιά στο GNOME tweak tool.Μπορείτε εύκολα μεσα από το GUI του,να αλλάξετε το θέμα του gnome shell παραβλέποντας τη παραπάνω διαδικασία.

Λήψη του extension από το git του Gnome.

Εγκατάσταση

Fedora: yum install gnome-shell-extensions-user-theme
openSUSE: zypper install
Arch Linux: pacman -S gnome-shell-extension-user-theme
Πίσω στα περιεχόμενα..

User-theme selector

themes-1

Το user theme selector λειτουργεί συνήθως με το extension που αναφέραμε πριν.Δημιουργεί ένα νέο tab (themes) δίπλα από τις Εφαρμογές με όσα θέματα έχουμε τοποθετήσει για ευκολότερη επιλογή.

Ιστότοπος project: @ fpmurphy.com

Εγκατάσταση

Η εγκατάσταση θα γίνει χειροκίνητα,όπως αναφέραμε στο Πως εγκαθιστώ τα extensions του Gnome Shell ;
Πίσω στα περιεχόμενα..

Κάντε το Gnome shell να μοιάζει με το Gnome 2

Παρακάτω θα παρουσιάσουμε 4 extensions που σαν βασικό σκοπό έχουν τη μετατροπή του gnome shell στο παλιό γνώρισμο σε όλους Gnome 2.Οπότε έχουμε και λεμε:

Ιστότοπος του project: @ Ron Yorston

Move the clock

Το extension αυτό μετακινεί το ρολόι από το κέντρο που βρίσκεται στη δεξια μεριά της μπάρας του gnome shell.

apps-1

Favortites in panel

Όπως φαίνεται και από την ονομασία του extension,οι αγαπημένες μας εφαρμογές εμφανίζονται στη μπάρα δίπλα από το Activities (σ.σ Applications αν θα εφαρμόσουμε το παρακάτω extension.)

apps-2

Disable dynamic workspaces

Αυτό το extension απενεργοποιεί τη δημιουργία νέου δυναμικού workspace όταν μια εφαρμογή εκκινηθεί σε αυτό.Μπορούμε να ορίσουμε εμείς πόσα workspaces θέλουμε να έχουμε,όπως στο Gnome 2 όπου είχαμε εξ’ αρχής 4 στατικά workspaces.
Για να ορίσουμε 4 workspaces εκτελούμε την ακόλουθη εντολή:

gconftool-2 -t int -s /apps/metacity/general/num_workspaces 4

Applications menu in panel

apps-3

Το συγκεκριμένο extension αντικαθιστά με ένα drop down μενού το κουμπί Activities,με τις εφαρμογές που έχουμε στον υπολογιστή μας.

Εγκατάσταση

Μέχρι στιγμής δεν γνωρίζω αν υπάρχουν πακέτα για διανομές.Γι αυτό το λόγο η εγκατάσταση θα γίνει χειροκίνητα στους φακέλους,όπως αναφέραμε στο Πως εγκαθιστώ τα extensions του Gnome Shell ;
Πίσω στα περιεχόμενα..

Χρήση του GnomeTweakTool

Πρόκειται για μια εφαρμογή που μας επιτρέπει να επεξεργαστούμε το gnome shell.ΜΑς φίνει τη δυνατότητα να αλλάξουμε το μέγεθος των γραμματοσειρών,
επαναφορά των κουμπιών ελαχιστοποίησης και μεγιστοποίησης,επαναφορά της παλιάς επιφάνειας εργασίας του Gnome,επιλογή για την αλλαγή του θέματος του gnome shell και ένα σωρό άλλες ρυθμίσεις!!

Ιστότοπος του project: Gnome Tweak Tool

Gnome-tweak-tool

Εγκατάσταση

Το Gnome Tweak Tool υπάρχει πλέον στις περισσότερες διανομές linux.Ενδεικτικά μερικές από αυτές έιναι:

Fedora: yum install gnome-tweak-tool
openSUSE: zypper install gnome-tweak-tool
Arch Linux: pacman -S gnome-tweak-tool
Πίσω στα περιεχόμενα..

Λοιπά – toDO

Τα πακέτα για το fedora δεν έχουν ελεγχθεί,οι ονομασίες μπήκαν σε σχέση με αυτά που βρήκα στο http://rpm.pbone.net

Προσθήκη νέων extension..

Πίσω στα περιεχόμενα..

guadec, gsoc l10n-el, ellak-conf

guadec

I am attending GUADEC this year, thanks to the sponsorship by the GNOME Foundation!

sponsored-badge-shadow

I am organising the GNOME Localisation BoF, which takes place on Friday, 10th July, 2009, at 17:00. I am also having a session on the GNOME translator command line tool gnome-i18n-manage-vcs on the same day at 15:00.

gsoc

A few months ago, there was a program in Greece, along the lines of the Google Summer of Code, to help Greek developers in FLOSS projects. The program was organised by EELLAK, a Greek non-profit, composed of 25 institutions of the tertiary education and research centres. As it took place during the spring, it was nicknamed Greek Spring of Code (gsoc).

Apart from developing software, the program had a localisation angle, and we applied for the localisation of GNOME 2.26 to the Greek language. In practice, this meant that we had to lift the documentation translations from 32% to 100%, complete the remaining UI translations.

GNOME-226-el

We achieved the goal 😉.

Many contributors helped in this effort; Jennie Petoumenou (also co-organiser in the effort), Marios Zindilis, Fotis Tsamis, Kostas Papadimas, Nikos Charonitakis, Sterios Prosiniklis, Giannis Katsampiris, Michalis Kotsarinis, Vasilis Kontogiannis and Socratis Vavilis.The overall task was difficult, and our team did an amazing task to complete the translations on time. Thank you all, and especially Jennie and Marios for undertaking huge chunks of the translation effort for this release.

Here are the GNOME EL 2.26 deliverables in HTML, PDF.

ellak-conf

The fourth Greek FOSS (ELLAK) conference took place in Athens on the 19-20th June 2009.

p6190288 by Elias Chrysoheris.

We had our annual localisation meetup!

I organised a workshop on git, with a focus on how to use when starting into software development. There was emphasis on using github.com to host and manage the development. In addition, services such as github.com allow to cooperate during the development, making programming a more social and interesting task.

Finally, there was a presentation of the Greek GNOME team efforts for the last year.

One comment

Microsoft Windows tax refund, from Dell

So I got a new computer from Dell UK. Unfortunatelly it came with Windows Vista Home Premium (32-bit) SP1 and Microsoft Works 9.0, which I did not intend to use. I contacted Dell Customer Care last Wednesday and they promised to call me back to inform me of their course of action. On Thursday morning I got a call that Dell is in the process to issue the refund and that they will contact me during the coming week when they actually issue the refund. I got the call today Monday at 15:09 that the refund has been issued, £31 for Windows Vista Home Premium SP1 and Microsoft Works 9.0.

Dell Credit Note (refund) for Microsoft Windows Vista SP1 and Microsoft Works 9.0

In detail, the Credit Note says

Item No.  Description                    Quantity Unit Price  Net  VAT
          Cust Invd b4 parts recd 3rdpty    -1      26.96   -26.96  S

                                                                 GBP
  VAT Summary                                      Subtotal   -26.96
                                                   Freight      0.00
   VAT    VAT Rate      GBP        GBP             VAT £       -4.04               
   Type     %       Total Net £   VAT £                
    S      15         -26.96      -4.04           
                                                   Total      -31.00

Now, that was the short story for getting my Windows refund. The long story was that I had to go through several weeks of effort to figure out how to get a new computer without Microsoft software. I contacted by phone both Dell and Microsoft and I estimate I was on the phone for about four hours in total. To save you the effort, here are some tips,

  1. You will get stonewalled. I did not get any reliable information on how to buy a computer without Microsoft software while I was researching my options. I actually gave up and proceeded with buying a computer with Windows, considering that my last resort was to use the EULA method as soon as I got it delivered (I would not accept the EULA, thus I would be entitled for a refund or credit).
  2. Apart from phone calls, I spent some time on Dell Chat. In one case, I was told that I can get a computer from the Latitude range with FreeDOS. They would have to get the precise configuration of the computer so that they can give me a quote. We made sure that the configuration was correct (the one in my basket with the one I would get the quote for). It sounded very promising, however, at the end the computer with FreeDOS would be about £30 more expensive than Vista. I asked for clarification on this issue but I did not get any.
  3. You will be often told that you are the first person that asks for a computer without Microsoft software. Try to think that you are a pioneer and don't feel let down.
  4. When calling by phone, avoid using premium telephone numbers. Get a good SIP account and configure Ekiga or SFLPhone (has recording feature). For Dell UK, try 01344 373727 which apparently is fine even if you are not a Public sector customer.

Microsoft Vista first boot screen, EULA or refund/credit.

By using the software, you accept these terms. If you do not accept them, do not use the software. Instead, contact the manufacturer or installer to determine their return policy for a refund or credit.. (why are there two dots? -- simos)

When you first boot a new computer that has Windows pre-installed, you are presented with the above screen. Why would Microsoft give the option to reject their software? I believe the reason is that they want to enter into a contract directly with the customer, thus there is no issue with removing this facility in future versions of Windows (probably for similar reasons, Hotmail now supports POP3, apparently so that small mobile devices can retrieve e-mail. You can now migrate from Hotmail to GMail easily.). However, the whole environment is setup in such a way that virtually noone would be able to pursue a successful refund. One has to scroll the tiny text box in order to find the pictured paragraph (no option to print!). Even the Microsoft Customer Care EMEA are not aware of the option not to accept the EULA.

In your case, if you do not intend to use the pre-installed Microsoft software (apparently includes the case where you already have a license, such as an Academic License), you have the option to reject for a refund or credit. Simply press the Shutdown button and do not accept the license. Then, get on the phone.

Antirrhinum (Snapdragon)

I installed Ubuntu 9.04 (x86_64) and the computer runs fine ;-).

It was unexpected when Intel got a heavy fine from the EU for anticompetitive practices. Does this practice by Microsoft (making it extremely difficult to obtain a refund or credit) constitute an anticompetitive practice?

23 comments

Openoffice.org 3.2 is out!!



Οι επίσημες ελληνικές εκδόσεις του OpenOffice.org 3.2 ειναι διαθέσιμες

1) Ελληνικό OOo 3.2 για Linux x86 (rpm) ftp://ftp5.gwdg.de/pub/openoffice/localized/el/3.2.0/OOo_3.2.0_LinuxIntel_install_el.tar.gz
2) Ελληνικό OOo 3.2 για Linux x86 (rpm με jre) http://download.services.openoffice.org/files/localized/el/3.2.0/OOo_3.2.0_LinuxIntel_install_wJRE_el.tar.gz
3) Ελληνικό OOo 3.2 για Linux x86 (deb) ftp://ftp5.gwdg.de/pub/openoffice/localized/el/3.2.0/OOo_3.2.0_LinuxIntel_install_el_deb.tar.gz
4)Ελληνικό OOo 3.2 για Windows (με jre) http://download.services.openoffice.org/files/localized/el/3.2.0/OOo_3.2.0_Win32Intel_install_wJRE_el.exe
5)Ελληνικό OOo 3.2 για Windows (χωρίς jre) ftp://ftp5.gwdg.de/pub/openoffice/localized/el/3.2.0/OOo_3.2.0_Win32Intel_install_el.exe
6) Ελληνικό OOo 3.2 για MacOSX http://download.services.openoffice.org/files/localized/el/3.2.0/OOo_3.2.0_MacOSXIntel_install_el.dmg
7) Ελληνικό OOo 3.2 για Solaris Sparc http://download.services.openoffice.org/files/extended/3.2.0rc5/OOo_3.2.0rc5_20100203_SolarisSparc_install_wJRE_el.tar.gz
8) Ελληνικό OOo 3.1.1 για Solaris x86 http://download.services.openoffice.org/files/extended/3.2.0rc5/OOo_3.2.0rc5_20100203_Solarisx86_install_wJRE_el.tar.gz
9) Ελληνικό OOo 3.2 για Linux 64-bit RPM (με jre) http://download.services.openoffice.org/files/extended/3.2.0rc5/OOo_3.2.0rc5_20100203_LinuxX86-64_install_wJRE_el.tar.gz
10) Ελληνικό OOo 3.2 για Linux 64-bit deb http://download.services.openoffice.org/files/extended/3.2.0rc5/OOo_3.2.0rc5_20100203_LinuxX86-64_install_el_deb.tar.gz



ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ linux:
(απεγκαταστήστε πρωτα την παλιά σας έκδοση)
Rpm:
1. Αποσυμπιέστε το OOo_xxxLinuxX86_install_el_rpm.tar.gz
2. cd στο κατάλογο που αποσυμπιέσατε τα αρχεία (RMPS)
3. sudo rpm -Uvih *rpm.
4) cd στο κατάλογο Desktop-integration και εγκαταστήστε το ανάλογο rpm για την διανομή σας

rpm with Jre
1. Αποσυμπιέστε το OOo_xxxLinuxX86_install_el_rpm.tar.gz
2. cd στο κατάλογο που αποσυμπιέσατε τα αρχεία (RMPS)
3. Τρέξτε ως root το JavaSetup.jar

deb:

1. Απεγκαταστήστε την έκδοση που έχετε στο σύστημα σας
2. Αποσυμπιέστε το OOo_xxxLinuxX86_install_el_deb.tar.gz
3. cd στο κατάλογο που αποσυμπιέσατε τα αρχεία (DEBS)
4. sudo dpkg --install --force-overwrite *.deb
5. cd στο κατάλογο Desktop-integration και εγκαταστήστε το ανάλογο deb για την διανομή σας

Ο Mozilla Firefox έγινε 5 χρονών!!

Ο Mozilla Firefox έγινε 5 χρονών!


09-11-2009



Σήμερα συμπληρώνονται πέντε χρόνια από την ημερομηνία κυκλοφορίας της πρώτης επίσημης έκδοσης του Mozilla Firefox (και μην ξε χάσετε να δείτε το εορταστικό βιντεάκι στο http://www.spreadfirefox.com/5years/el/ ).


Πέντε χρόνια που άλλαξαν τον τρόπο που βλέπαμε και αλληλεπιδρούσαμε με τον παγκόσμιο ιστό και πρόσφεραν την ελευθερία σε χρήστες και δημιουργούς.


Για πρώτη φορά ένα προϊόν ελεύθερου λογισμικού είχε τόσο μεγάλη απήχηση από το ευρύ κοινό, τους ειδικούς και τους δημιουργούς.



Γιατί πολύ απλά ήταν και είναι ένα προϊόν που δημιουργήθηκε με τον χρήστη στο επίκεντρο του ενδιαφέροντος και όχι το εμπορικό κέρδος.



Όταν η καθημερινή χρήση του διαδικτύου ήταν ένας επικίνδυνος ακροβατισμός ανάμεσα σε αναδυόμενα παράθυρα, ιούς, κενά ασφαλείας που παρέμεναν ανοιχτά για μήνες και συχνότατες καταρρεύσεις, ο Mozilla Firefox ήταν αυτός που έκανε γνωστά στο ευρύ κοινό έννοιες όπως τη φραγή αναδυόμενων, την περιήγηση σε καρτέλες, το σεβασμό στα πρότυπα ανάπτυξης ιστοσελίδων, την άρνηση εκτέλεσης επικίνδυνου κώδικα, την ενσωμάτωση της αναζήτησης στην εργαλειοθήκη και άλλα.



Πράγματα που σήμερα θεωρούμε δεδομένα και απαραίτητα για ένα περιηγητή, εκείνη την εποχή θεωρούνταν και ήταν επαναστατικά.


Όπως επαναστατικό ήταν και είναι το μοντέλο ανάπτυξης του Firefox, βασισμένο σε μια κοινότητα χιλιάδων ανθρώπων απ' όλο τον κόσμο, με το 40% του κώδικα του να είναι γραμμένο ακόμα και σήμερα από εθελοντές, με μεταφράσεις σε πάνω από 70 γλώσσες γραμμένες σχεδόν αποκλειστικά από εθελοντές, με χιλιάδες ανθρώπους που δοκιμάζουν και ελέγχουν τις νέες εκδόσεις πριν αυτές γίνουν επίσημες και χιλιάδες υποστηρικτές του να τον διαδίδουν από στόμα σε στόμα και να προσφέρουν βοήθεια σε νέους χρήστες.


Φυσικά αυτό το μοντέλο του ελεύθερου/ανοικτού κώδικα λογισμικού προϋπήρχε, αλλά ο Mozilla Firefox κατάφερε να το βάλει στα μηχανήματα πάνω από 330 εκατομμυρίων χρηστών παγκοσμίως.


Και δεν είναι το μόνο πρόγραμμα ελεύθερου/ανοικτού λογισμικού, υπάρχουν χιλιάδες άλλα που περιμένουν να τα ανακαλύψετε όπως το OpenOffice ή το λειτουργικό σύστημα ubuntu που περιλαμβάνουν και τα μαθητικά netbook.



Καταφέραμε μέσα σ' αυτό το διάστημα να ανοίξουμε ξανά μια αγορά που κυριαρχούνταν μονοπωλιακά από ένα προϊόν, όχι επειδή ήταν το καλύτερο αλλά απλά επειδή καμία εταιρία δεν μπορούσε να το ανταγωνιστεί με ίσους όρους, προσφέροντας ξανά το δικαίωμα της επιλογής στον καθένα για το πως θέλει να βλέπει τον ιστό.H ανάπτυξη και η γιγάντωση της χρήσης του Firefox, δίνει ώθηση και στην υιοθέτηση ανοιχτών προτύπων στο Ελληνικό διαδίκτυο.


Στο παρελθόν, δημόσιες υπηρεσίες και εταιρίες κατασκεύαζαν τις ιστοσελίδες τους και διένειμαν το περιεχόμενο με τέτοιο τρόπο ώστε να είναι προσβάσιμες μόνο από συγκεκριμένο λειτουργικό σύστημα και τον περιηγητή ιστοσελίδων που το συνόδευε, αγνοώντας την ύπαρξη άλλων λειτουργικών συστημάτων και εφαρμογών.


Σήμερα, η συντριπτική πλειοψηφία των ιστοσελίδων είναι συμβατές με τα διεθνή πρότυπα, και προσβάσιμες από όλους τους Έλληνες χρήστες ανεξαρτήτως του λειτουργικού συστήματος που χρησιμοποιούν.



Η περαιτέρω υιοθέτηση των ανοικτών προτύπων και στην διανομή του περιεχομένου είναι ένα από τα πιο σημαντικά κεφάλαια για την ισότιμη πρόσβαση στην πληροφόρηση και τη γνώση.


Ανοικτά πρότυπα όπως το open document format (odf) για τα έγγραφα, το Ogg format και οι codecs Theora και Vorbis για την αναπαραγωγή βίντεο εξασφαλίζουν την διαλειτουργικότητα των συστημάτων και την ελεύθερη πρόσβαση στην πληροφορία από όλους.



Το Ελεύθερο Λογισμικό είναι ένα απαραίτητο συστατικό στη διατήρηση των Ανοιχτών Προτύπων εναντίον του οικονομικού κινήτρου της ιδιοποίησης ή της παρέκκλισης από τα Ανοιχτά Πρότυπα και ο Mozilla Firefox ως κομμάτι του ελεύθερου λογισμικού είχε κι έχει πάντα ως στόχο να είναι το διαδίκτυο ανοικτό και προσβάσιμο από όλους,



Ας δούμε λοιπόν μαζί μερικές από τις ημερομηνίες-σταθμούς στην κοινή μας πορεία:




  • Γύρω στα τέλη του 2002 δημιουργήθηκε ο Phoenix, σαν μια προσπάθεια να αυτονομηθεί ο περιηγητής από την πλήρη εφαρμογή Mozilla suite (διάδοχο του Netscape Navigator suite).



  • Στα μέσα του 2003 , ο οργανισμός mozilla αποφασίζει την στήριξη της ανάπτυξης ξεχωριστών εφαρμογών για περιήγηση και ηλεκτρονικό ταχυδρομείο και αποφασίζεται η αλλαγή του ονόματος σε Mozilla Firebird.





  • Στις αρχές του 2004 αποφασίζεται μια ακόμα αλλαγή του ονόματος και ο Mozilla Firebird γίνεται ο γνωστός σε όλους μας πια Mozilla Firefox για να ακολουθήσει λίγο πριν το τέλος της ίδιας χρονιάς η έκδοση 1.0 στις 9 Νοεμβρίου μεταφρασμένή ήδη σε 29 γλώσσες.


    Την πρώτη κιόλας μέρα έχουν πραγματοποιηθεί 1 εκατομμύριο λήψεις.




  • Σχεδόν ένα χρόνο αργότερα, εκδίδεται ο Mozilla Firefox 1.5 που προσφέρει αυτόματη ενημέρωση, βελτιωμένες ρυθμίσεις ασφαλείας και είναι μεταφρασμένος σε 32 γλώσσες.



  • Τον Οκτώβριο του 2006 βγαίνει ο Mozilla Firefox 2.0 μεταφρασμένος σε 37 γλώσσες και μέσα σε 24 ώρες τρέχει στα μηχανήματα πάνω από δυο εκατομμυρίων χρηστών.



  • Τον Ιούνιο του 2008 εκδίδεται ο Mozilla Firefox 3.0 και κατακτά το παγκόσμιο ρεκόρ Guinness για τον μεγαλύτερο αριθμό λήψεων μέσα σε 24 ώρες.


    Λίγο αργότερα ανακοινώνονται τα σχέδια για τη δημιουργία μιας έκδοσης του Firefox για κινητά με την κωδική ονομασία Fennec.



  • Ένα χρόνο μετά, τον Ιούνιο του 2009 εκδίδεται ο Mozilla Firefox 3.5 μεταφρασμένος σε 73 γλώσσες, υποστήριξη για HTML5 και ανοιχτούς τύπους βίντεο και ήχου.



  • Στις 31 Οκτωβρίου 2009 διατέθηκε η πρώτη δοκιμαστική έκδοση του Mozilla Firefox 3.6 και σύντομα θα είναι διαθέσιμη και η επίσημη.







Σήμερα, το μερίδιο αγοράς του Mozilla Firefox στην Ελλάδα έχει φτάσει στο 44,11% (πηγή: statcounter), μια επίδοση που ξεπερνά κατά πολύ τον ευρωπαϊκό και παγκόσμιο μέσο όρο.


Μια επίδοση που οφείλετε στην εμπιστοσύνη, την πίστη και την αγάπη που όλοι εμείς οι χρήστες του Mozilla Firefox δείξαμε και συνεχίζουμε να δείχνουμε στο ελεύθερο πνεύμα και τις κορυφαίες επιδόσεις του.



Γι' αυτό σας καλούμε όλους να γιορτάσετε μαζί μας αυτά τα πέντε πρώτα χρόνια και να ευχηθούμε όλοι μαζί πολλά περισσότερα!

October 01, 2014

Fedora Weekend [18-19 Οκτωβρίου]

fedoraweekend

August 18, 2014

OPW final report - Greek Translation

Finally, my first contribution to the GNOME Project within the OPW came to an end!!! I can say it was more difficult than expected and required much learning, reading and research for a simple translator like me who has no programming knowledge. 
The main job of the project was to translate and review all GNOME project files in Greek. The Greek translation of GNOME was at a good level, thanks to the work done in previous years by the members of the Greek community. After discussion with the community and my mentor, we found it useful to first do a research on available translation programs and to write a quick guide on How to start using GNOME's translation system.

In order to deliver uniformity we standardized terms and created from scratch a new glossary which took some extra time but is an important tool for all future translations. Also as a new translator Ι wanted a tool to help me search for our glossary terms among the files. The good Open-tran.eu is closed and "grep"-ing po files weren't so easy and efficient for me.
So along with the glossary, we came up with the idea to set up a pylyglot instance for our language. That was something new and experimental for Greek GNOME community, but it proved to be handy as it helped us to speed up the review and translation process. We could easily check the translated files and the consistency of the whole GNOME environment by just searching specific terms from the glossary at our pylyglot website.

Along the way, and after communication with the mentor and the other members of the community, we decided to modify the initial time schedule, aiming precision and consistency especially regarding the new release files of GNOME 3.14 which I believe has been achieved greatly.  

Many thanks to mentor Efstathios Iosifidis, Tom Tryfonidis and all other team members who helped me on this effort!!!
I can say so far the journey with GNOME has been exciting all the way. 

Thank you GNOME!

August 04, 2014

Greek Translation - OPW Report #7 – week 10-11

This week I had some strange issues with my translation files. Strings I never changed were shown as changed from me in the diff with the repository files. It seems to be a conflict with older files and I still try to figure out whether the problem my PO editor is or the localization application (l10n). If anyone had similar issues or any idea of the cause, I would appreciate any kind of help.

I'm still working on the 3.14 release files and reviewed – translated following ones:

UI Translations:
seahorse, vino, gnome-disk-utility, gdm, gucharmap, gnome-desktop           

Only translation of new strings (files have already been reviewed):
gnome-photos, file-roller, bijiben, iagno, gnome-shell, gnome-control-center, gitg, Evince Document Viewer, gedit, gnome-boxes, gnome-klotski, gnome-mahjongg, gnome-sudoku, dconf, tracker, gtksourceview, gnome-maps, gnome-weather

Documentation:
GNOME User Documentation, gtk-doc



May 27, 2014

Fedora Packaging Workshop

Αυτή την Πέμπτη 29/5 στις 18:00 στο Hackerspace.gr, πρακτικό workshop RPM Packaging.

Προαπαιτούμενα:

yum install fedora-packager
usermod -aG mock username

Προαιρετικά:
Μια εφαρμογή ελεύθερου λογισμικού που θέλετε να “πακετάρετε” σε RPM

packaging-workshop

 

January 23, 2012

Bypass Firewalls with Android SSH Tunneling

January 05, 2012

How to clean PHP code after injection

Did someone hack your PHP files ? Is that possible ? Oooh yes. It happens to everybody and the difference between "everybody" is how often it happens. And code injection is one type of attack, I won't refer to cases that someone changed the homepage and you can just restore the last backup.

So, what can you do if you find out that someone injected code into your PHP files ?
Read more...

July 23, 2011

Systray και popup menu με το Glade

Σε αυτό το άρθρο θα παρουσιάσουμε πως μπορεί η εφαρμογή μας να έχει ένα εικονίδιο στον δίσκο συστήματος (systray) και πως κάνοντάς του κλικ μας εμφανίζει το κεντρικό παράθυρο της εφαρμογής ή ένα popup μενού για έλεγχό της.

Θα φτιάξουμε ένα μικρό slider που θα ελέγχει την ένταση του ήχου, όπως αυτό που υπάρχει ήδη στα περισσότερα συστήματα linux. Έχει καθαρά εκπαιδευτικούς σκοπούς δείχνοντας την αλληλοεπίδραση μεταξύ των σημάτων του systray και του προγράμματος. Για τον έλεγχο του ήχου θα χρησιμοποιήσουμε είτε την βιβλιοθήκη alsaaudio της python είτε την εντολή amixer του συστήματος της ALSA.

Δημιουργούμε το παράθυρο μας στο Glade και του δίνουμε όνομα volumewindow. Στον Τύπο παραθύρου επιλέγουμε Αναδυόμενο (popup). Αυτού του είδους τα παράθυρα δεν έχουν πλαίσιο και διακοσμήσεις και δεν τα ελέγχει ο window manager του συστήματος. Στις αιτήσεις πλάτους και ύψους δίνουμε αντίστοιχα 60 και 170 pixels, ενώ στο Πλάτος πλαισίου δίνουμε τιμή 2. Αυτό είναι το περιθώριο που θα έχουν όλα τα αντικείμενα του παραθύρου από τις άκρες του.

Στην συνέχεια προσθέτουμε ένα frame και αφαιρούμε τα alignment και label που δημιουργεί. Επιλέγουμε την σκίαση της αρεσκείας μας και προσθέτουμε μέσα του ένα πλαίσιο fixed. Αυτό το πλαίσιο μας επιτρέπει να τοποθετήσουμε αντικείμενα σε συγκεκριμένες θέσεις μέσα του. Βλέπουμε ότι έχουμε και αυτήν την δυνατότητα εκτός από την τοποθέτηση σε γραμμές και στήλες. Στην συγκεκριμένη περίπτωση είναι χρήσιμο γιατί το παράθυρο δεν μπορεί να αλλάξει μέγεθος και έτσι με λίγο πειραματισμό μπορούμε να τοποθετήσουμε τα διάφορα widget όπου ακριβώς θέλουμε και να είμαστε σίγουροι ότι πάντα θα φαίνονται έτσι.

Προσθέτουμε μία Κατακόρυφη κλιμακα (slider) και την ονομάζουμε masterslider. Θέτουμε τα Ψηφία στο μηδέν, την Θέση τιμής κάτω και την ορίζουμε σαν Αντεστραμμένη. Προσθέτοντας μια νέα Ρύθμιση το glade την ονομάζει αυτόματα adjustment1 και της δίνει ορισμένες αρχικές τιμές. Αλλάζουμε την Μέγιστη τιμή σε 100, τον Ρυθμό αύξησης βήματος σε 1, την Αύξηση σελίδας σε 10 και το Μέγεθος σελίδας σε 0.

Επιστρέφοντας στο masterslider και στο tab packing βλέπουμε ότι τα συνηθισμένα Γέμισμα και Ανάπτυξη έχουν αντικατασταθεί από τα Θέση Χ και Θέση Υ , λόγω του ότι βρίσκετε μέσα σε fixed πλαίσιο. Σε αυτά βάζουμε αντίστοιχα τις τιμές 10 και 6. Στα Σήματά του και συγκεκριμένα στο value-changed δίνουμε σαν handler την μέθοδο masterslider_change. Αυτή θα αλλάζει την ένταση του ήχου ανάλογα με την θέση του slider.

Στην συνέχεια προσθέτουμε ένα button με το όνομα button, και στην ετικέτα του βάζουμε Mixer. Στις θέσεις Χ και Υ βάζουμε 1 και 132 αντίστοιχα, ενώ στο σήμα clicked δίνουμε σαν handler button_clicked. Αυτή η μέθοδος θα εμφανίζει το gnome-alsamixer, αν υπάρχει στο σύστημα.

Με το μικρό μας παράθυρο έτοιμο ας προσθέσουμε τα υπόλοιπα αντικείμενα που χρειαζόμαστε για το πρόγραμμα μας. Επιλέγουμε ένα Αναδυόμενο μενού (popup) και του δίνουμε το όνομα menu. Με το menu επιλεγμένο πατάμε edit στην μπάρα εργαλείων και προσθέτουμε δύο Στοιχεία εικόνας. Για το πρώτο επιλέγουμε το έτοιμο κουμπί stock Περί και για το άλλο το Έξοδος. Στα activate σήματα τους βάζουμε σαν handler αντίστοιχα τις μεθόδους about dialog και close_window.

Το βασικότερο μας αντικείμενο είναι ένα Εικονίδιο γραμμής κατάστασης το οποίο θα το βρούμε στα Διάφορα. Προσθέτουμε ένα και το ονομάζουμε staticon. Στο Pixbuf γράφουμε το όνομα του αρχείου του εικονιδίου που θα χρησιμοποιήσουμε. Υπάρχουν πολλά εικονίδια που μπορείτε να χρησιμοποιήσετε στον κατάλογο /usr/share/icons/gnome. Αντιγράψτε ένα της αρεσκείας σας στον ίδιο κατάλογο με τα αρχεία glade και python. Στον Τίτλο δίνουμε SysAudio. Αυτό θα εμφανίζεται όταν περνάει ο δείκτης του ποντικιού από πάνω του. Στα Σήματα του δίνουμε στο activate την μέθοδο window_show και στο popup-menu την menu_popup. Η πρώτη μέθοδος εκτελείται όταν ο χρήστης κάνει αριστερό κλικ πάνω στο εικονίδιο και θα εμφανίσει το παράθυρο μας με τον slider, ενώ η δεύτερη όταν κάνει ένα από τα υπόλοιπα και συγκεκριμένα δεξί κλικ, εμφανίζοντας το μενού της εφαρμογής.

Τα βασικά αντικείμενα της εφαρμογής είναι τα εξής:

Σε αυτό το σημείο το αρχείο glade είναι έτοιμο, έχουμε προσδιορίσει ότι θα χρειαστούμε και το σώζουμε σαν volumecontrol.glade. Το πρόγραμμα μας σε python είναι απλό και περιέχει στοιχεία που έχουμε δει ήδη.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
try:
    import alsaaudio
    HAVEALSA=True
except:
    import subprocess
    import commands
    HAVEALSA=False
import pygtk
pygtk.require('2.0')
import gtk

class VolumeControl():

    def __init__(self):
        builder=gtk.Builder()
        builder.add_from_file("volumecontrol.glade")
        builder.connect_signals(self)
        self.window = builder.get_object("volumewindow")
        self.window_position = (0, 0)
        self.staticon = builder.get_object("staticon")
        self.menu = builder.get_object("menu")
        self.masterslider = builder.get_object("masterslider")

    def close_window(self, widget, data=None):
        gtk.main_quit()

    def button_clicked(self, widget):
        os.system('gnome-alsamixer')

    def window_show(self, widget, data=None):
        if self.window.get_property('visible'):
            self.window.hide()
        else:
            self.masterslider.set_value(self.get_master_volume())
            self.set_window_position()
            self.window.move(self.window_position[0], self.window_position[1])
            self.window.show_all()
            self.window.present()
           
    def menu_popup(self, widget, button, time, data = None):
        if button == 3:
            self.menu.show_all()
            self.menu.popup(None, None, None, 3, time)

    def masterslider_change(self, widget):
        volume = int(widget.get_value())
        if HAVEALSA:
            mix = alsaaudio.Mixer()
            mix.setvolume(volume)
        else:
            proc = subprocess.Popen('/usr/bin/amixer sset Master ' \
                    + str(volume) + '%', shell=True, stdout=subprocess.PIPE)
            proc.wait()

    def set_window_position(self):
        staticon_geometry = self.staticon.get_geometry()[1]
        if staticon_geometry.y <= 200:
            y_coords = staticon_geometry.y
        else:
            y_coords = staticon_geometry.y-180
        self.window_position = (staticon_geometry.x+20, y_coords+10)

    def get_master_volume(self):
        if HAVEALSA:
            mix = alsaaudio.Mixer()
            return mix.getvolume()[0]
        else:
            output = commands.getoutput('/usr/bin/amixer sget Master | grep "%"')
            master = output.split('\n')[0]
            start = master.find('[') + 1
            end = master.find('%]', start)
            return float(master[start:end])

    def aboutdialog(self, widget, data=None):
        about = gtk.AboutDialog()
        about.set_program_name('Volume Control')
        about.set_version('1.0')
        about.set_comments(u'Πρόγραμμα ελέγχου της στάθμης του ήχου.')
        about.run()
        about.destroy()

    def main(self):
        gtk.main()

if __name__ == "__main__":
    app=VolumeControl()
    app.main()

Στην αρχή προσπαθούμε να φορτώσουμε την βιβλιοθήκη alsaaudio και αν αυτό αποτύχει φορτώνουμε τις subprocess και command για να μπορέσουμε να εκτελέσουμε εντολή του συστήματος και να πάρουμε το αποτέλεσμα της. Ορίζουμε και μια μεταβλητή για να ξέρουμε αν έχουμε φορτώσει την alsaaudio ή όχι. Οι βασικές μέθοδοι είναι γνωστές από τα προηγούμενα άρθρα. Στην __init__ φορτώνουμε το glade αρχείο και ορίζουμε τις μεταβλητές που θα χρησιμοποιήσουμε. Η aboutdialog δημιουργεί και δείχνει το παράθυρο “Περί” όταν πατήσει ο χρήστης την αντίστοιχη επιλογή στο μενού και η close_window τερματίζει το πρόγραμμα.

Η get_master_volume επιστρέφει την τιμή που έχει η ένταση του ήχου κατά τη στιγμή της κλήσης της. Χρησιμοποιεί είτε την getvolume της alsaaudio είτε το αποτέλεσμα της εντολής “amixer sget Master”. Η set_window_position θέτει την θέση του παραθύρου λίγο πιο κάτω και λίγο πιο δεξιά από το εικονίδιο.

Η window_show εκτελείται όταν ο χρήστης κάνει αριστερό κλικ στο εικονίδιο και το κρύβει αν αυτό είναι ήδη ορατό ή το εμφανίζει αφού πρώτα υπολογίσει την τιμή του ήχου και την θέση του παραθύρου. H present που καλείται στο τέλος έχει σαν σκοπό να εμφανίζει το παράθυρο αν αυτό καλύπτεται από κάποιο άλλο.

Η master_slider_change εκτελείται όταν ο χρήστης αλλάξει την θέση του slider και αναλόγως αυτής θέτει την τιμή της έντασης είτε με την setvolume είτε με την “amixer sset Master”.

Η menu_popup εμφανίζει το μενού της εφαρμογής. Τα popup menu χρειάζονται για να εμφανιστούν τον αριθμό του κουμπιού του ποντικιού που πατήθηκε και την χρονική στιγμή που έγινε το γεγονός. Αυτά και τα δύο μας τα δίνει το σήμα popup-menu του εικονιδίου, εμείς μένει μόνο να ελέγξουμε αν το κουμπί που πατήθηκε είναι το δεξί.

Η button_clicked εμφανίζει το gnome-alsamixer, αν είναι εγκατεστημένο, αλλιώς θα εμφανίσει μήνυμα λάθους στην γραμμή εντολών. Εδώ μπορείτε, με τις πληροφορίες από τα προηγούμενα άρθρα, να προσθέσετε ένα ErrorDialog για να ενημερώνεται ο χρήστης.

Είναι μια απλή εφαρμογή αλλά δείχνει τα στοιχεία που χρειάζονται για την δημιουργία ενός systray προγράμματος. Με τον ίδιο τρόπο διάφορα προγράμματα, όπως η Opera και το Transmission, βάζουν ένα εικονίδιο στο systray και το πρόγραμμα δεν τερματίζει αν ο χρήστης πατήσει το Χ στο παράθυρο του αλλά κρύβεται απλώς και εμφανίζεται πάλι αν ο χρήστης κάνει αριστερό κλικ στο εικονίδιο, ενώ με δεξί εμφανίζει είτε μενού είτε πληροφορίες του προγράμματος.

Τα αρχεία του άρθρου υπάρχουν σε .tar.gz εδώ

June 26, 2011

Σύνθετα αντικείμενα στο Glade (γ' μέρος)

Σε αυτό το άρθρο θα παρουσιάσουμε το πρόγραμμα, γραμμένο σε python, που μετατρέπει τις κωδικοποιήσεις των αρχείων. Το πρόγραμμα καθώς και τα συνοδευτικά του αρχεία βρίσκονται εδώ.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import gtk
import os
import codecs

CODEPAGES = ['utf_16','utf_8','cp1253','iso8859_7']
EOL = ['Windows','Unix','Mac']
DICT_EOL = {'Windows':'\r\n','Unix':'\n','Mac':'\r'}

class FileToConvert(object):

    def __init__(self,fn = None, cp = None, eol=None):
        self.fn = fn
        self.cp = cp
        self.eol = eol
        self.to_cp = ''
        self.to_eol = ''

    def checkfile(self,codefrom=None):
        encodings=CODEPAGES
        if codefrom:
            encodings=[codefrom]
        for enc in encodings:
            t1=codecs.open(self.fn,'r',enc)
            try:
                line=t1.readline()
                if '\r\n' in line:
                    self.eol = EOL[0]
                elif '\n' in line:
                    self.eol = EOL[1]
                elif '\r' in line:
                    self.eol = EOL[2]
                self.cp=enc
                t1.close()
                ret=True
                break
            except:
                ret=False
        return ret    

class ConvertFiles(object):

    def close_window(self, widget, data=None):
        gtk.main_quit()

    def delete_chooser(self, widget, data=None):
        return True

    def aboutmenu_clicked(self, widget, data=None):
        self.aboutdialog.run()
        self.aboutdialog.hide()

    def helpmenu_clicked(self, widget, data=None):
        import webbrowser
        webbrowser.open("help.html")

    def openmenu_clicked(self, widget, data=None):
        self.filechooser.show()

    def filterbox_changed(self, widget, data=None):
        if widget.get_active() == 0:
            self.filechooser.set_filter(self.txtfilter)
        if widget.get_active() == 1:
            self.filechooser.set_filter(self.srtfilter)
        if widget.get_active() == 2:
            self.filechooser.set_filter(self.allfilter)              

    def filelistview_key(self, widget, data=None):
        treeviewmodel, treeviewindex = widget.get_selection().get_selected()
        if (gtk.gdk.keyval_name(data.keyval) == 'Delete') and treeviewindex:
            treeviewmodel.remove(treeviewindex)

    def filelist_row_deleted(self,widget,data=None):
        del self.files[data[0]]
        self.statusbar.push(0,"Αφαίρεση αρχείου")

    def filechooser_cancel(self, widget, data=None):
        self.filechooser.hide()

    def filechooser_ok(self, widget, data=None):
        filenames=[]
        if self.files:
            for fi in self.files:
                filenames.append(fi.fn)
        errortxt=''
        i=0
        for fi in self.filechooser.get_filenames():
            if fi not in filenames:
                newfile = FileToConvert(fi)
                if newfile.checkfile():
                    self.files.append(newfile)
                    self.filelist.append([newfile.fn,newfile.cp,newfile.eol])
                    i+=1
                else:
                    errortxt+=u"Πρόβλημα στην ανάγνωση του αρχείου: %s.\n" % cf.fn
                    self.errordialog(errortxt)
        self.filechooser.hide()
        if i>0:
            self.statusbar.push(0,u"Επιτυχής αναγνωση %d αρχείων" % i)
        else:
            self.statusbar.push(0,"")

    def errordialog(self, errortxt):
        dialog=gtk.MessageDialog(parent=None,flags=gtk.DIALOG_MODAL & gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
        dialog.set_title(u"Σφάλμα")
        dialog.set_markup(u"<b>"+errortxt+"</b>")
        response=dialog.run()
        if response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_OK:
           dialog.destroy()

    def savemenu_clicked(self, widget, data=None):
        errortxt=''
        if not self.files:
            self.errordialog(u"Δεν έχετε επιλέξει αρχεία.\n")
            return
        for fi in self.files:
            if self.codefrombox.get_active()>0:
                if not fi.checkfile(CODEPAGES[self.codefrombox.get_active()-1]):
                    errortxt+=u"Πρόβλημα στην ανάγνωση του αρχείου: %s.\n" % fi.fn
        if errortxt:
            self.errordialog(errortxt)
            self.statusbar.push(0,u"Δεν ήταν σωστή η κωδικοποίηση που ορίσατε.")
            return
        for i in range(len(self.files)):
            self.files[i].to_cp=CODEPAGES[self.codetobox.get_active()]
            self.files[i].to_eol=EOL[self.eolbox.get_active()]
        treeiter=self.filelist.get_iter_first()
        for fi in self.files:
            try:
                t1=codecs.open(fi.fn,'r',fi.cp)
                t2=codecs.open('tmp','w',fi.to_cp)
                for line in t1:
                    line=line.replace(DICT_EOL[fi.eol],DICT_EOL[fi.to_eol])
                    t2.write(line)
                t2.close()
                t1.close()
                os.rename('tmp',fi.fn)
            except:
                self.errordialog(u"Πρόβλημα στην μετατροπή του %s.\n" % fi.fn)
                success=False
            else:
                if fi.checkfile():
                    self.filelist.set_value(treeiter,1,fi.cp)
                    self.filelist.set_value(treeiter,2,fi.eol)
                    fi.to_cp = ''
                    fi.to_eol = ''
                    success=True
                else:
                    self.errordialog(u"Πρόβλημα στην τελική ανάγνωση του %s.\n" % fi.fn)
                    success=False
            treeiter=self.filelist.iter_next(treeiter)
        if success:
            self.statusbar.push(0,u"Επιτυχής μετατροπή")
        else:
            self.statusbar.push(0,u"Προβλήματα στην μετατροπή")
     
    def __init__(self):
        builder = gtk.Builder()
        builder.add_from_file("convert.glade")
        builder.connect_signals(self)
        self.window = builder.get_object("convertwindow")
        self.codefrombox = builder.get_object("codefrombox")
        self.codetobox = builder.get_object("codetobox")
        self.eolbox = builder.get_object("eolbox")
        self.codefromlist = builder.get_object("codefromlist")
        self.codetolist = builder.get_object("codetolist")
        self.eollist = builder.get_object("eollist")
        self.filelist = builder.get_object("filelist")
        self.codefromlist.append([u"Μαντεψιά"])
        for item in CODEPAGES:
            self.codefromlist.append([item])
            self.codetolist.append([item])
        for item in EOL:
            self.eollist.append([item])
        self.codefrombox.set_active(0)
        self.codetobox.set_active(0)
        self.eolbox.set_active(0)
        self.filechooser = builder.get_object("filechooser")
        self.aboutdialog = builder.get_object("aboutdialog")
        self.txtfilter = builder.get_object("txtfilter")
        self.srtfilter = builder.get_object("srtfilter")
        self.allfilter = builder.get_object("allfilter")
        self.filterbox = builder.get_object("filterbox")
        self.txtfilter.add_pattern('*.txt')
        self.txtfilter.add_pattern('*.TXT')
        self.srtfilter.add_pattern('*.srt')
        self.srtfilter.add_pattern('*.SRT')
        self.allfilter.add_pattern('*.*')
        self.filterbox_changed(self.filterbox)
        self.statusbar=builder.get_object("statusbar")
        self.files=[]
     
    def main(self):
        self.window.show()
        gtk.main()

if __name__== "__main__":
    app=ConvertFiles()
    app.main()  
Ξεκινάμε στην αρχή με τα απαραίτητα import. Το νέο εδώ είναι η βιβλιοθήκη codecs, η οποία θα μας χρησιμεύσει στις μετατροπές. Στην συνέχεια υπάρχουν τρεις σταθερές. Η πρώτη περιέχει τα λεκτικά των κωδικοποιήσεων έτσι όπως τα χρειάζεται η codecs και με αυτά γεμίζουμε και τα δύο μας combobox. H EOL σταθερά είναι αυτή που περιέχει τα λεκτικά για τα διάφορα τελειώματα γραμμής που υπάρχουν. Στην επόμενη σταθερά γίνεται συσχέτιση μεταξύ αυτών των λεκτικών και των πραγματικών τιμών που έχει το κάθε τέλος γραμμής.


Θα χρειαστούμε να ορίσουμε ένα αντικείμενο για κάθε αρχείο που θα διαλέξει ο χρήστης κι αυτό θα φτιαχτεί από την κλάση FileToConvert. Το αντικείμενο θα περιέχει τις εξής πληροφορίες: το όνομα του αρχείου, την κωδικοποίηση και το τέλος γραμμής που έχει πριν την μετατροπή καθώς και σε τι θέλουμε να το μετατρέψουμε. Η κλάση ακόμα περιλαμβάνει την μέθοδο checkfile η οποία προσπαθεί να μαντέψει ποια από τις τέσσερις κωδικοποιήσεις και ποιο από τα τρία EOL έχει το αρχείο. Αν είναι επιτυχής επιστρέφει True, αλλιώς False.


Στην κύρια κλάση έχουμε προσθέσει στην __init__ μέθοδο δύο μεταβλητές, την self.filelist η οποία είναι το μοντέλο του TreeView και την self.files στην οποία θα κρατάμε τα αντικείμενα FilesToConvert.


H μέθοδος filelistview_key εκτελείται όταν ο χρήστης πατήσει ένα πλήκτο. Η get_selected() επιστρέφει δύο τιμές το μοντέλο στο οποίο ανήκει το TreeView και τον αύξων αριθμό της επιλογής. Έτσι λοιπόν ελέγχουμε αν ο χρήστης έχει πατήσει Delete και αν έχει επιλέξει γραμμή. Τότε μόνο διαγράφουμε την αντίστοιχη επιλογή από το μοντέλο. Όταν διαγραφεί ένα στοιχείο από το μοντέλο εκτελείται η filelist_row_deleted στην οποία διαγράφουμε το αντίστοιχο αντικείμενο από την self.files.


Όταν ο χρήστης επιλέξει αρχεία φτιάχνουμε έναν προσωρινό πίνακα με τα ονόματα των αρχείων που υπάρχουν ήδη έτσι ώστε να αποφύγουμε τις διπλές εισαγωγές. Στην συνέχεια για κάθε αρχείο φτιάχνουμε το αντίστοιχο αντικείμενό του και καλούμε την chekfile για να προσδιορίσει τον τύπο του αρχείου και του τέλους της γραμμής του. Για κάθε επιτυχή αναγνώριση προσθέτουμε τα αντίστοιχα πεδία στην self.filelist για να εμφανιστούν στο TreeView.


Εδώ θα θέλαμε να αναφέρουμε ορισμένα στοιχεία για την codecs.open. Αυτή όταν ανοίγει ένα αρχείο για διάβασμα το ανοίγει πάντα σε binary mode. Αυτό έχει σαν αποτέλεσμα να μην χτυπάει λάθος όταν αρχείο δεν είναι text. Ακόμα επειδή οι λατινικοί χαρακτήρες έχουν την ίδια κωδικοποίηση τόσο σε utf-8 όσο και σε windows-1253 ή ISO8859-7 μπορεί να μην δώσει σωστό αποτέλεσμα σε αρχεία με μόνο τέτοιους χαρακτήρες. Ένα άλλο σημείο προσοχής είναι ότι η μόνη διαφορά, στους ελληνικούς εμφανίσιμους χαρακτήρες, μεταξύ των windows-1253 και ISO8859-7 είναι το άλφα κεφαλαίο τονούμενο (Ά), οπότε πάλι μπορεί να έχουμε λάθος προσδιορισμό. Γι´ αυτό και βάλαμε την επιλογή “Κωδικοποίηση από” για να μπορεί να επιλέξει ο χρήστης αν γνωρίζει την κωδικοποίηση του αρχείου προς μετατροπή.


Η μετατροπή γίνεται στην savemenu_clicked, ανοίγοντας με την σειρά τα αρχεία που υπάρχουν στην self.files με την κωδικοποίηση που έχει ορίσει ο χρήστης και σώζοντας τα σε ένα προσωρινό με την νέα. Αν όλα πάνε καλά τα ξαναδιαβάζει για να ενημερώσει το TreeView και για να δει ο χρήστης το αποτέλεσμα.


Καθ' όλη την διαδικασία της μετατροπής το πρόγραμμα ενημερώνει τον χρήστη με δύο τρόπους. Ο ένας είναι ο διάλογος μηνυμάτων που έχουμε δει και σε προηγούμενο άρθρο και ο άλλος είναι μέσω της statusbar. Η statusbar λειτουργεί σαν στοίβα LIFO. Βάζουμε στην στοίβα αυτό που θέλουμε να εμφανίσει με push και το αφαιρούμε με pop. Κάθε μήνυμα μπορεί να έχει και ένα αναγνωριστικό κωδικό, προσδιορίζοντας έτσι από πιο μέρος του προγράμματος προήλθε. Εδώ δεν χρησιμοποιούμε αυτήν την δυνατότητα γι' αυτό όλα τα μηνύματα έχουν σαν προσδιοριστικό το μηδέν.


Είδαμε σ' αυτό το άρθρο ορισμένα από τα πιο βασικά σύνθετα αντικείμενα του Gnome και του GTK και πως τα αναπτύσσουμε αυτά μέσα από το Glade. Βλέπουμε ότι ενώ αυτά είναι αρκετά πιο πολύπλοκα από ένα απλό label ή ένα text input, ωστόσο όλη η διαδικασία δημιουργίας και ελέγχου τους ολοκληρώνεται μέσα από το Glade προσθέτοντας ελάχιστο προγραμματιστικό βάρος.
 

Feeds