Πρώτο commit
Αυτό το commit περιλαμβάνεται σε:
commit
8ec8e9bee2
451 αρχεία άλλαξαν με 46736 προσθήκες και 0 διαγραφές
416
content/articles/35/01_X-Windows.md
Κανονικό αρχείο
416
content/articles/35/01_X-Windows.md
Κανονικό αρχείο
|
@ -0,0 +1,416 @@
|
|||
+++
|
||||
title = 'X-windows, πως και γιατί;'
|
||||
date = ''
|
||||
description = ''
|
||||
author = 'Καπελώνης Κωστής kkapelon _AT_ freemail.gr(mailto:kkapelonSPAM@SUXfreemail.gr)'
|
||||
issue = ['Magaz 35']
|
||||
issue_weight = 1
|
||||
+++
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Στο άρθρο αυτό προσπαθούμε να αποκαλύψουμε τις πραγματικές δυνατότητες των X-windows οι οποίες συχνά είναι άγνωστες στους χρήστες τους. Βασικά θέλουμε να πούμε
|
||||
ότι τα X-Windows ΔΕΝ είναι το γραφικό περιβάλλον του Linux. Αν και σήμερα (κυρίως μέσα από το KDE και το GNOME) χρησιμοποιούνται με αυτόν τον τρόπο, στην
|
||||
πραγματικότητα η φιλοσοφία πίσω από τα X-Windows είναι λίγο διαφορετική. Το άρθρο απευθύνεται σε μέσους χρήστες GNU/Linux (και ορεξάτους αρχάριους).*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**1. Εισαγωγή**
|
||||
-------------------------------------------
|
||||
|
||||
**2. X-Windows το γιατί (η αλλιώς η θεωρία)**
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
- [2.1 Αρχιτεκτονική](#ss2.1)
|
||||
- [2.2 Περί ενοποίησης (Integration).](#ss2.2)
|
||||
- [2.3 Όλα για το δίκτυο](#ss2.3)
|
||||
- [2.4 Απόκρυψη των λεπτομερειών (abstraction)](#ss2.4)
|
||||
- [2.5 Δύο εφαρμογές με ενδιαφέρον](#ss2.5)
|
||||
|
||||
**3. X-Windows το πως (η αλλιώς η πράξη)**
|
||||
----------------------------------------------------------------------
|
||||
|
||||
- [3.1 Ο εύκολος τρόπος](#ss3.1)
|
||||
- [3.2 Ο δύσκολος τρόπος](#ss3.2)
|
||||
- [3.3 Ο ασφαλής τρόπος](#ss3.3)
|
||||
|
||||
**4. Άλλα θέματα και επίλογος**
|
||||
-----------------------------------------------------------
|
||||
|
||||
|
||||
### [1. Εισαγωγή]{#s1}
|
||||
|
||||
Χρησιμοποιείτε GNU/Linux εδώ και λίγο καιρό. Αν ανάμεσα στα χιλιάδες ερωτήματα σας είναι και τα παρακάτω\...
|
||||
|
||||
- Γιατί το γραφικό περιβάλλον του Linux είναι τόσο αργό;
|
||||
- Τι εννοούν οι \"παλιοί\" όταν λένε ότι τα X-Windows είναι \"network-transparent\";
|
||||
- Παλαιότερα λέγαν ότι το Linux ήταν πολύ πιο γρήγορο από τα MSWindows, σήμερα όμως είναι πιο αργό στην πραγματικότητα. Γιατί;
|
||||
- Γιατί τα X-Windows αναφέρονται ως \"σύστημα\";. Δεν είναι απλά το γραφικό περιβάλλον του Linux;
|
||||
- Τι εννοεί η τάδε διανομή όταν λέει ότι δεν χρησιμοποιεί πια XFREE86 αλλά τον server από το X.org ;
|
||||
- Υπάρχει κάτι αντίστοιχο σε remote assistance/desktop για Linux συστήματα;
|
||||
|
||||
\...τότε αυτό το άρθρο είναι γραμμένο για σας! Αν όχι τότε μπορείτε να γράψετε και να στείλετε το δικό σας άρθρο στο Magaz. Το περιμένουμε με αγωνία!
|
||||
|
||||
|
||||
### [2. X-Windows το γιατί (η αλλιώς η θεωρία)]{#s2}
|
||||
|
||||
Τα X-Windows δεν αποτελούν εξαίρεση στον κανόνα. Ακολουθούν και αυτά την φιλοσοφία του Unix. Δηλαδή κατασκευάζουμε μικρά προγράμματα που κάνουν μια δουλειά καλά
|
||||
και δίνουμε στον προγραμματιστή την μέγιστη ελευθερία να προσαρμόσει το περιβάλλον του όπως θέλει. (το \"μικρά\" βέβαια σε αυτήν την περίπτωση είναι
|
||||
αμφιλεγόμενο)
|
||||
|
||||
Αυτό έρχεται σε αντίθεση με τα καταναλωτικά λειτουργικά συστήματα (γκουχ,γκουχ) που πιστεύουν ότι \"ξέρουμε τι θέλουν οι χρήστες μας πριν από αυτούς για αυτούς
|
||||
και θα τους παρέχουμε εμείς το καλύτερο γραφικό περιβάλλον. Ξέρουμε βέβαια ότι αυτό θα ικανοποιήσει μόνο το 80% των χρηστών. Δεν πειράζει όμως, το υπόλοιπο 20%
|
||||
ας πάει να πνιγεί\".
|
||||
|
||||
### [2.1 Αρχιτεκτονική]{#ss2.1}
|
||||
|
||||
Μετά από αυτήν την σύντομη αλλά αναγκαία προπαγάνδα μπορούμε να δούμε τα πράγματα από μια πιο ρεαλιστική σκοπιά. Έτσι λοιπόν ένα μονολιθικό λειτουργικό σύστημα
|
||||
που βασίζεται στην πλήρης ενοποίηση (integration) όλων των υποσυστημάτων του μοιάζει κάπως έτσι [\[εικόνα\]](/35/img/integrated.png)
|
||||
|
||||
Κύριο πλεονέκτημα αυτής της αρχιτεκτονικής είναι βέβαια ή ταχύτητα. Με αυτό εννοούμε ότι όλα τα υποσυστήματα (άρα και το γραφικό περιβάλλον) είναι πλήρως
|
||||
εναρμονισμένα μεταξύ τους (αφού είναι εντελώς προβλέψιμη η σύνθεση τους) και τα κανάλια επικοινωνίας μεταξύ τους είναι τα βέλτιστα δυνατά.
|
||||
|
||||
Αντιθέτως σε ένα GNU/Linux σύστημα όπου Linux σημαίνει μόνο ο πυρήνας (φαντάζομαι ότι το ξέρετε αυτό :-) τα πράγματα είναι κάπως έτσι
|
||||
[\[εικόνα\]](/35/img/modular.png) . Η εικόνα δείχνει ένα σύστημα βασισμένο σε gtk+/GNOME αλλά ανάλογα πράγματα ισχύουν και για QT/KDE.
|
||||
|
||||
Το όλο σύστημα δηλαδή αποτελείται από αυτοδύναμα κομμάτια τα οποία μπορούν να να συνεργαστούν με διάφορους τρόπους μεταξύ τους. Κύριο πλεονέκτημα αυτής της
|
||||
αρχιτεκτονικής είναι η επεκτασιμότητα και η ευελιξία. Έτσι είναι δυνατόν κάποιος ανάλογα με τις ανάγκες του να αρχίσει να αφαιρεί από \"την κορυφή\"
|
||||
υποσυστήματα φτάνοντας σε ένα πιο ελαφρύ σύστημα.
|
||||
|
||||
Θα μπορούσατε ας πούμε να αφαιρέσετε το GNOME και να βάλετε έναν άλλο απλό window manager κρατώντας όμως τις Gtk βιβλιοθήκες. H να αφήσετε μόνο τα ίδια τα
|
||||
X-windows για να τρέχετε μόνο μια συγκεκριμένη εφαρμογή σε Motif. Η ακόμα να αφαιρέσετε όλο το γραφικό περιβάλλον αφήνοντας μόνο τον πυρήνα και τις εφαρμογές
|
||||
κονσόλας, έχοντας έτσι ένα πολύ γρήγορο σύστημα ιδανικό για server.
|
||||
|
||||
Στην πραγματικότητα βέβαια επειδή κάποιος θέλει να τρέχει πολλά και διαφορετικά προγράμματα τα πράγματα δεν είναι τόσο απλά. Έτσι αν είστε στο KDE και σηκώσετε
|
||||
το Mozilla θα φορτωθούν όλες οι βιβλιοθήκες του στην ίδια μνήμη που είναι ήδη φορτωμένες αυτές του KDE. Αν σηκώσετε και GIMP ας πούμε θα έχετε και το GTK+ να
|
||||
καταναλώνει μνήμη. Ουσιαστικά δηλαδή σε ένα μηχάνημα έχετε 3 ειδών βιβλιοθήκες. Αυτήν την ευελιξία (πολλά είδη εφαρμογών) την πληρώνετε σε απόδοση (μνήμη)
|
||||
|
||||
Επίσης είναι δυνατόν να αλλάξουν τα \"κάτω\" ή τα \"πάνω\" επίπεδα του συστήματος χωρίς καμία επίπτωση. Όπως θα ξέρετε τα X-windows δεν είναι αποκλειστικό
|
||||
προνόμιο του Linux. Τα \*ΒSDς τρέχουν επίσης X-Windows όπως και μερικά εμπορικά Unix (π.χ. Solaris). Αυτό δίνει πάλι μεγάλη ευελιξία καθώς ένα πρόγραμμα που
|
||||
χρησιμοποιεί μόνο γραφικές βιβλιοθήκες (Xlib και πάνω) τρέχει όπου υπάρχουν X-windows άσχετα με το αν \"από κάτω\" υπάρχει Linux/FreeBSD/Solaris ή οτιδήποτε
|
||||
άλλο.
|
||||
|
||||
Τα KDE/GNOME για παράδειγμα τρέχουν άνετα σε FreeBSD. Προφανώς θα μεταφέρθηκαν (ported) κάποια συγκεκριμένα κομμάτια από το ένα σύστημα στο άλλο, αλλά κανείς
|
||||
δεν ξανάγραψε κώδικα \"από το γραφικό περιβάλλον του Linux\" στο \"γραφικό περιβάλλον του FreeBSD\".
|
||||
|
||||
Τέλος, η αντικατάσταση των πάνω επιπέδων σημαίνει αντικατάσταση των X-Windows. Τι σημαίνει αυτό; Τι θα μπορούσαμε να βάλουμε στην θέση τους; Εδώ φτάνουμε σε ένα
|
||||
σημαντικό σημείο του άρθρου. Τα x-windows (η επίσημα \"The X-Window system\") είναι απλά μια περιγραφή (specification). Ο XFree86 είναι απλά μια δωρεάν
|
||||
υλοποίηση (implementation). Υπάρχουν και άλλες υλοποιήσεις. Προφανώς αρκετές είναι forks του XFree86 αλλά υπάρχουν και εμπορικές εκδόσεις με διάφορα
|
||||
χαρακτηριστικά (π.χ. 3D επιτάχυνση). Τον τελευταίο καιρό λόγω διάφορων νομικών επιπλοκών με την άδεια χρήσης του XFree86 αρκετές διανομές ψάχνουν εναλλακτικές
|
||||
λύσεις. Αυτό όμως δεν έχει καμία επίπτωση στο τεχνικό επίπεδο. Όλες οι γραφικές εφαρμογές μπορούν να λειτουργήσουν όπως και πριν.
|
||||
|
||||
### [2.2 Περί ενοποίησης (Integration).]{#ss2.2}
|
||||
|
||||
Μέχρι στιγμής δεν έχουμε πει τίποτα καινούριο. Γιατί λοιπόν αυτή η ευελιξία που προσφέρουν τα X-Windows μεταφράζεται σε μειωμένη απόδοση; (άσχετα με το μπάχαλο
|
||||
με τις πολλές βιβλιοθήκες που έχει μεγαλύτερη επίπτωση στην μνήμη παρά σε επεξεργαστική ισχύ). Η απάντηση είναι η εξής.
|
||||
|
||||
Κάθε γραφικό πρόγραμμα (Χ client) είναι μια εφαρμογή που στο 99% των περιπτώσεων αναλογεί σε μία διεργασία του Unix (process). Το ίδιο όμως το υποσύστημα
|
||||
γραφικών (Χ server) που ελέγχει οθόνη, πληκτρολόγιο και ποντίκι είναι επίσης απλά άλλη μία διεργασία του συστήματος που τρέχει πάνω από τον πυρήνα (userspace).
|
||||
Ξαναδιαβάστε την τελευταία πρόταση δύο φορές. Δεν υπάρχει καμία ειδική μεταχείριση μέσα στο πυρήνα του Linux για γραφικά ή για Χ servers ή για διάφορα άλλα
|
||||
τέτοια. (Εδώ κλέβω λίγο βέβαια, αλλά αν το ξέρετε αυτό είστε αρκετά έμπειρος ώστε αυτό το άρθρο μάλλον δεν σας ενδιαφέρει). Το \"γραφικό περιβάλλον\" είναι
|
||||
δηλαδή άλλο ένα πρόγραμμα που μοιράζεται τους πόρους του μηχανήματος στην ίδια βάση με τα υπόλοιπα προγράμματα που τρέχουν εκείνη την στιγμή (κονσόλας ή
|
||||
γραφικά).
|
||||
|
||||
Αυτό μπορείτε να το διαπιστώσετε και οι ίδιοι. Με ένα απλό ps μπορείτε να βρείτε τον ίδιο τον Xserver και \"σκοτώνοντας\" τον θα καταρρεύσει αυτομάτως όλο το
|
||||
γραφικό περιβάλλον. Τόσο απλά. Μάλιστα μπορείτε να χρησιμοποιήσετε τις κλασσικές εντολές του Unix πάνω στον Xserver. Για παράδειγμα με την εντολή nice μπορείτε
|
||||
να ανεβάσετε ή να μειώσετε την προτεραιότητα του Xserver σε σχέση με τα άλλα προγράμματα. Ακόμα και στα επίπεδα πάνω από τα ίδια τα X-Windows η λογική είναι η
|
||||
ίδια. O window manager που σχεδιάσει τα περιγράμματα των παραθύρων και ασχολείται με την θέση τους είναι επίσης απλά άλλο ένα userspace πρόγραμμα. Τα ίδια
|
||||
ισχύουν και για KDE/GNOME. Το πάνελ τους, o window manager, ο file manager κ.τ.λ είναι \"κανονικά\" προγράμματα χωρίς κάποιο ειδικό χαρακτηριστικό.
|
||||
|
||||
Ξαναδείτε τις δύο εικόνες που αναφέρθηκαν προηγουμένως. Αν φανταστείτε ότι κάθε \"βελάκι\" αποτελεί μία σημαντική καθυστέρηση (communication overhead) μπορείτε
|
||||
εύκολα να δείτε ότι ένα σύστημα βασισμένο σε GNOME/KDE και γενικά με X-Windows πληρώνει μερικές έξτρα καθυστερήσεις οι οποίες πολύ απλά δεν υπάρχουν σε ένα
|
||||
μονολιθικό λειτουργικό σύστημα όπου τα πάντα είναι ενωμένα (και ο πυρήνας έχει και λειτουργίες για γραφικά).
|
||||
|
||||
Αυτό είναι το τίμημα που πληρώνετε για την ευελιξία των X-Windows. Να το θυμάστε λοιπόν την επόμενη φορά που θα επιδοθείτε στο αγαπημένο σπορ των απανταχού
|
||||
Unixάδων, αυτό δηλαδή της εύρεσης του κατάλληλου συνδυασμού window manager/background/theme/dockapps/desklets/toolbars/panels που θα σας δώσουν το \"τέλειο\"
|
||||
υπολογιστικό περιβάλλον.
|
||||
|
||||
Ειδικά το GNOME και το KDE πάσχουν σε ταχύτητα όσο καλός και αν είναι ο κώδικας τους (το KDE βέβαια πρέπει να παραδεχτώ ότι έχει κάνει τρομερή πρόοδο στον τομέα
|
||||
ταχύτητα) γιατί είναι κατασκευασμένα για να παρέχουν λειτουργίες και να μιμούνται το περιβάλλον ενός μονολιθικού λειτουργικού συστήματος, κάτι που τα X-Windows
|
||||
ποτέ δεν προορίζονταν να κάνουν.
|
||||
|
||||
### [2.3 Όλα για το δίκτυο]{#ss2.3}
|
||||
|
||||
Τώρα βέβαια θα πείτε: \"Και καλά, αν δεν είναι κατασκευασμένα τα X-Windows για να παρέχουν γραφικά σε ένα μονολιθικό λειτουργικό σύστημα, τότε για τι είναι
|
||||
κατασκευασμένα;\", και θα έχετε κάθε δίκιο να το ρωτήσετε αυτό.
|
||||
|
||||
Η μαγική φράση δεν είναι τόσο το \"μονολιθικό σύστημα\" όσο το \"σε ένα\". Τα X-Windows σχεδιάστηκαν για το δίκτυο. O σκοπός τους είναι να παρέχουν γραφικές
|
||||
υπηρεσίες ανάμεσα σε πολλούς υπολογιστές που επικοινωνούν μεταξύ τους. Αναφερόμαστε βέβαια στο περιβόητο \"network transparency\". (Δεν νομίζω ότι μπορώ να βρω
|
||||
καλή ελληνική μετάφραση του όρου.)
|
||||
|
||||
Οι προγραμματιστές των X-Windows σκέφτηκαν ως εξής όταν τα σχεδίαζαν (όλα αυτά μέσα στα \'80s). \"Ξέρουμε ότι στο μέλλον τα δίκτυα θα είναι παντού. Και ξέρουμε
|
||||
επίσης ότι πολλοί προγραμματιστές θα θέλουν να γράψουν γραφικά προγράμματα που θα τρέχουν πάνω από το δίκτυο. Θα ήταν επίσης κρίμα ο κάθε προγραμματιστής να
|
||||
γράφει κάθε φορά κώδικα που αφορά μεταφορά δεδομένων μέσα από το δίκτυο, κάτι το οποίο δεν έχει σχέση με το ίδιο το πρόγραμμα. (γνωστό και ως plumbing
|
||||
code/infrastructure ή και βαρετός κώδικας/εφεύρεση του τροχού για νιοστή φόρα στα ελληνικά :-). Θα κάνουμε λοιπόν το εξής: Θα γράψουμε μία φορά εμείς οι ίδιοι
|
||||
τον κώδικα του δικτύου και θα δώσουμε στους άλλους προγραμματιστές την δυνατότητα να γράψουν τα προγράμματα τους βασισμένα στα X-Windows χωρίς πότε να πρέπει να
|
||||
ασχοληθούν αυτοί με το δίκτυο άλλα να μπορούν να επικεντρώσουν την προσοχή τους στο ίδιο το πρόγραμμα τους\".
|
||||
|
||||
Τι ακριβώς εννοούσαν λοιπόν οι προγραμματιστές των X-Windows και τι έλεγε αυτή η επαναστατική τους (ακόμα και σήμερα κατά την ταπεινή γνώμη του αρθρογράφου)
|
||||
ιδέα;
|
||||
|
||||
Ας δούμε ένα παράδειγμα. Έχετε δύο υπολογιστές συνδεδεμένους στο δίκτυο. Θέλετε να πάρετε κάποιες μετρήσεις από τον Α (οι οποίες μπορεί να είναι
|
||||
θερμοκρασίες/hits σε ένα webserver/στατιστικά μιας βάσης δεδομένων και ότι άλλο μπορείτε να φανταστείτε) και να τις δείτε με ένα γραφικό πρόγραμμα στον Β στον
|
||||
οποίο και κάθεστε.
|
||||
|
||||
Αν οι δύο υπολογιστές τρέχουν ένα μονολιθικό λειτουργικό σύστημα πρέπει στην ουσία να γράψετε δύο προγράμματα. Το πρώτο (που δεν είναι απαραίτητο να είναι
|
||||
γραφικό) θα τρέχει στον Α, θα μαζεύει τα δεδομένα και θα τα στέλνει μέσω δικτύου στο δεύτερο πρόγραμμα που θα τρέχει στον Β και το οποίο θα τα δείχνει γραφικά
|
||||
στην οθόνη. Δείτε την [\[εικόνα\]](/35/img/client-server.png) .Στις περισσότερες περιπτώσεις ο κώδικας του δικτύου θα είναι χαμηλού επιπέδου (sockets) και θα είναι
|
||||
στενά συνδεδεμένος με τα δεδομένα που μεταφέρονται. Παρατηρήστε επίσης ότι ο κώδικας αυτός δεν έχει καμία απολύτως σχέση ούτε με την συλλογή δεδομένων η οποία
|
||||
μπορεί να είναι πολύ περίπλοκη από μόνη της ούτε με την επεξεργασία και γραφική τους αναπαράσταση που επίσης μπορεί να είναι πολύ περίπλοκη.
|
||||
|
||||
Κλασσικά παραδείγματα αυτής της αρχιτεκτονικής είναι τα άπειρα γραφικά database frontends που επιτρέπουν σε κάποιον να χειριστούν γραφικά μια απομακρυσμένη βάση
|
||||
δεδομένων, και τα διάφορα remote administration προγράμματα γενικότερα. Ακόμα και όλα τα κακόβουλα προγράμματα τύπου δούρειου ίππου (trojan horse) βασίζονται σε
|
||||
αυτήν την ιδέα.
|
||||
|
||||
Αν όμως έχετε X-Windows στους δύο υπολογιστές τα πράγματα είναι πολύ πιο απλά! Οι προγραμματιστές των X-Windows έχουν γράψει ήδη των κωδικά του δικτύου για εσάς
|
||||
πριν από εσάς. Σε αυτήν την περίπτωσή θα γράψετε ένα μόνο πρόγραμμα (όπως και ήταν η αρχική σας επιδίωξη) το οποίο θα τρέξετε κανονικά στον Α και μετά με κάποιο
|
||||
συγκεκριμένο τρόπο θα του πείτε \"Θέλω να δω την έξοδο του προγράμματος στην οθόνη του υπολογιστή Β και όχι στην οθόνη του υπολογιστή Α που το έτρεξα\". Και
|
||||
αυτό ήταν! Δείτε την [\[εικόνα\]](/35/img/X-win.png) . Ο Α δεν χρειάζεται να τρέχει X-Windows. Στην πραγματικότητα ο Α δεν χρειάζεται να έχει καν οθόνη. Μπορεί να
|
||||
είναι κάλλιστα ένας headless server που κάθεται στα φωτεινά υπόγεια μιας πολυεθνικής εταιρίας ή στο σκοτεινό πατάρι του γείτονα. Το μόνο που χρειάζεται ό Α
|
||||
είναι οι βιβλιοθήκες γραφικών των X-Windows (xlib/Xt) και ότι άλλο toolkit χρησιμοποιεί (gtk+/qt/fltk/tk/motif κ.τ.λ) το πρόγραμμα. Κατά τα άλλα δεν χρειάζεται
|
||||
να ασχοληθείτε εσείς ως προγραμματιστής, καθόλου με κώδικα για δίκτυο. Η μεταφορά των δεδομένων μέσα από τον δίκτυο γίνεται με τον τρόπο που έχουν
|
||||
\"ενσωματωμένο\" (built-in) τα ίδια τα X-windows.
|
||||
|
||||
Κάτι σημαντικό που πρέπει να παρατηρήσετε στην δεύτερη εικόνα και το οποίο έχει μπερδέψει αρκετούς ανθρώπους (μαζί και τον αρθρογράφο) είναι η ανάποδη
|
||||
αντιστοίχηση των όρων client και server. Έχουμε συνηθίσει να έχουμε το client κομμάτι στον υπολογιστή που καθόμαστε (π.χ. ftp client/web browser/database
|
||||
client) και το server κομμάτι στον απομακρυσμένο υπολογιστή (π.χ. ftp server/web server/database server). Στην περίπτωση των X-Windows όμως τα πράγματα είναι
|
||||
ανάποδα. Ο χρήστης κάθεται στον X-Server (= οθόνη,πληκτρολόγιο και ποντίκι) ενώ το απομακρυσμένο πρόγραμμα είναι ο X-client. Αυτό είναι εύκολο να το θυμάστε αν
|
||||
σκεφτείτε ότι ο client είναι πάντα αυτός που ξεκινάει την σύνδεση. Στην συγκεκριμένη περίπτωση ο χρήστης κάθεται στον X-Server που \"περιμένει\" συνδέσεις από
|
||||
X-Clients σε άλλα μηχανήματα που θέλουν να χρησιμοποιήσουν την οθόνη του.
|
||||
|
||||
Αυτά όσον αφορά το \"network\" κομμάτι. Τι ακριβώς όμως σημαίνει το \"transparency\" κομμάτι; (Στα ελληνικά transparent = διάφανος και transparency =
|
||||
διαφάνεια).
|
||||
|
||||
### [2.4 Απόκρυψη των λεπτομερειών (abstraction)]{#ss2.4}
|
||||
|
||||
Φτάνουμε λοιπόν στην δεύτερη σημαντική απόφαση των προγραμματιστών των X-Windows. Η απόφαση αυτή έχει να κάνει με το τι γίνεται στην περίπτωση που ένα γραφικό
|
||||
πρόγραμμα δείχνει την έξοδο του στον ίδιο τον υπολογιστή που τρέχει και άρα δεν χρειαζόμαστε μεταφορά δεδομένων μέσω δικτύου. Αυτή η περίπτωση μας ενδιαφέρει
|
||||
πολύ γιατί έτσι τρέχουν το 99% των χρηστών GNU/Linux το KDE/GNOME στον υπολογιστή τους. Αυτή είναι η πλειοψηφία των περιπτώσεων της εφαρμογής των X-Windows
|
||||
σήμερα δηλαδή.
|
||||
|
||||
Είπαν λοιπόν οι προγραμματιστές των X-Windows: \"Το ξέρουμε ότι θα μπορούσαμε (για λόγους ταχύτητας) να γράψουμε διαφορετικό κώδικα που θα δίνει την δυνατότητα
|
||||
στον προγραμματιστή να έχει απευθείας πρόσβαση στο υποσύστημα γραφικών όταν το πρόγραμμα του έχει την έξοδο στον ίδιο τον υπολογιστή που τρέχει. Κάτι τέτοιο
|
||||
όμως θα ήταν πιο πολύπλοκο και επίσης θα χάλαγε \"την ομοιομορφία\" του συστήματος μας (τα X-Windows δηλαδή). Προτιμούμε να δώσουμε στον προγραμματιστή ένα
|
||||
ενιαίο τρόπο κατασκευής γραφικών εφαρμογών άσχετα αν αυτές χρησιμοποιούν το δίκτυο τελικά ή όχι. Θα ακολουθήσουμε αυτήν μας την απόφαση παρόλο που ξέρουμε ότι
|
||||
δεν είναι η βέλτιστη δυνατή από άποψη ταχύτητας, είναι όμως η βέλτιστη δυνατή λύση από άποψη ευελιξίας\". Έτσι ακριβώς έγινε.
|
||||
|
||||
Τελικά δηλαδή τα X-Windows δεν ενδιαφέρονται αν υπάρχει στην μέση δίκτυο ή όχι. Ακόμα και όταν τα πάντα (Χ-server και X-Clients) τρέχουν σε έναν υπολογιστή
|
||||
τοπικά, όλα τα δεδομένα πάλι μέσα από το \"δίκτυο\" θα σταλούν. Το \"δίκτυο\" βέβαια θα είναι το ιδεατό(virtual) δίκτυο που έχει πάντα ένας υπολογιστής με τον
|
||||
εαυτό του. Αυτό πρακτικά σημαίνει ότι κάθε γραφικό πρόγραμμα που ξεκινάτε στον υπολογιστή σας συνδέεται μέσω δικτύου στην οθόνη του localhost/127.0.0.1 Δεν
|
||||
υπάρχει κάποια ειδική ρύθμιση για να αποφασίσετε αν ένα γραφικό πρόγραμμα τρέχει μέσω δικτύου ή τοπικά. Είναι ακριβώς το ίδιο. Εκεί αναφέρεται και ο όρος
|
||||
\"transparency\".
|
||||
|
||||
Και βέβαια από όλα αυτά καταλαβαίνετε ότι ένα γραφικό πρόγραμμα δεν έχει ποτέ απευθείας πρόσβαση στην κάρτα γραφικών του μηχανήματος που θα τρέξει ακόμα και αν
|
||||
τρέχει τοπικά. Τα πάντα θα περάσουν μέσα από το δίκτυο και μέσα από τον XServer (εδώ πάλι κλέβω αλλά αν το ξέρετε αυτό μπλα,μπλα). Θα μπορούσαν δηλαδή οι
|
||||
προγραμματιστές των X-Windows να δώσουν ένα διαφορετικό API για την περίπτωση που το πρόγραμμα τρέχει τοπικά, προτίμησαν όμως να μην το κάνουν αυτό για χάρη της
|
||||
ευελιξίας και ομοιομορφίας του συστήματος.
|
||||
|
||||
Να λοιπόν ένας ακόμα λόγος που τα X-Windows δεν μπορούν να ανταγωνιστούν τα γραφικά περιβάλλοντα των μονολιθικών λειτουργικών συστημάτων στο θέμα της ταχύτητας.
|
||||
Για άλλη μια φορά θυσίασαν την ταχύτητα για χάρη της ευελιξίας.
|
||||
|
||||
### [2.5 Δύο εφαρμογές με ενδιαφέρον]{#ss2.5}
|
||||
|
||||
Προφανώς υπάρχουν πολλές διαφορετικές περιπτώσεις όπου τα X-Windows μπορούν να χρησιμοποιηθούν για απομακρυσμένη εκτέλεση γραφικών εφαρμογών. Ανάλογα με τις
|
||||
ανάγκες του καθενός είναι δυνατόν τα X-Windows τις καλύψουν χωρίς να χρειάζεται η προμήθεια εξωτερικών εφαρμογών. Εμείς θα θέλαμε να αναφέρουμε δύο περιβάλλοντα
|
||||
που πιστεύουμε ότι αξίζουν την προσοχή σας.
|
||||
|
||||
Περιβάλλον 1. Ας φανταστούμε έναν (δύστυχο) system administrator που κάθεται στο γραφείο του που τρέχει GNU/Linux και θα ήθελε να ξέρει ανά πάσα στιγμή των
|
||||
σημαντικών πόρων/μηχανημάτων του δικτύου. Προφανώς μέσω SSH ο απομακρυσμένος έλεγχος (remote administration) των μηχανημάτων είναι δυνατόν να γίνει χωρίς καν να
|
||||
σηκωθεί από την καρέκλα του. Δεν θα ήταν όμως ιδανικό να μπορούσε να σηκώσει και γραφικά προγράμματα απομακρυσμένα;
|
||||
|
||||
Χωρίς λοιπόν την προσθήκη έξτρα προγραμμάτων ο system administrator αλλά με τις σωστές ρυθμίσεις θα μπορούσε να κάνει κάτι όπως την
|
||||
[\[εικόνα\]](/35/img/central-control.png)
|
||||
|
||||
Αυτός κάθεται λοιπόν σε ένα μηχάνημα χαμηλών/μέσων επιδόσεων και μπορεί να βλέπει στην (ας πούμε TFT 19\") οθόνη του ταυτόχρονα
|
||||
|
||||
- Το γραφικό hit analyser που τρέχει στο Webserver του με FreeBSD
|
||||
- Το γραφικό του network analyser που τρέχει στο router/firewall me OpenBSD
|
||||
- Το γραφικό του database frontend που τρέχει στον application server με Solaris
|
||||
- Το γραφικό του -βάλτε το δικό σας πρόγραμμα εδώ- που τρέχει στον server με GNU/Linux
|
||||
|
||||
Στο όλο σύστημα δηλαδή τρέχει ένας μόνο X server (στον κεντρικό υπολογιστή) και οι υπόλοιποι X-clients τρέχουν περιφερειακά σε διαφορετικά μηχανήματα. Προφανώς
|
||||
οι servers μπορούν κάλλιστα να είναι headless.
|
||||
|
||||
Γιατί είναι σημαντική αυτή η σύνθεση (configuration);
|
||||
|
||||
- Κεντρικός έλεγχος. O sys admin έχει όλα τα γραφικά προγράμματα σε μία οθόνη στο γραφείο του.
|
||||
- Κατανεμημένοι πόροι. Συνήθως μια βάση δεδομένων είναι μια βαριά εφαρμογή. Επίσης ένας πολυάσχολος web server τείνει να ζορίζει ένα σύστημα. Σε αυτήν την
|
||||
περίπτωση όμως ο system admin βλέπει σε μία οθόνη προγράμματα που θα ήταν αδύνατο να τρέξουν σε έναν υπολογιστή όλα μαζί. Επίσης ο ίδιος ο υπολογιστής του
|
||||
sys admin έχει πολύ χαμηλό φόρτο αφού το μόνο που κάνει είναι να \"δείχνει\" τα δεδομένα και όχι να τα επεξεργάζεται. Έτσι η εταιρία μπορεί να επενδύσει
|
||||
πολλά χρήματα στον database server και όχι στον υπολογιστή του sys admin. (Αυτή η λογική δεν ισχύει πάντα στην πραγματικότητα :-)
|
||||
- Ανεξαρτησία. Αν ο sys admin είναι από τους νευρωτικούς που θέλουν να συνεχίσουν να έχουν τον έλεγχο ακόμα και όταν φεύγουν από την δουλειά δεν υπάρχει
|
||||
κανένα πρόβλημα. Θα μπορούσε ας πούμε ο sys admin να πάει σπίτι του (θεωρητικά) και να σηκώσει το frontend της βάσης δεδομένων από το GNU/Linux μηχάνημα που
|
||||
έχει στο υπνοδωμάτιο του. Θα έχει ακριβώς το ίδιο περιβάλλον που είχε και στην δουλειά.
|
||||
|
||||
Περιβάλλον 2. Η δεύτερη περίπτωση είναι η λογικά αντίθετη (σχεδόν). Έχουμε στο κέντρο τον X-Client και διάφοροι X-Servers σηκώνουν το πρόγραμμα γραφικά. Τυπικό
|
||||
παράδειγμα τέτοιας λύσεις αποτελούν τα πανεπιστήμια. Υπάρχει εγκατεστημένη σε ένα μηχάνημα μια σημαντική/εμπορική εφαρμογή και όλοι οι φοιτητές σηκώνουν το
|
||||
γραφικό περιβάλλον από τον υπολογιστή που κάθονται. Η εφαρμογή δεν μπορεί να υπάρξει εγκατεστημένη σε άλλους υπολογιστές για διάφορους λόγους
|
||||
|
||||
- Είναι εμπορική και το πανεπιστήμιο έχει μόνο μια άδεια
|
||||
- Χρησιμοποιεί συγκεκριμένο υλικό συνδεδεμένο μόνο σε αυτόν τον αυτόν τον υπολογιστή
|
||||
- Έχει πολύ μεγάλες απαιτήσεις σε πόρους (μπορεί να τρέξει μόνο σε αυτόν τον υπολογιστή)
|
||||
|
||||
Δείτε την [\[εικόνα\]](/35/img/distributed.png). Τα χαρακτηριστικά αυτής της σύνθεσης είναι:
|
||||
|
||||
- (Το κύριο) Πολλοί χρήστες χρησιμοποιούν μια γραφική εφαρμογή η οποία στην πραγματικότητα είναι εγκατεστημένη σε ένα μηχάνημα.
|
||||
- Εύκολη αναβάθμιση της εφαρμογής, αφού βρίσκεται σε ένα κεντρικό σημείο.
|
||||
- Οικονομική λύση. Ο μόνος απαιτητικός υπολογιστής είναι ο κεντρικός. Οι χρήστες μπορούν να έχουν απλούς thin clients. Εφόσον όμως δεν έχουν μπροστά τους μια
|
||||
απλή εφαρμογή WEB αλλά μια κανονική εφαρμογή συστήματος που έχει διαθέσιμους όλους τους πόρους ενός μηχανήματος τελικά τα περιφερειακά μηχανήματα είναι
|
||||
thick clients.
|
||||
|
||||
Και τα δύο περιβάλλοντα που αναφέραμε δεν λειτουργούν ακριβώς έτσι στην πραγματική ζωή και για αυτό συμβάλλουν κυρίως δύο λόγοι. Ό ένας είναι ότι απαιτείται ένα
|
||||
γρήγορο δίκτυο (αν ο sys admin έχει απλό dial-up σπίτι του δεν μπορεί να κάνει και πολλά). Ο δεύτερος λόγος είναι η ασφάλεια την οποία θα αναφέρουμε και στο
|
||||
επόμενο τμήμα του άρθρου.
|
||||
|
||||
|
||||
### [3. X-Windows το πως (η αλλιώς η πράξη)]{#s3}
|
||||
|
||||
Και ερχόμαστε στο πρακτικό κομμάτι του άρθρου. Δεν πρόκειται όμως να αναφερθούμε εκτενώς στις λεπτομέρειες καθώς αυτές είναι ήδη μαζεμένες στο Remote-X-apps
|
||||
HOWTO το οποίο οφείλετε να διαβάσετε αν θέλετε πραγματικά να ασχοληθείτε με το \"άθλημα\". Θα περιοριστούμε λοιπόν σε μερικά μόνο σημαντικά σημεία.
|
||||
|
||||
Καταρχήν πρέπει να ξέρετε τρία πράγματα πριν ξεκινήσετε οποιοδήποτε πείραμα. Πρώτον προσέξτε το firewall της διανομή σας. Μερικές διανομές έχουν ανάμεσα στις
|
||||
προκαθορισμένες (default) ρυθμίσεις τους και ένα απλό firewall. Επειδή τα X-Connections δεν τρέχουν σε χαμηλές πόρτες (ports) (1-1024) αλλά συνήθως
|
||||
χρησιμοποιούν πόρτες με αριθμό 6000 και κάτι ψιλά είναι πολύ πιθανό να μην μπορεί ο υπολογιστής που έχει τον X-Server να δεχτεί συνδέσεις.
|
||||
|
||||
Δεύτερον πρέπει να δώσετε μεγάλη σημασία στο θέμα της ασφάλειας. Τα Χ-Windows πάσχουν από διάφορα προβλήματα ασφαλείας (βλέπε και telnet/ftp/rlogin) αν δεν
|
||||
ρυθμιστούν σωστά. Αναφερόμαστε τόσο στο ποιος μπορεί να συνδεθεί στον X-server (authentication) όσο και στην ίδια την μεταφορά των δεδομένων μέσα από το δίκτυο.
|
||||
Μην ξεχνάτε ότι ένας X-server είναι οθόνη και ποντίκι και πληκτρολόγιο. Έτσι θα μπορούσε ένας κακόβουλος χρήστης να συνδεθεί στον X-server σας και να βάλει τα
|
||||
δικά του παράθυρα στην οθόνη σας. (κάτι που μπορεί να είναι αστείο). Θα μπορούσε όμως να φτιάξει και ένα πρόγραμμα που συνδέεται στον X-Server σας και διαβάζει
|
||||
τι γράφετε στο πληκτρολόγιο (κάτι που δεν είναι καθόλου αστείο).
|
||||
|
||||
Έτσι θα πρέπει στην καλύτερη περίπτωση να κάνετε τα πειράματα σας σε ένα μικρό δίκτυο που δεν διαθέτει εξωτερική σύνδεση στο Internet, ενώ στην χειρότερη σε ένα
|
||||
καλά προστατευμένο δίκτυο πίσω από ένα \"σοβαρό\" (π.χ. εταιρικό) firewall. Μερικοί μπορεί να τα θεωρήσουν γελοία όλα αυτά, αλλά είναι καλό να είστε λίγο
|
||||
περισσότερο παρανοϊκοί από όσο πρέπει στο θέμα της ασφάλειας. Δείτε και τα άλλα τεύχη του Magaz με θέμα την ασφάλεια δικτύων.
|
||||
|
||||
Και τρίτον θα πρέπει ο ίδιος ο X-server να είναι ρυθμισμένος ώστε να δέχεται εξωτερικές συνδέσεις. Πάλι για λόγους ασφάλειας μερικές διανομές μπορεί να έχουν
|
||||
απενεργοποιήσει αυτήν την λειτουργία. Εδώ πρέπει να ψάξετε την τεκμηρίωση της διανομής σας. Για XFREE86 αυτό μπορεί να είναι κάτι απλό όπως η παράμετρος
|
||||
\"-nolisten tcp\". Τις περισσότερες φορές όμως αυτό είναι \"θαμμένο\" πίσω από διάφορα startup scripts και ο χρήστης έχει επιλογές \"υψηλότερου επιπέδου\". Θα
|
||||
μπορούσε ας πούμε η διανομή σας να έχει σε κάποιο αρχείο ρυθμίσεων την γραμμή \"ALLOW\_REMOTE\_X\_CONNECTIONS=no\" την οποία εσείς πρέπει να αλλάξετε βέβαια σε
|
||||
\"yes\". Δείτε πάλι την τεκμηρίωση της διανομή σας. Δεν έχει νόημα να μπούμε σε περίπλοκες λεπτομέρειες για το θέμα.
|
||||
|
||||
Από την μεριά του X-client τα πράγματα είναι σχετικά απλά. Η μαγική λέξη είναι DISPLAY. Κάθεστε στον υπολογιστή, βάζετε στην μεταβλητή περιβάλλοντος
|
||||
(environment variable) DISPLAY το όνομα (hostname) του υπολογιστή με τον X-Server προσθέτοντας και το display στο τέλος (στο 99% των περιπτώσεων θα είναι :0.0)
|
||||
και τέλος τρέχετε το γραφικό πρόγραμμα που θέλετε. Αν όλα πάνε καλά θα πρέπει το πρόγραμμα να εμφανίσει το περιβάλλον του στον X-Server χρησιμοποιώντας όμως
|
||||
πάντα τους πόρους (resources) του Χ-Client. Για tcsh/csh ας πούμε αυτό γίνεται
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
>setenv DISPLAY xserver.example.gr:0.0
|
||||
>gftp
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Αντίστοιχα και για άλλα shells (π.χ bash). Για περισσότερες λεπτομέρειες δείτε το HOWTO.
|
||||
|
||||
Ας δούμε και τις ρυθμίσεις από την πλευρά του X-Server.
|
||||
|
||||
### [3.1 Ο εύκολος τρόπος]{#ss3.1}
|
||||
|
||||
Στην πιο απλή περίπτωση ο X-Server κρατάει μία λίστα με υπολογιστές (hostnames) που μπορούν να ανοίξουν μια σύνδεση με αυτόν. Η λίστα αυτή παραμετροποιείται με
|
||||
την εντολή xhost. Η παράμετρος είναι ένα όνομα (hostname) που θέλετε να βάλετε ή να βγάλετε από την λίστα. Αυτό καθορίζεται με ένα + η - πριν από το όνομα
|
||||
(χωρίς κάποιο κενό). Έτσι στον X-Server μπορείτε να τρέξετε:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
xhost +xclient.example.gr
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Και μόλις τελειώσετε:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
xhost -xclient.example.gr.
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Υπάρχει επίσης ή xhost + που επιτρέπει σε οποιονδήποτε να συνδεθεί (απαγορεύεται δια ροπάλου) και η xhost - που δεν αφήνει κανέναν να συνδεθεί εκτός από
|
||||
X-Clients που τρέχουν στον ίδιο τον X-Server (localhost δηλαδή μονό).
|
||||
|
||||
Όπως καταλάβατε αυτός ο τρόπος πιστοποίησης (authentication) ασχολείται μόνο με hostnames και δεν είναι καθόλου ασφαλής. Αν χρησιμοποιήσετε αυτόν τον τρόπο
|
||||
σημαίνει ότι ξέρετε πολύ καλά τι κάνετε και ότι εμπιστεύεστε την ασφάλεια του δικτύου σας. Εμείς τον προτείνουμε μόνο για δοκιμές σε ένα μικρό προστατευμένο
|
||||
τοπικό δίκτυο χωρίς σύνδεση στο δίκτυο.
|
||||
|
||||
Προσέξτε επίσης ότι ακόμα και το xhost - δεν είναι 100% ασφαλές. Είναι δυνατόν κάποιος κακόβουλος χρήστης αντί να τρέξει τον keylogger του απομακρυσμένα, να
|
||||
πάρει πρόσβαση στον υπολογιστή που τρέχει ο X-Server με τους συνήθεις τρόπους και μετά να \"ανεβάσει\" τον keylogger του και να τον τρέξει τοπικά. Τότε o
|
||||
keylogger θα συνδέεται από τον υπολογιστή \"localhost\" που έχει πάντα πρόσβαση στον X-Server άσχετα με τα αποτελέσματα της εντολής xhost.
|
||||
|
||||
### [3.2 Ο δύσκολος τρόπος]{#ss3.2}
|
||||
|
||||
Ο δεύτερος τρόπος είναι με χρήση της εντολής xauth (σύστημα MIT-MAGIC-COOKIE-1) Σε αυτήν την περίπτωση ο XServer ξέρει μία \"μαγική λέξη\"(magic-cookie). Μόνο
|
||||
όσοι X-Clients ξέρουν επίσης την ίδια ακριβώς μαγική λέξη μπορούν να ανοίξουν σύνδεση. Το \"μαγικό\" στην όλη υπόθεση αναφέρεται στο γεγονός ότι δεν έχει
|
||||
σημασία τόσο το περιεχόμενο αυτής της λέξης όσο το ότι πρέπει να είναι η ίδια και από τις δύο μεριές (X-Server/X-Client) ώστε να ανοιχτεί επιτυχώς η σύνδεση.
|
||||
Στα \"νεοελληνικά\" δηλαδή συνδέονται στον X-server μόνο όσοι X-clients έχουν το κοκκαλάκι της νυχτερίδας.
|
||||
|
||||
Εδώ θα μπορούσαμε να αναφέρουμε άπειρες λεπτομέρειες για το πως μπορείτε να φτιάξετε τα cookies αυτά, πώς θα τα μεταφέρετε από τον X-server στον Χ-client, και
|
||||
άλλα τεχνικά ζητήματα. Κάτι τέτοιο δεν έχει νόημα όμως γιατί όλα αυτά είναι ήδη γραμμένα στο Remote-X-Apps HOWTO και δεν πρόκειται να ασχοληθούμε ξανά εδώ με τα
|
||||
ίδια θέματα.
|
||||
|
||||
Θα σταθούμε μόνο σε δύο σημαντικά σημεία. Το ένα είναι ότι με το xauth μπορείτε να καθορίσετε την πρόσβαση σε επίπεδο χρήστη πια (και όχι σε επίπεδο υπολογιστή
|
||||
όπως το xhost) κάτι το οποίο είναι απαραίτητο σε ένα μέσο/μεγάλο τοπικό δίκτυο έτσι και αλλιώς. Το δεύτερο σημείο είναι ότι για να χρησιμοποιήσετε αυτόν τον
|
||||
τρόπο πιστοποίησης πρέπει να τρέξετε τον XServer με την παράμετρο -auth και το όνομα του αρχείου που περιέχει το cookie ( /.Xauthority).
|
||||
|
||||
### [3.3 Ο ασφαλής τρόπος]{#ss3.3}
|
||||
|
||||
Σχεδόν πάντα βέβαια ο χρήστης κάθεται στον X-server (= οθόνη, πληκτρολόγιο και ποντίκι). Επομένως μέσα από telnet στον X-client ξεκινάει την γραφική εφαρμογή
|
||||
που τον ενδιαφέρει και εφόσον έχει θέσει την μεταβλητή περιβάλλοντος DISPLAY το πρόγραμμα θα εμφανιστεί στην οθόνη που έχει μπροστά του. Αυτό όμως σημαίνει
|
||||
βέβαια ότι τα δεδομένα περνάνε μέσα από το δίκτυο χωρίς καμία κάλυψη (αναφερόμαστε γενικότερα στην απομακρυσμένη σύνδεση). Υπάρχει ο όμως και η λύση του ssh
|
||||
(secure shell). Σε αυτήν την περίπτωση έχετε αυτομάτως κρυπτογραφημένα δεδομένα. Πιο ενδιαφέρον είναι το γεγονός ότι μέσω της παραμέτρου -Χ λέτε στο ssh ότι
|
||||
θέλετε X forwarding. Αυτό αυτοματοποιεί την όλη διαδικασία Δηλαδή
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
>ssh -X xclient.example.gr
|
||||
>gftp.
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Εννοείται βέβαια ότι πρέπει να έχετε στήσει τον αντίστοιχο δαίμονα (sshd) στο μηχάνημα. Για άλλη μία φορά δείτε το αντίστοιχο HOWTO για τις λεπτομέρειες.
|
||||
|
||||
|
||||
### [4. Άλλα θέματα και επίλογος]{#s4}
|
||||
|
||||
Θα μπορούσαμε να συνεχίσουμε να απαριθμούμε και άλλες δυνατότητες των X-Windows τότε όμως το άρθρο αυτό θα έχανε τον εισαγωγικό του χαρακτήρα. Οφείλετε ανάλογα
|
||||
με τις ανάγκες σας να δείτε τι σας ενδιαφέρει και πως μπορείτε να το χρησιμοποιήσετε στο δικό σας περιβάλλον. Ορίστε μερικές άλλες ιδέες.
|
||||
|
||||
Displays/screens.
|
||||
|
||||
Μπορείτε να έχετε περισσότερα από ένα Χ displays σε έναν υπολογιστή και να αλλάζετε μεταξύ τους ακριβώς όπως αλλάζετε τις κονσόλες σας με Ctrl-alt-Fx. Έτσι
|
||||
μπορείτε να έχετε και δύο χρήστες ταυτόχρονα στο ίδιο μηχάνημα με εντελώς διαφορετικό περιβάλλον την ίδια στιγμή. Επίσης είναι δυνατόν να έχετε δύο φυσικές
|
||||
οθόνες σε έναν υπολογιστή αν η κάρτα γραφικών σας το επιτρέπει. Τα X-Windows το υποστηρίζουν και αυτό.
|
||||
|
||||
Xinerama.
|
||||
|
||||
Το xinerama είναι μια επέκταση (Extension) που σας επιτρέπει να έχετε ένα \"ενοποιημένο\" περιβάλλον από πολλές οθόνες. Φανταστείτε παράθυρα που τα κάνετε drag
|
||||
and drop από την μία οθόνη στην άλλη και μακρόστενες ταπετσαρίες (backgrounds) στο υπολογιστικό σας περιβάλλον.
|
||||
|
||||
x2x
|
||||
|
||||
Το x2x είναι ένα μικρό προγραμματάκι που σας επιτρέπει να ενώσετε δύο X-displays. Προσέξτε όμως ότι δεν είναι απαραίτητο να είναι στον ίδιο υπολογιστή. Δεν
|
||||
είμαστε σίγουροι για την σημερινή κατάσταση του προγράμματος μέχρι πρόσφατα πάντως ήταν μέσα στο Debian archive.
|
||||
|
||||
xnest.
|
||||
|
||||
Ένα διασκεδαστικό πρόγραμμα (κατά την γνώμη του αρθρογράφου). Σας επιτρέπει να έχετε ένα Χ-display μέσα σε ένα παράθυρο μέσα σε άλλο X-display. Φανταστείτε τον
|
||||
άνθρωπο που κρατάει έναν καθρέφτη και επειδή είναι ο ίδιος μπροστά από έναν δεύτερο καθρέφτη η αντανάκλαση είναι ό ίδιος και μέσα στον καθρέφτη που κρατάει
|
||||
φαίνεται ο ίδιος και μέσα στον καθρέφτη που κρατάει κ.τ.λ.
|
||||
|
||||
XDMCP
|
||||
|
||||
Το XDMCP είναι ένα πρωτόκολλό που σας επιτρέπει να πάτε ένα επίπεδο πιο πάνω. Αντί δηλαδή να έχετε X-clients μέσα από το δίκτυο έχετε ολόκληρα X-sessions. Αν
|
||||
ασχοληθείτε προσέξτε πάλι το θέμα ασφάλειας.
|
||||
|
||||
vnc.
|
||||
|
||||
Το vnc (virtual network computing) δεν έχει άμεση σχέση με τα X-windows, δεν θα μπορούσαμε όμως να μην το αναφέρουμε. Σας επιτρέπει να έχετε remote desktops
|
||||
ανάμεσα σε διαφορετικούς υπολογιστές ακόμα και αν αυτοί τρέχουν μονολιθικά λειτουργικά συστήματα. Ουσιαστικά δηλαδή μπορείτε να κάνετε αυτό που κάνουν τα
|
||||
X-windows εγγενώς ακόμα και αν τα λειτουργικά σας δεν τρέχουν X-windows. Προφανώς πρέπει το ίδιο το λειτουργικό σύστημα να υποστηρίζεται από το vnc. ΤΟ vnc
|
||||
βασίζεται στην λογική client-server. Εδώ όμως η ορολογία είναι η \"φυσική\". Ο υπολογιστής με τον vnc server σερβίρει το desktop του στον vnc client στον οποίο
|
||||
κάθεται και ο χρήστης. Υπάρχει και java based client που μπορεί να τρέχει και σε Web browser. Ένα μειονέκτημα του vnc είναι ότι πραγματικά σας δίνει τον έλεγχο
|
||||
του desktop δηλαδή δεν μπορεί και κάποιος άλλος να χρησιμοποιήσει τον server ταυτόχρονα με εσάς. Και αν κάποιος κάθεται εκεί δίπλα θα βλέπει στην οθόνη του
|
||||
server ακριβώς αυτά που κάνετε από τον client (ναι ακόμα και την κίνηση του ίδιου του mouse pointer). Δείτε επίσης και το tightvnc.
|
||||
|
||||
- Πηγές
|
||||
- Remote-X-Apps howto
|
||||
- Xwindow-USer-howto
|
||||
- XDMCP HOWTO
|
||||
|
Φόρτωση…
Προσθήκη πίνακα
Προσθήκη υπερσυνδέσμου
Παράθεση σε νέο ζήτημα