Author: Jani

  • [Ratkaisu] Web-kamerakuvan lähettäminen www-palvelimella näytettäväksi

    Lähtökohta
    Olen kytkenyt web-kameran tietokoneeseeni. Kameralle on ajurit, ja se toimii, eli pystyn katsomaan kameran ottamaa kuvaa paikallisesti esimerkiksi xawtv:llä.
    Minulla on käyttäjätunnus ja salasana ftp-palvelimelle, ja niitä käyttäen pystyn päivittämään web-sivuiltani maailmalle näkyvää sisältöä. Palvelimella on web-sivu, joka näyttää palvelintilaani tallennetun webcam.jpg -nimisen tiedoston, ja päivittää, eli lataa kuvan automaattisesti uudestaan kerran minuutissa.
    Omalla koneellani, kotihakemistossani on bin-alihakemisto ja se on määritelty komentojenhakupolkujen (PATH-muuttuja) joukkoon komentoriviprofiilissani. Olen tallentanut bin-hakemistoon rhythmbox-print-playing -komentojonotiedoston ja todennut sen toimivan.
    Pakettienhallinnassa ftp, came, imagemagick ja rhythmbox ovat asennettuna.
    Ongelma
    Haluan, että tietokoneeni tallentaa web-kamerani näkymän kuvatiedostoon, lisää tiedostoon tallennetun kuvan päälle tekstinä kuvanottohetken ja lisäksi tiedot samalla hetkellä Rytmilaatikko-musiikkisoittimessa soivasta kappaleesta, ja lähettää sen jälkeen kuvasta kopion web-palvelimelle. Haluan, että näin tapahtuu automaattisesti kerran minuutissa sen jälkeen, kun olen antanut käskyn, ja aina siihen saakka, että annan kieltävän käskyn.
    Ratkaisu
    1. Luon komennolla kotihakemistooni .camE -alihakemiston. Hakemiston luomiseen käytän mkdir ~/.camE -komentoa. Tähän hakemistoon tallennan jatkossa osan tarvittavista tiedostoista.
    2. Luon camE:lle kuvan ottamiseen liittyvät parametrit määrittelevän asetustiedoston.
      Avaan komennolla gedit ~/.camE/camErc asetustiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:

      [ftp]
      do = 0
      
      [grab]
      archive_shot_every = 0
      logfile = /home/jani/.camE/camElog
      device = /dev/video0
      temp_file = /home/jani/.camE/webcam.png
      blockfile = /home/jani/.camE/BLOCK
      
      # lag reduction, takes 5 shots, discards
      # the first 4, thus clearing mmap buffers
      lag_reduce = 5
      
      width  = 320
      height = 240
    3. Luon kuvan web-palvelimelle lataamista varten ftp-asetustiedoston.
      1. Avaan komennolla gedit ~/.netrc asetustiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
        machine ftp.palvelin.com
        login tunnukseni
        password salasanani
        
        macdef putcampic
        	prompt off
        	lcd /home/jani/.camE
        	cd kuvakansio
        	bin
        	put webcam.jpg
        	quit
      2. Muutan komennolla chmod 600 ~/.netrc asetustiedoston oikeuksia niin, että kukaan muu kuin minä ei voi sitä avata, sillä tiedosto sisältää ftp-palvelimen salasanani salaamattomassa muodossa.
    4. Luon komentojonotiedoston kuvan päälle tulevien tekstien latomiseen.
      1. Avaan komennolla gedit ~/bin/camprint komentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
        #!/bin/sh
        
        # kirjasimen voi säätää tästä.
        FONT="-font Helvetica -pointsize 10"
        
        # ladotaan komentorivillä annetut tekstit.
        # ensimmäinen parametri ladotaan ylälaitaan,
        # toinen alalaitaan.
        convert webcam.png \
        	-gravity north -stroke '#000C' -strokewidth -2 \
        	$FONT -annotate 0 "$1" \
        	-stroke none $FONT -fill white -annotate 0 "$1" \
        	-gravity south -stroke '#000C' -strokewidth -2 \
        	$FONT -annotate 0 "$2" \
        	-stroke none $FONT -fill white -annotate 0 "$2" \
        	-quality 80 webcam.jpg

        Lataa camprint (498 tavun komentojonotiedosto)

      2. Muutan komennolla chmod +x ~/bin/camprint komentojonotiedoston oikeuksia niin, että siitä tulee suoritettava.
    5. Luon komentojonotiedoston, joka kerää toiminnot yhteen. Se ottaa kameralla kuvan, latoo kuvan päälle tekstit ja lataa kuvatiedoston sen jälkeen web-palvelimelle.
      1. Avaan komennolla gedit ~/.camE/camEsh komentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
        #!/bin/sh
        
        cd /home/jani/.camE/
        
        if [ -f BLOCK ]
        then
          exit
        fi
        
        # napataan kuva.
        camE -s -c camErc
        
        # parhaillaan soivan kappaleen esittely.
        NP="`/home/jani/bin/rhythmbox-print-playing`"
        
        # kuvanottohetki.
        DT=$(date -d "`stat -c %y webcam.png | cut -d. -f1`" | \
        	cut -d+ -f1 | sed 's/[ ]*$//')
        
        # ladotaan tekstit.
        /home/jani/bin/camprint "$NP" "$DT"
        
        # jos kuvan luominen on onnistunut,
        # siirretään se palvelimelle.
        if [ -f webcam.jpg ]
        then
          # tämä vaatii toimivan, putcampic-nimisen
          # makron ~/.netrc:ssä.
          echo "\$ putcampic" | ftp mummila.atspace.com
          rm webcam.jpg webcam.png
        fi
      2. Muutan komennolla chmod +x ~/.camE/camEsh komentojonotiedoston oikeuksia niin, että siitä tulee suoritettava.
    6. Luon komentojonotiedostot kamerakuvan lähetyksen käynnistystä ja lopettamista varten.
      1. Avaan komennolla gedit ~/bin/camon käynnistyskomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
        #!/bin/sh
        
        rm -f /home/jani/.camE/BLOCK
      2. Avaan komennolla gedit ~/bin/camoff lopetuskomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
        #!/bin/sh
        
        touch /home/jani/.camE/BLOCK
      3. Muutan molempien komentojonotiedostojen oikeuksia komennolla chmod +x ~/bin/camon ; chmod +x ~/bin/camoff niin, että niistä tulee suoritettavia.
      4. Asetan lopuksi komennolla camoff kuvien lähettämisen pois päältä -tilaan.
    7. Luon crontab-tiedostoon rivin, joka suorittaa tehtävät kerran minuutissa aina silloin kun olen niin määrännyt.
      Avaan komennolla crontab -e crontab-tiedostoni muokattavaksi. Lisään tiedostoon seuraavan rivin:

      * * * * * /home/jani/.camE/camEsh

    Kaikkien näiden toimenpiteiden jälkeen kuvan ottaminen ja web-palvelimelle päivittäminen tapahtuu kerran minuutissa sen jälkeen, kun olen komentanut camon, ja jatkuu kunnes komennan camoff.

    Huomautuksia
    • Tämän ratkaisun lähtökohdissa mainittu webkamerakuvaa näyttävä sivuni löytyy webistä.
    • CamE osaa itsekin latoa tekstiä ottamansa kuvan päälle ja kopioida kuvan palvelimelle ftp:tä käyttäen. Jälkikäsittelymahdollisuuksia on kuitenkin enemmän, kun jälkikäsittelyyn käytetään ImageMagickia. Tässä ratkaisussa käytin melkein kaikkein yksinkertaisinta tekstinladontatapaa, joka ei juurikaan poikkea siitä mihin camE pystyisi. ImageMagickin mahdollistamia erilaisia hienoja ladontatapoja on esitelty Examples of ImageMagick Usage -oppaassa.
    • Komennolla camE -s -c ~/.camE/camErc voi testata CamE:n asetustiedoston, ~/.camE/camErc:n toimivuutta. Komennon ajamisen jälkeen asetustiedostossa olevan temp_file -parametrin määrittelemässä paikassa pitäisi olla web-kameran ottama kuva.
    • Komennolla echo "\$ putcampic" | ftp ftp.palvelin.com voi testata ftp-asetustiedoston, ~/.netrc:n toimivuutta sen jälkeen, kun ~/.camE -hakemistossa on webcam.jpg -niminen tiedosto.
  • [Ratkaisu] Cronin suorittama komentojonotiedosto ei toimi

    Lähtökohta
    Olen luonut komentojonotiedoston komentojono1, joka kutsuu komentojonotiedostoa komentojono2 seuraavanlaisella rivillä:

    komentojono2 parametri1 parametri2

    Olen tallentanut molemmat komentojonotiedostot kotihakemistoni alla olevaan bin-alihakemistoon. Bin-alihakemisto on määritelty komentojenhakupolkujen (PATH-muuttuja) joukkoon komentoriviprofiilissani. Olen muuttanut molempien komentojonotiedostojen oikeuksia niin, että molemmat toimivat komentoriviltä suoritettuina.
    Olen lisännyt komentojono1:n crontab-tiedostooni siten, että se suoritetaan kerran minuutissa:

    * * * * * /home/jani/bin/komentojono1
    Ongelma
    Kerran minuutissa automaattisesti suoritettuna komentojono1 ei toimi odottamallani tavalla, niin kuin se toimii komentoriviltä suoritettuna.
    Ongelman syy
    Olen kutsunut komentojono1:ssä komentojono2:ta ilman täyttä hakemistopolkua sen edessä. Kun cron suorittaa komentojono1:n, se ei lue komentoriviprofiiliani sitä ennen, eikä siksi tiedä etsiä komentojono2:ta kotihakemistoni alla olevasta bin-hakemistosta.
    Ratkaisu
    Muutan komentojono1:tä niin, että komentojono2:n kutsu tehdään käyttämällä täyttä hakemistopolkua itse tiedoston nimen edessä:

    /home/jani/bin/komentojono2 parametri1 parametri2

    Tämän jälkeen komentojono1:n automaattinen suoritus toimii tarkoittamallani tavalla.

    Huomautuksia
    • Yleisesti ottaen cronin suoritus poikkeaa vuorovaikutteisesta komentorivisuorituksesta siksi, että Ubuntussa käytettävien vuorovaikutteisten komentorivien tulkkina toimii Bash, ja cron taas puolestaan käyttää /bin/sh -komentoa, joka on symbolinen linkki dash-tulkkiin. Kun cron ajaa dashin ei-vuorovaikutteisena, se ei lue mitään profiilitiedostoja, ja siten nämä kaksi ympäristöä (crontab ja vuorovaikutteinen komentorivitulkkisovellus kuten Pääte) voivat poiketa toisistaan huomattavastikin.
    • Pitemmän päälle tässä kuvattua elegantimpi ratkaisu olisi luultavasti luoda komentojonotiedosto cron-suoritus, joka ottaa parametrinä komentojonotiedoston parametreineen. Cron-suoritus lukisi komentoriviprofiilini ja lisäksi selvittäisi DBUS_SESSION_BUS_ADDRESS -muuttujan arvon ennen kuin suorittaisi sille komentorivillä annetun komentojonotiedoston parametreineen.

      Sen jälkeen lisäisin /home/jani/bin/cron-suoritus -komentojonon aina varsinaisen komentojonotiedoston ja sen parametrien eteen aina, kun haluaisin suorittaa komentojonotiedoston crontabin kautta automaattisesti. Silloin crontabin suorittamien komentojonotiedostojen ajo muistuttaisi enemmän niiden suorittamista komentoriviltä ilman, että jokaiseen komentojonotiedostoon täytyisi tehdä crontabista ajamisen huomioonottavia tarkennuksia ja erityisehtoja.

      Koska cron-suoritus lukisi komentoriviprofiilini ennen sille annetun komentojonon suorittamista, ei tämän komentojonon eteen tarvitsisi crontabissa lisätä täyttä hakemistopolkua:

      * * * * * /home/jani/bin/cron-suoritus komentojono parametri
  • [Ratkaisu] Cron ei pidä lokikirjaa

    Lähtökohta
    Olen lisännyt tavallisen käyttäjän tiliini liittyvään crontab-tiedostooni kerran minuutissa suoritettavan komentojonon.
    Olen muokannut /etc/syslog.conf -tiedostoa siten, että siinä on seuraavat rivit:

    cron.*				/var/log/cron.log

    ja

    *.=info;*.=notice;*.=warn;\
    	auth,authpriv.none;\
    	cron,daemon.none;\
    	mail,news.none		-/var/log/messages

    Olen tämän jälkeen käynnistänyt cronin uudestaan komentamalla sudo /etc/init.d/cron restart. Haluan, että cron kirjaa lokia /var/log/cron.log -tiedostoon.

    Ongelma
    Tiedostoa /var/log/cron.log ei ole, eli cron ei pidä lokia lainkaan, tai se ei pidä lokia haluamassani tiedostossa.
    Ongelman syy
    En ole käynnistänyt syslogd:tä uudestaan.
    Ratkaisu
    Käynnistän syslogd:n uudestaan komentamalla sudo /etc/init.d/sysklogd restart. Sen jälkeen /var/log/cron.log alkaa täyttyä cronin lokitiedoilla.
    Huomautus
    Syslogd ilmoitti uudelleenkäynnistyksen yhteydessä seuraavaa:

    chown: tiedostoa "/var/log/cron.log" ei voi käsitellä: No such file or directory

    Ilmeisesti tämä ei kuitenkaan haittaa. Käynnistin syslogd:n välittömästi toisen kerran uudestaan, ja tällä kertaa se ei antanut virheilmoitusta.

  • [Ratkaisu] Cronin suorittama rhythmbox-client –print-playing-format ei toimi

    Lähtökohta
    Olen asentanut notification-daemon-paketin. Minulla on komentojonotiedosto, joka ajaa rhythmbox-client-ohjelman --print-playing-format -parametrilla, joka tulostaa muuttujaan tallennettavaksi Rytmilaatikko-musiikkisoittimen suoritushetkellä soittaman kappaleen nimen. Komentoriviltä suoritettuna komentojonotiedosto tulostaa kappaleen nimen muuttujaan tarkoittamallani tavalla. Olen asettanut komentojonotiedoston crontab-tiedostossani suoritettavaksi kerran minuutissa.
    Ongelma
    Cronin suorittaessa komentojonotiedostoni kappaleen nimi ei tulostu muuttujaan. Haluan sen tulostuvan muuttujaan samalla tavalla kuin komentoriviltä suoritettaessa.
    Ongelman syy
    Rytmilaatikko vaatii toimiakseen, että DBUS_SESSION_BUS_ADDRESS -niminen muuttuja on asetettu. Cronin suorittaessa komentojonotiedostoani muuttujaa ei kuitenkaan ole asetettu.
    Ratkaisu
    Teen komentojonotiedoston, joka lukee käynnissä olevan rhythmbox-client -prosessin näkemän DBUS_SESSION_BUS_ADDRESS -muuttujan arvon ja ajaa uuden rhythmbox-clientin halutuilla parametreilla.

    #!/bin/sh
    
    user=`whoami`
    pid=`pgrep -u $user notification-da | cut -d' ' -f 1`
    
    # find DBUS session bus for this session
    DBUS_SESSION_BUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS \
    	/proc/$pid/environ |sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
    
    # if it was successfull, then we either print it,
    # or export it or whatever, if we want
    if [ "x$DBUS_SESSION_BUS_ADDRESS" != "x" ]; then
        export DBUS_SESSION_BUS_ADDRESS
        # and we start using rhythmbox-client
        rhythmbox-client --no-start --print-playing-format "%aa: %tt"
    fi

    Lataa rhythmbox-print-playing (530 tavun komentojonotiedosto)

    Tallennan komentojonotiedoston tiedostonimellä rhythmbox-print-playing kotihakemistossani olevaan bin-alihakemistoon, minkä jälkeen muutan sen oikeuksia chmod +x ~/bin/rhythmbox-print-playing -komennolla niin, että voin suorittaa sen. Sitten muutan Lähtökohta-otsikon alla mainitsemaani, alun perin rhythmbox-clientia suoraan kutsunutta komentojonotiedostoa niin, että rhythmbox-clientin sijaan se suorittaa nyt rhythmbox-print-playing -tiedostoni. Sen jälkeen parhaillaan soiva kappale tulostuu komentojonossa muuttujaan myös silloin, kun komentojonon suoritus tapahtuu cronin tekemänä.

    Huomautus
    Mikään löytämistäni valmiista komentojonotiedostoista (esimerkki 1, 2) ei toiminut sellaisenaan. Yllä oleva komentojonotiedosto on niiden perusteella tekemäni oma sovellus.
  • [Ratkaisu] Crontabin muokkaaminen vimillä

    Lähtökohta
    Haluan muokata crontab-tiedostoani. Olen asentanut vim-tekstieditorin.
    Ongelma
    Haluan käyttää crontabin muokkaamiseen vim-editoria. Komento crontab -e avaa kuitenkin nano-tekstieditorin.
    Ongelman syy
    Oletustekstieditoriksi on määritelty nano.
    Ratkaisu
    Määrittelen vimin oletustekstieditoriksi komentamalla ensin sudo update-alternatives --config editor avaamastani Päätteestä. Komento antaa listan tarjolla olevista vaihtoehdoista. Vaihtoehtojen joukossa on /usr/bin/vim.basic. Valitsen sen oletuseditoriksi kirjoittamalla kehotteeseen sitä vastaavan numeron ja painamalla rivinvaihtonäppäintä. Tämän jälkeen komento crontab -e avaa crontab-tiedostoni vimissä.
    Huomautus
    The How-To Geek -blogin artikkelissa update-alternatives -komennolle on annettu config-parametri virheellisesti, sillä sen edessä on yksi ajatusviiva (–). Oikea tapa on käyttää parametrin edessä kahta, näppäimistön useimmiten käytettyä viivanäppäintä painamalla saatavaa yhdysviivaa peräkkäin (–).
  • [Ratkaisu] Windows Live Messenger -tili ei toimi FireHOLin asennuksen jälkeen

    Lähtökohta
    Olen määritellyt Pidgin-pikaviestimessä Windows Live Messenger -tilin. Pystyn kirjautumaan tilille, jos en asenna palomuuria.

    Olen asentanut firehol-paketin, asettanut /etc/default/firehol -tiedostossa olevan START_FIREHOL -parametrin arvoksi YES, asentanut moblock-nfq -paketin ja muokannut /etc/firehol/firehol.conf -tiedostoa niin, että sen sisältö on Ubuntu Forumilla annetun esimerkin mukainen:

    version 5
    
    # Moblock chain
    iptables --new MOBLOCK
    iptables -A MOBLOCK -j NFQUEUE
    
    # Example udp ports
    server_exampleport_ports="udp/15001:15011"
    client_exampleport_ports="any"
    
    # "any" means any interface, you can substitute it
    # for eth0 or whatever.
    
    interface any world
    
            # Let torrent and exampleport through, and
            # filter them in moblock.
            server "exampleport" MOBLOCK
    
            # This will send http traffic directly
            # to accept instead of moblock
            # thus whitelisting it...
            client http accept
    
            # Filter all outgoing connections, and their replies.
            client all MOBLOCK

    Olen käynnistänyt järjestelmän uudelleen ja kirjautunut sisään. Sisäänkirjautumisen yhteydessä käynnistyväksi ja pikaviestitileilleni sisäänkirjautuvaksi asetettu Pidgin käynnistyy, ja siihen asettelemieni IRC- ja Gtalk-tilien sisäänkirjautuminen onnistuu.

    Ongelma
    Windows Live Messenger -tilin sisäänkirjautuminen ei onnistu. Pidgin ilmoittaa pitkän yhteydenottoyrityksen lopuksi Yhteys katkennut ja Yhteysvirhe palvelimelta Notification: Yhteyden muodostaminen epäonnistui.
    Ongelman syy
    Firehol-palomuuri on sulkenut Windows Live Messenger -tilille kirjautumisessa käytettävät portit 443 ja 1863.
    Ongelman ratkaisu
    Avaan tarvittavat portit, jonka jälkeen käynnistän palomuurin uudelleen ja käsken Pidginin kirjautumaan Windows Live Messenger -tililleni uudestaan.

    1. Avaan tarvittavat portit muokkaamalla /etc/firehol/firehol.conf -tiedostoa komentamalla sudo gedit /etc/firehol/firehol.conf avaamastani Päätteestä. Asetustiedoston avauduttua tekstieditorissa lisään siihen määrittelyn palvelulle, jonka nimeän wlm:ksi:
      # Windows Live Messenger
      server_wlm_ports="tcp/1863 tcp/443"
      client_wlm_ports="any"

      Sen jälkeen määrittelen nämä portit interface any world -osion alla avattaviksi:

              # Let Windows Live Messenger through
      	server "wlm" accept
      	client "wlm" accept

      Muutosten jälkeen tiedoston keskiosan tulisi näyttää seuraavalta, kun Lähtökohta-osiossa annettuun listaukseen lisäämäni rivit on korostettu lihavoinnilla:

      # Example udp ports
      server_exampleport_ports="udp/15001:15011"
      client_exampleport_ports="any"
      
      # Windows Live Messenger
      server_wlm_ports="tcp/1863 tcp/443"
      client_wlm_ports="any"
      
      interface any world
      
              # Let Windows Live Messenger through
      	server "wlm" accept
      	client "wlm" accept
      
              # Let torrent and exampleport through, and
    2. Muutokset tehtyäni ja tallennettuani käynnistän FireHOL-palomuurin uudestaan komentamalla Päätteestä sudo /etc/init.d/firehol restart
    3. Palomuurin käynnistyttyä uudestaan otan Windows Live Messenger -tilini pois käytöstä Pidginissä valitsemalla Tuttavalista-näkymän Käyttäjätilit-valikosta Windows Live Messenger -tilini alta kohdan Poista käytöstä. Sen jälkeen otan tilin uudestaan käyttöön valitsemalla Windows Live Messenger -tilini Käyttäjätilit-valikon Ota tili käyttöön -alivalikosta.

    Tämän jälkeen sisäänkirjautuminen Windows Live Messenger -tililleni onnistuu.

    Huomautus
    Fireholissa on varattu MSN:ää varten oma nimetty porttinsa, msn, mutta Windows Live Messenger käyttää eri portteja.
  • Kuinka saan hiiren osoittimen mukaan ruutukaappaukseen

    Lähtökohta
    Edessäni on työpöytänäkymä, johon olen avannut sovelluksen. Haluan ottaa sovelluksesta kuvaruutukaappauksen siten, että sovelluksen ikkunan osion koon muuttamisen mahdollisuutta kuvastava hiiren osoitin (kaksisuuntainen nuoli) tulee mukaan kuvaan.
    Ongelma
    Sovellukset → Apuohjelmat -valikon Ota kuvakaappaus -sovellus ei ota kuvakaappaukseen hiiren osoitinta. Myöskään PrtSc-näppäimellä avautuva kuvakaappauksen tallennus ei ota hiiren osoitinta mukaan kuvakaappaukseen.
    Ongelman syy
    Kuvakaappauksien ottamiseen tarkoitetut oletussovellukset eivät tue hiiren osoittimen ottamista mukaan kuvakaappaukseen.
    Ratkaisu
    Ei vielä tiedossa.
    Huomautuksia
    • Webmaster Tips -blogissa olevan kommentin mukaan Wink-nimisellä sovelluksella voi ottaa kuvakaappauksia jotka sisältävät hiiren osoittimen. Wink löytyy pakettivarastoista, mutta valitettavasti lupaus osoittimen sisältävien kuvakaappauksien ottamismahdollisuudesta pitää paikkansa vain osittain. Jos hiiren osoitin on sovellusikkunan osion kokoa muuttavan alueen päällä kuvakaappauksen ottamisen aikana, tuloksena olevassa kuvassa ei osoittimen kohdalla näy sama kaksisuuntainen nuoli kuin näytölläni todellisuudessa kuvan ottamishetkellä näkyy.
    • Creating Screencasts -artikkelin mukaan Xvidcap-nimisen sovelluksen asetuksissa on Capture Mouse Pointer -valitsin. En ole kokeillut kuvakaappauksien ottamista Xvidcapilla, sillä sovellus täytyisi asentaa Ubuntuun varsinaisten pakettivarastojen ulkopuolelta.
    • Osoittimellisen kuvakaappauksen voi mahdollisesti väärentää ottamalla kuvakaappauksen normaalisti ilman hiiren osoitinta, ja lisäämällä osoittimen kuvaan jälkikäteen esimerkiksi GIMP-kuvienkäsittelyohjelmalla. Tätä varten täytyy avata osoittimen ulkoasun sisältävä grafiikkatiedosto ja käyttää sen jälkeen kopiointia ja liimausta. Oletuskursorin grafiikkatiedostot ovat ilmeisesti /usr/share/icons/DMZ-White/cursors/ -hakemistossa, mutta ne ovat xcursor-tiedostomuodossa, enkä ole löytänyt pakettivarastoista ohjelmaa, jonka avulla ne pystyisi avaamaan GIMPissä. Pakettivarastojen ulkopuolella suoraviivaisin ratkaisu on ilmeisesti Gursor Maker -sovellus.