Magaz, The Greek Linux Magazine
Magaz Logo

Πώς να κάνετε τον FVWM2 πιο Στυλάτο

The Reverant
Ιανουάριος 2000

Ο FVWM2 είναι ένας Window Manager (WM) που λόγω ηλικίας είναι πλέον αρκετά "ώριμος" και σταθερός. Δυστυχώς όμως, είναι περισσότερο "ώριμος" από όσο θα έπρεπε όσον αφορά την εμφάνισή του, και είναι αναμφισβήτητο γεγονός το ότι η λειτουργικότητά του χρήζει παραιτέρω βελτίωσης.

Αυτός είναι και ο σκοπός αυτού του άρθρου. Πρωτίστως να βελτιώσει το εντελώς ανιαρό και συντηρητικό standard look του FVWM2, και να βελτιώσει στα σημεία τη λειτουργικότητά του. Αρχίζουμε λοιπόν... :-)

ΣΗΜΕΙΩΣΗ: Αυτό το άρθρο προϋποθέτει κάποια εξοικείωση με τον FVWM2. Αν αυτή δεν υπάρχει, προτείνεται η χρήση του μέχρι κάποιου σημείου εξοικείωσης, καθώς και η ανάγνωση της man σελίδας (man fvwm2 μόνο για όποιον έχει πραγματικά ΓΑΙΔΟΥΡΙΝΗ υπομονή. Ο υπογράφων μερικές φορές δεν φάνηκε αρκετά "ζώον" και η υπομονή του δοκιμάστηκε πέραν ανθρωπίνων ορίων :-) )

Πρώτο βήμα είναι να βρούμε το config αρχείο του FVWM2. Αυτό είναι το .fvwm2rc το οποίο αναζητείται στο home directory του χρήστη. Εαν δεν βρεθεί εκεί, τότε χρησιμοποιείται το system-wide που συνήθως βόσκει στο λιβάδι /usr/X11R6/lib/X11/fvwm2/.fvwm2rc. Δεν προτείνεται να πειράξετε το system-wide αρχείο, αντιθέτως, πειράξτε το αντίστοιχο ενός απλού χρήστη. Και φυσικά, πριν κάνετε οποιαδήποτε παρέμβαση, κάντε ένα τριπλό backup του αρχείου αυτού, για κάθε ενδεχόμενο.

Κατόπιν, ανοίγουμε το αρχείο .fvwm2rc με έναν editor και αρχίζουμε:

  1. Window buttons - Μπορούμε να ορίσουμε την εμφάνιση των window control buttons. Τα standard κρίνονται ικανοποιητικά, οπότε αφήνονται ως εχουν.
  2. General Configuration - Διάφορες γενικοί παράμετροι του FVWM2. Αυτό που θα πειραχθεί από εδώ είναι το DeskTopSize. Αυτή η παράμετρος ορίζει πόσα virtual desktops θα εμφανίζονται στον pager. Η default τιμη 3x2 μέχρι τώρα δεν μου έχει χρησιμεύσει προσωπικά. Τουναντίον μάλιστα :-). Για αυτό και βάζουμε τιμή 2x2:
    DeskTopSize 2x2
    
  3. Colors and fonts - Μπορούμε να ορίσουμε τα χρώματα των selected windows και των διαφόρων menu. Με τη δήλωση:
    HilightColors TextColor BackColor
    
    το selected window θα έχει ως font color το "TextColor" και ως background color το "backColor". Αυτά τα χρώματα μπορεί να είναι οποιαδήποτε χρώματα που αναφέρονται στο αρχείο: /usr/X11R6/lib/X11/rgb.txt
    Για τα sticky παράθυρα:
    StickyColors TextColor BackColor
    
    Για τα ανενεργά παράθυρα, καθώς και για συγκεκριμένα παράθυρα, θα χρησιμοποιήσουμε τη Style δήλωση, της οποίας η χρήση αναλύεται αργότερα. Κατόπιν, για το χρώμα & το font των menus:
    Menustyle TextColor BackColor OtherColor -misc-fixed-medium-r-normal-*-15-*-75-75-c-90-iso8859-1 fvwm
    
    Το "OtherColor" δεν έχει διαπιστωθεί που χρησιμεύει (κανείς;). Κατόπιν, η standard δήλωση του font που θέλουμε.
  4. Functions για Initialization, Restart & Exit.
    Functions είναι δηλώσεις που εκτελούνται κατόπιν κάποιας πράξης του χρήστη, π.χ. πατάει ένα button στο FvwmButtons, ή κάνει κλικ στο desktop, κ.τ.λ. Αυτές εκτελούνται κατόπιν αναλόγου σήματος του WM. Για initialization (οι παρακάτω δηλώσεις θα εκτελούνται όταν ο FVWM2 γίνεται initialized):
    Δήλωση της function "InitFunction":
    AddToFunc InitFunction
    
    Και μετά έχουμε:
    • Το module "FvwmBanner" δεν χρησιμεύει πουθενά, οπότε κερδίζει ένα comment-out σύμβολο (#) με την αξία του! :-)
       #+     "I"     Module Fvwmbanner 
      
    • Τα xmessages προτιμώ προσωπικά να εμφανίζονται σε ενα xterm με background χρώμα το μαύρο και text χρώμα το πράσινο (Old-schoοl terminal), με τίτλο "Xmessages", και ένα συγκεκριμένο geometry (δηλαδή μέγεθος και σημείο τοποθέτησης του παραθύρου πάνω στο desktop) που βολεύει. Αυτό γίνεται με την εξής δήλωση:
      +  "I"  Exec xterm -geometry 83x10+0+1120 -bg black -fg green -T "XMessages" -e tail -f /root/.X.err
      
      Η original δήλωση αφαιρείται όπως έχει.
    • Το default xterm που εμφανίζεται με το initialization του fvwm2 έχει χάλια χρώματα, οπότε:
       +      "I"     Exec xterm -geometry +0+88 -bg black -fg green
      
    • Ένα όμορφο background πάντα βοηθάει την κατάσταση :-)
       +      "I"     Exec xpmroot /root/pics/skull.xpm
      
      ΣΗΜΕΙΩΣΗ: Για όποιον ενδιαφέρεται, οι εικόνες και τα εικονίδια που χρησιμοποιώ, θα είναι διαθέσιμα από 5-6 Ιανουαρίου στο: http://reverant.fortunecity.com/linux-icons.tar.gz. Τα κάνετε extract με:
      $: tar zxfv linux-icons.tar.gz
      
      και ύστερα τα αντιγράφετε στο: /usr/X11R6/include/X11/pixmaps
    • Με ενδιαφέρει επίσης να μπορώ να βλέπω τα διάφορα log messages χωρίς να αλλάζω consoles συνεχώς, οπότε:
       +      "I"     Exec xterm -ls -geometry 100x10+513+1120 -T "Messages" -bg black -fg green -e tail -f /var/log/messages
      
    • Μια ΜΕΓΑΛΗ έλλειψη του FVWM2 όπως έρχεται το config του, είναι ένα είδος taskbar, η οποία να δείχνει ποια παράθυρα υπάρχουν, και να βοηθάει στην μεταξύ τους εναλλαγή. Αυτό το πρόβλημα λύνεται με τη χρήση του module "FvwmTaskBar":
       +      "I"     Module  FvwmTaskBar 
      
    Για Restart (Οι παρακάτω δηλώσεις θα εκτελούνται όταν κάνουμε restart τον FVWM2). Τα βήματα 2, 4 και 5 επαναλαμβάνονται σε αυτήν τη δήλωση:
     AddToFunc RestartFunction
     +      "I"     Exec xterm -geometry 83x10+0+1120 -bg black -fg green -T "XMessages" -e tail -f /root/.X.err
     +      "I"     Exec xpmroot /root/pics/skull.xpm
     +      "I"     Exec xterm -ls -geometry 100x10+513+1120 -T "Messages" -bg black -fg green -e tail -f /var/log/messages
    
    Εννοείται ότι οι original δηλώσεις για xmessages, xpmroot αφήνουν το μάταιο τούτο config file :-)
    Η Exit function αφήνεται όπως έχει.
  5. Functions - Το ψωμί της υπόθεσης, ή αλλιώς, "όλα τα λεφτά!". Εδώ δηλώνουμε τις functions, κοινώς δηλαδή τι γίνεται όταν λαμβάνει χώρα κάποιο γεγονός (μπερδευτήκατε;), π.χ. κάνουμε κλικ σε ενα button του FvwmButtons. Μια function, προκειμένου να δηλώσουμε την εμφάνιση ενός menu με επιλογές, έχει την εξής μορφή:
    AddToMenu OnomaTisFunctionPopUp "Onoma Tis Function" Title
    ...Εδώ μέσα δηλώσεις για το τι περιλαμβάνει η function...
    # end popup OnomaTisFunction
    
    Εξηγήσεις:
    Με την λέξη "AddToMenu" δηλώνουμε μια function η οποία θα κάνει PopUp μια λίστα με εντολές. Μετά δηλώνεται το όνομα της function. Στην περίπτωσή μας, αυτό είναι "OnomaTisFunctionPopUp". Δηλαδή, όποτε θέλουμε να αναφερθούμε στη function αυτή, θα χρησιμοποιούμε το όνομα αυτό. Προσοχή, το όνομα της function δεν μπορεί να έχει κενά ανάμεσα στα γράμματα, ούτε κάποιους ειδικούς χαρακτήρες.
    ΣΗΜΕΙΩΣΗ: Στην πραγματικότητα, με τη δήλωση "AddToMenu" δεν δηλώνουμε μια function, αλλά ένα menu, που είναι κατά κάποιο τρόπο μια function, απλά το μόνο που μπορεί να κάνει είναι να εμφανίζει μια λίστα. Για λόγους απλούστευσης όμως, θα θεωρούμε και τα menus ως functions. Κατόπιν, δηλώνεται το όνομα που θέλουμε να εμφανίζεται στην ανώτερη θέση της λίστας, δηλαδή ένα όνομα που περιγράφει τι εντολές περιέχονται στη λίστα, και μετά την ειδική λέξη "Title". Ένα παράδειγμα είναι π.χ. "Shells", ή "My Programs". Εδώ επιτρέπονται και κενά, και ειδικοί χαρακτήρες (Για περισσότερες πληροφορίες, κοιτάξτε το manual page του fvwm2). Εάν κάποιος δεν θέλει να εμφανίζεται καθόλου τίτλος, απλά δεν γράφει έναν και ΔΕΝ βάζει την λέξη Title μετά το όνομα της Function.
    ... Μετά οι δηλώσεις για τα περιεχόμενα της λίστας (εξηγούνται παρακάτω, υπομονή παρακαλώ :ο) )...
    Τέλος, εάν θέλει κανείς μπορεί για λόγους ευκολίας ανάγνωσης και μόνο να βάλει ένα comment-out και μετά να δηλώσει "end popup onomatisfunction". Αυτό είτε το βάλει κανείς είτε δεν το βάλει, ένα και το αυτό. Απλά, για να είναι ξεκάθαρο που τελειώνει η δήλωση της function καλό θα ήταν να το δηλώνετε.
    Και τώρα οι δηλώσεις για το τι θα περιλαμβάνει η PopUp λίστα που θα εμφανίζεται. Γενικά, μια δήλωση έχει ως εξής:
     +  "Onoma entolis%onomaicon.xpm" Kanekati
    
    Όπου:
    • Onoma entolis είναι το όνομα της εντολής που θα εμφανίζεται σε μία PopUp λίστα, π.χ. StarOffice, ή BitchX. Προσοχή στο ότι αυτό το όνομα δεν είναι η "πραγματική" εντολή που θα εκτελεστεί από τον WM. Είναι απλά ένα όνομα, ένα "alias". Κατόπιν, τοποθετούμε το σύμβολο "%" για να διαχωρίσουμε το alias από το filename του icon που θέλουμε να χρησιμοποιήσουμε για το alias αυτό, και ταυτόχρονα να δηλώσουμε ότι το icon θέλουμε να εμφανιστεί δίπλα στο alias (χρησιμοποιώντας το σύμβολο "$" αντί του "%" δηλώνουμε ότι θέλουμε το icon να εμφανιστεί πάνω από το alias). Προσοχή στο ότι η συνένωση αυτών των δύο δηλώσεων πρέπει να είναι μέσα σε εισαγωγικά (double quotes: ").
    • Ακολουθεί η εντολή που θέλουμε να πραγματοποιηθεί. Αυτή μπορεί να είναι είτε μια κανονική εντολή που θα εκτελοέσαμε εμείς στο shell, είτε μια εντολή προς τον WM να εμφανίσει μια άλλη PopUp λίστα. Για να εκτελέσει ο WM ένα πρόγραμμα, δηλώνουμε:
       +  "Onoma entolis%onomaicon.xpm" Exec enaprogramma
      
      π.χ., για να εκτελέσουμε ένα bash shell, δηλώνουμε:
       +  "Bash shell%bash.xpm" Exec bash
      
      Άλλο παράδειγμα, για το XISP:
       +  "XISP%xisp.xpm" Exec xisp
      
    Αν θέλουμε, μπορεί αντί να εκτελεστεί μια εντολή, να εμφανιστεί μια άλλη PopUp λίστα. Για να το κάνουμε αυτό, δηλώνουμε:
     +  "List of programs%programs.xpm" PopUp ProgramsPopUp
    
    όπου ProgramsPopUp μια function με το όνομα αυτό.
    Γνωρίζοντας τα παραπάνω ας αρχίσουμε λοιπόν να γράφουμε/τροποποιούμε τις functions που θα χρειαστούμε, αφού σκεφτούμε πρώτα τι χρειαζόμαστε από ένα WM. Χρειαζόμαστε λοιπόν:
    1. Μια function για να χειριζόμαστε διάφορες παραμέτρους του WM (modules, exit/restart, start another WM), βοήθεια για τον WM και τα modules του, καθώς και για reboot/halt του συστήματος.
    2. Μια function για ανεύρεση αρχείων.
    3. Μια function για βοήθεια
    4. Μια function για να ξεκινάμε ένα shell (Το γιατί πρέπει να είναι ξεχωριστή αυτή η function από τις άλλες είναι θέμα εργονομίας: Ένα shell συνήθως εκτελείται αρκετές φορές παραπάνω από οποιοδήποτε άλλο πρόγραμμα.)
    5. Μια function για γενικό configuration του συστήματος
    6. Μια function για να τρέχουμε κάποια συχνά χρησιμοποιούμενα προγράμματα μας.
    7. Μια function για άμεση πρόσβαση σε δισκους, CD-ROM, Floppy, κ.τ.λ.
    Για την πρώτη function, θα χρησιμοποιήσουμε μια υπάρχουσα. Αυτή είναι η thiswmpopup:
    ###############################################################################
    #
    # thiswmpopup
    #
    ###############################################################################
    
    AddToMenu thiswmpopup "Fvwm2"   Title
    
     + "Other window managers%small.icon_warning_3d.xpm%"   Popup otherwmpopup
     + "Fvwm2 Modules%small.install_3d.xpm%"        Popup modulepopup
     + "Configuration%small.checklist2_3d.xpm%"     Popup susewmpopup
     + "Fvwm2 Man Pages%small.xman3d.xpm%"  Popup wmmanpopup
     +      ""      Nop
     + "Restart Fvwm2%small.restart_suse_3d.xpm%"   Restart fvwm2
     + "Exit Fvwm2 and X%small.exit.xpm%"   Function QuitSave 
    
    # end popup thiswmpopup
    

    στην οποία θα προσθέσουμε τις εξής 2 γραμμές:


     + "Reboot System" Exec Reboot
     + "Halt System" Exec Halt
    

    για να κάνουμε reboot & halt αντίστοιχα όλο το σύστημα.

    Δεύτερη function είναι η function που μας βοηθά στο να βρούμε κάποιο αρχείο γρήγορα, χωρις να θυμόμαστε πολύπλοκες συντάξεις εντολών, π.χ. της find:


    ############################################################
    #
    # findpopup
    #
    ############################################################
    
    AddToMenu findpopup "Find"      Title
     +      "Find a file*find.xpm*" Exec xterm -bg black -fg green -e findfile
    
    # end popup findpopup
    

    To findfile είναι ένα shell script που έχει γραφεί με σκοπό τον προαναφερθέντα, και είναι το εξής:

    echo "Filename?"
    read filename
    echo "Search where?"
    read pathname
    find $pathname -name $filename
    echo "Done, press enter to exit"
    read anykey
    exit
    

    Η τρίτη function είναι η function που θα μας εμφανίζει τα σχετικά με help, documentation, κ.τ.λ. Συγκεκριμένα, θα τρέχει το xman για να διαβάσουμε κάποια man page, μας ανοίγει τον xfilemanager στο /usr/doc/howto/en/ ή στο /usr/doc/howto/el/ :


    ############################################################
    #
    # helpmepopup
    #
    ############################################################
    
    AddToMenu helpmepopup "Help"    Title
     +      "Manual Pages%small.xman3d.xpm%" Exec xman
     +      "Greek HOWTO's%help1.xpm%" Exec xfilemanager -rootDir /usr/doc/howto/el -singleWindow
     +      "English HOWTO's%help1.xpm%" Exec xfilemanager -rootDir /usr/doc/howto/en -singleWindow
    
    # end popup findpopup
    

    Με την τέταρτη function θα εμφανίζεται ένα xterm, στοιχείο πολύ βασικό στο Πραγματικό Λειτουργικό :-)


    ############################################################
    #
    # runmepopup
    #
    ############################################################
    
    AddToMenu runpopup "Shells"     Title
     +      "Old-school Xterm%small.greenterm.xpm%" Exec xterm -bg black -fg green
    
    # end popup findpopup
    

    Με την πέμπτη function θα εμφανίζεται μια λίστα με διάφορες επιλογές για configuration, π.χ. για kernel configuration, εκτέλεση του yast (Για S.u.S.E. μόνο!), καθώς και για configuration των Χ:


    ############################################################
    #
    # mesettingspopup
    #
    ############################################################
    
    AddToMenu mesettingspopup "Settings"    Title
     +      "Yast%small.yast_suse_3d.xpm%" Exec xterm -bg balck -fg green -e yast
     +    "Kernel Configuration" Exec xterm -bg black -fg green -e mkmc
     +      "X configuration"       Exec xterm -bg black -fg green -e Xconfig
    
    # end popup mesettingspopup
    

    Με την έκτη function θα εμφανίζεται μία λίστα με διάφορα προγράμματα που θα χρησιμοποιούνται συχνά - για αυτό και η ανάγκη για μια δικιά τους function. Κόφτε και ράφτε κατά τα μέτρα σας :-) :


    ############################################################
    #
    # meprogramspopup
    #
    ############################################################
    
    AddToMenu meprogramspopup "Programs"    Title
     +      "Netscape%netscape1.xpm%" Exec netscape
     +      "X11Amp%x11amp.xpm%" Exec x11amp
     +      "The Gimp%gimp.xpm%" Exec gimp
     +      "GRio%grio.xpm%" Exec grio
     +      "KEdit%kedit.xpm%" Exec kedit
     +      "Bitchx%bitchx.xpm%" Exec bitchx
     +      "Kmix%kmix.xpm%" Exec kmix
     +      "XIsp%xisp.xpm%"        Exec xisp -nohints
     +      "Acrobat Reader%acrobat.xpm" Exec xpdf
    
    # end popup findpopup
    

    Τέλος, η function για πρόσβαση στα διάφορα drives:


    ############################################################
    #
    # medrivespopup
    #
    ############################################################
    
    AddToMenu medrivespopup "Drive I/O"     Title
     +      "Root filesystem%hdd.xpm" Exec xfilemanager -rootDir / -singleWindow
     +      "CD-ROM%cdrom.xpm" Exec xfilemanager -rootDir /cdrom -singleWindow
     +      "Floppy%floppy.xpm" Exec xfilemanager -rootDir /floppy -singleWindow
    
    # end popup medrivespopup
    

    Σημείωση: Αν χρησιμοποίησετε τις functions αυτές, θα παρατηρήσετε ότι πρέπει να κρατάτε πατημένο το πλήκτρο του πόντικα σας ή του πληκτρολογίου σας για να παραμείνει η λίστα στην οθόνη. Για να το αποφύγετε αυτό, κάντε το εξής: Γράφτε μια function σαν την παρακάτω, για κάθε function που θέλετε να συμβαίνει αυτό, και στη συνέχεια αντί να καλείτε την πρωτότυπη, καλέστε την καινούργια. Π.χ., για την medrivespopup, γράφουμε την εξής function:

    AddToFunc medrivespopupfunc
     +      "I"     Popup medrivespopup
    # end function medrivespopupfunc
    
  6. Η δήλωση "Style" - Με αυτήν μπορούμε να δηλώσουμε συγκεκριμένες ιδιότητες που θα έχει κάποιο ή όλα τα παράθυρα. Αυτή η δήλωση δεν γίνεται μόνο μια φορά αλλά πολλές - τόσες ώστε να αποδώσουμε όλες τις επιθυμητές ιδιότητες στα παράθυρά μας. Μια δήλωση style έχει ως εξής:
    style "titleparathirou" idiotita1, idiotita2, idiotia3, κ.τ.λ.
    
    όπου titleparathirou ο τίτλος του παραθύρου στο οποίο θέλουμε να δώσουμε τις ιδιότητες idiotita1, idiotita2, idiotita3, κ.τ.λ. Αν αυτές τις ιδιότητες θέλουμε να τις αποδώσουμε σε όλα τα παράθυρα, τότε δηλώνουμε:
    style "*" idiotita1, idiotita2, idiotia3, κ.τ.λ.
    
    Άν ακόμα έχουμε ένα παράθυρο του οποίου ο τίτλος δεν είναι απολύτως σταθερός, όπως π.χ. το xosview, του οποίου ο τίτλος εξαρτάται από το όνομα του μηχανήματος (Hostname), τότε μπορούμε να δηλώσουμε:
    style "katistathero*" idiotita1, idiotita2, idiotia3, κ.τ.λ.
    
    όπου katistathero είναι το μέρος του τίτλου τού παραθύρου που μένει σταθερό. Ας αρχίσουμε λοιπόν τις style δηλώσεις που μας ενδιαφέρουν:
    • Το module FvwmTaskbar είναι μια Taskbar η οποία έχει κουμπιά με τα προγράμματα που τρέχουν. Επειδή είναι αρκετά χαζό να συμπεριλαμβάνεται ο εαυτός της, θα της δώσουμε την ιδιότητα WindowListSkip, η οποία εξαιρεί την εμφάνιση του προγράμματος στο οποίο αποδίδουμε την ιδιότητα, στην Taskbar. Ακόμα, δεν θέλουμε η Taskbar να έχει τίτλο και "decorations", για αυτό της δίνουμε την ιδιότητα NoTitle. Ακόμα, θέλουμε να είναι συνεχώς ορατό, οπότε του δίνουμε την ιδιότητα StaysOnTop. Έτσι έχουμε:
      Style "FvwmWinList" NoTitle, WindowListSkip, StaysOnTop
      
    • Το εικονίδιο του xterm είναι επειικώς απαράδεκτο, οπότε:
      Style *xterm*   Icon greenterm.xpm
      
      Με τη δήλωση αυτή, δηλώνουμε ότι θέλουμε όταν το xterm γίνεται iconified, το εικονίδιό του να είναι το greenterm.xpm
    • Εμένα μου αρέσουν αυτά τα χρώματα στα inactive παράθυρά μου:
      Style   "*"             BackColor Purple4
      Style   "*"             ForeColor Red
      
      BackColor to background χρώμα του παραθύρου, ForeColor το χρώμα των γραμμάτων του τίτλου του παραθύρου. Αν δεν σας αρέσουν, ξέρετε τι να κάνετε :-P
  7. FvwmButtons - Το FvwmButtons είναι ένα Module του FVWM, το οποίο είναι ουσιαστικά μια μπάρα με κουμπιά, και εμείς διαλέγουμε πόσα κουμπιά θα έχει, τι θα κάνει το καθένα, κ.τ.λ. Αρχίζουμε με τα χρώματα, τών οποιων η δήλωση είναι αρκετά απλή:
    *FvwmButtonsFore                Green
    *FvwmButtonsBack                Purple4
    
    και ύστερα η θέση του στο desktop, η οποία είναι ελαφρώς μετατοπισμένη προς τα κάτω, γιατί επάνω από το FvwmButtons θα τοποθετηθεί η TaskBar:
    *FvwmButtonsGeometry    +0+31
    
    Άν θέλετε, μπορείτε όπως εγώ να βγάλετε τις δηλώσεις των xclock, xeyes, και asclock, γιατί καταλαμβάνουν πολύτιμο χώρο. Εξ άλλου, η Taskbar διαθέτει ρολόι στο δεξί άκρο της. Έχουμε λοιπόν:
    #*FvwmButtons  - - Swallow "FvwmXeyes" Exec xeyes -name "FvwmXeyes" -geometry +0+0 -bg grey67 &
    #*FvwmButtons  - - Swallow "FvwmXclock" Exec xclock -name "FvwmXclock" -geometry +0+0 -padding 1 -bg grey67 &
    #*FvwmButtons  - - Swallow "asclock" Exec asclock -position +0+0 -shape -led green  &
    
    Για το αν το coolmail αξίζει το χώρο που πιάνει, εγώ προσωπικά νομίζω πως όχι, οπότε... Αν βέβαια εσείς θέλετε να το έχετε, ε, τι να κάνουμε... :-) Και τώρα οι ζουμερές δηλώσεις ;-)
    *FvwmButtons "" shutdown.xpm Function barthiswmpopupfunc
    

    Με την παραπάνω δηλώνουμε ότι θέλουμε να προσθέσουμε ένα button στο FvwmButtons, το οποίο δεν έχει καθόλου κείμενο πάνω του (Τα εισαγωγικά είναι κενά. Ο λόγος είναι ότι στη συγκεκριμένη περίπτωση, το εικονίδιο έχει πάνω του το περιγραφικό κείμενο, π.χ. "I/O Access", ή "Help".), ενώ όταν κάνουμε αριστερό κλικ πάνω εκτελείται η function barthiswmpopupfunc, η οποία με τη σειρά της εμφανίζει και κρατάει σταθερό στην οθόνη το thiswmpopup menu.
    Ομοίως λοιπόν για τις άλλες δηλώσεις:


    *FvwmButtons "" cfind.xpm Function findpopupfunc
    *FvwmButtons "" help.xpm Function helpmepopupfunc
    *FvwmButtons "" run.xpm Function runpopupfunc
    *FvwmButtons "" settings.xpm Function mesettingspopupfunc
    *FvwmButtons "" programs.xpm Function meprogramspopupfunc
    

    Τα άλλα buttons (SuSE, Graphics, Tools, Shells) μας αποχαιρέτησαν (#).

  8. FvwmTaskBar - Όπως αναφέρθηκε και προηγουμένως, η TaskBar είναι μια μπάρα, πάνω στην οποία υπάρχουν buttons τα οποία χρησιμοποιεί κανείς για να κάνει iconify/maximise ένα πρόγραμμα. Εκτός αυτών, η Taskbar έχει και ένα button στο οποίο μπορούμε να αναθέσουμε κάποια function ή menu, παρόμοιο με το "Start" button ακατανόμαστου αλειτούργητου συστήματος που άρχισε να κυκλοφορεί το 1995 ;-) Οι δηλώσεις που έχω εγώ για την TaskBar είναι:
    ###############################################################################
    #                                                                             #
    #   Task Bar                                                                  #
    #                                                                             #
    ###############################################################################
    *FvwmTaskBarGeometry +0+0
    *FvwmTaskBarFore Green
    *FvwmTaskBarBack Purple4
    *FvwmTaskBarUseSkipList
    *FvwmTaskBarShowTips
    *FvwmTaskBarStartName Main()
    

    Επεξηγήσεις: Οι τρεις πρώτες δηλώσεις είναι αρκετά απλές. Η τέταρτη (*FvwmTaskBarUseSkipList) δίνει εντολή στην TaskBar να "δίνει σημασία" στην ιδιότητα WinListSkip ενός παραθύρου. Αν αυτή η δήλωση παραλειφθεί, παράθυρα στα οποία έχει δωθεί η ιδιότητα WinListSkip θα φαίνονται κανονικά και με το Νόμο στην TaskBar.

Φυσικά δεν είναι αναγκαστικό να κάνετε ότι έκανα και εγώ. Πειραματιστείτε, ψάξτε, και όλο και κάτι πιο καλό θα βρείτε.


Valid HTML 4.01!   Valid CSS!