2.3 Ο ΧΕΙΡΙΣΜΟΣ ΚΑΙ Η ΑΞΙΟΠΟΙΗΣΗ ΤΩΝ RESOURCES


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

Ο ορισμός των resources μπορεί να γίνει με διάφορους τρόπους. Οι σημαντικότεροι και πιο συνήθεις είναι οι εξής:

Α. Μέσω των διαφόρων παραμέτρων στην γραμμή εισαγωγής. Ολα τα προγράμματα που γράφονται για τα X Windows ακολουθούν μία κοινή τακτική όσο αφορά τον τρόπο επικοινωνίας τους με το χρήστη. Ετσι και κατά την εκκίνησή τους από το shell μπορούν να πάρουν κάποιες παραμέτρους οι οποίες αναφέρονται σε συγκεκριμένα resources. Οι παράμετροι αυτές, καθώς και η σύνταξή τους, είναι ίδιες σε όλα τα προγράμματα και μπορούν να καθορίσουν χαρακτηριστικά όπως τα χρώματα που θα χρησιμοποιεί η εφαρμογή, το μέγεθος του παραθύρου της ή άλλα ιδιαίτερα χαρακτηριστικά. Για παράδειγμα η εντολή:

	xterm -bg Black -fg White -geometry 80x40 &
θα ξεκινήσει ένα παράθυρο τερματικό το οποίο θα έχει μαύρο χρώμα για φόντο (background color) και άσπρο χρώμα για να γράφει (foreground color), ενώ το παράθυρο θα έχει εκατό στήλες πλάτος και ογδόντα γραμμές ύψος. Αναλυτική περιγραφή των τυπικών παραμέτρων των πελάτων των X Windows γίνεται στην αντίστοιχη παράγραφο του ιδίου κεφαλαίου.

Β. Μέσω διαφόρων αρχείων που περιέχουν τις προτιμήσεις του χρήστη και φορτώνονται αυτόματα είτε κατά την εκκίνηση των X Windows είτε κατά την εκκίνηση του κάθε πελάτη ξεχωριστά.

Το βασικότερο από τα αρχεία αυτά είναι το .Xdefaults το οποίο βρίσκεται στο home directory του χρήστη. Οπως είδαμε και στην παράγραφο για την εκκίνηση των X Windows το αρχείο αυτό το αναζητούν τα αρχεία .xinitrc και .x11start και σε περίπτωση που δεν το βρουν χρησιμοποιούν το αρχείο /usr/lib/X11/sys.Xdefaults. Τα στοιχεία δηλαδή, του .Xdefaults φορτώνονται στο σύστημα κατά την εκκίνηση των X Windows και γι' αυτό αποτελούν στη συνέχεια σημείο αναφοράς για κάθε πελάτη τους που ξεκινά. Ετσι στο .Xdefaults συνήθως περιέχονται resources που θέλουμε να ισχύουν γενικά για όλους τους πελάτες των X Windows αλλά και resources για κάθε εφαρμογή ειδικότερα. Τα resources που αναφέρονται σε ένα συγκεκριμένο πρόγραμμα των X Windows, όπως το xclock, μπορούν να φυλαχτούν ξεχωριστά σε ένα αρχείο με το όνομα .xclockrc στο home directory του χρήστη. Ομοίως μπορούν να φυλαχτούν σε ένα ξεχωριστό directory,το app-defaults, με όνομα ίδιο με το όνομα του πελάτη, δηλαδή xclock. Το directory app-defaults πρέπει να βρίσκεται και αυτό στο home directory του χρήστη.

Ο μηχανισμός που ακολουθείται για την απονομή των διαφόρων τιμών των resources σε κάθε πελάτη των X Windows είναι ο εξής: κατά την εκκίνηση των X Windows δημιουργείται ένας βασικός πυρήνας με resources χρησιμοποιώντας τις εξ ορισμού τιμές που διαθέτει ο εξυπηρετητής και τις τιμές που ορίζονται στο αρχείο .Xdefaults. Ο πυρήνας αυτός ονομάζεται χαρακτηριστικά RESOURCE_MANAGER property και αποτελεί το σημείο αναφορας για κάθε νέο πελάτη που θα ξεκινήσει στα X Windows.

Αναλυτικότερα, το κάθε πρόγραμμα που θα φορτωθεί και θα χρησιμοποιήσει για την μορφοποίησή του τις τιμές των resources που ορίστηκαν στο αρχείο .Xdefaults, στη συνέχεια θα κοιτάξει αυτόματα για τα αρχεία .*rc ή app-defaults/* στο home directory του χρήστη ή στο directory /usr/lib/X11 και θα χρησιμοποιήσει και τους ορισμούς που περιέχονται στα αρχεία αυτά. Πρέπει να σημειωθεί ότι οι τιμές των resources στο αρχείο .Xdefaults υπερισχύουν των αντίστοιχων τιμών που τυχόν υπάρχουν στα αρχεία .*rc ή app-defaults/*.

Γ. Μέσω του προγράμματος xrdb. To πρόγραμμα xrdb τροποποιεί τον βασικό πυρήνα των resources (RESOURCE_MANAGER property). Χρησιμοποιείται κατά την εκκίνηση των X Windows (στα .xinit και .x11start) για να περάσουν οι τιμές του .Xdefaults στο σύστημα:

	xrdb ~/.Xdefaults
	...
Στη συνέχεια κατά την λειτουργία των X Windows το xrdb είναι το μόνο πρόγραμμα που μπορεί να τροποποιήσει τις αρχικές αυτές τιμές. Η σύνταξη του προγράμματοs είναι:

	xrdb [options] [filename]
Οι κυριότερες επιλογές (options) που προσφέρει είναι οι εξής:

-display :
Ορίζει το μηχάνημα (host) και το display του εξυπηρετητή στον οποίο θέλουμε να αναφερθούμε.

-query :
Με την επιλογή αυτή το xrdb τυπώνει στην οθόνη τα περιεχόμενα του RESOURCE_MANAGER property του εξυπηρετητή. Με τον τρόπο αυτό δηλαδή, μπορούμε να δούμε και να μελετήσουμε τις παρούσες τιμές των resources.

-load filename :
Φορτώνει το αρχείο με το όνομα που δίνουμε (filename) στο RESOURCE_MANAGER property αντικαθιστώντας τις υπάρχουσες τιμές. Το αρχείο είναι του ίδιου τύπου με το αρχείο .Xdefaults. Η συγκεκριμένη επιλογή είναι αυτή που χρησιμοποιεί εξ ορισμού το πρόγραμμα αν δεν του δώσουμε καμία άλλη.

-merge filename :
Λειτουργεί όπως και η προηγούμενη με την διαφορά ότι δεν διαγράφει τις παρούσες τιμές των resources αλλά τις συγχωνεύει με τις νέες. Σε περίπτωση κοινών resources υπερισχύουν οι νέες τιμές. Η επιλογή αυτή επιτρέπει την προσθήκη νέων resources ή την τροποποιήση παλιών χωρίς τον επηρεασμό των υπολοίπων.

-remove :
Αφαιρεί τις παρούσες τιμές του RESOURCE_MANAGER property το οποίο επανέρχεται στις εξ ορισμού τιμές του.

-edit filename :
Γράφει τα περιεχόμενα του RESOURCE_MANAGER property στο αρχείο που ορίζουμε.

-cpp path/filename :
Ορίζει το μονοπάτι και το όνομα του προεπεξεργαστή της C που θέλουμε να χρησιμοποιήσει για να επεξεργαστεί το αρχείο με τα resources που θα φορτώσει. Το αρχείο .Xdefaults και τα λοιπά του τύπου του μπορούν να κάνουν χρήση των εντολών του προεπεξεργαστή της C, όπως είναι οι #include, #define, #if - #else κτλ. Με τον τρόπο αυτό τα αρχεία με τα resources μπορούν να γίνουν ευέλικτα και αντιμετωπίσουν καταστάσεις όπως ποικιλία μηχανημάτων, έγχρωμων και μονόχρωμων οθονών κ.ο.κ. Εξ ορισμού το xrdb χρησιμοποιεί τον προεπεξεργαστή cpp.

-nocpp :
Με την επιλογή αυτή μπορούμε να αποφεύγουμε την χρήση του προεπεξεργαστή κατά το φόρτωμα ενός αρχείου με resources.

Κατ' επέκταση το πρόγραμμα xrdb παίρνει ως παραμέτρους και τις παραμέτρους ενός τυπικού προεπεξεργαστή της C (βλ. CPP). Τέτοιες είναι οι:

-symbols :
Τυπώνει τα σύμβολα (symbols) του προεπεξεργαστή που ορίζονται στο εισαγόμενο αρχείο.

-Dname :
Ορίζει ένα νέο σύμβολο για τον πρoεπεξεργαστή. Για παράδειγμα η εντολή της μορφής :

	xrdb -DCOLOR_MONITOR .Xdefaults
ορίζει το σύμβολο COLOR_MONITOR. Με κατάλληλη χρήση του συμβόλου αυτού και των εντολών #ifdef κτλ. στο αρχείο .Xdefaults μπορούμε να ενεργοποιήσουμε τα resources μόνο εκείνα που αναφέρονται σε έγχρωμες οθόνες.

-Uname :
Αντιστοίχως η επιλογή αυτή διαγράφει ένα σύμβολο που έχει οριστεί εκ των προτέρων μέσα στο αρχείο.

-Ipath/directory :
Ορίζει το μονοπάτι και το directory των αρχείων που αναφέρονται στις εντολές #include του προς εισαγωγή αρχείου.

Συνεχίζουμε την περιγραφή των resources με τις ακόλουθες παραγράφους: