Προς το περιεχόμενο

Tiling window managers


apoikos

Προτεινόμενες αναρτήσεις

Όπως είχα υποσχεθεί στον soturin, σε αυτό το θέμα θα προσπαθήσω να κάνω μια απλή εισαγωγή του τι είναι ένας tiling window manager, πως δουλεύει και γιατί μπορεί να μας βολέψει, τουλάχιστον για συγκεκριμένου είδους εργασίες.

 

Τι είναι window manager εν γένει

Όπως ίσως οι περισσότεροι θα ξέρετε, το Χ Window System είναι ένα μοντέλο client-server, στο οποίο οι εφαρμογές που χρησιμοποιούμε (clients) συνδέονται στον X server και του ζητούν να ζωγραφίσει στην οθόνη τα παράθυρά τους. Ο X server από μόνος του γνωρίζει μόνο να ζωγραφίζει παράθυρα και να τα τοποθετεί όπου του ζητηθούν, δεν ενδιαφέρεται για ζητήματα όπως η μετακίνηση των παραθύρων, η μεταβολή του μεγέθους τους και η τοποθέτησή τους σε στοίβες.

 

Ο window manager είναι μια ειδική client εφαρμογή, η οποία συνδέεται στον X-Server και διαχειρίζεται τα παράθυρα των εφαρμογών που απεικονίζει ο X server. Δουλειά του είναι να τοποθετεί τα παράθυρα στην οθόνη, να χειρίζεται το μέγεθός τους, να παρέχει εικονικές επιφάνειες εργασίας, να δημιουργεί τα πλαίσια γύρω από τα παράθυρα, τις μπάρες τίτλων, κλπ.

 

Ο window manager λοιπόν είναι ο «πυρήνας» γύρω από τον οποίο χτίζεται μια επιφάνεια εργασίας. Γνωστά παραδείγματα περιλαμβάνουν τους window managers των «ολοκληρωμένων» περιβαλλόντων, όπως είναι ο metacity (GNOME), o kwin (KDE), ο xfwm (XFCe) και ο compiz, αλλά και μικρότερους, αυτόνομους όπως ο fluxbox, ο fvwm, το enligthenment κλπ.

 

Κατηγορίες window managers

Δε λειτουργούν όλοι οι window managers με τον ίδιο τρόπο. Η πλειοψηφία των μεγάλων γραφικών περιβαλλόντων, όπως το GNOME, το KDE, το XFCe, το LXDe, αλλά και τα Microsoft Windows και το Mac OS X, διαθέτουν window managers της ίδια κατηγορίας, αυτούς που υλοποιούν το λεγόμενο «παράδειγμα της επιφάνειας εργασίας» (desktop metaphor). Με λίγα λόγια, θέλουν να αναπαραστήσουν την εικόνα που έχει ο χρήστης στο φυσικό του γραφείο, όπου έχει μια στοίβα χαρτιά, κάθε φορά τα τακτοποιεί όπως τον βολεύει, φέρνει ένα-δύο στο επίκεντρο, τα τοποθετεί πάνω από τα υπόλοιπα και δουλεύει. Αυτή η προσέγγιση λειτουργεί καλά τις περισσότερες φορές και, κυρίως, είναι κάτι που όλοι έχουμε συνηθίσει, από την εποχή των windows 3.1 και του Mac OS Classic. Είναι όμως το καλύτερο που μπορούμε να έχουμε;

 

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

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

 

Όσοι έχουν επιχειρήσει να χρησιμοποιήσουν εφαρμογές με πολλά παράθυρα, ή να χρησιμοποιήσουν πολλά τερματικά ταυτόχρονα θα έχουν σίγουρα βρεθεί στην κατάσταση εκείνη που παλεύουν με το ποντίκι για να τοποθετήσουν τα παράθυρα στην κατάλληλη διάταξη και με το κατάλληλο μέγεθος, ώστε να καλύπτουν ολόκληρη την επιφάνεια εργασίας. Από την άλλη πλευρά, υπάρχουν εφαρμογές, όπως τα περισσότερα IDE, αλλά και προγράμματα επεξεργασίας εικόνας, που είναι φτιαγμένα για να δουλεύουν καταλαμβάνοντας όλη την οθόνη και καλύπτουν ένα μεγάλο μέρος από το παράθυρό τους με συστηματικά τακτοποιημένους διαλόγους, ώστε να εκμεταλλεύονται όλο το διαθέσιμο χώρο όσο το δυνατόν πιο αποδοτικά. Και η ερώτηση είναι: γιατί να μην το κάνει αυτό ο window manager αυτόματα;

 

Tiling window managers

Σε αυτό το σημείο ανασύρουμε από το χρονοντούλαπο μια ιδέα τόσο παλιά, όσο και το γραφικό περιβάλλον του υπολογιστή: τον tiling window manager. Σε αντίθεση με έναν κοινό, floating window manager, ο tiling window manager χρησιμοποιεί πάντα ολόκληρη την οθόνη στην οποία προσπαθεί αυτόματα να χωρέσει όλα τα παράθυρα. Μια εφαρμογή μόνη της καταλαμβάνει ολόκληρη την οθόνη. Μόλις ανοίξει ένα δεύτερο παράθυρο, η οθόνη χωρίζεται στα δύο, με ένα τρίτο, δημιουργείται χώρος και γι' αυτό. Ο tiling window manager προσπαθεί πάντα να χωρέσει όλα τα παράθυρα στο διαθέσιμο χώρο, καταλαμβάνοντας το 100% αυτού.

 

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

 

 

gimp.jpg

 

 

 

Οι περισσότεροι tiling window managers φυσικά είναι αρκετά εξελιγμένοι. Διαθέτουν εικονικές επιφάνειες εργασίας (η κάθε μια με δικό της αλγόριθμο διαχείρισης των παραθύρων), οι οποίες είναι πολύ πιο χρήσιμες απ' ότι στην περίπτωση ενός συμβατικού window manager, υποστηρίζουν compositing για διαφάνεια και, το βασικότερο, έχουν μεγάλες δυνατότητες ρύθμισης. Στις περισσότερες περιπτώσεις ο χρήστης μπορεί να αναδιατάξει αυτόματα, με το πάτημα ενός πλήκτρου, όλα τα παράθυρα και, αν αισθάνεται τολμηρός, μπορεί να γράψει σχετικά εύκολα δικούς του αλγορίθμους τοποθέτησης των παραθύρων στην οθόνη.

 

Κάνουν για όλες τις δουλειές όμως;

Η απάντηση δεν είναι εύκολη. Σίγουρα απαιτείται μια περίοδος προσαρμογής και αλλαγής νοοτροπίας. Η πρώτη αντίδραση μπροστά σε έναν tiling window manager είναι «μα καλά, μ#$@#$ς είμαι; Τι το έβαλα αυτό το πράμα;» και είναι λογική, γιατί συγκρούεται με έναν τρόπο εργασίας που έχουμε συνηθίσει εδώ και 15 χρόνια. Αν κάποιος όμως ξεπεράσει το αρχικό στάδιο προσαρμογής, μάθει να χρησιμοποιεί τις εικονικές επιφάνειες εργασίας για να ομαδοποιεί ομοειδείς εφαρμογές, μάθει να χειρίζεται τα παράθυρα με το πληκτρολόγιο και αφιερώσει λίγο χρόνο παραπάνω για να φέρει τον window manager στα μέτρα του, δε θα αντιμετωπίσει κανένα πρόβλημα σε σχέση με έναν συμβατικό window manager.

 

Σύγχρονοι tiling window managers

Η λίστα αυτή δεν είναι πλήρης, περιέχει όμως μερικούς από τους ευρύτερα χρησιμοποιούμενους window managers:

  • wmii & dwm: δύο από τους πλεόν απλούς και «σκληροπυρηνικούς» tiling window managers.
  • Xmonad: Tiling window manager γραμμένος σε haskell. Η προσωπική μου επιλογή. Ταχύτατος, πανάλαφρος, απόλυτα παραμετροποιήσιμος και εντυπωσιακά σταθερός και bug-free, κάτι που προέρχεται από τον τρόπο ανάπτυξής του.
  • awesome: Ένας ακόμα νέος window manager, με ενδιαφέροντα χαρακτηριστικά, ευχάριστος στο μάτι και απλός στη ρύθμιση.
  • ion: Ελαφρύς, απόλυτα παραμετροποιήσιμος, αλλά με περίεργη άδεια χρήσης.

 

Συμπεράσματα

Μετά από ένα 3μηνο χρήσης tiling window manager, αισθάνομαι αμήχανα όταν καθήσω μπροστά σε οποιοδήποτε συμβατικό desktop. Ο xmonad δουλεύει υποδειγματικά, τόσο υποδειγματικά που ξεχνάς ότι υπάρχει window manager. Βέβαια το στυλ εργασίας αναγνωρίζω ότι μάλλον είναι αρκετά διαφορετικό από το στυλ εργασίας του οικιακού χρήστη. Δουλεύω αρκετά έως πολύ με terminals (συνήθως έχω πάνω από 4-5 ανοιχτά) και με το πληκτρολόγιο, οπότε δεν εγγυώμαι ότι εσάς θα σας αρέσει καλύτερα ένας tiling window manager. Όσοι όμως αισθάνονται περιπετειώδεις και έχουν τη δυνατότητα, θα συνιστούσα να δοκιμάσουν την τύχη τους, αρκεί να μην απογοητευτούν στα πρώτα 5' χρήσης.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

cheers mate! :-D

 

Μια ερώτηση, όταν λες ο Xmonad είναι bug-free λόγω τρόπου ανάπτυξης, τι σημαίνει ακριβώς? Επειδή το "bug-free" είναι μεγάλη κουβέντα ίσως, ποιος ο τρόπος ανάπτυξης?

 

πρακτικά σχόλια από βδομάδα καθώς τώρα καλό να μην ασχοληθώ ακόμα (δουλειε)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πολύ ενδιαφέρον άρθρο, και πολύ ενημερωτικό - για να μαθαίνουμε κιόλας. Η αλήθεια είναι ότι ειδικά σε περίοδο που γράφω εργασίες (LaTeX) με e-books ανοιχτά, και terminal για να κάνω τα previews ακούγεται πολύ χρήσιμος ένας twm. Σίγουρα θα το δοκιμάσω. Αλλά μιας και είμαι αρχάριος, θα μπορώ να εναλλάσσω με το σύστημα που έχω; Δλδ προσπαθώ να καταλάβω που "παρεμβάλλεται" η λειτουργία του. Στο DE? Μπορώ να έχω διαφορετικά sessions δλδ; (δεν ξέρω αν χρησιμοποιώ σωστούς όρους οπότε λίγη κατανόηση plz :) )

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

cheers mate! :-D

 

Μια ερώτηση, όταν λες ο Xmonad είναι bug-free λόγω τρόπου ανάπτυξης, τι σημαίνει ακριβώς? Επειδή το "bug-free" είναι μεγάλη κουβέντα ίσως, ποιος ο τρόπος ανάπτυξης?

 

πρακτικά σχόλια από βδομάδα καθώς τώρα καλό να μην ασχοληθώ ακόμα (δουλειε)

Ορθότερα θα έπρεπε να πω «είναι πρακτικά bug-free». Κατ' αρχάς ο xmonad είναι γραμμένος σε Haskell, η οποία είναι μια functional γλώσσα (όπως η Lisp), ριζικά διαφορετική στην αντιμετώπιση του μοντέλου προγραμματισμού. Στις functional γλώσσες περιγράφεις απλά τι θες να γίνει, όχι τη σειρά με την οποία θες να γίνει, οπότε (αν καταφέρεις και δεν καταλήξεις στο τρελοκομείο), αποφεύγεις διάφορα λάθη που προέρχονται από τη δόμηση ενός τυπικού αλγορίθμου.

 

Επιπλέον, τουλάχιστον ένας από τους developers, ασχολείται ακαδημαϊκά με τον functional προγραμματισμό και εφαρμόζει διάφορες ιδέες από το χώρο της θεωρητικής πληροφορικής. Έχουν φτιάξει και unit tests για όλον τον window manager, οπότε έχουν αυτοματοποιημένο τρόπο να ξέρουν αν κάτι έχει σπάσει ή όχι. Γενικά, αν δεν ήξερα ότι μετράει μόλις 1 χρόνο ανάπτυξης, θα πίστευα ότι έχει τουλάχιστον 10 χρόνια ιστορίας.

 

 

Πολύ ενδιαφέρον άρθρο, και πολύ ενημερωτικό - για να μαθαίνουμε κιόλας. Η αλήθεια είναι ότι ειδικά σε περίοδο που γράφω εργασίες (LaTeX) με e-books ανοιχτά, και terminal για να κάνω τα previews ακούγεται πολύ χρήσιμος ένας twm. Σίγουρα θα το δοκιμάσω. Αλλά μιας και είμαι αρχάριος, θα μπορώ να εναλλάσσω με το σύστημα που έχω; Δλδ προσπαθώ να καταλάβω που "παρεμβάλλεται" η λειτουργία του. Στο DE? Μπορώ να έχω διαφορετικά sessions δλδ; (δεν ξέρω αν χρησιμοποιώ σωστούς όρους οπότε λίγη κατανόηση plz :) )

Μπορείς να έχεις διαφορετικά sessions. Αν χρησιμοποιείς GDM για display manager, θα δεις ότι στη login screen σου επιτρέπει να επιλέξεις συνεδρία (π.χ. GNOME, KDE, κλπ). Μπορείς κάλλιστα να εντάξεις ένα πλήρες περιβάλλον γύρω από έναν tiling window manager στο σύστημά σου με αυτόν τον τρόπο.

 

Και ναι, ειδικά για latex, οι tiling WM σκοτώνουν ;-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραία! Μόλις τελειώσω εξεταστική θα ξεκινήσουν οι δοκιμές! (και οι εργασίες με το καινούριο εξάμηνο ;) ) Περισσότερες απορίες μετά τις 25/9 λοιπόν.

Υ.Γ: Πολύ ενδιαφέρον οι functional γλώσσες. Ομολογώ ότι ως μαθηματικός, μέχρι τώρα είχα ασχοληθεί με ποιο θεωρητικά πράγματα (θεωρίες αλγορίθμων,γραφοθεωρίες κλπ) και τα κλασικά (C, και απο object-oriented, java). Με μπρίζωσες για ψάξιμο τώρα. Αν έχεις κάποιο link για περισσότερες πληροφορίες θα το έβλεπα ευχαρίστως!

EDIT:

χμμμ, θα πέσει λίγο διάβασμα περί functional γλωσσών, quite interesting

 

Same thoughts Soturin !

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραία! Μόλις τελειώσω εξεταστική θα ξεκινήσουν οι δοκιμές! (και οι εργασίες με το καινούριο εξάμηνο ;) ) Περισσότερες απορίες μετά τις 25/9 λοιπόν.

Υ.Γ: Πολύ ενδιαφέρον οι functional γλώσσες. Ομολογώ ότι ως μαθηματικός, μέχρι τώρα είχα ασχοληθεί με ποιο θεωρητικά πράγματα (θεωρίες αλγορίθμων,γραφοθεωρίες κλπ) και τα κλασικά (C, και απο object-oriented, java). Με μπρίζωσες για ψάξιμο τώρα. Αν έχεις κάποιο link για περισσότερες πληροφορίες θα το έβλεπα ευχαρίστως!

EDIT:

 

Same thoughts Soturin !

 

Βασικά, από τα λίγα που έχω ψάξει, οι functional γλώσσες έχουν προκύψει από έναν τομέα της μαθηματικής λογικής που ονομάζεται lambda calculus. Στοιχεία functional προγραμματισμού υπάρχουν μέχρι και στην python και τη ruby (έχουν lambda ή anonymous functions). Γενικά ο τρόπος με τον οποίο χειρίζονται κάποια πράγματα οι functional γλώσσες είναι πολύ ενδιαφέρων. Περιμένω και εγώ να λασκάρω λίγο για να διαβάσω haskell. Είναι πάντως πολύ περίεργο πράγμα αν έχεις συνηθίσει τον κλασσικό imperative προγραμματισμό.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ορθότερα θα έπρεπε να πω «είναι πρακτικά bug-free». Κατ' αρχάς ο xmonad είναι γραμμένος σε Haskell, η οποία είναι μια functional γλώσσα (όπως η Lisp), ριζικά διαφορετική στην αντιμετώπιση του μοντέλου προγραμματισμού. Στις functional γλώσσες περιγράφεις απλά τι θες να γίνει, όχι τη σειρά με την οποία θες να γίνει, οπότε (αν καταφέρεις και δεν καταλήξεις στο τρελοκομείο), αποφεύγεις διάφορα λάθη που προέρχονται από τη δόμηση ενός τυπικού αλγορίθμου.

 

Μια μικρή παρατήρηση, η λογική αυτή αναφέρεται κυρίως σε "pure" γλώσσες σαν την Haskell (που γενικότερα σπανίζουν), και όχι σε όλες τις συναρτησιακές. Μάλιστα το γεγονός ότι η Haskell έχει αποκτήσει τέτοια δυναμική τα τελευταία χρόνια (ενώ έχει μια ιστορία σχεδόν 20 ετών), είναι αξιοσημείωτο.

 

Επιπλέον, σημαντικός παράγοντας στο μικρό ποσοστό bugs του XMonad, είναι το μέγεθος του κώδικα. Στην έκδοση 0.5, αριθμούσε γύρω στις 500 γραμμές. Αν αναλογιστεί κανείς ότι προσέφερε πάνω κάτω ότι και ο wmii που πάσχιζε να μείνει κάτω από τις 10.000 γραμμές (σε C, είναι μάλιστα και ένας από τους δηλωμένους στόχους του project το να μείνει κάτω από αυτό το όριο), και ο dwm κάτω από τις 2000 (με σημαντικά λιγότερα features), η διαφορά είναι σημαντική. Ακόμα και στην τωρινή έκδοση, τα νούμερα είναι πολύ μικρά:

>
$ sloccount xmonad-0.8
SLOC	Directory	SLOC-by-Language (Sorted)
984     XMonad          haskell=984
701     tests           haskell=701
79      man             haskell=79
72      top_dir         haskell=72
22      util            haskell=22

Totals grouped by language (dominant language first):
haskell:       1858 (100.00%)

 

Μπορείς να έχεις διαφορετικά sessions. Αν χρησιμοποιείς GDM για display manager, θα δεις ότι στη login screen σου επιτρέπει να επιλέξεις συνεδρία (π.χ. GNOME, KDE, κλπ). Μπορείς κάλλιστα να εντάξεις ένα πλήρες περιβάλλον γύρω από έναν tiling window manager στο σύστημά σου με αυτόν τον τρόπο.

JNik,

Μπορείς να επιλέξεις εύκολα τον XMonad από το gdm/kdm/slim. Επιπλέον μπορείς να ενσωματώσεις τον xmonad στα περισσότερα dekstop environments (κάτι αρκετά ασυνήθιστο για tiling window managers). Ρίξε μια ματιά στα άρθρα στο wiki του XMonad.

 

Γενικά τα τελευταία δύο χρόνια υπάρχει μια άνθιση στους tiling window managers. Άλλο ένα αξιοσημείωτο project φαίνεται να είναι ο stumpwm, ένα rewrite του ratpoison σε Common Lisp.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ενδιαφερον wm ειναι και o ratpoison με τη διαφορα ομως οτι καθε εφαρμογη (παραθυρο ) ειναι αποκλειστικα και μονο fullscreen ,δεν εχει δηλαδη την ωραια δυνατοτητα του awesome να εχεις πανω απο ενα παραθυρα ανοιχτα στο ιδιο workspace .Το καλυτερο που μπορει να κανει ειναι 2 παραθυρα μαζι σε split .Αν εξαιρεσεις αυτη την ιδιοτροπια ο ratpoison ειναι πολυ ελαφρυς και εχει πολλες συντομευσεις με αποτελεσμα να μην χρειαζεσαι σχεδον ποτε mouse.Μπορεις επισης οπως βεβαια και στους αλλους twm να ορισεις συντομευσεις για τα applications που θες ωστε τα πραγματα να γινονται πολυ γρηγορα..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

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

  • Δημιουργία νέου...