CALCURSE - tekst-gebaseerde organizer
calcurse
basis
calcurse
is een tekstgebaseerde kalender en planner. Het
helpt om overzicht te houden over afspraken en alledaagse taken. Een
aan te passen meldingssysteem herinnert de gebruiker aan komende
deadlines, en de curses-gebaseerde interface kan aangepast worden aan
de wensen van de gebruiker. Alle commando's zijn gedocumenteerd in een
online hulpsysteem.
Ik begon te denken aan dit project toen ik bijna afgestudeerd was in
de astrofysica... Het werd moeilijk om alles georganiseerd te houden
en ik had behoefte aan een goed hulpmiddel om me daar bij te helpen.
:)
Ik hou van programma's die gebruik maken van de tekst-interface, omdat
ze simpel, snel, overdraagbaar en efficient zijn, dus ik dacht eraan
om een simpele tekst-interface kalender te programmeren. Ook wilde ik
graag verder leren programmeren in de programmeertaal C
,
welke ik alleen in mijn vooropleiding had gebruikt. Zodoende zou ik
dus leren programmeren in C
, en mijn zaakjes voor elkaar
krijgen.
Helaas studeerde ik af voordat ik klaar was met calcurse
,
maar ik was nog steeds geboeid door het project, in de hoop dat het
ook voor anderen een handig programma zou zijn. En hier is dan het
resultaat...
Waarom de naam 'calcurse', vraagt u zich af? Het is simpelweg een
samentrekking van 'CALendar' en 'nCURSEs', de naam van de bibliotheek
die gebruikt wordt om de gebruikers-interface aan te sturen.
Calcurse
is multi-platform, neemt weinig systeembronnen
in beslag, en is snel en betrouwbaar. Het moet gebruikt worden binnen
een console of terminal, lokaal of op een aparte computer door middel
van een connectie met een programma zoals ssh.
Calcurse
kan op twee verschillende manieren gebruikt
worden: interactieve of niet-interactieve modus. De eerste modus zorgt
er voor dat men zijn eigen agenda bijna overal kan bekijken, dankzij
de tekst-gebaseerde interface. Met de tweede modus, kan men makkelijk
met geheugensteuntjes werken door calcurse
met de juiste
commandoregel-opties in een cron tab of shell init script te
zetten.
Bovendien, is calcurse
geschreven met de
eindgebruiker in gedachten, en is dus zo gebruikersvriendelijk
mogelijk. Dit betekent dat er een volledige hulp-functie is, en de
beschikbare acties altijd op het scherm staan in de statusbalk. De
gebruikers-interface is ook aan te passen, en men kan tussen
verschillende kleurenschema's en layout-combinaties kiezen. En als
laatste, is er het configurabele meldingssysteem, dat gebruikers
verwittigt van op handen zijnde afspraken.
ncurses
bibliotheek
Calcurse
maakt alleen gebruik van een C
compiler, zoals cc
of gcc
, en de
ncurses
bibliotheek. Het is onwaarschijnlijk dat er nog
geen juiste versie van ncurses
op uw computer staat, maar
indien het niet zo is, is het via de volgende url te vinden:
http://ftp.gnu.org/pub/gnu/ncurses/
gettext
bibliotheek
calcurse
ondersteunt internationalisatie (i18n
genoemd hierna) door middel van gettext
. Dit betekent
dat calcurse
berichten in verschillende talen kan
weergeven, indien gecompileerd met native language support
(NLS). NLS is optioneel en als het niet nodig is,
kan het uitgeschakeld worden. Dit wordt gedaan door
--disable-nls
als optie mee te geven aan
configure
(zie sectie Installatieprocedure).
Om te zien of
gettext op het systeem aanwezig is, kan er gezocht worden naar het
libintl.h
header bestand b.v.:
locate libintl.hIndien het header bestand niet gevonden wordt, kan het via de volgende url verkregen worden:
http://ftp.gnu.org/pub/gnu/gettext/Noot: Zelfs als
libintl.h
gevonden wordt, is het
misschien beter om de lokatie van het bestand tijdens de Installatieprocedure) mee te geven aan
configure
door middel van
--with-libintl-prefix
. Het zou kunnen, dat
configure
de bibliotheek niet kan vinden, als het op een
niet-gangbare plaats geïnstalleerd is.
Als eerste moet het volgende archief uitgepakt worden met gunzip en untar:
tar zxvf calcurse-1.8.tar.gzZodra de benodigde pakketten geïnstalleerd zijn en het archief uitgepakt is, is de installatieprocedure vrij simpel, via de standaard drie stappen:
./configure
make
make install
(mogelijk root privileges nodig)
./configure --help
om een lijst te zien van mogelijke
opties.
calcurse
basis
calcurse
accepteert de volgende opties op de
commandoregel (zowel korte en lange opties worden ondersteund):
-a, --appointment
-c <file>, --calendar <file>
~/.calcurse/apts
(zie sectie calcurse
bestanden).-d <date|num>, --day <date|num>
calcurse -d 3
intypt, zullen de
afpraken voor vandaag, morgen en overmorgen worden weergegeven.-h, --help
-n, --next
-t[num], --todo[=num]
num
wordt meegegeven, zullen alleen de todo's met
de prioriteit gelijk aan num
worden weergegeven.-v, --version
calcurse
weer en verlaat het
programma.
-x, --export
$ calcurse --export > my_data.ics
calcurse
kan gecompileerd worden met native language
support (zie gettext
bibliotheek). Als je berichten wilt zien in je moedertaal, kijk
dan eerst na of het beschikbaar is door naar het
po/LINGUAS
bestand te kijken. Dit bestand geeft de
beschikbare talen weer door middel van twee letters. (Voorbeeld,
fr duidt frans aan). Indien je je taal niet vindt, zouden we
het op prijs stellen, als je meehelpt met het vertalen van
calcurse
(zie Hoe kan ik
helpen?).
Als je taal beschikbaar is, start calcurse
met het
volgende commando:
LC_ALL=fr_FR calcursewaar fr_FR de locale naam van dit voorbeeld is, maar veranderd moet worden naar de locale van de gewenste taal.
calcurse
te starten, kan
het volgende commando worden gebruikt:
LC_ALL=fr_FR.ISO8859-1 calcurse
calcurse
wordt in niet-interactieve modus gestart, als
ten minste een van de volgende opties wordt gebruikt:
-a
, -d
, -h
, -n
,
-t
, -v
Dit betekent dat de gewenste informatie wordt getoond, en dat daarna
calcurse
simpelweg wordt verlaten en men weer terug is
bij de shell prompt.
Op deze manier, kan men een regel zoals 'calcurse --todo
--appointment'
in zijn init config bestand zetten, zodat
bij het inloggen de takenlijst en afspraken van vandaag worden
weergegeven.
Als calcurse
zonder opties of alleen met de
-c
optie wordt aangeroepen, wordt calcurse
in interactieve modus gestart. In deze modus, wordt er een interface
getoond, dat drie verschillende panels (panelen) bevat, waartussen je
kan schakelen door middel van de 'TAB' toets, een notify-bar
(informatiebalk), en een statusbar (statusbalk) (zie onderstaand
figuur).
afspraken panel---. .---kalender panel | | v v +------------------------------------++----------------------------+ | Afspraken || Kalender | |------------------------------------||----------------------------| | April 6, 2006 || April 2006 | | || Ma Di Wo Do Vr Za Zo | | || 1 2 | | || 3 4 5 6 7 8 9 | | || 10 11 12 13 14 15 16 | | || 17 18 19 20 21 22 23 | | || 24 25 26 27 28 29 30 | | || | | |+----------------------------+ | |+----------------------------+ | || Taken | taken | ||----------------------------| panel | || | | | || | | | || |<--. | || | +------------------------------------++----------------------------+ |---[ Ma 2006-11-22 | 10:11:43 ]---(apts)----> 01:20 :: lunch <---|<--. +------------------------------------------------------------------+ informatie | ? Help R Herteken H/L -/+1 Dag G Ga Naar C Config | balk | Q Einde S Opslaan J/K -/+1 Week Tab Schakelen |<-. +------------------------------------------------------------------+ | | statusbalkHet eerste panel geeft een kalender weer, die het mogelijk maakt om een bepaalde datum te kiezen. Het tweede panel bevat de afspraken en gebeurtenissen van die dag. Het laatste panel bevat een lijst met taken (todo's) die nog moeten gebeuren, maar niet aan een bepaalde dag zijn toegewezen.
Noot: Voor sommige acties, zoals het bewerken of toevoegen van
een item, is het nodig dat er tekst wordt ingevoerd. Dit wordt gedaan
met de hulp van de ingebouwde editor.
Als een regel met tekst langer is dan de breedte van het scherm, wordt
er in de editor een '>', '*', or '<' karakter getoond in de
laatste kolom, wat aanduid dat er respectievelijk meer karakters
achter, voor en achter, of voor de huidige positie staan. De
tekstregel schuift horizontaal mee als het nodig is.
Sommige bewerkingscommando's zijn gebonden aan speciale controle
karakters. Hierna zijn de beschikbare bewerkingscommando's weergegeven
('^' staat voor de control-toets):
calcurse
bestanden
De volgende structuur wordt in je $HOME
directory
aangemaakt, als calcurse
voor de eerste keer wordt
gestart:
$HOME/.calcurse/ |___conf |___apts |___todoHet conf bestand bevat de configuratie van de gebruiker.
De ingebouwde hulp kan waar nodig aangeroepen worden door middel van de '?' toets. Tijdens het gebruik van de hulpschermen kan een specifiek commando opgevraagd worden door op de toetscombinatie te drukken van dat commando.
Alle opties van calcurse
zijn aan te passen vanuit het
Configuratie menu. Als je op 'C' drukt, kom je in een submenu met 4
keuzes: Druk opnieuw 'C' om naar de configuratie van de
kleurenschema's te gaan, druk op 'L' om naar de hoofdindeling van
calcurse
te gaan (in andere woorden, waar de 3 panels op
het scherm komen), druk op 'G' om een aantal algemene opties in te
stellen, en als laatste kan de informatiebalk worden aangepast worden
met de toets 'N'.
Met de volgende opties kan calcurse
naar wens ingesteld
worden:
automatisch_opslaan
(standaard: ja)automatisch_opslaan
ingesteld is op nee. Dit
betekent dat de gebruiker op 'S' moet drukken om de gewijzigde data te
bewaren.einde_bevestigen
(standaard: ja)calcurse
, zal er om een
bevestiging worden gevraagd, als de optie op ja is ingesteld.
Zoniet, dan zal calcurse
zonder bevestigingsvraag
eindigen, als er op 'Q' wordt gedrukt.bevestig_verwijderen
(standaard: ja)overslaan_systeem_dialoog
(standaard:
nee)calcurse
sneller opstart en afsluit.overslaan_progressie_balk
(standaard:
nee)calcurse
bestanden).week_begint_op_maandag
(standaard: ja)
De kleurenschema's van calcurse
zijn aan te passen aan de
wensen van de gebruiker. Om het standaard schema te wijzigen, zijn er
in het configuratiescherm de mogelijke opties weergegeven voor voor-
en achtergrondkleuren. Door met de pijltjes-toetsen of de
calcurse
-toetsen de cursor te verplaatsen, en met 'X' of
spatie een kleur te selecteren, kan de gebruiker de kleur toegepast
zien. Het is ook mogelijk om de standaard kleuren van de terminal te
gebruiken. Selecteer hiervoor de corresponderende optie.
De kleuren van de randen, titels, toetshulp, en algemene informatie
binnen de statusbalk zullen worden aangepast. Er is ook een zwart-wit
schema, voor terminals die geen kleuren ondersteunen.
Noot:
$TERM
omgevingsvariabele, is het mogelijk dat kleur wel of niet wordt
ondersteund. Indien gepoogd wordt de kleuren te veranderen, terwijl de
terminal geen kleuren ondersteund, zal er een foutbericht
verschijnen.calcurse
, probeerd dan om de waarde
van de $TERM
variabele te veranderen in iets anders
(zoals bijvoorbeeld xterm-xfree86)
De layout stelt de positie van de panels van calcurse
in.
Bij de standaard layout is de positie van het kalender panel in de
terminal rechtsboven, het todo-panel rechtsonder, en het afspraken
panel wordt aan de linkerkant van het scherm getoond (zie het figuur
in sectie Interactieve
modus voor een voorbeeld van de standaard layout).
Door een andere layout te kiezen in het configuratie scherm, kan de
gebruiker calcurse
zo het beste aan zijn behoeftes
aanpassen.
De volgende opties stelt het gedrag van de informatiebalk in:
informatiebalk_toon
(standaard: ja)informatiebalk_datum
(standaard: %a %F)informatiebalk_tijd
(standaard: %T)informatiebalk_waarschuwing
(standaard:
300)informatiebalk_commando
(standaard:
printf '\a')$SHELL
omgevingsvariabele. Er wordt gebruik gemaakt van /bin/sh
,
indien de variabele leeg is.mail
uit te
voeren is op het systeem van de gebruiker. Men kan dan het volgende
commando gebruiken om op de hoogte gesteld te worden van een op handen
zijnde afspraak (de beschrijving van de afspraak zal ook te zien zijn
in de body van de mail):
calcurse --next | mail -s "[calcurse] upcoming appointment!" user@host.com
Wanneer calcurse
gebruikt maakt van een zwart-wit schema
terwijl de $TERM
variabele is ingesteld op
xterm-color, zullen er verkeerde items gemarkeerd worden.
Gebruik om deze bug op te lossen, xterm-xfree86 in plaats van
xterm-color in de variabele $TERM
,
adviseert Thomas E. Dickey (xterm
maintainer):
"De waarde van xterm-color voor $TERM is geen goede keuze voor XFree86 xterm, omdat het vaak gebruikt wordt voor een optie in terminfo, dat bce niet ondersteunt. Maak gebruik van de xterm-xfree86 optie die met de xterm van XFree86 wordt gedistribueerd (of eenzelfde die wordt gedistribueerd met ncurses)."
Meldt bugs en aanmerkingen alstublieft aan:
calcurse@culot.orgOf aan de auteur:
frederic@culot.org
Mocht je mee willen helpen aan het project, dan kan je ten eerste
laten weten wat je wel en niet goed vindt, en of er nog dingen zijn
die je mist in calcurse
.
Ook wordt het vertalen van calcurse
berichten en
documentatie zeer gewaardeerd.
Noot: Alle hulp bij het 'internationaliseren' van
calcurse
wordt zeer op prijs gesteld, maar voordat je
begint, mail dan eerst naar calcurse-i18n@culot.org
, om
te weten te komen of iemand anders al met een vertaling naar jouw taal
bezig is.
De doc/ directory van het bronpakket bevat alle vertalingen
van de handleidingen van calcurse
. Als de handleiding van
je moedertaal echter nog niet aanwezig is, wordt het zeer op prijs
gesteld als je kunt helpen met de vertaling.
Kopieer eenvoudig de bestaande handleiding naar
manual_XX.html
, waar XX de code is van je taal.
Vertaal dan het zojuist aangemaakte bestand en zend het naar de
auteur (zie Het melden van bugs en aanmerkingen),
zodat het bij de volgende versie van calcurse
gevoegd can
worden.
calcurse
i18n
Zoals eerder gezegd, maakt calcurse
gebruikt van
gettext
om berichten weer te geven in meerdere talen.
Deze sectie informeert hoe de berichten te vertalen in je moedertaal.
Deze howto is echter met opzet incompleet, en verlegt de focus op het
werken met gettext
voor calcurse
. Voor meer
gespecificeerde informatie of om het grotere geheel te begrijpen, is
er de GNU gettext
handleiding:
http://www.gnu.org/software/gettext/manual/In principe, zijn er drie verschillende mensen bezig in de vertaalketen: programmeurs, de vertaal coördinator, en de vertalers. Na in vogelvlucht uit te leggen hoe dingen werken, zal de taak van de vertaler beschreven worden.
Om het mogelijk te maken om teksten weer te geven in de taal van de
gebruiker, zijn er twee stappen vereist: internationalisatie
(i18n) en localisatie (l10n). i18n zorgt ervoor dat
calcurse
meerdere talen ondersteund. De programmeurs
markeren de te vertalen tekst (strings genaamd) en bieden een manier
aan om deze direct te vertalen als calcurse
gestart is.
l10n zorgt ervoor dat de i18n-de calcurse
zich instelt op
de taal van de gebruiker, dus worden de door de programmeurs
gemarkeerde strings vertaald, en wordt de omgeving correct ingesteld,
zodat calcurse
gebruik kan maken van de vertaling.
Dus, de te vertalen strings worden eerst gemarkeerd door de
programmeurs binnen in de C
broncode, dan worden ze
verzameld in een sjabloon bestand (calcurse.pot - de
pot extensie staat voor portable object template,
wat zoiets als overdraagbaar object sjabloon betekent). De inhoud van
deze sjabloonbestanden worden dan samengevoegd met de vertaalbestanden
van elke taal (fr.po voor frans, bijvoorbeeld - waar
po voor portable object staat, dus bedoeld om
gelezen en gewijzigd te worden door mensen). Dit bestand wordt door een
vertaalteam vertaald, en verzonden naar de ontwikkelaars. Bij het
compileren wordt voor efficientie een binaire versie van dit bestand
gemaakt (fr.mo - mo staat voor machine
object, dus met als doel gelezen te worden door programma's), en
geïnstalleerd. calcurse
gebruikt dit bestand dan, om de
strings te vertalen volgende de instellingen van de locale van de
gebruiker.
Stel dat iemand met het vertalen naar een nieuwe taal wil beginnen. Dan zijn dit de stappen die gevolgd moeten worden:
LC_ALL
moet staan om software te
vertalen (zie De i18n
omgevingsvariabele).'msginit -i calcurse.pot -o fr.po -l fr --no-translator'Indien
msginit
niet aanwezig is op het systeem, kopieer
dan simpelweg het calcurse.pot bestand en hernoem het naar
bijvoorbeeld fr.po en wijzig de header handmatig.De indeling van de po-bestanden is vrij simpel. Po-bestanden bestaan uit vier onderdelen:
Een paar aanmerkingen:
"#,
fuzzy"
, zal calcurse
de vertaling niet gebruiken
totdat je iets verandert. 'Fuzzy' betekent dat de string al vertaald
is, maar sindsdien is veranderd in de broncode van het programma, of
dat het een nieuwe string is, waar gettext
zelf een ruwe
vertaling van heeft gemaakt, gebaseerd op andere strings in het
bestand. Het komt erop neer dat je de vertaling moet nakijken. Soms is
er een kleine verandering in de originele string, omdat er een typfout
is verbeterd. In dit geval hoeft er niets te veranderen. Maar het kan
ook zo zijn dat de vertaling niet juist meer is, en een verandering
noodzakelijk is. Als de vertaling weer in orde is, wis dan de regel
met "#, fuzzy"
, en dan zal de vertaling weer gebruikt
worden in calcurse
."#,
c-format"
. Dit betekent dat een deel van de te vertalen string
een speciale betekenis heeft voor het programma, en niet veranderd mag
worden. Bijvoorbeeld, het teken %, gebruikt als "%s"
. Dit
betekent dat calcurse
dit teken zal vervangen met een
andere string. Het is dus belangrijk dat het niet verwijderd wordt. Er
zijn ook andere tekens zoals \, gebruikt als \n
of
\t
. Verander ook deze niet. Het zijn respectievelijk
tekens voor einde-van-de-regel, en een tab.msgid "" "een hele lange regel" "de volgende regel"
"Content-Type: text/plain; charset=utf-8\n"Het is ook belangrijk dat het Last-Translator veld wordt ingevuld, zodat nieuwe vertalers zich bij je kunnen aanmelden, of dat mensen contact kunnen opnemen als ze aanvullingen hebben of typfouten gevonden hebben. Je kan zowel een naam/bijnaam, of email adres invulllen, zoals bijvoorbeeld:
"Last-Translator: Frederic Culot <frederic@culot.org>\n"
calcurse
is een curses/console programma, dus het is nauw
verbonden met het aantal kolommen dat de terminal gebruikt. Dit is
iets om in gedachten te houden bij het vertalen. Vaak moet een string
op een enkele regel passen. Het beste is dus om niet zomaar de strings
te vertalen, maar om eerst te kijken waar ze weergegeven worden in het
programma, en pas dan te vertalen.poEdit
(
http://www.poedit.org/)
KBabel
(
http://i18n.kde.org/tools/kbabel/)
GTranslator
(
http://gtranslator.sourceforge.net/)
Emacs
po mode
Vim
po mode
Deze sectie bevat links en referenties welke je misschien interesseren.
calcurse
homepage
De calcurse
homepage is hier te vinden:
http://culot.org/calcurse
calcurse
mededelingenlijst
Mocht je interesse hebben in het project, en op de hoogte wilt worden
gehouden als er een nieuwe versie uitkomt, kan je jezelf inschrijven
op de calcurse
mededelingenlijst. Je ontvangt dan een
email zodra er iets nieuws is in calcurse
.
Om je in te schrijven, zend dan een email naar
calcurse-announce@culot.org
met "subscribe"
ingevuld bij 'onderwerp'.
calcurse
RSS feedNog een mogelijkheid om op de hoogte te blijven over nieuwe versies is om de RSS feed te volgen:
http://culot.org/calcurse/news_rss.xmlDeze RSS feed wordt iedere keer vernieuwd als er een nieuwe versie van calcurse beschikbaar is, waarbij ook de nieuwe opties beschreven worden.
Het is tijd om de mensen te bedanken, zonder wie dit programma niet zou bestaan! Hier is een lijst met mensen die ik graag wil bedanken:
C
calcurse
te verbeteren
calcurse
voor FreeBSD
calcurse
voor
NetBSD
calcurse
voor
Archlinux
calcurse
voor Debian en Ubuntu
calcurse
voor Archlinux
calcurse
voor Slackware
calcurse
voor Mac OsX en Darwin
calcurse
for
ALT Linux
calcurse
geïnspireerd is
calcurse
en handleiding
calcurse
en
handleiding
calcurse
en handleiding
vim
voor de toetsen die de cursor verplaatsen
orpheus
en abook
voor de
documentatie
pine
en aptitude
voor de tekstinterface
calcurse
gebruiken, en mij aanvullingen en opbouwende
kritiek stuurden.