draai-20160601/ 0000755 0001750 0001750 00000000000 12723471434 010043 5 0000000 0000000 draai-20160601/man/ 0000755 0001750 0001750 00000000000 12723471434 010616 5 0000000 0000000 draai-20160601/man/draai.html 0000644 0001750 0001750 00000034134 12723471434 012511 0000000 0000000
draai
28 Aug 2014
draai
20160601
NAME
draai — manage playlists and play audio files
SYNOPSIS
draai [option [option ...]] command [track [track ...] | tracknumber [tracknumber ...]]
DESCRIPTION
Draai is a wrapper around mpc, making playing music from the commandline more
enjoyable. mpc is a client for MPD, the Music Player Daemon. Using draai, one
can play an audiofile (ogg, mp3, flac, whatever your MPD offers), play all
files in a predefined playlist, view details on current, past and future
playing songs, skip to the next song, etc.
GETTING STARTED
Run "draai init" to get started using draai the way the author likes it. Then,
open another terminal window and run e.g.
$ draai listall | dr_permutate | draai add; draai play
to build a current playlist and start playing it.
Other ways of using draai are possible, see below.
COMMANDS
Play music: the files given as args and playlists passed via --playlist.
Run watch(1) on "draai peek".
Start a bunch of X terminals setting up some draai jobs: tail, logtail,
watch, syslog, ...
Reschedule listed tracknumbers as upcoming tracks. Last arguments should
be the positions of tracks to be put on the guestlist, not filenames.
Reschedule listed tracknumbers to end of playlist.
Add file(s) (given either as args or on stdin) to playlist and schedule it as
upcoming track. You probably want to have 'draai insert' read from a pipe fed
by 'draai search'.
Move tracknumber to tracknumber given as last argument.
Move tracknumber to position one and immediately start playing it. Typically
used to deal with radiostations in playlist.
Search for substrings in all song tag types (artist, title, comment, filename,
...). Similar to 'mpc search any <query>'. You'll typically want to pipe
this commands output to e.g. 'draai insert'.
Print information about track when it starts playing, similar to
tail -f on a logfile.
Run tail(1) on system log file.
Show status of current song, and show upcoming $peek FIXME tracks.
Send raw information from tail to syslog. You likely want to run "draai
syslog" in the background.
Skip this track, start playing the next one now.
Run this if unwanted silence pops up during a playing session (for now, it
runs draai --sloppy skip).
Delete track(s) from current playlist. Last arguments should be
_positions_ of tracks to be removed, not filename. If no position is
given, deletes upcoming track from playlist.
Seek forward in current track.
Shuffle the playlist. By default, this task is delegated to dr_unsort(1).
However, if draai runs in "sloppy" or in "native shuffle" mode, then mpc native
shuffling is done (by calling "mpc shuffle"). Draai runs in "sloppy" mode when
the DR_SLOPPY environment variable is set, or when the --sloppy option is
passed. Draai runs in "native shuffle" mode when the DR_SHUFFLE_NATIVE
environment variable is set.
List all files as served by music database.
Add file(s) (given either as args or on stdin) to playlist. You probably want
to have 'draai add' read from a pipe fed by e.g. 'draai listall' or 'draai
search'.
OPTIONS
--playlist (
with playlistfile),
-p
Playlist file; option can be supplied more than once. To be used
with command "draai".
--noshuffle (
no shuffle), {
-S}
Do not shuffle tracks and leave random mode untouched (default is: do
shuffle and disable random mode). See also the script dr_unsort.
Print raw stuff, suitable for postprocessing (if combined with tail, peek
or list).
Do not try hard to make everything sound smooth. If combined with skip:
risk a squeak on old hardware.
--time (
with timespec),
-t
If combined with commands quit or draai: time at which to quit or start.
EXAMPLES
Schedule all tracks containing the string 'delia gone' in title, artist, comment
or any other tag for playing, after current song has finished:
draai search 'delia gone' | draai insert.
ENVIRONMENT
Run grep DR_ `which draai` to find out about environment variables
honored by draai. It honors: booleans:
DR_DEBUG
and
DR_SHUFFLE, DR_TIMESTAMP, DR_RAW and DR_SLOPPY
; strings:
DR_WATCH
; integers:
DR_CROSSFADE, DR_PEEK and DR_SEEK
as well as
DR_FADEOUT_STEP, DR_FADEOUT_REPEAT, and DR_FADEOUT_SLEEP
and
DR_VOLUME_STEP
; and some more strings:
DR_SYSLOG_FILE, DR_SYSLOG_FACILITY and DR_SYSLOG_LEVEL
. For now, see the draai code for what it all means.
FILES, CONFIGURATION
All configuration variables (see ENVIRONMENT) can be set in ~/.draai/rc.
This rc-file is sourced as a shell script. If you'd like to set the syslog
facility, set syslog_facility (overruled by DR_SYSLOG_FACILITY). If you'd
like to set the watch programma, set watch (overruled by DR_WATCH).
SEE ALSO
Lots of alternatives for draai exist. One is "herrie", by Ed Schouten and
Martijn van den Dungen, see http://freshmeat.net/projects/herrie/.
COPYRIGHT AND LICENSE
Draai is (C) 2000-2013 Joost van Baal-Ilić <joostvb-draai@mdcc.cx>.
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ilić <joostvb-draai@mdcc.cx>
draai-20160601/man/dr_symlinks.html 0000644 0001750 0001750 00000013154 12723471434 013766 0000000 0000000
dr_symlinks
28 Aug 2014
dr_symlinks
20160601
NAME
dr_symlinks — maintain a symlink forest
SYNOPSIS
dr_symlinks
DESCRIPTION
For each pair directory/subdirectory under each word in DR_SL_TARGETS, a
directory and symlink DR_SL_SOURCE/directory/symlink is created (or adjusted).
The script is implemented as a wrapper around oggsymlinks, by Wessel Dankers.
EXAMPLE
If, in the configuration file $HOME/.draai/symlinksrc, DR_SL_SOURCE is set to
/srv/audio and DR_SL_TARGETS is set to "../data/a ../data/b", while directories
/srv/data/a/And_You_Will_Know_Us_By_the_Trail_of_Dead/Source_Tags_And_Codes/
/srv/data/a/And_You_Will_Know_Us_By_the_Trail_of_Dead/The_Century_of_Self/
/srv/data/a/John_Coltrane/A_Love_Supreme/
/srv/data/b/John_Coltrane/Giant_Steps/
/srv/data/b/Tinariwen/Amassakoul/
exist, the following directories holding the following symlinks will get created
in /srv/audio/ :
And_You_Will_Know_Us_By_the_Trail_of_Dead/Source_Tags_And_Codes ->
../../../a/And_You_Will_Know_Us_By_the_Trail_of_Dead/Source_Tags_And_Codes/
And_You_Will_Know_Us_By_the_Trail_of_Dead/The_Century_of_Self ->
../../../a/And_You_Will_Know_Us_By_the_Trail_of_Dead/The_Century_of_Self/
John_Coltrane/A_Love_Supreme -> ../../../a/John_Coltrane/A_Love_Supreme/
John_Coltrane/Giant_Steps -> ../../../b/John_Coltrane/Giant_Steps/
Tinariwen/Amassakoul -> ../../../b/Tinariwen/Amassakoul/
All dangling symlinks and empty directories (if any) under /srv/audio/ will get
removed. This script is idempotent.
ANOTHER EXAMPLE
joostvb@hille:~% ls media/usb/audio/200504/Al_Green
The_Very_Best_Of/
joostvb@hille:~% ls media/usb/audio/
200504/ 200708/ 200801/ 200805/ 200807/ 200812/ 200910/ 201005/ 201009/
200609/ 200712/ 200803/ 200806/ 200808/ 200905/ 201004/ 201006/
joostvb@hille:~% cat .draai/symlinksrc.usb
DR_SL_SOURCE=~/media/audio
DR_SL_TARGETS="$( cd $DR_SL_SOURCE && ls -d ../usb/audio/* )"
joostvb@hille:~% DR_SL_RCFILE=.draai/symlinksrc.usb dr_symlinks
joostvb@hille:~% ls -l media/audio/Al_Green
total 0
lrwxrwxrwx 1 joostvb joostvb 48 2011-03-11 09:12 The_Very_Best_Of -> ../../usb/audio/200504/Al_Green/The_Very_Best_Of/
ENVIRONMENT
dr_symlinks honors booleans: DR_SL_VERBOSE, DR_DEBUG and DR_DRYRUN and strings:
DR_SL_RCFILE, DR_SL_TARGETS and DR_SL_SOURCE.
FILES, CONFIGURATION
All configuration variables (see ENVIRONMENT) can be set in
~/.draai/symlinksrc. This rc-file is sourced as a shell script.
If DR_SL_RCFILE is set, its value is assumed to be the dr_symlinks rc-file.
COPYRIGHT AND LICENSE
This manpage is copyright 2009, 2011 Joost van Baal-Ilić <joostvb-draai@mdcc.cx>.
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ilić <joostvb-draai@mdcc.cx>
draai-20160601/man/dr_unsort.html 0000644 0001750 0001750 00000013750 12723471434 013451 0000000 0000000
dr_unsort
28 Aug 2014
dr_unsort
20160601
NAME
dr_unsort — unsort the current mpd playlist
SYNOPSIS
dr_unsort
DESCRIPTION
dr_unsort invokes unsort(1) on the current audio playlist as used by mpd.
Use it if you'd like some variation in your music.
EXAMPLE
If The_Beatles/The_White_Album_I/03-Glass_Onion.ogg is the current playing
track and your current playlist looks like
Flying_Lotus/Los_Angeles/01 Brainfeeder.mp3
The_Beatles/The_White_Album_I/01-Back_in_the_U.S.S.R..ogg
The_Beatles/The_White_Album_I/02-Dear_Prudence.ogg
> The_Beatles/The_White_Album_I/03-Glass_Onion.ogg
The_Beatles/The_White_Album_I/04-Ob-La-Di,_Ob-La-Da.ogg
The_Beatles/The_White_Album_I/05-Wild_Honey_Pie.ogg
The_Beatles/The_White_Album_I/06-The_Continuing_Story_of_Bungalow_Bill.ogg
The_Beatles/The_White_Album_I/07-While_My_Guitar_Gently_Weeps.ogg
Flying_Lotus/Los_Angeles/02 Breathe . Something_Stellar STar.mp3
Flying_Lotus/Los_Angeles/03 Beginners Falafel.mp3
Flying_Lotus/Los_Angeles/04 Camel.mp3
Napalm_Death/The_Peel_Sessions/01-The_Kill-Prison_Without_Walls-Dead_Part_1.mp3
Napalm_Death/The_Peel_Sessions/02-Deceiver-Lucid_Fairytale-In_Extremis.mp3
Napalm_Death/The_Peel_Sessions/03-Blind_To_The_Truth-Negative_Approach-Common_Enemy.mp3
Napalm_Death/The_Peel_Sessions/04-Obstinate_Direction-Life-You_Suffer_Pt_2.mp3
Flying_Lotus/Los_Angeles/05 Melt!.mp3
Flying_Lotus/Los_Angeles/06 Comet Course.mp3
Flying_Lotus/Los_Angeles/07 Orbit 405.mp3
Flying_Lotus/Los_Angeles/08 Golden Diva.mp3
invoking dr_unsort will yield something like e.g.
Flying_Lotus/Los_Angeles/01 Brainfeeder.mp3
The_Beatles/The_White_Album_I/01-Back_in_the_U.S.S.R..ogg
The_Beatles/The_White_Album_I/02-Dear_Prudence.ogg
> The_Beatles/The_White_Album_I/03-Glass_Onion.ogg
Flying_Lotus/Los_Angeles/02 Breathe . Something_Stellar STar.mp3
The_Beatles/The_White_Album_I/04-Ob-La-Di,_Ob-La-Da.ogg
Napalm_Death/The_Peel_Sessions/01-The_Kill-Prison_Without_Walls-Dead_Part_1.mp3
Flying_Lotus/Los_Angeles/03 Beginners Falafel.mp3
The_Beatles/The_White_Album_I/05-Wild_Honey_Pie.ogg
Napalm_Death/The_Peel_Sessions/02-Deceiver-Lucid_Fairytale-In_Extremis.mp3
Flying_Lotus/Los_Angeles/04 Camel.mp3
The_Beatles/The_White_Album_I/06-The_Continuing_Story_of_Bungalow_Bill.ogg
Napalm_Death/The_Peel_Sessions/03-Blind_To_The_Truth-Negative_Approach-Common_Enemy.mp3
Flying_Lotus/Los_Angeles/05 Melt!.mp3
The_Beatles/The_White_Album_I/07-While_My_Guitar_Gently_Weeps.ogg
Napalm_Death/The_Peel_Sessions/04-Obstinate_Direction-Life-You_Suffer_Pt_2.mp3
Flying_Lotus/Los_Angeles/06 Comet Course.mp3
Flying_Lotus/Los_Angeles/07 Orbit 405.mp3
Flying_Lotus/Los_Angeles/08 Golden Diva.mp3
WARNING
Due to limitations in the mpc/mpd protocol, dr_unsort needs filesystem level
write access to mpd's playlist directory.
ENVIRONMENT
dr_unsort honors strings DR_PLAYLISTS (mpd's playlist directory) and DR_UNSORT
(unsort pathname).
SEE ALSO
unsort(1), available from http://packages.debian.org/unsort.
COPYRIGHT AND LICENSE
This manpage is copyright 2010, 2011 Joost van Baal-Ilić <joostvb-draai@mdcc.cx>.
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ilić <joostvb-draai@mdcc.cx>
draai-20160601/man/dr_watch.html 0000644 0001750 0001750 00000006442 12723471434 013225 0000000 0000000
dr_watch
28 Aug 2014
dr_watch
20160601
NAME
dr_watch — execute a program periodically, showing output fullscreen
SYNOPSIS
dr_watch command
DESCRIPTION
dr_watch tests wether watch(1) is available, and runs it if found. On
systems not shipping watch, it executes a crude reimplementation of this
program and runs command repeatedly, displaying its output.
ENVIRONMENT
dr_watch honors integer DR_SLEEP: number of seconds to wait between execution.
COPYRIGHT AND LICENSE
This manpage is copyright 2009, 2011, 2012 Joost van Baal-Ilić <joostvb-draai@mdcc.cx>.
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ilić <joostvb-draai@mdcc.cx>
draai-20160601/man/draai.1 0000644 0001750 0001750 00000016070 12723471433 011703 0000000 0000000 .\" Copyright (c) 2014 Joost van Baal-Ilić
.TH "draai" 1 "28 Aug 2014" "draai 20160601" "USER COMMANDS "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
draai \- manage playlists and play audio files
.SH SYNOPSIS
draai [option [option \&.\&.\&.]] command [track [track \&.\&.\&.] | tracknumber [tracknumber \&.\&.\&.]]
.SH DESCRIPTION
Draai is a wrapper around mpc, making playing music from the commandline more
enjoyable\&. mpc is a client for MPD, the Music Player Daemon\&. Using draai, one
can play an audiofile (ogg, mp3, flac, whatever your MPD offers), play all
files in a predefined playlist, view details on current, past and future
playing songs, skip to the next song, etc\&.
.SH GETTING STARTED
Run "draai init" to get started using draai the way the author likes it\&. Then,
open another terminal window and run e\&.g\&.
$ draai listall | dr_permutate | draai add; draai play
to build a current playlist and start playing it\&.
Other ways of using draai are possible, see below\&.
.SH COMMANDS
.ZI 2m "draai"
\&
.br
Play music: the files given as args and playlists passed via --playlist\&.
.in -2m
.ZI 2m "watch"
\&
.br
Run watch(1) on "draai peek"\&.
.in -2m
.ZI 2m "init"
\&
.br
Start a bunch of X terminals setting up some draai jobs: tail, logtail,
watch, syslog, \&.\&.\&.
.in -2m
.ZI 2m "guestlist"
\&
.br
Reschedule listed tracknumbers as upcoming tracks\&. Last arguments should
be the positions of tracks to be put on the guestlist, not filenames\&.
.in -2m
.ZI 2m "unguestlist"
\&
.br
Reschedule listed tracknumbers to end of playlist\&.
.in -2m
.ZI 2m "insert"
\&
.br
Add file(s) (given either as args or on stdin) to playlist and schedule it as
upcoming track\&. You probably want to have \&'draai insert\&' read from a pipe fed
by \&'draai search\&'\&.
.in -2m
.ZI 2m "move"
\&
.br
Move tracknumber to tracknumber given as last argument\&.
.in -2m
.ZI 2m "zap"
\&
.br
Move tracknumber to position one and immediately start playing it\&. Typically
used to deal with radiostations in playlist\&.
.in -2m
.ZI 2m "search"
\&
.br
Search for substrings in all song tag types (artist, title, comment, filename,
\&.\&.\&.)\&. Similar to \&'mpc search any \&'\&. You\&'ll typically want to pipe
this commands output to e\&.g\&. \&'draai insert\&'\&.
.in -2m
.ZI 2m "tail"
\&
.br
Print information about track when it starts playing, similar to
tail -f on a logfile\&.
.in -2m
.ZI 2m "logtail"
\&
.br
Run tail(1) on system log file\&.
.in -2m
.ZI 2m "list"
\&
.br
List current playlist\&.
.in -2m
.ZI 2m "peek"
\&
.br
Show status of current song, and show upcoming $peek FIXME tracks\&.
.in -2m
.ZI 2m "play"
\&
.br
Play music\&.
.in -2m
.ZI 2m "syslog"
\&
.br
Send raw information from tail to syslog\&. You likely want to run "draai
syslog" in the background\&.
.in -2m
.ZI 2m "skip"
\&
.br
Skip this track, start playing the next one now\&.
.in -2m
.ZI 2m "osjittisstil"
\&
.br
Run this if unwanted silence pops up during a playing session (for now, it
runs draai --sloppy skip)\&.
.in -2m
.ZI 2m "delete"
\&
.br
Delete track(s) from current playlist\&. Last arguments should be
_positions_ of tracks to be removed, not filename\&. If no position is
given, deletes upcoming track from playlist\&.
.in -2m
.ZI 2m "fastforward"
\&
.br
Seek forward in current track\&.
.in -2m
.ZI 2m "crescendo"
\&
.br
Play louder\&.
.in -2m
.ZI 2m "diminuendo"
\&
.br
Play softer\&.
.in -2m
.ZI 2m "shuffle"
\&
.br
Shuffle the playlist\&. By default, this task is delegated to dr_unsort(1)\&.
However, if draai runs in "sloppy" or in "native shuffle" mode, then mpc native
shuffling is done (by calling "mpc shuffle")\&. Draai runs in "sloppy" mode when
the DR_SLOPPY environment variable is set, or when the --sloppy option is
passed\&. Draai runs in "native shuffle" mode when the DR_SHUFFLE_NATIVE
environment variable is set\&.
.in -2m
.ZI 2m "listall"
\&
.br
List all files as served by music database\&.
.in -2m
.ZI 2m "add"
\&
.br
Add file(s) (given either as args or on stdin) to playlist\&. You probably want
to have \&'draai add\&' read from a pipe fed by e\&.g\&. \&'draai listall\&' or \&'draai
search\&'\&.
.in -2m
.ZI 2m "quit"
\&
.br
quit
.in -2m
.SH OPTIONS
.ZI 2m "\fB--debug\fP (\fIdebug\fP), \fB-d\fP"
\&
.br
Be very verbose\&.
.in -2m
.ZI 2m "\fB--playlist\fP (\fIwith playlistfile\fP), \fB-p\fP"
\&
.br
Playlist file; option can be supplied more than once\&. To be used
with command "draai"\&.
.in -2m
.ZI 2m "\fB--noshuffle\fP (\fIno shuffle\fP), {\fB-S\fP}"
\&
.br
Do not shuffle tracks and leave random mode untouched (default is: do
shuffle and disable random mode)\&. See also the script dr_unsort\&.
.in -2m
.ZI 2m "\fB--raw\fP (\fIraw\fP), \fB-r\fP"
\&
.br
Print raw stuff, suitable for postprocessing (if combined with tail, peek
or list)\&.
.in -2m
.ZI 2m "\fB--sloppy\fP (\fIsloppy\fP), \fB-s\fP"
\&
.br
Do not try hard to make everything sound smooth\&. If combined with skip:
risk a squeak on old hardware\&.
.in -2m
.ZI 2m "\fB--time\fP (\fIwith timespec\fP), \fB-t\fP"
\&
.br
If combined with commands quit or draai: time at which to quit or start\&.
.in -2m
.SH EXAMPLES
Schedule all tracks containing the string \&'delia gone\&' in title, artist, comment
or any other tag for playing, after current song has finished:
\fCdraai search \&'delia gone\&' | draai insert\fP\&.
.SH ENVIRONMENT
Run \fCgrep DR_ \&`which draai\&`\fP to find out about environment variables
honored by draai\&. It honors: booleans:
DR_DEBUG
and
DR_SHUFFLE, DR_TIMESTAMP, DR_RAW and DR_SLOPPY
; strings:
DR_WATCH
; integers:
DR_CROSSFADE, DR_PEEK and DR_SEEK
as well as
DR_FADEOUT_STEP, DR_FADEOUT_REPEAT, and DR_FADEOUT_SLEEP
and
DR_VOLUME_STEP
; and some more strings:
DR_SYSLOG_FILE, DR_SYSLOG_FACILITY and DR_SYSLOG_LEVEL
\&. For now, see the draai code for what it all means\&.
.SH FILES, CONFIGURATION
All configuration variables (see ENVIRONMENT) can be set in \fC~/\&.draai/rc\fP\&.
This rc-file is sourced as a shell script\&. If you\&'d like to set the syslog
facility, set \fIsyslog_facility\fP (overruled by DR_SYSLOG_FACILITY)\&. If you\&'d
like to set the watch programma, set \fIwatch\fP (overruled by DR_WATCH)\&.
.SH SEE ALSO
Lots of alternatives for draai exist\&. One is "herrie", by Ed Schouten and
Martijn van den Dungen, see http://freshmeat\&.net/projects/herrie/\&.
.SH COPYRIGHT AND LICENSE
Draai is (C) 2000-2013 Joost van Baal-Ilić \&.
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version\&. This program is distributed WITHOUT ANY WARRANTY\&. You should have
received a copy of the GNU General Public License along with draai\&. If not,
see http://www\&.gnu\&.org/licenses/\&.
.SH AUTHOR
Joost van Baal-Ilić
draai-20160601/man/dr_permutate.1 0000644 0001750 0001750 00000012405 12723471434 013315 0000000 0000000 .\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{
. if \nF \{
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "DR_PERMUTATE 1"
.TH DR_PERMUTATE 1 "2014-06-09" "draai 20160601" "Draai"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
dr_permutate \- print randomly permutated arguments or stdin
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
\&\fBdr_permutate\fR \fIarguments\fR
\&\fBdr_permutate\fR
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
When called with arguments, \fBdr_permutate\fR returns its arguments in randomly
permutated order, space separated. When called without any arguments,
\&\fBdr_permuate\fR expects a line-oriented file on stdin. It returns the contents of
this file, with lines randomly permutated.
.SH "EXAMPLE"
.IX Header "EXAMPLE"
Running
.PP
.Vb 1
\& $ dr_permutate foo bar baz
.Ve
.PP
could return
.PP
.Vb 1
\& bar foo baz
.Ve
.PP
\&. Running
.PP
.Vb 4
\& $ cat <
draai-20160601/man/dr_symlinks.1 0000644 0001750 0001750 00000007527 12723471434 013171 0000000 0000000 .\" Copyright (c) 2014 Joost van Baal-Ilić
.TH "dr_symlinks" 1 "28 Aug 2014" "dr_symlinks 20160601" "USER COMMANDS "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
dr_symlinks \- maintain a symlink forest
.SH SYNOPSIS
dr_symlinks
.SH DESCRIPTION
For each pair directory/subdirectory under each word in DR_SL_TARGETS, a
directory and symlink DR_SL_SOURCE/directory/symlink is created (or adjusted)\&.
The script is implemented as a wrapper around oggsymlinks, by Wessel Dankers\&.
.SH EXAMPLE
If, in the configuration file $HOME/\&.draai/symlinksrc, DR_SL_SOURCE is set to
/srv/audio and DR_SL_TARGETS is set to "\&.\&./data/a \&.\&./data/b", while directories
.di ZV
.in 0
.nf \fC
/srv/data/a/And_You_Will_Know_Us_By_the_Trail_of_Dead/Source_Tags_And_Codes/
/srv/data/a/And_You_Will_Know_Us_By_the_Trail_of_Dead/The_Century_of_Self/
/srv/data/a/John_Coltrane/A_Love_Supreme/
/srv/data/b/John_Coltrane/Giant_Steps/
/srv/data/b/Tinariwen/Amassakoul/
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
exist, the following directories holding the following symlinks will get created
in /srv/audio/ :
.di ZV
.in 0
.nf \fC
And_You_Will_Know_Us_By_the_Trail_of_Dead/Source_Tags_And_Codes ->
\&.\&./\&.\&./\&.\&./a/And_You_Will_Know_Us_By_the_Trail_of_Dead/Source_Tags_And_Codes/
And_You_Will_Know_Us_By_the_Trail_of_Dead/The_Century_of_Self ->
\&.\&./\&.\&./\&.\&./a/And_You_Will_Know_Us_By_the_Trail_of_Dead/The_Century_of_Self/
John_Coltrane/A_Love_Supreme -> \&.\&./\&.\&./\&.\&./a/John_Coltrane/A_Love_Supreme/
John_Coltrane/Giant_Steps -> \&.\&./\&.\&./\&.\&./b/John_Coltrane/Giant_Steps/
Tinariwen/Amassakoul -> \&.\&./\&.\&./\&.\&./b/Tinariwen/Amassakoul/
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
All dangling symlinks and empty directories (if any) under /srv/audio/ will get
removed\&. This script is idempotent\&.
.SH ANOTHER EXAMPLE
.di ZV
.in 0
.nf \fC
joostvb@hille:~% ls media/usb/audio/200504/Al_Green
The_Very_Best_Of/
joostvb@hille:~% ls media/usb/audio/
200504/ 200708/ 200801/ 200805/ 200807/ 200812/ 200910/ 201005/ 201009/
200609/ 200712/ 200803/ 200806/ 200808/ 200905/ 201004/ 201006/
joostvb@hille:~% cat \&.draai/symlinksrc\&.usb
DR_SL_SOURCE=~/media/audio
DR_SL_TARGETS="$( cd $DR_SL_SOURCE && ls -d \&.\&./usb/audio/* )"
joostvb@hille:~% DR_SL_RCFILE=\&.draai/symlinksrc\&.usb dr_symlinks
joostvb@hille:~% ls -l media/audio/Al_Green
total 0
lrwxrwxrwx 1 joostvb joostvb 48 2011-03-11 09:12 The_Very_Best_Of -> \&.\&./\&.\&./usb/audio/200504/Al_Green/The_Very_Best_Of/
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.SH ENVIRONMENT
dr_symlinks honors booleans: DR_SL_VERBOSE, DR_DEBUG and DR_DRYRUN and strings:
DR_SL_RCFILE, DR_SL_TARGETS and DR_SL_SOURCE\&.
.SH FILES, CONFIGURATION
All configuration variables (see ENVIRONMENT) can be set in
\fC~/\&.draai/symlinksrc\fP\&. This rc-file is sourced as a shell script\&.
If DR_SL_RCFILE is set, its value is assumed to be the dr_symlinks rc-file\&.
.SH COPYRIGHT AND LICENSE
This manpage is copyright 2009, 2011 Joost van Baal-Ilić \&.
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version\&. This program is distributed WITHOUT ANY WARRANTY\&. You should have
received a copy of the GNU General Public License along with draai\&. If not,
see http://www\&.gnu\&.org/licenses/\&.
.SH AUTHOR
Joost van Baal-Ilić
draai-20160601/man/dr_unsort.1 0000644 0001750 0001750 00000010345 12723471434 012642 0000000 0000000 .\" Copyright (c) 2014 Joost van Baal-Ilić
.TH "dr_unsort" 1 "28 Aug 2014" "dr_unsort 20160601" "USER COMMANDS "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
dr_unsort \- unsort the current mpd playlist
.SH SYNOPSIS
dr_unsort
.SH DESCRIPTION
dr_unsort invokes unsort(1) on the current audio playlist as used by mpd\&.
Use it if you\&'d like some variation in your music\&.
.SH EXAMPLE
If The_Beatles/The_White_Album_I/03-Glass_Onion\&.ogg is the current playing
track and your current playlist looks like
.di ZV
.in 0
.nf \fC
Flying_Lotus/Los_Angeles/01 Brainfeeder\&.mp3
The_Beatles/The_White_Album_I/01-Back_in_the_U\&.S\&.S\&.R\&.\&.ogg
The_Beatles/The_White_Album_I/02-Dear_Prudence\&.ogg
> The_Beatles/The_White_Album_I/03-Glass_Onion\&.ogg
The_Beatles/The_White_Album_I/04-Ob-La-Di,_Ob-La-Da\&.ogg
The_Beatles/The_White_Album_I/05-Wild_Honey_Pie\&.ogg
The_Beatles/The_White_Album_I/06-The_Continuing_Story_of_Bungalow_Bill\&.ogg
The_Beatles/The_White_Album_I/07-While_My_Guitar_Gently_Weeps\&.ogg
Flying_Lotus/Los_Angeles/02 Breathe \&. Something_Stellar STar\&.mp3
Flying_Lotus/Los_Angeles/03 Beginners Falafel\&.mp3
Flying_Lotus/Los_Angeles/04 Camel\&.mp3
Napalm_Death/The_Peel_Sessions/01-The_Kill-Prison_Without_Walls-Dead_Part_1\&.mp3
Napalm_Death/The_Peel_Sessions/02-Deceiver-Lucid_Fairytale-In_Extremis\&.mp3
Napalm_Death/The_Peel_Sessions/03-Blind_To_The_Truth-Negative_Approach-Common_Enemy\&.mp3
Napalm_Death/The_Peel_Sessions/04-Obstinate_Direction-Life-You_Suffer_Pt_2\&.mp3
Flying_Lotus/Los_Angeles/05 Melt!\&.mp3
Flying_Lotus/Los_Angeles/06 Comet Course\&.mp3
Flying_Lotus/Los_Angeles/07 Orbit 405\&.mp3
Flying_Lotus/Los_Angeles/08 Golden Diva\&.mp3
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
invoking dr_unsort will yield something like e\&.g\&.
.di ZV
.in 0
.nf \fC
Flying_Lotus/Los_Angeles/01 Brainfeeder\&.mp3
The_Beatles/The_White_Album_I/01-Back_in_the_U\&.S\&.S\&.R\&.\&.ogg
The_Beatles/The_White_Album_I/02-Dear_Prudence\&.ogg
> The_Beatles/The_White_Album_I/03-Glass_Onion\&.ogg
Flying_Lotus/Los_Angeles/02 Breathe \&. Something_Stellar STar\&.mp3
The_Beatles/The_White_Album_I/04-Ob-La-Di,_Ob-La-Da\&.ogg
Napalm_Death/The_Peel_Sessions/01-The_Kill-Prison_Without_Walls-Dead_Part_1\&.mp3
Flying_Lotus/Los_Angeles/03 Beginners Falafel\&.mp3
The_Beatles/The_White_Album_I/05-Wild_Honey_Pie\&.ogg
Napalm_Death/The_Peel_Sessions/02-Deceiver-Lucid_Fairytale-In_Extremis\&.mp3
Flying_Lotus/Los_Angeles/04 Camel\&.mp3
The_Beatles/The_White_Album_I/06-The_Continuing_Story_of_Bungalow_Bill\&.ogg
Napalm_Death/The_Peel_Sessions/03-Blind_To_The_Truth-Negative_Approach-Common_Enemy\&.mp3
Flying_Lotus/Los_Angeles/05 Melt!\&.mp3
The_Beatles/The_White_Album_I/07-While_My_Guitar_Gently_Weeps\&.ogg
Napalm_Death/The_Peel_Sessions/04-Obstinate_Direction-Life-You_Suffer_Pt_2\&.mp3
Flying_Lotus/Los_Angeles/06 Comet Course\&.mp3
Flying_Lotus/Los_Angeles/07 Orbit 405\&.mp3
Flying_Lotus/Los_Angeles/08 Golden Diva\&.mp3
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.SH WARNING
Due to limitations in the mpc/mpd protocol, dr_unsort needs filesystem level
write access to mpd\&'s playlist directory\&.
.SH ENVIRONMENT
dr_unsort honors strings DR_PLAYLISTS (mpd\&'s playlist directory) and DR_UNSORT
(unsort pathname)\&.
.SH SEE ALSO
unsort(1), available from http://packages\&.debian\&.org/unsort\&.
.SH COPYRIGHT AND LICENSE
This manpage is copyright 2010, 2011 Joost van Baal-Ilić \&.
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version\&. This program is distributed WITHOUT ANY WARRANTY\&. You should have
received a copy of the GNU General Public License along with draai\&. If not,
see http://www\&.gnu\&.org/licenses/\&.
.SH AUTHOR
Joost van Baal-Ilić
draai-20160601/man/dr_watch.1 0000644 0001750 0001750 00000002746 12723471434 012424 0000000 0000000 .\" Copyright (c) 2014 Joost van Baal-Ilić
.TH "dr_watch" 1 "28 Aug 2014" "dr_watch 20160601" "USER COMMANDS "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
dr_watch \- execute a program periodically, showing output fullscreen
.SH SYNOPSIS
dr_watch command
.SH DESCRIPTION
dr_watch tests wether watch(1) is available, and runs it if found\&. On
systems not shipping watch, it executes a crude reimplementation of this
program and runs command repeatedly, displaying its output\&.
.SH ENVIRONMENT
dr_watch honors integer DR_SLEEP: number of seconds to wait between execution\&.
.SH COPYRIGHT AND LICENSE
This manpage is copyright 2009, 2011, 2012 Joost van Baal-Ilić \&.
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version\&. This program is distributed WITHOUT ANY WARRANTY\&. You should have
received a copy of the GNU General Public License along with draai\&. If not,
see http://www\&.gnu\&.org/licenses/\&.
.SH AUTHOR
Joost van Baal-Ilić
draai-20160601/man/include.zmm.in 0000644 0001750 0001750 00000010002 12723470734 013306 0000000 0000000 \: This file is maintained at http://git.mdcc.cx/draai
\:
\: This file is free software; you can distribute it and/or modify it
\: under the terms of the GNU GPL. See the file COPYING.
\:
\: based upon mac/zoem.zmm in the zoem sources, and upon mcl.azm and mcx.zmm
\: Copyright (C) 2003, 2004, 2005 Joost van Baal,
\: Copyright (C) 2002, 2003, 2011 Stijn van Dongen
\setx{"man::year"}{\zinsert{@top_srcdir@/stamp.year}}
\setx{"man::month"}{\zinsert{@top_srcdir@/stamp.month}}
\setx{"man::day"}{\zinsert{@top_srcdir@/stamp.day}}
\setx{"man::tag"}{\zinsert{@top_srcdir@/VERSION}}
\setx{"man::year"}{\tr{{delete}{[:space:]}}{\"man::year"}}
\setx{"man::month"}{\tr{{delete}{[:space:]}}{\"man::month"}}
\setx{"man::day"}{\tr{{delete}{[:space:]}}{\"man::day"}}
\setx{"man::tag"}{\tr{{delete}{[:space:]}}{\"man::tag"}}
\: \set{"man::author"}{Joost van Baal-Илић }
\set{"man::author"}{Joost van Baal-Ilić }
\setx{man_share}{
{year} {\"man::year"}
{month} {\"man::month"}
{day} {\"man::day"}
{tag} {\"man::tag"}
{author} {\"man::author"}
{synstyle}{long}
{defstyle}{long}
}
\: store in an array:
\: \set{%{foo}{bar}{zut}}{{a}{b}{x}{y}}
\: \%{foo}{bar}{zut}{a}
\: \%{foo}{bar}{zut}{x}
\set{"help::command::draai"}{\finsert{@top_srcdir@/help/command/draai}}
\set{"help::command::watch"}{\finsert{@top_srcdir@/help/command/watch}}
\set{"help::command::init"}{\finsert{@top_srcdir@/help/command/init}}
\set{"help::command::guestlist"}{\finsert{@top_srcdir@/help/command/guestlist}}
\set{"help::command::unguestlist"}{\finsert{@top_srcdir@/help/command/unguestlist}}
\set{"help::command::insert"}{\finsert{@top_srcdir@/help/command/insert}}
\set{"help::command::move"}{\finsert{@top_srcdir@/help/command/move}}
\set{"help::command::search"}{\finsert{@top_srcdir@/help/command/search}}
\set{"help::command::tail"}{\finsert{@top_srcdir@/help/command/tail}}
\set{"help::command::logtail"}{\finsert{@top_srcdir@/help/command/logtail}}
\set{"help::command::list"}{\finsert{@top_srcdir@/help/command/list}}
\set{"help::command::peek"}{\finsert{@top_srcdir@/help/command/peek}}
\set{"help::command::play"}{\finsert{@top_srcdir@/help/command/play}}
\set{"help::command::syslog"}{\finsert{@top_srcdir@/help/command/syslog}}
\set{"help::command::skip"}{\finsert{@top_srcdir@/help/command/skip}}
\set{"help::command::osjittisstil"}{\finsert{@top_srcdir@/help/command/osjittisstil}}
\set{"help::command::zap"}{\finsert{@top_srcdir@/help/command/zap}}
\set{"help::command::delete"}{\finsert{@top_srcdir@/help/command/delete}}
\set{"help::command::fastforward"}{\finsert{@top_srcdir@/help/command/fastforward}}
\set{"help::command::crescendo"}{\finsert{@top_srcdir@/help/command/crescendo}}
\set{"help::command::diminuendo"}{\finsert{@top_srcdir@/help/command/diminuendo}}
\set{"help::command::harder"}{\finsert{@top_srcdir@/help/command/harder}}
\set{"help::command::zachter"}{\finsert{@top_srcdir@/help/command/zachter}}
\set{"help::command::shuffle"}{\finsert{@top_srcdir@/help/command/shuffle}}
\set{"help::command::listall"}{\finsert{@top_srcdir@/help/command/listall}}
\set{"help::command::add"}{\finsert{@top_srcdir@/help/command/add}}
\set{"help::command::quit"}{\finsert{@top_srcdir@/help/command/quit}}
\set{"help::option::debug"}{\finsert{@top_srcdir@/help/option/debug/description}}
\set{"help::option::noshuffle"}{\finsert{@top_srcdir@/help/option/noshuffle/description}}
\set{"help::option::raw"}{\finsert{@top_srcdir@/help/option/raw/description}}
\set{"help::option::sloppy"}{\finsert{@top_srcdir@/help/option/sloppy/description}}
\set{"help::option::playlist"}{\finsert{@top_srcdir@/help/option/playlist/description}}
\set{"help::option::time"}{\finsert{@top_srcdir@/help/option/time/description}}
\set{"help::shortoption::debug"}{\finsert{@top_srcdir@/help/option/debug/option}}
\set{"help::shortoption::noshuffle"}{\finsert{@top_srcdir@/help/option/noshuffle/option}}
\set{"help::shortoption::raw"}{\finsert{@top_srcdir@/help/option/raw/option}}
\set{"help::shortoption::sloppy"}{\finsert{@top_srcdir@/help/option/sloppy/option}}
draai-20160601/man/draai.azm 0000644 0001750 0001750 00000012676 12712616132 012335 0000000 0000000 \: vim:syntax=tex
\: This file is maintained at http://git.mdcc.cx/draai
\: This is a manpage in zoem format. See http://micans.org/zoem/, pud(7)
\: and /usr/share/doc/zoem/mac/buzzz.azm.gz
\: \begin{pud::man}{
\: {author}{Stijn van Dongen}
\: {year}{2009}
\: {day}{18}
\: {month}{Jan}
\: {stamp}{09-018}
\: }
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{draai}
{html_title}{draai}
{section}{1}
\man_share
}
\: \finsert{../help/command/guestlist}
\: \${html}{\"man::maketoc"}
\sec{name}{NAME}
\NAME{draai}{manage playlists and play audio files}
\sec{synopsis}{SYNOPSIS}
\par{draai [option [option ...]] command [track [track ...] | tracknumber [tracknumber ...]]}
\sec{description}{DESCRIPTION}
Draai is a wrapper around mpc, making playing music from the commandline more
enjoyable. mpc is a client for MPD, the Music Player Daemon. Using draai, one
can play an audiofile (ogg, mp3, flac, whatever your MPD offers), play all
files in a predefined playlist, view details on current, past and future
playing songs, skip to the next song, etc.
\sec{getting started}{GETTING STARTED}
Run "draai init" to get started using draai the way the author likes it. Then,
open another terminal window and run e.g.
$ draai listall | dr_permutate | draai add; draai play
to build a current playlist and start playing it.
Other ways of using draai are possible, see below.
\sec{commands}{COMMANDS}
\begin{itemize}
\item{draai}
\car{
\"help::command::draai"
}
\item{watch}
\car{
\"help::command::watch"
}
\item{init}
\car{
\"help::command::init"
}
\item{guestlist}
\car{
\"help::command::guestlist"
}
\item{unguestlist}
\car{
\"help::command::unguestlist"
}
\item{insert}
\car{
\"help::command::insert"
}
\item{move}
\car{
\"help::command::move"
}
\item{zap}
\car{
\"help::command::zap"
}
\item{search}
\car{
\"help::command::search"
}
\item{tail}
\car{
\"help::command::tail"
}
\item{logtail}
\car{
\"help::command::logtail"
}
\item{list}
\car{
\"help::command::list"
}
\item{peek}
\car{
\"help::command::peek"
}
\item{play}
\car{
\"help::command::play"
}
\item{syslog}
\car{
\"help::command::syslog"
}
\item{skip}
\car{
\"help::command::skip"
}
\item{osjittisstil}
\car{
\"help::command::osjittisstil"
}
\item{delete}
\car{
\"help::command::delete"
}
\item{fastforward}
\car{
\"help::command::fastforward"
}
\item{crescendo}
\car{
\"help::command::crescendo"
}
\item{diminuendo}
\car{
\"help::command::diminuendo"
}
\item{shuffle}
\car{
\"help::command::shuffle"
}
\item{listall}
\car{
\"help::command::listall"
}
\item{add}
\car{
\"help::command::add"
}
\item{quit}
\car{
\"help::command::quit"
}
\end{itemize}
\sec{options}{OPTIONS}
\begin{itemize}
\: \item{\defopt{-l}{i}{loudness}}
\: \car{
\: Loudness, which is specified as an integer inbetween 0 and 100.}
\: \item{\defopt{--debug}{debug}, \bf{-\"help::shortoption::debug"}}
\item{\defopt{--debug}{debug}, \bf{-d}}
\car{
\"help::option::debug"}
\item{\defopt{--playlist}{with playlistfile}, \bf{-p}}
\: \bf{-\"help::shortoption::playlist"}}
\car{
\"help::option::playlist"}
\: \item{\defopt{--noshuffle}{no shuffle}, {\bf{-\"help::shortoption::noshuffle"}}}
\item{\defopt{--noshuffle}{no shuffle}, {\bf{-S}}}
\car{
\"help::option::noshuffle"}
\item{\defopt{--raw}{raw}, \bf{-r}}
\car{
\"help::option::raw"}
\: \item{\defopt{--sloppy}{sloppy}, \bf{-\"help::shortoption::sloppy"}}
\item{\defopt{--sloppy}{sloppy}, \bf{-s}}
\car{
\"help::option::sloppy"}
\item{\defopt{--time}{with timespec}, \bf{-t}}
\car{
\"help::option::time"}
\end{itemize}
\sec{examples}{EXAMPLES}
Schedule all tracks containing the string 'delia gone' in title, artist, comment
or any other tag for playing, after current song has finished:
\tt{draai search 'delia gone' | draai insert}.
\sec{environment}{ENVIRONMENT}
Run \tt{grep DR_ `which draai`} to find out about environment variables
honored by draai. It honors: booleans:
DR_DEBUG
and
DR_SHUFFLE, DR_TIMESTAMP, DR_RAW and DR_SLOPPY
; strings:
DR_WATCH
; integers:
DR_CROSSFADE, DR_PEEK and DR_SEEK
as well as
DR_FADEOUT_STEP, DR_FADEOUT_REPEAT, and DR_FADEOUT_SLEEP
and
DR_VOLUME_STEP
; and some more strings:
DR_SYSLOG_FILE, DR_SYSLOG_FACILITY and DR_SYSLOG_LEVEL
. For now, see the draai code for what it all means.
\sec{files, configurarion}{FILES, CONFIGURATION}
All configuration variables (see ENVIRONMENT) can be set in \tt{~/.draai/rc}.
This rc-file is sourced as a shell script. If you'd like to set the syslog
facility, set \it{syslog_facility} (overruled by DR_SYSLOG_FACILITY). If you'd
like to set the watch programma, set \it{watch} (overruled by DR_WATCH).
\sec{see also}{SEE ALSO}
Lots of alternatives for draai exist. One is "herrie", by Ed Schouten and
Martijn van den Dungen, see http://freshmeat.net/projects/herrie/.
\sec{copyright and license}{COPYRIGHT AND LICENSE}
Draai is (C) 2000-2013 \"man::author".
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see \httpref{http://www.gnu.org/licenses/}.
\sec{author}{AUTHOR}
\"man::author"
\end{pud::man}
draai-20160601/man/dr_symlinks.azm 0000644 0001750 0001750 00000007076 12345413626 013616 0000000 0000000 \: vim:syntax=tex
\: This file is maintained at http://git.mdcc.cx/draai
\: This is a manpage in zoem format. See http://micans.org/zoem/, pud(7)
\: and /usr/share/doc/zoem/mac/buzzz.azm.gz
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{dr_symlinks}
{html_title}{dr_symlinks}
{section}{1}
\man_share
}
\: \${html}{\"man::maketoc"}
\sec{name}{NAME}
\NAME{dr_symlinks}{maintain a symlink forest}
\sec{synopsis}{SYNOPSIS}
\par{dr_symlinks}
\sec{description}{DESCRIPTION}
For each pair directory/subdirectory under each word in DR_SL_TARGETS, a
directory and symlink DR_SL_SOURCE/directory/symlink is created (or adjusted).
The script is implemented as a wrapper around oggsymlinks, by Wessel Dankers.
\sec{example}{EXAMPLE}
If, in the configuration file $HOME/.draai/symlinksrc, DR_SL_SOURCE is set to
/srv/audio and DR_SL_TARGETS is set to "../data/a ../data/b", while directories
\verbatim{
/srv/data/a/And_You_Will_Know_Us_By_the_Trail_of_Dead/Source_Tags_And_Codes/
/srv/data/a/And_You_Will_Know_Us_By_the_Trail_of_Dead/The_Century_of_Self/
/srv/data/a/John_Coltrane/A_Love_Supreme/
/srv/data/b/John_Coltrane/Giant_Steps/
/srv/data/b/Tinariwen/Amassakoul/
}
exist, the following directories holding the following symlinks will get created
in /srv/audio/ :
\verbatim{
And_You_Will_Know_Us_By_the_Trail_of_Dead/Source_Tags_And_Codes ->
../../../a/And_You_Will_Know_Us_By_the_Trail_of_Dead/Source_Tags_And_Codes/
And_You_Will_Know_Us_By_the_Trail_of_Dead/The_Century_of_Self ->
../../../a/And_You_Will_Know_Us_By_the_Trail_of_Dead/The_Century_of_Self/
John_Coltrane/A_Love_Supreme -> ../../../a/John_Coltrane/A_Love_Supreme/
John_Coltrane/Giant_Steps -> ../../../b/John_Coltrane/Giant_Steps/
Tinariwen/Amassakoul -> ../../../b/Tinariwen/Amassakoul/
}
All dangling symlinks and empty directories (if any) under /srv/audio/ will get
removed. This script is idempotent.
\sec{another example}{ANOTHER EXAMPLE}
\verbatim{
joostvb@hille:~% ls media/usb/audio/200504/Al_Green
The_Very_Best_Of/
joostvb@hille:~% ls media/usb/audio/
200504/ 200708/ 200801/ 200805/ 200807/ 200812/ 200910/ 201005/ 201009/
200609/ 200712/ 200803/ 200806/ 200808/ 200905/ 201004/ 201006/
joostvb@hille:~% cat .draai/symlinksrc.usb
DR_SL_SOURCE=~/media/audio
DR_SL_TARGETS="$( cd $DR_SL_SOURCE && ls -d ../usb/audio/* )"
joostvb@hille:~% DR_SL_RCFILE=.draai/symlinksrc.usb dr_symlinks
joostvb@hille:~% ls -l media/audio/Al_Green
total 0
lrwxrwxrwx 1 joostvb joostvb 48 2011-03-11 09:12 The_Very_Best_Of -> ../../usb/audio/200504/Al_Green/The_Very_Best_Of/
}
\sec{environment}{ENVIRONMENT}
dr_symlinks honors booleans: DR_SL_VERBOSE, DR_DEBUG and DR_DRYRUN and strings:
DR_SL_RCFILE, DR_SL_TARGETS and DR_SL_SOURCE.
\sec{files, configurarion}{FILES, CONFIGURATION}
All configuration variables (see ENVIRONMENT) can be set in
\tt{~/.draai/symlinksrc}. This rc-file is sourced as a shell script.
If DR_SL_RCFILE is set, its value is assumed to be the dr_symlinks rc-file.
\sec{copyright and license}{COPYRIGHT AND LICENSE}
This manpage is copyright 2009, 2011 \"man::author".
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see \httpref{http://www.gnu.org/licenses/}.
\sec{author}{AUTHOR}
\"man::author"
\end{pud::man}
draai-20160601/man/dr_unsort.azm 0000644 0001750 0001750 00000010013 12345413626 013260 0000000 0000000 \: vim:syntax=tex
\: This file is maintained at http://git.mdcc.cx/draai
\: This is a manpage in zoem format. See http://micans.org/zoem/, pud(7)
\: and /usr/share/doc/zoem/mac/buzzz.azm.gz
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{dr_unsort}
{html_title}{dr_unsort}
{section}{1}
\man_share
}
\: \finsert{../help/command/guestlist}
\: \${html}{\"man::maketoc"}
\sec{name}{NAME}
\NAME{dr_unsort}{unsort the current mpd playlist}
\sec{synopsis}{SYNOPSIS}
\par{dr_unsort}
\sec{description}{DESCRIPTION}
dr_unsort invokes unsort(1) on the current audio playlist as used by mpd.
Use it if you'd like some variation in your music.
\sec{example}{EXAMPLE}
If The_Beatles/The_White_Album_I/03-Glass_Onion.ogg is the current playing
track and your current playlist looks like
\verbatim{
Flying_Lotus/Los_Angeles/01 Brainfeeder.mp3
The_Beatles/The_White_Album_I/01-Back_in_the_U.S.S.R..ogg
The_Beatles/The_White_Album_I/02-Dear_Prudence.ogg
> The_Beatles/The_White_Album_I/03-Glass_Onion.ogg
The_Beatles/The_White_Album_I/04-Ob-La-Di,_Ob-La-Da.ogg
The_Beatles/The_White_Album_I/05-Wild_Honey_Pie.ogg
The_Beatles/The_White_Album_I/06-The_Continuing_Story_of_Bungalow_Bill.ogg
The_Beatles/The_White_Album_I/07-While_My_Guitar_Gently_Weeps.ogg
Flying_Lotus/Los_Angeles/02 Breathe . Something_Stellar STar.mp3
Flying_Lotus/Los_Angeles/03 Beginners Falafel.mp3
Flying_Lotus/Los_Angeles/04 Camel.mp3
Napalm_Death/The_Peel_Sessions/01-The_Kill-Prison_Without_Walls-Dead_Part_1.mp3
Napalm_Death/The_Peel_Sessions/02-Deceiver-Lucid_Fairytale-In_Extremis.mp3
Napalm_Death/The_Peel_Sessions/03-Blind_To_The_Truth-Negative_Approach-Common_Enemy.mp3
Napalm_Death/The_Peel_Sessions/04-Obstinate_Direction-Life-You_Suffer_Pt_2.mp3
Flying_Lotus/Los_Angeles/05 Melt!.mp3
Flying_Lotus/Los_Angeles/06 Comet Course.mp3
Flying_Lotus/Los_Angeles/07 Orbit 405.mp3
Flying_Lotus/Los_Angeles/08 Golden Diva.mp3
}
invoking dr_unsort will yield something like e.g.
\verbatim{
Flying_Lotus/Los_Angeles/01 Brainfeeder.mp3
The_Beatles/The_White_Album_I/01-Back_in_the_U.S.S.R..ogg
The_Beatles/The_White_Album_I/02-Dear_Prudence.ogg
> The_Beatles/The_White_Album_I/03-Glass_Onion.ogg
Flying_Lotus/Los_Angeles/02 Breathe . Something_Stellar STar.mp3
The_Beatles/The_White_Album_I/04-Ob-La-Di,_Ob-La-Da.ogg
Napalm_Death/The_Peel_Sessions/01-The_Kill-Prison_Without_Walls-Dead_Part_1.mp3
Flying_Lotus/Los_Angeles/03 Beginners Falafel.mp3
The_Beatles/The_White_Album_I/05-Wild_Honey_Pie.ogg
Napalm_Death/The_Peel_Sessions/02-Deceiver-Lucid_Fairytale-In_Extremis.mp3
Flying_Lotus/Los_Angeles/04 Camel.mp3
The_Beatles/The_White_Album_I/06-The_Continuing_Story_of_Bungalow_Bill.ogg
Napalm_Death/The_Peel_Sessions/03-Blind_To_The_Truth-Negative_Approach-Common_Enemy.mp3
Flying_Lotus/Los_Angeles/05 Melt!.mp3
The_Beatles/The_White_Album_I/07-While_My_Guitar_Gently_Weeps.ogg
Napalm_Death/The_Peel_Sessions/04-Obstinate_Direction-Life-You_Suffer_Pt_2.mp3
Flying_Lotus/Los_Angeles/06 Comet Course.mp3
Flying_Lotus/Los_Angeles/07 Orbit 405.mp3
Flying_Lotus/Los_Angeles/08 Golden Diva.mp3
}
\sec{warning}{WARNING}
Due to limitations in the mpc/mpd protocol, dr_unsort needs filesystem level
write access to mpd's playlist directory.
\sec{environment}{ENVIRONMENT}
dr_unsort honors strings DR_PLAYLISTS (mpd's playlist directory) and DR_UNSORT
(unsort pathname).
\sec{see also}{SEE ALSO}
unsort(1), available from http://packages.debian.org/unsort.
\sec{copyright and license}{COPYRIGHT AND LICENSE}
This manpage is copyright 2010, 2011 \"man::author".
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see \httpref{http://www.gnu.org/licenses/}.
\sec{author}{AUTHOR}
\"man::author"
\end{pud::man}
draai-20160601/man/dr_watch.azm 0000644 0001750 0001750 00000002635 12345413626 013047 0000000 0000000 \: vim:syntax=tex
\: This file is maintained at http://git.mdcc.cx/draai
\: This is a manpage in zoem format. See http://micans.org/zoem/, pud(7)
\: and /usr/share/doc/zoem/mac/buzzz.azm.gz
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{dr_watch}
{html_title}{dr_watch}
{section}{1}
\man_share
}
\: \${html}{\"man::maketoc"}
\sec{name}{NAME}
\NAME{dr_watch}{execute a program periodically, showing output fullscreen}
\sec{synopsis}{SYNOPSIS}
dr_watch command
\sec{description}{DESCRIPTION}
dr_watch tests wether watch(1) is available, and runs it if found. On
systems not shipping watch, it executes a crude reimplementation of this
program and runs command repeatedly, displaying its output.
\sec{environment}{ENVIRONMENT}
dr_watch honors integer DR_SLEEP: number of seconds to wait between execution.
\sec{copyright and license}{COPYRIGHT AND LICENSE}
This manpage is copyright 2009, 2011, 2012 \"man::author".
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see \httpref{http://www.gnu.org/licenses/}.
\sec{author}{AUTHOR}
\"man::author"
\end{pud::man}
draai-20160601/man/Makefile 0000644 0001750 0001750 00000002154 12723471310 012171 0000000 0000000 # This file is maintained at http://git.mdcc.cx/draai
# needs zoem > 10-265-1
azm2roff = zoem -d roff -i $< -o $@
azm2html = zoem -d html -i $< -o $@
all: draai.1 dr_permutate.1 dr_symlinks.1 dr_unsort.1 dr_watch.1 \
draai.html dr_symlinks.html dr_unsort.html dr_watch.html
clean:
-rm draai.1 dr_permutate.1 dr_symlinks.1 dr_unsort.1 \
dr_watch.1 draai.zmr *.zmt *.zmr *.html
## draai.1: ../script/draai
# # generate draai(1) using help2man ( ftp://ftp.gnu.org/gnu/help2man/ )
# # PYTHONPATH=`pwd`/../modules help2man --output $@ --name='manage playlists and play audio files' --no-info `pwd`/../script/draai
## help2man --output $@ --name='manage playlists and play audio files' --no-info `pwd`/../script/draai
SUFFIXES = .1 .html .azm .ps .txt
.SUFFIXES: .1 .html .azm .ps .txt
.azm.1:
$(azm2roff)
$(azm2roff)
draai.ps: draai.1
groff -man $< > $@
.azm.html:
$(azm2html)
$(azm2html)
## use -Tuft8 if you really need non-ascii characters
draai.txt: draai.1
troff -t -e -mandoc -Tascii $< | col -bxp > $@
dr_permutate.1: ../script/dr_permutate
pod2man --center=Draai --release="draai $$(cat ../VERSION)" $< $@
draai-20160601/script/ 0000755 0001750 0001750 00000000000 12723471434 011347 5 0000000 0000000 draai-20160601/script/draai 0000755 0001750 0001750 00000046610 12723471433 012303 0000000 0000000 #! /bin/zsh
# This file is maintained at http://git.mdcc.cx/draai
# draai - Joost van Baal-Ilić's music playing stuff
# see also
# joostvb@kovalevskaya:~% grep mpc .zshrc_local
# copyright:
COPYRIGHT='Copyright (C) 2006 - 2011 Joost van Baal, 2011 - 2015 Joost van Baal-Ilić'
# This program is freely distributable per the following license:
LICENSE="
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see ."
VERSION='20160601'
prog=`basename $0`
setopt extendedglob
# FIXME: default, rc, env, commandline
test -r $HOME/.draai/rc && . $HOME/.draai/rc
debug=${DR_DEBUG:-false}
shuffle=${DR_SHUFFLE:-true}
timestamp=${DR_TIMESTAMP:-true}
raw=${DR_RAW:-false}
sloppy=${DR_SLOPPY:-false}
shuffle_native=${DR_SHUFFLE_NATIVE:-false}
# DR_SHUFFLE_NATIVE: we want mpc/mpd's shuffle, not dr_unsort's unsort
# FIXME used in dr_watch(1) only
# sleep=${DR_SLEEP:-2}
# mpd.conf:
# metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc,comment"
rawformat="%position%) %file%: [[%artist% - ]%album% - %title% ][(%comment%)]([%name% - ][%genre% - ][%date% - ][%composer% - ][%performer% - ][%disc% - ][%track% ]%time%)"
format="[%position%) ][[[%artist% - ]%album% - %title%]|[%file%[ - %name%][ - %title%]]] (%time%)"
# format="[%position%) ][[[%artist% - ]%album% - %title%]|[%file%]] ([%name% - ]%time%)"
# draai list | grep '()'
crossfade=${DR_CROSSFADE:-4}
peek=${DR_PEEK:-30}
seek=${DR_SEEK:-20}
volume_step=${DR_VOLUME_STEP:-10}
fadeout_step=${DR_FADEOUT_STEP:-10}
fadeout_repeat=${DR_FADEOUT_REPEAT:-10}
fadeout_sleep=${DR_FADEOUT_SLEEP:-0.2}
syslog_file=${DR_SYSLOG_FILE:-/var/log/syslog}
syslog_facility=${DR_SYSLOG_FACILITY:-user}
syslog_level=${DR_SYSLOG_LEVEL:-info}
usage()
{
cat <'. You'll typically want to pipe
this commands output to e.g. 'draai insert'.
shuffle:
Shuffle the playlist. By default, this task is delegated to dr_unsort(1).
However, if draai runs in "sloppy" or in "native shuffle" mode, then mpc native
shuffling is done (by calling "mpc shuffle"). Draai runs in "sloppy" mode when
the DR_SLOPPY environment variable is set, or when the --sloppy option is
passed. Draai runs in "native shuffle" mode when the DR_SHUFFLE_NATIVE
environment variable is set.
skip:
Skip this track, start playing the next one now.
syslog:
Send raw information from tail to syslog. You likely want to run "draai
syslog" in the background.
tail:
Print information about track when it starts playing, similar to
tail -f on a logfile.
unguestlist:
Reschedule listed tracknumbers to end of playlist.
watch:
Run watch(1) on "draai peek".
zachter:
Play softer.
zap:
Move tracknumber to position one and immediately start playing it. Typically
used to deal with radiostations in playlist.
EOT
# -T, --notime if combined with tail: do not add timestamps
# FIXME: not yet implemented
# -n N, --number=N number of tracks FIXME: not yet implemented
}
# help2man ./draai | man -l -
fadeout()
{
# make it fade out (mpc does _not_ support that out of the box!)
# we could add a "silent" song as last and use crossfade
# we however use mpc's volume control.
# as a sideeffect, sets $volume to original volume
# % mpc volume
# volume: 87%
volume=$(mpc volume)
volume=${volume#volume: }
# 87%
volume=${volume%\%*}
# 87
if [[ ! $volume =~ 1?[0-9]?[0-9] ]]
then
volume=100
fi
step=$(( $volume / $fadeout_step ))
## repeat 20
repeat $fadeout_repeat
do
# -5
mpc volume -$step > /dev/null
# GNU coreutils
sleep $fadeout_sleep
done
## exponential fadeout:
## don't do that, it's way too fast
#
## # 1024 = 2^10
## step=$(( $vol / 1024 ))
## mpc volume -$step > /dev/null
## sleep 0.2
## repeat 8
## do
## mpc volume -$step > /dev/null
## step=$(( step * 2 ))
## sleep 0.2
## done
}
# calculate position of current track
position()
{
for l in $(mpc | grep playing)
do
# zshexpn(1) "FILENAME GENERATION"
if [[ $l == (#b)\#(*)/* ]]
then
position=$match
fi
done
$debug && echo >&2 $prog: set position to \'$position\'
}
# see zsh-betabuiltins(1) for getopts help
# see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=384014 for manpage
# http://zsh.dotsrc.org/Doc/Release/zsh_16.html#SEC89
# getopt(1) understands long options. use that one?
# dpigs(1) has nice getopt(1) example
OPTS=$(getopt -o VhdSp:n:t:Trsl --long version,help,debug,noshuffle,playlist:,number:,time:,notime,raw,sloppy,license -- "$@")
eval set -- "$OPTS"
# define playlists to be an (ordinary) array
typeset -a playlists
playlists=()
while true; do
case "$1" in
-V|--version)
echo $prog $VERSION
exit 0
;;
-h|--help)
usage
exit 0
;;
-q|--quiet)
quiet=true
shift
;;
-d|--debug)
debug=true
shift
;;
-S|--noshuffle)
shuffle=false
shift
;;
-p|--playlist)
playlists=($playlists "$2")
shift 2
;;
-n|--number)
n="$2"
shift 2
;;
-t|--time)
time="$2"
shift 2
;;
-T|--notime)
timestamp=false
shift
;;
-r|--raw)
raw=true
shift
;;
-s|--sloppy)
sloppy=true
shift
;;
-l|--license)
echo $COPYRIGHT
echo $LICENSE
exit 0
;;
--)
shift
break
;;
*)
usage
exit 1
;;
esac
done
shift $(($OPTIND - 1))
# define args to be an associative array
typeset -A args
command=$1
shift
$debug && echo >&2 $prog: peek is \'$peek\'
case $command in
draai)
# no other args:
# drDefault(plfiles=options.playlists, n=options.n, shuffle=options.shuffle)
# some files present:
# drDraai(args, n=options.n, shuffle=options.shuffle)
set -A files "$@"
if test -n "$time"
then
opts=
$debug && opts="--debug"
$shuffle || opts="$opts --noshuffle"
test -n "$n" && opts="$opts --number $n"
if test -n "$playlists"
then
for playlist in $playlists
do
opts="$opts --playlist $playlist"
done
fi
if [[ $time = (#b)+(<->) ]]
then
# fixme: more strict match
echo draai $opts draai $files | at now + $match minutes
else
echo draai $opts draai $files | at $time
fi
else
# mpc clear > /dev/null
mpc crop > /dev/null
$debug && echo >&2 "$prog: gonna add $files"
for f in $files
do
mpc add "$f"
$debug && echo >&2 $prog: adding \'$f\'
done
# for some reason, piping to mpc with ... echo $f; done | mpc add ... fails
for playlist in $playlists
do
mpc load "$playlist" | grep -v volume
done
$shuffle && mpc shuffle > /dev/null && mpc random off > /dev/null
mpc crossfade $crossfade > /dev/null
mpc play
fi
;;
watch)
dr_watch draai peek
;;
init|genesis)
# user should be permitted to write on tty12. on Debian systems, this
# means being a member of group tty. on systems running systemd, this
# will probably fail
ttymember=false
# will fail if current user is member of a group called 'foo tty'
# id as shipped with GNU coreutils
for g in $(id --name --groups)
do
test tty = "$g" && ttymember=true
done
$ttymember && draai tail >/dev/tty12 &
draai syslog &
if test -n "$DISPLAY"
then
x-terminal-emulator -e draai logtail &
DR_SLEEP_CMD='sleep 5' x-terminal-emulator -e dr_watch mpc &
x-terminal-emulator -e draai watch &
else
# use "screen improved" by some debian guy
# screen draai tail
# FIXME dr_watch()
screen -S draai -U dr_watch draai peek
# "create"
# exec
# DR_PEEK=10 screen -S draai -U dr_watch draai peek
# screen -p draai -X c
# screen -R (debian-specific)
# -d -m
fi
;;
next|volgende)
# drNext(plfile=drDefaultNextPLFile, n=options.n)
# next($args)
echo not yet implemented
;;
guestlist)
# FIXME we assume all args are >> current position
if test $# -gt 0
then
position=0
position
shift=0
for p in "$@"
do
echo $p
done | sort --numeric-sort --reverse | while read p
do
position=$(($position + 1 ))
p=$(( $p + $shift ))
$debug && echo >&2 "$prog: gonna move $p to $position"
mpc move $p $position
shift=$(( $shift + 1 ))
done
else
echo "$prog: command guestlist needs tracknumber(s)"
exit 1
fi
;;
unguestlist|unfriend|ontvriend)
if test $# -gt 0
then
position=$( mpc playlist | tail -1 | cut -d\) -f1 )
for p in "$@"
do
echo $p
done | sort --numeric-sort --reverse | while read p
do
$debug && echo >&2 "$prog: gonna move $p to $position"
mpc move $p $position
done
else
echo "$prog: command unguestlist needs tracknumber(s)"
exit 1
fi
;;
insert|voegin)
if test $# -gt 0
then
set -A files "$@"
$debug && echo >&2 $prog: gonna add \'$files\'
for f in $files
do
$debug && echo >&2 $prog: gonna add \'$f\'
mpc add "$f"
position=$( mpc playlist | tail -1 | cut -d\) -f1 )
draai guestlist $position
done
else
# reads from stdin
mpc insert
fi
;;
move)
if test $# -eq 2
then
mpc move "$@"
else
echo "$prog: command move needs 2 tracknumbers"
exit 1
fi
;;
search|zoek)
mpc search any "$@"
;;
nice)
# drNice(args[1:], plfiles=options.playlists, n=options.n, shuffle=options.shuffle)
echo not yet implemented
;;
skip|slaover)
# skip current song
$sloppy || fadeout
mpc next
# FIXME: is NOT sleeping really "sloppy"!?
$sloppy || sleep $fadeout_sleep
# restore original volume
$sloppy || mpc volume $volume >/dev/null
;;
zap)
# zap to track (or, more typically, radiostation) which is number
# in current playlist
if test $# -eq 1
then
mpc move $1 1
mpc play 1
else
echo "$prog: command zap needs one tracknumber"
exit 1
fi
;;
osjittisstil)
draai --sloppy skip
;;
delete)
if test $# -gt 0
then
for p in "$@"
do
echo $p
done | sort --numeric-sort --reverse | while read p
do
mpc del $p
done
else
position=0
position
mpc del $(( $position + 1 ))
fi
;;
fastforward|voorwaarts)
mpc seek +$seek%
;;
crescendo|harder|louder)
mpc volume +$volume_step
;;
diminuendo|zachter|softer)
mpc volume -$volume_step
;;
shuffle|schud)
$shuffle || echo 'warning: overruling DR_SHUFFLE'
if $sloppy or $shuffle_native
then
mpc shuffle
else
# dr_unsort needs filesystem level write access to mpd's playlist directory
dr_unsort || echo 'error: calling dr_unsort failed. no write access?'
fi
;;
listall|toonalles|toonalleliedjes)
# merely empty wrapper
mpc listall
;;
add|voegtoe)
if test $# -gt 0
then
set -A files "$@"
$debug && echo >&2 $prog: gonna add \'$files\'
for f in $files
do
$debug && echo >&2 $prog: gonna add \'$f\'
mpc add "$f"
done
else
# reads from stdin
mpc add
fi
;;
tail|staart)
# tail: like tail -f
# FIXME use variables for 2 and 74 e.a.
old=""
# FIXME do not sleep, but 'mpc idle' (mpc idle playlist , mpc idle player )
# while sleep 2; do
while mpc idle >/dev/null; do
current=$(mpc --format $format | head -1)
$raw && string=$(mpc --format $rawformat | head -1)
if test "$old" != "$current"
then
if $raw
then
echo $string
else
echo -n $(date +%H:%M)
# 80 - 5 = 75 columns left: 1 for space, 3 for dots, 41 + 30 for rest
# see zshmisc PROMPT EXPANSION / EXPANSION OF PROMPT SEQUENCES
# %G Within a %{...%} sequence, include a `glitch': that
# is, assume that a single character width will be
# output.
# c With ${#name}, count the total number of characters in an
# array, as if the elements were concatenated with spaces
# between them.
# %>string> Specifies truncation behaviour for the remainder
# of the prompt string.
# Sun 18 17:09 < Fruit> $#foo
# Sun 18 17:10 < Fruit> maar dat is stiekem stuk
# Sun 18 17:10 < Fruit> want dat geeft je het aantal bytes
# Sun 18 17:10 < Fruit> ipv het aantal karakters
# only truncate if $current > 74 chars.
# if <= 74 chars: line out to left
if [[ $#current -gt 74 ]]
then
# FIXME fails when playing from radio station
print -P " %41>>$current%>>...%30<<$current"
else
# parse current: Guitar - Mind The Gap Volume 61 - Tokyo Memory (5:19)
# split off timespec: rightadjust
# time is "12:16)"
time=$(echo $current | sed 's/.*(//')
track=$(echo $current | sed 's/^\(.*\)(.*$/\1/')
# we assume time is not wider than (234:67)
# AFX - Analord 08 - Backdoor.Spyboter.A (125:06)
# -66- ( -7-
printf " %-66.66s%8.8s\n" "$track" "($time"
fi
fi
old=$current
fi
done
# alternatively, one might like to run
# watch --no-title 'mpc --format "[[[%artist% - ]%album% - %title%]|[%file%]] ([%name% - ][%track% ]%time%)"'
;;
logtail)
tail -F $syslog_file | grep ' draai\['
;;
syslog)
draai --raw tail | logger -i -p $syslog_facility.$syslog_level -t draai
;;
list)
# list current playlist
$raw && format=$rawformat
mpc --format $format playlist
;;
peek|spiek)
# show status of current song
mpc | grep playing
# show upcoming $peek tracks
position=0
position
total=$(mpc playlist | wc -l)
$raw && format=$rawformat
$debug && echo >&2 $prog: peek is \'$peek\'
mpc --format $format playlist | tail -$(( $total - $position + 1 )) | head -$peek | \
while read current
do
time=$(echo $current | sed 's/.*(//')
track=$(echo $current | sed 's/^\(.*\)(.*$/\1/')
if [[ $#track -gt 74 ]]
then
if [[ $track == \>* ]]
then
print -nP "%47>>$track%>>...%22<<$track"
else
print -nP " %46>>$track%>>...%22<<$track"
fi
else
if [[ $track == \>* ]]
then
printf "%-72.72s" "$track"
else
printf " %-71.71s" "$track"
fi
fi
# we assume time is not wider than (234:67)
printf "%8s\n" "($time"
done
;;
play|unpause|resume|ga)
if test -n "$time"
then
if [[ $time = (#b)+(<->) ]]
then
# fixme: more strict match
echo draai play | at now + $match minutes
else
echo draai play | at $time
fi
else
mpc play
fi
;;
quit|exit|stop|pause|ho)
if test -n "$time"
then
if [[ $time = (#b)+(<->) ]]
then
# fixme: more strict match
echo draai quit | at now + $match minutes
else
echo draai quit | at $time
fi
else
fadeout
if [[ "$command" == pause ]]
then
mpc pause
else
mpc stop > /dev/null
fi
# restore original volume
mpc volume $volume > /dev/null
fi
;;
*)
usage
exit 1
;;
esac
draai-20160601/script/dr_permutate 0000755 0001750 0001750 00000004132 12345413626 013707 0000000 0000000 #! /usr/bin/perl -w
# This file is maintained at http://git.mdcc.cx/draai
# exec shuf : does the same, for input on stdin
# Copyright: © 2001 Joost van Baal
# This script is in the public domain.
use strict;
#
# permutate - give a random permutation
#
# permutate 3 e.g. could return (0, 2, 1)
#
sub permutate
{
my $n = shift;
my %h;
for my $i (0 .. $n-1) {
# rand $exp - a random fractional number >= 0, < $exp
my $r = int rand $n - $i;
my $k = -1;
# find r-th undefined key in %h
for my $j (0 .. $r) {
# go find the next undefined key after number $k
$k++;
while (defined $h{$k}) {
$k++;
}
}
# and fill it with $i
$h{$k} = $i;
}
return map { $h{$_} } (0 .. $n-1);
}
my @a;
if (@ARGV) {
@a = map { $ARGV[$_] } &permutate( scalar @ARGV );
print "@a\n";
} else {
@a = <>;
@a = map { $a[$_] } &permutate( scalar @a );
print @a;
}
__END__
=pod
=head1 NAME
dr_permutate - print randomly permutated arguments or stdin
=head1 SYNOPSIS
B I
B
=head1 DESCRIPTION
When called with arguments, B returns its arguments in randomly
permutated order, space separated. When called without any arguments,
B expects a line-oriented file on stdin. It returns the contents of
this file, with lines randomly permutated.
=head1 EXAMPLE
Running
$ dr_permutate foo bar baz
could return
bar foo baz
. Running
$ cat <
=cut
draai-20160601/script/dr_symlinks 0000755 0001750 0001750 00000003371 12345413626 013556 0000000 0000000 #! /bin/sh
# This file is maintained at http://git.mdcc.cx/draai
# First version written at 2000-09-12.
# Copyright: © 2000-2007, 2011 Joost van Baal-Ilić
# © 2008 Wessel Dankers
#
# This program is part of draai.
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version. This program is distributed WITHOUT ANY WARRANTY. You should have
# received a copy of the GNU General Public License along with draai. If not,
# see .
set -e
# rcfile=${DR_SL_RCFILE:$HOME/.draai/symlinksrc}
# this should define DR_SL_TARGETS and DR_SL_SOURCE
#
# DR_SL_TARGETS should be relative to $DR_SL_SOURCE, e.g.:
#
# DR_SL_TARGETS="../../../../nfs/hille/home/dj/mp3 ../../../../nfs/schilow/var/mp3
# ../../../../nfs/schilow/home/dj/mp3
# ../../../../nfs/abramowitz/data1/8gieg/dj/mp3"
# DR_SL_SOURCE=$HOME/mp3
#
if test -f "$DR_SL_RCFILE"
then
. "$DR_SL_RCFILE"
elif test -f "$HOME/.draai/symlinksrc"
then
. "$HOME/.draai/symlinksrc"
else
echo "panic: no rcfile ($HOME/.draai/symlinksrc). it should set DR_SL_TARGET and DR_SL_SOURCE." >&2
exit 1
fi
# DR_DRYRUN=1 <- use this as a "-n"-option to oggsymlinks
# DR_DEBUG : print debug messages (you likely want to set DR_VERBOSE too if you set this)
DR_VERBOSE=${DR_SL_VERBOSE:-1}
export DR_VERBOSE
if command -v oggsymlinks >/dev/null
then
OGGSYMLINKS=$(command -v oggsymlinks)
else
# FIXME: evil hardcoded path. should do @expansion@
OGGSYMLINKS=/usr/share/draai/oggsymlinks
fi
exec $OGGSYMLINKS "$DR_SL_SOURCE" $DR_SL_TARGETS
draai-20160601/script/dr_unsort 0000755 0001750 0001750 00000004376 12345413626 013245 0000000 0000000 #! /bin/sh
# dr_unsort - wrapper for unsort(1), based upon mpd-unsort by Wessel Dankers
#
# This file is maintained at http://git.mdcc.cx/draai
# Copyright: © 2008-2009 Wessel Dankers
# Copyright: © 2009 Joost van Baal
# This program is in the public domain.
#
# homsar.uvt.nl:/usr/local/bin/mpd-unsort - by Wessel Dankers
#
# ma 27 11:11 < joostvb> Fruit: Is homsar:/usr/local/bin/mpd-unsort GPL-ed?
# ma 27 11:13 < Fruit> joostvb: eh nee, public domain
# ma 27 11:13 < joostvb> Fruit: ok, thanks!
# april 2009 [11:14] [joostvb(+i)] [5:meuknet/#uvt] [Act: 3,14]
# unsort doet eerlijk mengen van 2 playlists.
# of:
# za 05 07:17 < joostvb> Fruit: in mpd's src/playlist.c, naast int
# shufflePlaylist(int fd), moet een int
# za 05 07:17 < joostvb> unsortPlaylist(int fd) komen.
# za 05 07:17 < joostvb> Fruit: ja echt
# za 05 07:17 < joostvb> damnit
# za 05 07:17 < joostvb> en t protocol moet dan ook nog uitgebreid worden.
# command unsort naast command shuffle
# .
# > laat draai in /var/lib/mpd/playlists krassen, en gebruik op die
# > manier unsort. playlists exporteren over nfs indien nodig.
# .
# Tue 29 13:39 < joostvb> maar ik heb toch schrijfrechten op
# homsar:/var/lib/mpd/playlists nodig?
# Tue 29 13:40 < Fruit> Toevoegen gebruiker `joostvb' aan groep `audio'...
# .
# ~/.draai/playlists should be symlink to /var/lib/mpd/playlists
playlists=${DR_PLAYLISTS:-/var/lib/mpd/playlists}
for uid in $UID $LOGNAME $USER;do :;done
prefix=${uid}_unsort_
unsort=${DR_UNSORT:-`command -v unsort`}
unset LANG LC_ALL
set -e
exec >/dev/null
current=$(mpc | sed -n 's|^\[[^]]*\] *#\([0-9]\+\)/.*$|\1|p')
case $current in *[!0-9]*|0*|'')
echo "Can't get number of currently playing track ($current)" >&2
exit 2
esac
if [ -f $playlists/${prefix}in.m3u ]
then
mpc rm ${prefix}in
fi
mpc save ${prefix}in
trap 'rm -f $playlists/${prefix}head.m3u $playlists/${prefix}tail.m3u' EXIT
head -n $(( $current - 1 )) $playlists/${prefix}in.m3u >$playlists/${prefix}head.m3u
tail -n +$(( $current + 1 )) $playlists/${prefix}in.m3u |
$unsort "$@" >$playlists/${prefix}tail.m3u
mpc --no-status random off
while ! mpc crop
do
sleep 1
done
mpc load ${prefix}head
mpc move 1 $current
mpc load ${prefix}tail
mpc rm ${prefix}in
draai-20160601/script/dr_watch 0000755 0001750 0001750 00000002073 12712405260 013002 0000000 0000000 #! /bin/sh
# This file is maintained at http://git.mdcc.cx/draai
# % DR_SLEEP=5 dr_watch draai peek
# Unlike watch as shipped with Linux procps << 3.3.3,
# it will deal sane with non-ascii output (like UTF-8). (See also
# http://bugs.debian.org/240989.) ( From: Craig Small
# Fixed in procps 3.2.8-3 Date: Fri, 5 Feb 2010 21:46:09 +1100 )
set -e
sleep=${DR_SLEEP:-2}
sleepcmd=${DR_SLEEP_CMD:-"mpc idle"}
nicewatch=${DR_NICE_WATCH:-true}
if test -n "$DR_WATCH"
then
exec $DR_WATCH "$@"
elif $nicewatch
then
term_cup=$(tput cup 0 0 2>/dev/null || echo -n "[H")
term_el=$(tput el 2>/dev/null || echo -n "[K")
term_ed=$(tput ed 2>/dev/null || echo -n "[J")
while exec
do
echo "$term_cup$("$@")$term_ed"
$sleepcmd
done | sed "s/$/$term_el/"
elif command -v watch >/dev/null
then
exec watch --no-title --interval $sleep "$@"
else
echo >&2 "dr_watch: no suitable watch-program found. either set DR_RUN_WATCH=true, assign something suitable to DR_WATCH or install a program called watch in your PATH. giving up."
exit 1
fi
draai-20160601/script/draai.in 0000755 0001750 0001750 00000040023 12723457501 012700 0000000 0000000 #! /bin/zsh
# This file is maintained at http://git.mdcc.cx/draai
# draai - Joost van Baal-Ilić's music playing stuff
# see also
# joostvb@kovalevskaya:~% grep mpc .zshrc_local
# copyright:
COPYRIGHT='Copyright (C) 2006 - 2011 Joost van Baal, 2011 - 2015 Joost van Baal-Ilić'
# This program is freely distributable per the following license:
LICENSE="
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. This program is distributed WITHOUT ANY WARRANTY. You should have
received a copy of the GNU General Public License along with draai. If not,
see ."
VERSION='@VERSION@'
prog=`basename $0`
setopt extendedglob
# FIXME: default, rc, env, commandline
test -r $HOME/.draai/rc && . $HOME/.draai/rc
debug=${DR_DEBUG:-false}
shuffle=${DR_SHUFFLE:-true}
timestamp=${DR_TIMESTAMP:-true}
raw=${DR_RAW:-false}
sloppy=${DR_SLOPPY:-false}
shuffle_native=${DR_SHUFFLE_NATIVE:-false}
# DR_SHUFFLE_NATIVE: we want mpc/mpd's shuffle, not dr_unsort's unsort
# FIXME used in dr_watch(1) only
# sleep=${DR_SLEEP:-2}
# mpd.conf:
# metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc,comment"
rawformat="%position%) %file%: [[%artist% - ]%album% - %title% ][(%comment%)]([%name% - ][%genre% - ][%date% - ][%composer% - ][%performer% - ][%disc% - ][%track% ]%time%)"
format="[%position%) ][[[%artist% - ]%album% - %title%]|[%file%[ - %name%][ - %title%]]] (%time%)"
# format="[%position%) ][[[%artist% - ]%album% - %title%]|[%file%]] ([%name% - ]%time%)"
# draai list | grep '()'
crossfade=${DR_CROSSFADE:-4}
peek=${DR_PEEK:-30}
seek=${DR_SEEK:-20}
volume_step=${DR_VOLUME_STEP:-10}
fadeout_step=${DR_FADEOUT_STEP:-10}
fadeout_repeat=${DR_FADEOUT_REPEAT:-10}
fadeout_sleep=${DR_FADEOUT_SLEEP:-0.2}
syslog_file=${DR_SYSLOG_FILE:-/var/log/syslog}
syslog_facility=${DR_SYSLOG_FACILITY:-user}
syslog_level=${DR_SYSLOG_LEVEL:-info}
usage()
{
cat < /dev/null
# GNU coreutils
sleep $fadeout_sleep
done
## exponential fadeout:
## don't do that, it's way too fast
#
## # 1024 = 2^10
## step=$(( $vol / 1024 ))
## mpc volume -$step > /dev/null
## sleep 0.2
## repeat 8
## do
## mpc volume -$step > /dev/null
## step=$(( step * 2 ))
## sleep 0.2
## done
}
# calculate position of current track
position()
{
for l in $(mpc | grep playing)
do
# zshexpn(1) "FILENAME GENERATION"
if [[ $l == (#b)\#(*)/* ]]
then
position=$match
fi
done
$debug && echo >&2 $prog: set position to \'$position\'
}
# see zsh-betabuiltins(1) for getopts help
# see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=384014 for manpage
# http://zsh.dotsrc.org/Doc/Release/zsh_16.html#SEC89
# getopt(1) understands long options. use that one?
# dpigs(1) has nice getopt(1) example
OPTS=$(getopt -o VhdSp:n:t:Trsl --long version,help,debug,noshuffle,playlist:,number:,time:,notime,raw,sloppy,license -- "$@")
eval set -- "$OPTS"
# define playlists to be an (ordinary) array
typeset -a playlists
playlists=()
while true; do
case "$1" in
-V|--version)
echo $prog $VERSION
exit 0
;;
-h|--help)
usage
exit 0
;;
-q|--quiet)
quiet=true
shift
;;
-d|--debug)
debug=true
shift
;;
-S|--noshuffle)
shuffle=false
shift
;;
-p|--playlist)
playlists=($playlists "$2")
shift 2
;;
-n|--number)
n="$2"
shift 2
;;
-t|--time)
time="$2"
shift 2
;;
-T|--notime)
timestamp=false
shift
;;
-r|--raw)
raw=true
shift
;;
-s|--sloppy)
sloppy=true
shift
;;
-l|--license)
echo $COPYRIGHT
echo $LICENSE
exit 0
;;
--)
shift
break
;;
*)
usage
exit 1
;;
esac
done
shift $(($OPTIND - 1))
# define args to be an associative array
typeset -A args
command=$1
shift
$debug && echo >&2 $prog: peek is \'$peek\'
case $command in
draai)
# no other args:
# drDefault(plfiles=options.playlists, n=options.n, shuffle=options.shuffle)
# some files present:
# drDraai(args, n=options.n, shuffle=options.shuffle)
set -A files "$@"
if test -n "$time"
then
opts=
$debug && opts="--debug"
$shuffle || opts="$opts --noshuffle"
test -n "$n" && opts="$opts --number $n"
if test -n "$playlists"
then
for playlist in $playlists
do
opts="$opts --playlist $playlist"
done
fi
if [[ $time = (#b)+(<->) ]]
then
# fixme: more strict match
echo draai $opts draai $files | at now + $match minutes
else
echo draai $opts draai $files | at $time
fi
else
# mpc clear > /dev/null
mpc crop > /dev/null
$debug && echo >&2 "$prog: gonna add $files"
for f in $files
do
mpc add "$f"
$debug && echo >&2 $prog: adding \'$f\'
done
# for some reason, piping to mpc with ... echo $f; done | mpc add ... fails
for playlist in $playlists
do
mpc load "$playlist" | grep -v volume
done
$shuffle && mpc shuffle > /dev/null && mpc random off > /dev/null
mpc crossfade $crossfade > /dev/null
mpc play
fi
;;
watch)
dr_watch draai peek
;;
init|genesis)
# user should be permitted to write on tty12. on Debian systems, this
# means being a member of group tty. on systems running systemd, this
# will probably fail
ttymember=false
# will fail if current user is member of a group called 'foo tty'
# id as shipped with GNU coreutils
for g in $(id --name --groups)
do
test tty = "$g" && ttymember=true
done
$ttymember && draai tail >/dev/tty12 &
draai syslog &
if test -n "$DISPLAY"
then
x-terminal-emulator -e draai logtail &
DR_SLEEP_CMD='sleep 5' x-terminal-emulator -e dr_watch mpc &
x-terminal-emulator -e draai watch &
else
# use "screen improved" by some debian guy
# screen draai tail
# FIXME dr_watch()
screen -S draai -U dr_watch draai peek
# "create"
# exec
# DR_PEEK=10 screen -S draai -U dr_watch draai peek
# screen -p draai -X c
# screen -R (debian-specific)
# -d -m
fi
;;
next|volgende)
# drNext(plfile=drDefaultNextPLFile, n=options.n)
# next($args)
echo not yet implemented
;;
guestlist)
# FIXME we assume all args are >> current position
if test $# -gt 0
then
position=0
position
shift=0
for p in "$@"
do
echo $p
done | sort --numeric-sort --reverse | while read p
do
position=$(($position + 1 ))
p=$(( $p + $shift ))
$debug && echo >&2 "$prog: gonna move $p to $position"
mpc move $p $position
shift=$(( $shift + 1 ))
done
else
echo "$prog: command guestlist needs tracknumber(s)"
exit 1
fi
;;
unguestlist|unfriend|ontvriend)
if test $# -gt 0
then
position=$( mpc playlist | tail -1 | cut -d\) -f1 )
for p in "$@"
do
echo $p
done | sort --numeric-sort --reverse | while read p
do
$debug && echo >&2 "$prog: gonna move $p to $position"
mpc move $p $position
done
else
echo "$prog: command unguestlist needs tracknumber(s)"
exit 1
fi
;;
insert|voegin)
if test $# -gt 0
then
set -A files "$@"
$debug && echo >&2 $prog: gonna add \'$files\'
for f in $files
do
$debug && echo >&2 $prog: gonna add \'$f\'
mpc add "$f"
position=$( mpc playlist | tail -1 | cut -d\) -f1 )
draai guestlist $position
done
else
# reads from stdin
mpc insert
fi
;;
move)
if test $# -eq 2
then
mpc move "$@"
else
echo "$prog: command move needs 2 tracknumbers"
exit 1
fi
;;
search|zoek)
mpc search any "$@"
;;
nice)
# drNice(args[1:], plfiles=options.playlists, n=options.n, shuffle=options.shuffle)
echo not yet implemented
;;
skip|slaover)
# skip current song
$sloppy || fadeout
mpc next
# FIXME: is NOT sleeping really "sloppy"!?
$sloppy || sleep $fadeout_sleep
# restore original volume
$sloppy || mpc volume $volume >/dev/null
;;
zap)
# zap to track (or, more typically, radiostation) which is number
# in current playlist
if test $# -eq 1
then
mpc move $1 1
mpc play 1
else
echo "$prog: command zap needs one tracknumber"
exit 1
fi
;;
osjittisstil)
draai --sloppy skip
;;
delete)
if test $# -gt 0
then
for p in "$@"
do
echo $p
done | sort --numeric-sort --reverse | while read p
do
mpc del $p
done
else
position=0
position
mpc del $(( $position + 1 ))
fi
;;
fastforward|voorwaarts)
mpc seek +$seek%
;;
crescendo|harder|louder)
mpc volume +$volume_step
;;
diminuendo|zachter|softer)
mpc volume -$volume_step
;;
shuffle|schud)
$shuffle || echo 'warning: overruling DR_SHUFFLE'
if $sloppy or $shuffle_native
then
mpc shuffle
else
# dr_unsort needs filesystem level write access to mpd's playlist directory
dr_unsort || echo 'error: calling dr_unsort failed. no write access?'
fi
;;
listall|toonalles|toonalleliedjes)
# merely empty wrapper
mpc listall
;;
add|voegtoe)
if test $# -gt 0
then
set -A files "$@"
$debug && echo >&2 $prog: gonna add \'$files\'
for f in $files
do
$debug && echo >&2 $prog: gonna add \'$f\'
mpc add "$f"
done
else
# reads from stdin
mpc add
fi
;;
tail|staart)
# tail: like tail -f
# FIXME use variables for 2 and 74 e.a.
old=""
# FIXME do not sleep, but 'mpc idle' (mpc idle playlist , mpc idle player )
# while sleep 2; do
while mpc idle >/dev/null; do
current=$(mpc --format $format | head -1)
$raw && string=$(mpc --format $rawformat | head -1)
if test "$old" != "$current"
then
if $raw
then
echo $string
else
echo -n $(date +%H:%M)
# 80 - 5 = 75 columns left: 1 for space, 3 for dots, 41 + 30 for rest
# see zshmisc PROMPT EXPANSION / EXPANSION OF PROMPT SEQUENCES
# %G Within a %{...%} sequence, include a `glitch': that
# is, assume that a single character width will be
# output.
# c With ${#name}, count the total number of characters in an
# array, as if the elements were concatenated with spaces
# between them.
# %>string> Specifies truncation behaviour for the remainder
# of the prompt string.
# Sun 18 17:09 < Fruit> $#foo
# Sun 18 17:10 < Fruit> maar dat is stiekem stuk
# Sun 18 17:10 < Fruit> want dat geeft je het aantal bytes
# Sun 18 17:10 < Fruit> ipv het aantal karakters
# only truncate if $current > 74 chars.
# if <= 74 chars: line out to left
if [[ $#current -gt 74 ]]
then
# FIXME fails when playing from radio station
print -P " %41>>$current%>>...%30<<$current"
else
# parse current: Guitar - Mind The Gap Volume 61 - Tokyo Memory (5:19)
# split off timespec: rightadjust
# time is "12:16)"
time=$(echo $current | sed 's/.*(//')
track=$(echo $current | sed 's/^\(.*\)(.*$/\1/')
# we assume time is not wider than (234:67)
# AFX - Analord 08 - Backdoor.Spyboter.A (125:06)
# -66- ( -7-
printf " %-66.66s%8.8s\n" "$track" "($time"
fi
fi
old=$current
fi
done
# alternatively, one might like to run
# watch --no-title 'mpc --format "[[[%artist% - ]%album% - %title%]|[%file%]] ([%name% - ][%track% ]%time%)"'
;;
logtail)
tail -F $syslog_file | grep ' draai\['
;;
syslog)
draai --raw tail | logger -i -p $syslog_facility.$syslog_level -t draai
;;
list)
# list current playlist
$raw && format=$rawformat
mpc --format $format playlist
;;
peek|spiek)
# show status of current song
mpc | grep playing
# show upcoming $peek tracks
position=0
position
total=$(mpc playlist | wc -l)
$raw && format=$rawformat
$debug && echo >&2 $prog: peek is \'$peek\'
mpc --format $format playlist | tail -$(( $total - $position + 1 )) | head -$peek | \
while read current
do
time=$(echo $current | sed 's/.*(//')
track=$(echo $current | sed 's/^\(.*\)(.*$/\1/')
if [[ $#track -gt 74 ]]
then
if [[ $track == \>* ]]
then
print -nP "%47>>$track%>>...%22<<$track"
else
print -nP " %46>>$track%>>...%22<<$track"
fi
else
if [[ $track == \>* ]]
then
printf "%-72.72s" "$track"
else
printf " %-71.71s" "$track"
fi
fi
# we assume time is not wider than (234:67)
printf "%8s\n" "($time"
done
;;
play|unpause|resume|ga)
if test -n "$time"
then
if [[ $time = (#b)+(<->) ]]
then
# fixme: more strict match
echo draai play | at now + $match minutes
else
echo draai play | at $time
fi
else
mpc play
fi
;;
quit|exit|stop|pause|ho)
if test -n "$time"
then
if [[ $time = (#b)+(<->) ]]
then
# fixme: more strict match
echo draai quit | at now + $match minutes
else
echo draai quit | at $time
fi
else
fadeout
if [[ "$command" == pause ]]
then
mpc pause
else
mpc stop > /dev/null
fi
# restore original volume
mpc volume $volume > /dev/null
fi
;;
*)
usage
exit 1
;;
esac
draai-20160601/script/dr_file2tag 0000755 0001750 0001750 00000001304 12345413626 013374 0000000 0000000 #!/bin/sh
# This file is maintained at http://git.mdcc.cx/draai
#
# Copyright: © 2008 Joost van Baal. This program is in the public domain.
# dr_file2tag - build tag info from filename
#
# example usage:
# eval `dr_file2tag 03-Wochtzchée-Sleepin_instructions_\(extract\).ogg`
#
set -e
file="$1"
# [artist-]title.{ogg,mp3}
# strip .mp3 , .ogg
file="`echo $file | sed 's/\.[^\.]*$//'`"
# strip leading 01-
file="`echo $file | sed 's/^[0-9]*-//'`"
file="`echo $file | sed 's/_/ /g'`"
artist="`echo $file | cut -d- -f1`"
if test "$artist" != "$file"
then
echo "ARTIST=$artist"
file="`echo $file | cut -d- -f2`"
fi
echo "TITLE=$file"
# oggenc(1):
# ARTIST is -a, ALBUM is -l TITLE is -t.
draai-20160601/script/dr_radio 0000755 0001750 0001750 00000000201 12703472277 012775 0000000 0000000 #!/bin/sh
# put radio stations in current playlist as next few songs
draai guestlist $( draai list | grep '()' | cut -d\) -f1 )
draai-20160601/script/oggsymlinks 0000755 0001750 0001750 00000010477 12345413626 013573 0000000 0000000 #! /usr/bin/perl
# This file is maintained at http://git.mdcc.cx/draai
# oggsymlinks - maintain a symlink forest
# Copyright (C) 2008 Wessel Dankers
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
use strict;
use warnings;
use utf8;
use Carp;
my $dot = ord '.';
my $slash = ord '/';
my $verbose = $ENV{'DR_VERBOSE'};
my $debug = $ENV{'DR_DEBUG'};
my $dryrun = $ENV{'DR_DRYRUN'};
my $target = shift @ARGV;
my %target;
opendir TARGET, $target
or croak "Can't open $target: $!";
while(my $artist = readdir TARGET) {
next if ord($artist) == $dot;
my $dir = "$target/$artist";
my %albums;
unless(opendir ARTIST, $dir) {
my $err = $!;
unless(-d $dir) {
carp "$dir is not a directory, skipping";
undef $target{$artist};
next;
}
croak "Can't open $dir: $err";
}
while(my $album = readdir ARTIST) {
next if ord($album) == $dot;
my $link = "$dir/$album";
my $dest = readlink $link;
$albums{$album} = $dest;
unless(defined $dest) {
my $err = $!;
if(!-l $link) {
carp "$link is not a symlink, skipping";
} else {
carp "Can't read symlink $link: $err";
}
next;
}
}
$target{$artist} = \%albums;
}
closedir TARGET;
sub path {
my ($dir, $path) = @_;
return $path if ord($path) == $slash;
return "$dir/$path";
}
my %source;
foreach my $source (@ARGV) {
# strip multiple/trailing slashes
$source =~ s|//+|/|g;
$source =~ s|(.)/$|$1|;
my $psource = path($target, $source);
opendir SOURCE, $psource
or croak "Can't open $psource: $!";
while(my $artist = readdir SOURCE) {
next if ord($artist) == $dot;
my $dir = "$source/$artist";
my $pdir = "$psource/$artist";
my $dude;
$source{$artist} = {} unless exists $source{$artist};
$dude = $source{$artist};
my %albums;
unless(opendir ARTIST, $pdir) {
my $err = $!;
unless(-d $pdir) {
carp "$pdir is not a directory, skipping";
next;
}
croak "Can't open $pdir: $!";
}
while(my $album = readdir ARTIST) {
print "Inspecting $source, $artist, $album\n" if $debug;
next if ord($album) == $dot;
$dude->{$album} = $source;
}
}
closedir SOURCE;
}
# remove redundant/bad symlinks and directories
while(my ($artist, $tartist) = each(%target)) {
next unless defined $tartist;
my $sartist = $source{$artist};
while(my ($album, $link) = each(%$tartist)) {
next unless defined $link;
my $to = "$target/$artist/$album";
if(defined $sartist) {
my $src = $sartist->{$album};
next if
defined $src
and $link eq path('..', "$src/$artist/$album");
}
if($verbose) {
print "Would run: " if $dryrun;
print "unlink $to\n";
}
unless($dryrun) {
unlink $to or croak "Can't create remove $to: $!";
}
delete $tartist->{$album};
}
next if defined $sartist;
next if keys %$tartist;
my $dir = path($target, $artist);
if($verbose) {
print "Would run: " if $dryrun;
print "rmdir $dir\n";
}
unless($dryrun) {
rmdir $dir or warn "Can't rmdir $dir: $!";
}
}
# create missing directories and symlinks
while(my ($artist, $sartist) = each(%source)) {
my $tartist;
if(exists $target{$artist}) {
$tartist = $target{$artist};
next unless defined $tartist;
} else {
my $dir = path($target, $artist);
if($verbose) {
print "Would run: " if $dryrun;
print "mkdir $dir\n";
}
unless($dryrun) {
mkdir $dir or croak "Can't mkdir $dir: $!";
}
$tartist = {};
}
while(my ($album, $src) = each(%$sartist)) {
print "Checking for missing symlinks for $src, $artist, $album\n" if $debug;
next if exists $tartist->{$album};
my $from = path('..', "$src/$artist/$album");
my $to = "$target/$artist/$album";
if($verbose) {
print "Would run: " if $dryrun;
print "symlink $from, $to\n";
}
unless($dryrun) {
symlink $from, $to
or croak "Can't create symlink to $to at $from: $!";
}
}
}
draai-20160601/script/draai123 0000755 0001750 0001750 00000002364 12345413626 012527 0000000 0000000 #! /bin/bash
# draai123 - wrapper for ogg123 and mpg321. See also music123.
#
# suggested usage:
#
# ~$ cat <muziekje
# #!/bin/sh
# find "$@" -type f | dr_permutate | while read t; do draai123 "$t"; done
# EOT
#
# ~$ muziekje [A-W]*
# ~$ muziekje
#fixme: /bin/sh, use
#
#case $1
# *.ogg
# ;;
if [[ "$1" == *.ogg ]]
then
ogg123 -d alsa09 "$1"
# ogg123 -d oss "$1"
# 2>&1 | egrep -v '^Device|^Author|^Comments'
# that would screw up the nice curses tricks...
# it's NOT ogg123 which tries to be smart wether we have a tty.
# it's probably grep screwing up.
# | cat works just fine.
elif [[ "$1" == *.mp3 ]]
then
echo -n "Playing: "
if command -v id3 >/dev/null
then
id3 -l "$1"
elif command -v mp3info >/dev/null
then
echo
mp3info "$1"
else
echo $1
fi
mpg321 -v -q "$1"
# mpg321 "$1" 2>&1 | egrep -v '^High|^Version |^Uses |^THIS|^Directory'
elif [[ "$1" == *.flac ]]
then
if command -v flac123 >/dev/null
then
flac123 "$1"
else
echo >&2 Skipping $1: no flac player found
fi
else
echo >&2 Skipping $1: .ogg nor .mp3 nor .flac
fi
echo '...........................................................................'
draai-20160601/zsh/ 0000755 0001750 0001750 00000000000 12723471434 010647 5 0000000 0000000 draai-20160601/zsh/_draai 0000644 0001750 0001750 00000015503 12723471433 011734 0000000 0000000 #compdef draai
# This file is maintained at http://git.mdcc.cx/draai
# Heavily based upon /usr/share/zsh-beta/4.3.2-dev-1/functions/Completion/Unix/_mpc
# See Chapter 6: Completion in "A User's Guide to the Z-Shell" by Peter Stephenson
# at http://zsh.dotsrc.org/Guide/zshguide06.html#l144
# Copyright: © 1992-2000 Paul Falstad, Richard Coleman, Zoltán Hidvégi,
# Andrew Main, Peter Stephenson, Sven Wischnowsky, and others.
#
# Permission is hereby granted, without written agreement and without
# licence or royalty fees, to use, copy, modify, and distribute this
# software and to distribute modified versions of this software for any
# purpose, provided that the above copyright notice and the following
# two paragraphs appear in all copies of this software.
# .
# In no event shall the Zsh Development Group be liable to any party for
# direct, indirect, special, incidental, or consequential damages arising out
# of the use of this software and its documentation, even if and the Zsh
# Development Group have been advised of the possibility of such damage.
# .
# The Zsh Development Group specifically disclaim any warranties, including,
# but not limited to, the implied warranties of merchantability and fitness
# for a particular purpose. The software provided hereunder is on an "as is"
# basis, and the Zsh Development Group have no obligation to provide
# maintenance, support, updates, enhancements, or modifications.
# To be used by zsh when completing from draai
_draai_command() {
local draai_cmds
draai_cmds=(
add:"Add file(s) (given either as args or on stdin) to playlist. You probably want to have 'draai add' read from a pipe fed by e.g. 'draai listall' or 'draai search'. "
crescendo:"Play louder. "
delete:"Delete track(s) from current playlist. Last arguments should be _positions_ of tracks to be removed, not filename. If no position is given, deletes upcoming track from playlist. "
diminuendo:"Play softer. "
draai:"Play music: the files given as args and playlists passed via --playlist. "
fastforward:"Seek forward in current track. "
guestlist:"Reschedule listed tracknumbers as upcoming tracks. Last arguments should be the positions of tracks to be put on the guestlist, not filenames. "
harder:"Play louder. "
init:"Start a bunch of X terminals setting up some draai jobs: tail, logtail, watch, syslog, ... "
insert:"Add file(s) (given either as args or on stdin) to playlist and schedule it as upcoming track. You probably want to have 'draai insert' read from a pipe fed by 'draai search'. "
list:"List current playlist. "
listall:"List all files as served by music database. "
logtail:"Run tail(1) on system log file. "
move:"Move tracknumber to tracknumber given as last argument. "
osjittisstil:"Run this if unwanted silence pops up during a playing session (for now, it runs draai --sloppy skip). "
peek:"Show status of current song, and show upcoming $peek FIXME tracks. "
play:"Play music. "
quit:"quit "
search:"Search for substrings in all song tag types (artist, title, comment, filename, ...). Similar to 'mpc search any '. You'll typically want to pipe this commands output to e.g. 'draai insert'. "
shuffle:"Shuffle the playlist. By default, this task is delegated to dr_unsort(1). However, if draai runs in "sloppy" or in "native shuffle" mode, then mpc native shuffling is done (by calling "mpc shuffle"). Draai runs in "sloppy" mode when the DR_SLOPPY environment variable is set, or when the --sloppy option is passed. Draai runs in "native shuffle" mode when the DR_SHUFFLE_NATIVE environment variable is set. "
skip:"Skip this track, start playing the next one now. "
syslog:"Send raw information from tail to syslog. You likely want to run "draai syslog" in the background. "
tail:"Print information about track when it starts playing, similar to tail -f on a logfile. "
unguestlist:"Reschedule listed tracknumbers to end of playlist. "
watch:"Run watch(1) on "draai peek". "
zachter:"Play softer. "
zap:"Move tracknumber to position one and immediately start playing it. Typically used to deal with radiostations in playlist. "
)
# draai:"play music (now or later)"
# init:"start a bunch of x terminals setting up some draai jobs"
# list:"list current playlist"
# guestlist:"reschedule listed tracknumbers as upcoming tracks"
# unguestlist:"reschedule listed tracknumbers to end of playlist"
# delete:"delete track(s) from current playlist"
# fastforward:"seek forward in current track"
# skip:"skip this track, start playing the next one now"
# osjittisstil:"run this if unwanted silence pops up during a playing session"
# resume:"start playing: abort pause"
# unpause:"start playing: abort pause"
# pause:"pause playing"
# quit:"quit (now or later)"
# tail:"print information about track when it starts playing, similar to tail -f on a logfile (see init)"
# logtail:"run tail on syslog (see init)"
# peek:"show status of current song, and upcoming tracks (see init)"
# syslog:"sent raw information from tail to syslog (see init)"
# )
if (( CURRENT == 1 )); then
_describe -t command "draai commands" draai_cmds
else
local curcontext="$curcontext"
fi
local cmd=$words[1]
local curcontext="${curcontext%:*}:draai-${cmd}"
_call_function ret _draai_$cmd
}
# based upon _mpc_helper_files
_draai_draai() {
local -U list expl
if [[ $words[CURRENT] != */* ]]; then
list=( ${${(f)"$(mpc listall)"}%%/*})
_wanted files expl file compadd -qS/ -a list
else
list=(${(f)"$(mpc tab $words[CURRENT])"})
_wanted files expl file _multi_parts / list
fi
}
# based upon _mpc_helper_playlists
_draai_playlist() {
local list expl
list=($(mpc lsplaylists))
_wanted list expl playlist compadd $expl -a list
}
_arguments \
'--debug[Be very verbose. ]' \
'--noshuffle[Do not shuffle tracks and leave random mode untouched (default is: do shuffle and disable random mode). See also the script dr_unsort. ]' \
'--playlist[Playlist file; option can be supplied more than once. To be used with command "draai". ]' \
'--raw[Print raw stuff, suitable for postprocessing (if combined with tail, peek or list). ]' \
'--sloppy[Do not try hard to make everything sound smooth. If combined with skip: risk a squeak on old hardware. ]' \
'--time[If combined with commands quit or draai: time at which to quit or start. ]' \
'*::draai command:_draai_command'
# '--version[show program version number and exit]' \
# '--help[show help message and exit]' \
# '--debug[be very verbose]' \
# '--noshuffle[do not shuffle tracks]' \
# '--playlist[playlist file]:playlist:_draai_playlist' \
# '--time[if combined with quit or draai: time at which to quit or start]:time' \
# '--raw[if combined with tail: print raw stuff]' \
# '--license[show license and exit]' \
# '*::draai command:_draai_command'
draai-20160601/help/ 0000755 0001750 0001750 00000000000 12723471434 010773 5 0000000 0000000 draai-20160601/help/command/ 0000755 0001750 0001750 00000000000 12723471434 012411 5 0000000 0000000 draai-20160601/help/command/add 0000644 0001750 0001750 00000000243 12375646102 013002 0000000 0000000 Add file(s) (given either as args or on stdin) to playlist. You probably want
to have 'draai add' read from a pipe fed by e.g. 'draai listall' or 'draai
search'.
draai-20160601/help/command/crescendo 0000644 0001750 0001750 00000000015 12345413626 014214 0000000 0000000 Play louder.
draai-20160601/help/command/delete 0000644 0001750 0001750 00000000263 12345413626 013516 0000000 0000000 Delete track(s) from current playlist. Last arguments should be
_positions_ of tracks to be removed, not filename. If no position is
given, deletes upcoming track from playlist.
draai-20160601/help/command/diminuendo 0000644 0001750 0001750 00000000015 12345413626 014402 0000000 0000000 Play softer.
draai-20160601/help/command/draai 0000644 0001750 0001750 00000000111 12345413626 013324 0000000 0000000 Play music: the files given as args and playlists passed via --playlist.
draai-20160601/help/command/fastforward 0000644 0001750 0001750 00000000037 12345413626 014575 0000000 0000000 Seek forward in current track.
draai-20160601/help/command/guestlist 0000644 0001750 0001750 00000000217 12345413626 014276 0000000 0000000 Reschedule listed tracknumbers as upcoming tracks. Last arguments should
be the positions of tracks to be put on the guestlist, not filenames.
draai-20160601/help/command/harder 0000644 0001750 0001750 00000000015 12345413626 013514 0000000 0000000 Play louder.
draai-20160601/help/command/init 0000644 0001750 0001750 00000000133 12345413626 013213 0000000 0000000 Start a bunch of X terminals setting up some draai jobs: tail, logtail,
watch, syslog, ...
draai-20160601/help/command/insert 0000644 0001750 0001750 00000000260 12377457075 013570 0000000 0000000 Add file(s) (given either as args or on stdin) to playlist and schedule it as
upcoming track. You probably want to have 'draai insert' read from a pipe fed
by 'draai search'.
draai-20160601/help/command/list 0000644 0001750 0001750 00000000027 12345413626 013225 0000000 0000000 List current playlist.
draai-20160601/help/command/listall 0000644 0001750 0001750 00000000054 12375646410 013720 0000000 0000000 List all files as served by music database.
draai-20160601/help/command/logtail 0000644 0001750 0001750 00000000040 12345413626 013700 0000000 0000000 Run tail(1) on system log file.
draai-20160601/help/command/move 0000644 0001750 0001750 00000000070 12345413626 013216 0000000 0000000 Move tracknumber to tracknumber given as last argument.
draai-20160601/help/command/osjittisstil 0000644 0001750 0001750 00000000146 12345413626 015020 0000000 0000000 Run this if unwanted silence pops up during a playing session (for now, it
runs draai --sloppy skip).
draai-20160601/help/command/peek 0000644 0001750 0001750 00000000103 12345413626 013171 0000000 0000000 Show status of current song, and show upcoming $peek FIXME tracks.
draai-20160601/help/command/play 0000644 0001750 0001750 00000000014 12377463164 013222 0000000 0000000 Play music.
draai-20160601/help/command/quit 0000644 0001750 0001750 00000000005 12345413626 013230 0000000 0000000 quit
draai-20160601/help/command/search 0000644 0001750 0001750 00000000307 12345413626 013520 0000000 0000000 Search for substrings in all song tag types (artist, title, comment, filename,
...). Similar to 'mpc search any '. You'll typically want to pipe
this commands output to e.g. 'draai insert'.
draai-20160601/help/command/shuffle 0000644 0001750 0001750 00000000632 12377433077 013717 0000000 0000000 Shuffle the playlist. By default, this task is delegated to dr_unsort(1).
However, if draai runs in "sloppy" or in "native shuffle" mode, then mpc native
shuffling is done (by calling "mpc shuffle"). Draai runs in "sloppy" mode when
the DR_SLOPPY environment variable is set, or when the --sloppy option is
passed. Draai runs in "native shuffle" mode when the DR_SHUFFLE_NATIVE
environment variable is set.
draai-20160601/help/command/skip 0000644 0001750 0001750 00000000061 12345413626 013216 0000000 0000000 Skip this track, start playing the next one now.
draai-20160601/help/command/syslog 0000644 0001750 0001750 00000000144 12345413626 013572 0000000 0000000 Send raw information from tail to syslog. You likely want to run "draai
syslog" in the background.
draai-20160601/help/command/tail 0000644 0001750 0001750 00000000127 12345413626 013204 0000000 0000000 Print information about track when it starts playing, similar to
tail -f on a logfile.
draai-20160601/help/command/unguestlist 0000644 0001750 0001750 00000000063 12345413626 014640 0000000 0000000 Reschedule listed tracknumbers to end of playlist.
draai-20160601/help/command/watch 0000644 0001750 0001750 00000000036 12345413626 013360 0000000 0000000 Run watch(1) on "draai peek".
draai-20160601/help/command/zachter 0000644 0001750 0001750 00000000015 12345413626 013707 0000000 0000000 Play softer.
draai-20160601/help/command/zap 0000644 0001750 0001750 00000000173 12712700203 013032 0000000 0000000 Move tracknumber to position one and immediately start playing it. Typically
used to deal with radiostations in playlist.
draai-20160601/help/option/ 0000755 0001750 0001750 00000000000 12723471434 012303 5 0000000 0000000 draai-20160601/help/option/debug/ 0000755 0001750 0001750 00000000000 12345413626 013370 5 0000000 0000000 draai-20160601/help/option/debug/description 0000644 0001750 0001750 00000000021 12345413626 015547 0000000 0000000 Be very verbose.
draai-20160601/help/option/debug/option 0000644 0001750 0001750 00000000002 12345413626 014533 0000000 0000000 d
draai-20160601/help/option/noshuffle/ 0000755 0001750 0001750 00000000000 12345413626 014273 5 0000000 0000000 draai-20160601/help/option/noshuffle/description 0000644 0001750 0001750 00000000210 12345413626 016452 0000000 0000000 Do not shuffle tracks and leave random mode untouched (default is: do
shuffle and disable random mode). See also the script dr_unsort.
draai-20160601/help/option/noshuffle/option 0000644 0001750 0001750 00000000002 12345413626 015436 0000000 0000000 S
draai-20160601/help/option/playlist/ 0000755 0001750 0001750 00000000000 12345413626 014143 5 0000000 0000000 draai-20160601/help/option/playlist/argument 0000644 0001750 0001750 00000000011 12345413626 015620 0000000 0000000 PLAYLIST
draai-20160601/help/option/playlist/description 0000644 0001750 0001750 00000000130 12345413626 016323 0000000 0000000 Playlist file; option can be supplied more than once. To be used
with command "draai".
draai-20160601/help/option/playlist/option 0000644 0001750 0001750 00000000002 12345413626 015306 0000000 0000000 p
draai-20160601/help/option/raw/ 0000755 0001750 0001750 00000000000 12345413626 013073 5 0000000 0000000 draai-20160601/help/option/raw/description 0000644 0001750 0001750 00000000124 12345413626 015256 0000000 0000000 Print raw stuff, suitable for postprocessing (if combined with tail, peek
or list).
draai-20160601/help/option/raw/option 0000644 0001750 0001750 00000000002 12345413626 014236 0000000 0000000 r
draai-20160601/help/option/sloppy/ 0000755 0001750 0001750 00000000000 12345413626 013630 5 0000000 0000000 draai-20160601/help/option/sloppy/description 0000644 0001750 0001750 00000000150 12345413626 016012 0000000 0000000 Do not try hard to make everything sound smooth. If combined with skip:
risk a squeak on old hardware.
draai-20160601/help/option/sloppy/option 0000644 0001750 0001750 00000000002 12345413626 014773 0000000 0000000 s
draai-20160601/help/option/time/ 0000755 0001750 0001750 00000000000 12345413626 013240 5 0000000 0000000 draai-20160601/help/option/time/argument 0000644 0001750 0001750 00000000005 12345413626 014720 0000000 0000000 TIME
draai-20160601/help/option/time/description 0000644 0001750 0001750 00000000111 12345413626 015417 0000000 0000000 If combined with commands quit or draai: time at which to quit or start.
draai-20160601/help/option/time/option 0000644 0001750 0001750 00000000002 12345413626 014403 0000000 0000000 t
draai-20160601/help/shortoption/ 0000755 0001750 0001750 00000000000 12723471434 013363 5 0000000 0000000 draai-20160601/help/shortoption/help 0000644 0001750 0001750 00000000002 12345413626 014145 0000000 0000000 h
draai-20160601/help/shortoption/license 0000644 0001750 0001750 00000000002 12345413626 014637 0000000 0000000 l
draai-20160601/help/shortoption/version 0000644 0001750 0001750 00000000002 12345413626 014702 0000000 0000000 V
draai-20160601/COPYING 0000644 0001750 0001750 00000104513 12723471433 011021 0000000 0000000 GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
draai-20160601/ChangeLog 0000644 0001750 0001750 00000251555 12723471433 011551 0000000 0000000 2016-06-01 Joost van Baal-Ilić
* NEWS: ship it: version 20160601 - The Јадар Release
2016-06-01 Joost van Baal-Ilić
* man/Makefile: fix clean target
2016-06-01 Joost van Baal-Ilić
* NEWS: layout
2016-06-01 Joost van Baal-Ilić
* NEWS, setup: document a plan for "draai radio"
2016-06-01 Joost van Baal-Ilić
* NEWS: more to do
2016-06-01 Joost van Baal-Ilić
* NEWS, script/draai.in: fix bug in x-terminal-emulator call: don't
pass "draai logtail" but pass draai logtail.
2016-05-06 Joost van Baal-Ilić
* script/draai.in: fix command "zap"
2016-05-05 Joost van Baal-Ilić
* NEWS: found a bug
2016-05-05 Joost van Baal-Ilić
* script/draai.in: fix syntax
2016-05-05 Joost van Baal-Ilić
* man/Makefile: no longer typeset obsolete dr_cdrip manpage (which
was not installed anyway)
2016-05-05 Joost van Baal-Ilić
* NEWS, TODO: name for upcoming release
2016-05-05 Joost van Baal-Ilić
* help/command/zap, man/include.zmm.in: documenting "zap"
2016-05-05 Joost van Baal-Ilić
* NEWS: update
2016-05-05 Joost van Baal-Ilić
* script/draai.in: fixing 'watch mpc' in 'draai init'
2016-05-05 Joost van Baal-Ilić
* man/draai.azm: documenting new command "zap"
2016-05-05 Joost van Baal-Ilić
* help/command/zap: documenting new command "zap"
2016-05-05 Joost van Baal-Ilić
* script/draai.in: improve "init": do not blindly assume we can
write to /dev/tty12
2016-05-05 Joost van Baal-Ilić
* script/draai.in: start implementing new draai command "zap"
2016-05-05 Joost van Baal-Ilić
* NEWS: start preparing release
2016-05-04 Joost van Baal-Ilić
* script/dr_watch: Apply patch contributed by Wessel Dankers: - no longer use tmpfiles - use tput (shipped with ncurses-bin on Debian systems) to do smart redrawing of the screen. under some circumstances, 'draai watch' would show some annoying and distracting flicker. this patch solves that problem. - deal sane with "$@": no longer chokes on spaces in command
2016-04-13 Joost van Baal-Ilić
* script/dr_radio: chmod
2016-04-13 Joost van Baal-Ilić
* script/dr_radio: another helper
2015-03-02 Joost van Baal-Ilić
* script/dr_watch: do not start sleeping, but end the loop with a
sleep
2015-03-01 Joost van Baal-Ilić
* debian/changelog: ship it: draai (20150228-1)
2015-03-01 Joost van Baal-Ilić
* debian/changelog, debian/manpages: manpages: symplify, like docs.
2015-03-01 Joost van Baal-Ilić
* debian/changelog, debian/control: control: updated from 3.9.4 to
policy 3.9.6 (no changes needed). control: remove "| zsh-beta":
Debian currently ships "zsh" only.
2015-03-01 Joost van Baal-Ilić
* debian/README.source, debian/changelog, debian/copyright,
script/draai.in: copyright: updated.
2015-03-01 Joost van Baal-Ilić
* debian/changelog, debian/control: control: improved extended
description.
2015-03-01 Joost van Baal-Ilić
* debian/changelog, setup: new upstream
2015-02-28 Joost van Baal-Ilić
* NEWS: ship it: version 20150228 - The Nieuwe Leij Release
2015-02-28 Joost van Baal-Ilić
* NEWS, TODO, script/draai.in: new "draai init"
2015-02-28 Joost van Baal-Ilić
* NEWS, script/dr_watch: s/DR_RUN_WATCH/DR_NICE_WATCH/: fix logic
2015-02-28 Joost van Baal-Ilić
* NEWS, script/dr_watch: record some more news
2015-02-28 Joost van Baal-Ilić
* NEWS, script/dr_watch: record some news
2015-02-28 Joost van Baal-Ilić
* script/dr_watch: dr_watch: fix syntax
2015-02-28 Joost van Baal-Ilić
* script/dr_watch: use DR_RUN_WATCH, DR_SLEEP_CMD; give sane error
message if needed
2015-02-28 Joost van Baal-Ilić
* script/dr_watch: broken
2015-02-28 Joost van Baal-Ilić
* TODO, script/dr_watch: DR_SLEEP_CMD, dr_watch working changed:
will not call watch(1) unless...
2015-02-28 Joost van Baal-Ilić
* script/dr_watch: idea for new "draai watch"
2015-02-27 Joost van Baal-Ilić
* NEWS: preparing release: 20150227 - The Nieuwe Leij Release
2015-02-26 Joost van Baal-Ilić
* NEWS: record changes
2015-02-26 Joost van Baal-Ilić
* script/dr_watch, script/draai.in: use "mpc idle": do not spam mpd
log with extraneous client access
2014-08-28 Joost van Baal-Ilić
* NEWS, man/draai.azm, man/include.zmm.in: ship it: version 20140828
- The Nuuk Release
2014-08-28 Joost van Baal-Ilić
* help/command/play: document command "play"
2014-08-28 Joost van Baal-Ilić
* man/include.zmm.in: document watch, play, shuffle in draai(1)
2014-08-28 Joost van Baal-Ilić
* man/draai.azm: documented commands watch, play, crescendo,
diminuendo, shuffle, listall, add in draai(1)
2014-08-28 Joost van Baal-Ilić
* NEWS, TODO, help/command/insert, man/draai.azm: documenting stuff,
wip
2014-08-27 Joost van Baal-Ilić
* help/command/shuffle: document the shuffle command
2014-08-22 Joost van Baal-Ilić
* TODO, help/command/shuffle, script/draai.in: implemented new
command "shuffle", new environment variable DR_SHUFFLE_NATIVE
2014-08-22 Joost van Baal-Ilić
* NEWS: name upcoming release: AMS, edinburgh, reykjavik, nuuk,
winnipeg, Portland, OR, USA: Beer Capital Of The World
2014-08-22 Joost van Baal-Ilić
* NEWS: document changes
2014-08-22 Joost van Baal-Ilić
* man/draai.azm: more information on how to get started
2014-08-22 Joost van Baal-Ilić
* help/command/add, help/command/listall, man/include.zmm.in,
script/draai.in: implemented new commands "listall" and "add"
2014-08-22 Joost van Baal-Ilić
* script/dr_cdrip: current pod2man is more picky on utf8; explicitly
declare utf8 encoding in pod source
2014-08-22 Joost van Baal-Ilić
* TODO: plans for next release
2014-04-12 Joost van Baal-Ilić
* debian/changelog, debian/control: UNRELEASED * UNRELEASED * control: no longer Depends: at, but merely Recommends.
2013-12-15 Joost van Baal-Ilić
* NEWS: start next release
2013-12-12 Joost van Baal-Ilić
* debian/changelog: ship it: draai (20131212-1)
2013-12-12 Joost van Baal-Ilić
* NEWS: ship it: version 20131212 - The Witte Reiger Release
2013-12-11 Joost van Baal-Ilić
* NEWS: record changes
2013-12-11 Joost van Baal-Ilić
* help/command/search, man/draai.azm: Fix bug on tab completion:
"_draai:50: parse error near `|'". Description of command 'search'
now no longer contains a forbidden `|'. Move example usage to new
section EXAMPLES in draai(1) manpage.
2013-10-22 Joost van Baal-Ilić
* NEWS, debian/changelog: start next release
2013-10-22 Joost van Baal-Ilić
* debian/changelog: ship it: draai_20131020-1_all.deb
2013-10-21 Joost van Baal-Ilić
* debian/README.source, debian/changelog, debian/control: get rid of
DM-Upload-Allowed
2013-10-21 Joost van Baal-Ilić
* debian/README.source, debian/changelog, debian/control: updated
standards
2013-10-21 Joost van Baal-Ilić
* debian/README.source, debian/changelog, debian/control: add
perl:depends
2013-10-21 Joost van Baal-Ilić
* debian/README.source, debian/changelog, debian/docs: install .html
docs
2013-10-20 Joost van Baal-Ilić
* NEWS, man/dr_unsort.1: ship it: version 20131020 - The Plexus aka
Het Platenmanneke Release
2013-10-20 Joost van Baal-Ilić
* man/dr_unsort.azm: fix typo: s/symlinks/unsort/
2013-10-20 Joost van Baal-Ilić
* man/dr_unsort.1: fix typo: s/symlinks/unsort/
2013-10-19 Joost van Baal-Ilić
* debian/README.source: stuff to do
2013-10-19 Joost van Baal-Ilić
* debian/changelog: new upstream
2013-10-19 Joost van Baal-Ilić
* script/dr_permutate: get rid of non-ascii characters in manpage in
order to make sure pod2man does no longer choke
2013-10-19 Joost van Baal-Ilić
* TODO: release names
2013-10-19 Joost van Baal-Ilić
* README, setup: cosmetics
2013-10-19 Joost van Baal-Ilić
* help/command/draai: improve help on command "draai"
2013-10-19 Joost van Baal-Ilić
* TODO: stuff is done
2013-10-19 Joost van Baal-Ilić
* README: update information on debian packages
2013-10-19 Joost van Baal-Ilić
* setup: cosmetics
2013-10-14 Joost van Baal-Ilić
* NEWS: record previous changes
2013-10-14 Joost van Baal-Ilić
* NEWS, TODO, help/command/insert, script/draai.in: insert now reads
from stdin
2013-10-14 Joost van Baal-Ilić
* TODO, script/draai.in: more to do: command "insert" is borken
2013-10-14 Joost van Baal-Ilić
* TODO, help/command/move, help/command/search: stuff to test
2013-10-14 Joost van Baal-Ilić
* man/include.zmm.in, script/draai.in: implemented new commands
"move" and "search"
2013-10-14 Joost van Baal-Ilić
* TODO: more to do for this release
2013-10-14 Joost van Baal-Ilić
* NEWS: record changes
2013-10-14 Joost van Baal-Ilić
* NEWS: another release name
2013-10-14 Joost van Baal-Ilić
* script/dr_permutate: dr_permutate manpage
2013-10-14 Joost van Baal-Ilić
* script/dr_permutate: refer to shuf(1) and unsort(1) as
alternatives for dr_permutate
2013-08-09 Joost van Baal-Илић
* TODO, script/draai.in: format hacking. another improvement (?)
2013-08-09 Joost van Baal-Илић
* TODO: radio format still borken
2013-08-08 Joost van Baal-Ilić
* script/draai.in: another format tweak
2013-08-07 Joost van Baal-Илић
* script/draai.in: unbroke format a bit. radiostations now displayed
somewhat less sloppy
2013-08-07 Joost van Baal-Илић
* script/draai.in: borke format, again
2013-08-07 Joost van Baal-Илић
* TODO, script/draai.in: broke format
2013-08-06 Joost van Baal-Ilić
* TODO: investigating output layout and radio stations
2013-06-18 Joost van Baal-Илић
* NEWS: name for upcoming release
2013-04-11 Joost van Baal-Илић
* NEWS: release name
2013-04-07 Joost van Baal-Ilić
* NEWS: Sterreke, near Onze-Lieve-Vrouw-Waver
2013-03-04 Joost van Baal-Илић
* debian/changelog: starting next release
2013-03-04 Joost van Baal-Илић
* debian/changelog: ship it
2013-03-04 Joost van Baal-Илић
* debian/changelog, debian/manpages: dr_cdrip removed upstream
2013-03-04 Joost van Baal-Илић
* debian/changelog: new upstream
2013-02-28 Joost van Baal-Илић
* NEWS: start next release
2013-02-28 Joost van Baal-Илић
* NEWS, TODO: ship it: version 20130228 - The Arjuna, Mill Road, CB1
Release
2013-02-28 Joost van Baal-Ilić
* NEWS: new release names
2013-02-27 Joost van Baal-Ilić
* script/dr_watch: dr_watch: fix bug: deal sane with DR_SLEEP
2013-02-27 Joost van Baal-Ilić
* NEWS: update: some changes reverted
2013-02-27 Joost van Baal-Ilić
* TODO: update TODO
2013-02-27 Joost van Baal-Ilić
* script/draai.in: use dr_watch(1) (again)
2013-02-27 Joost van Baal-Ilić
* script/dr_watch: honor DR_WATCH
2013-02-27 Joost van Baal-Ilić
* setup: "voortschrijdend inzicht: _do_ ship and install dr_watch
2013-02-26 Joost van Baal-Ilić
* TODO, script/draai.in, script/prompttest: draai watch partly fixed
2013-02-25 Joost van Baal-Ilić
* : Merge ssh://git/~joostvb/git/draai into
joostvb-arch@mdcc.cx--2005-draai,draai--mainline--0.1
2013-02-22 Joost van Baal-Ilić
* help/command/init, help/command/watch, script/draai.in: added new
command "watch"
2013-02-21 Joost van Baal-Ilić
* TODO: tnx michiel
2013-02-20 Joost van Baal-Ilić
* TODO: some things are done, some new stuff to do reported
2013-02-19 Joost van Baal-Ilić
* NEWS, script/draai.in: draai no longer calls dr_watch but call
watch
2013-02-19 Joost van Baal-Ilić
* NEWS, setup: no longer ship obsolete scripts
2013-02-09 Joost van Baal-Илић
* debian/changelog, debian/copyright: updated copyright years
2013-02-08 Joost van Baal-Илић
* TODO: more stuff to do
2013-02-08 Joost van Baal-Илић
* debian/changelog, debian/control: * UNRELEASED * New upstream (The Schwebebahn Release). * control: updated from 3.9.2 to policy 3.9.3 (no changes needed).
2013-02-08 Joost van Baal-Илић
* NEWS: ship it: version 20130208 - The Schwebebahn Release
2013-02-08 Joost van Baal-Илић
* man/include.zmm.in: fix my name
2013-02-08 Joost van Baal-Илић
* man/draai.azm, script/draai.in: updated year in copyright
2013-02-08 Joost van Baal-Илић
* TODO, setup: bug in generating zsh/_draai fixed
2013-02-03 Joost van Baal-Илић
* setup: add comment about 2 bugs
2013-02-03 Joost van Baal-Илић
* help/option/noshuffle/description,
help/option/sloppy/description, setup: tweak
2013-01-31 Joost van Baal-Илић
* zsh/_draai.in: eindpunt van deze trein
2013-01-31 Joost van Baal-Илић
* setup: slightly less buggy
2013-01-31 Joost van Baal-Илић
* setup, zsh/_draai.in: try to generate options in zsh/_draai , not
finished yet...
2013-01-31 Joost van Baal-Илић
* setup: now generates opts.txt, to be used by zsh/_draai.in, for
draai tabcompletion
2013-01-31 Joost van Baal-Илић
* help/command/delete, help/command/guestlist, help/command/init,
help/command/osjittisstil, help/command/syslog,
help/option/noshuffle/description, help/option/raw/description,
help/option/sloppy/description, setup: fix bug in generating draai
--help text, cosmetics in layout
2013-01-29 Joost van Baal-Илић
* man/include.zmm.in: use new help/ layout for draai(1) manpage
2013-01-29 Joost van Baal-Илић
* script/draai.in: do not document -T and -p options in draai
sources, but use documentation in help/
2013-01-29 Joost van Baal-Илић
* help/option/playlist/argument, help/option/time/argument, setup:
store documentation about args of options in help/, generate
documentation from files there
2013-01-29 Joost van Baal-Илић
* script/draai.in: do not show not yet implemented options --notime
and --number in --help output
2013-01-29 Joost van Baal-Илић
* NEWS: document changes
2013-01-29 Joost van Baal-Илић
* setup: use new help/ layout
2013-01-28 Joost van Baal-Илић
* TODO: more to do
2013-01-28 Joost van Baal-Илић
* help/shortoption/number: remove docs on not yet implemented option
-n
2013-01-28 Joost van Baal-Илић
* help/shortoption/notime: remove docs on not yet implemented option
-T
2013-01-28 Joost van Baal-Илић
* help/option/time, help/option/time/description,
help/option/time/option, help/shortoption/time: option --time now
stored in new help/ format
2013-01-28 Joost van Baal-Илић
* help/option/sloppy, help/option/sloppy/description,
help/option/sloppy/option, help/shortoption/sloppy: option --sloppy
now stored in new help/ format
2013-01-28 Joost van Baal-Илић
* help/option/raw, help/option/raw/description,
help/option/raw/option, help/shortoption/raw: option --raw now
stored in new help/ format
2013-01-28 Joost van Baal-Илић
* help/option/playlist, help/option/playlist/description,
help/option/playlist/option, help/shortoption/playlist: option
--playlist now stored in new help/ format
2013-01-28 Joost van Baal-Илић
* help/option/noshuffle, help/option/noshuffle/description,
help/option/noshuffle/option, help/shortoption/noshuffle: option
--noshuffle now stored in new help/ format
2013-01-28 Joost van Baal-Илић
* help/option/debug, help/option/debug/description,
help/option/debug/option, help/shortoption/debug: option --debug now
stored in new help/ format
2013-01-28 Joost van Baal-Илић
* TODO: more reimplementations of help/ incoming
2013-01-26 Joost van Baal-Илић
* TODO: 2nd idea for reimplementing format of files in help/
2013-01-26 Joost van Baal-Илић
* TODO: documented idea for reimplementing format of files in help/.
we currently have no way to specify argument of option
2013-01-26 Joost van Baal-Илић
* setup: layout tweaks of draai --help output
2013-01-25 Joost van Baal-Илић
* setup: fixed a bug in buildhelp()
2013-01-25 Joost van Baal-Илић
* script/draai.in: remove some info which we now get from help/*
2013-01-25 Joost van Baal-Илић
* TODO: found possible solution
2013-01-24 Joost van Baal-Илић
* NEWS: cosmetics
2013-01-24 Joost van Baal-Илић
* TODO, setup: pinpoint another bug in setup configure()
2013-01-24 Joost van Baal-Илић
* setup: setup now generates sane help.txt for @HELPTEXT@, for draai
--help, draai zsh completion and draai(1) manpage
2013-01-08 Joost van Baal-Илић
* TODO, setup: found bugs in ./setup
2013-01-02 Joost van Baal-Илић
* TODO, script/draai.in, setup: help.txt HELPTEXT: deal with options
too
2012-12-07 Joost van Baal-Илић
* script/prompttest: for testing prompt in list w/ utf-8 and wide
characters
2012-11-30 Joost van Baal-Илић
* script/draai.in: add some comments about zsh prompt expansion
2012-11-30 Joost van Baal-Илић
* script/draai.in: comment FIXME added
2012-11-30 Joost van Baal-Илић
* TODO, script/dr_watch: TODO: watch bug fixed
2012-11-30 Joost van Baal-Илић
* NEWS, man/dr_watch.azm, script/dr_watch, script/draai.in:
dr_watch(1) now runs watch(1) if found
2012-10-23 Joost van Baal-Ilić
* TODO: no more need for dr_watch
2012-10-21 Joost van Baal-Илић
* script/draai.in: more debug code
2012-09-01 Joost van Baal-Ilić
* script/dr_gain: comments
2012-09-01 Joost van Baal-Ilić
* : Merge ssh://git/~joostvb/git/draai into
joostvb-arch@mdcc.cx--2005-draai,draai--mainline--0.1 merge
2012-07-13 Joost van Baal-Илић
* TODO: a plan for help text issue
2012-07-13 Joost van Baal-Илић
* TODO: some stuff for help text handling is done (in about 2011,
actually)
2012-07-13 Joost van Baal-Илић
* NEWS: start next release
2012-07-12 Joost van Baal-Илић
* debian/changelog, debian/control: control: Remove article "A" from
package synopsis. Thanks lintian.
2012-07-12 Joost van Baal-Илић
* debian/changelog, debian/source/format: New upstream (The
Lingsfort Release). * New upstream (The Lingsfort Release). * source/format: added, now in 3.0 source format.
2012-07-12 Joost van Baal-Илић
* NEWS: ship it: version 20120712 - The Lingsfort Release
2012-07-12 Joost van Baal-Илић
* man/Makefile: now might work with bsd-ish make too (not just GNU
make)
2012-07-12 Joost van Baal-Илић
* TODO: reprioritize
2012-07-11 Joost van Baal-Илић
* man/dr_symlinks.azm, man/dr_unsort.azm, man/dr_watch.azm: fix some
bugs in zoem syntax. html now generated
2012-07-11 Joost van Baal-Илић
* man/Makefile: fixed bug in SUFFIXES. Makefile now functional
again.
2012-07-10 Joost van Baal-Илић
* man/Makefile, setup: (borken) attempt to build and install manpages in .html
2012-07-10 Joost van Baal-Илић
* TODO: found new manpage typesetting issues
2012-07-10 Joost van Baal-Илић
* man/Makefile: groff > troff
2012-07-10 Joost van Baal-Илић
* NEWS: a name for this release
2012-07-06 Joost van Baal-Илић
* debian/changelog, debian/control: control: updated from 3.8.4 to
policy 3.9.2 (no changes needed).
2012-07-06 Joost van Baal-Илић
* debian/changelog, debian/control: control: Debian Maintainers may
upload this package to the Debian archive
2012-07-06 Joost van Baal-Илић
* debian/changelog, debian/control: control: updated my name.
2012-07-06 Joost van Baal-Илић
* TODO: reprioritized
2012-07-06 Joost van Baal-Илић
* NEWS, TODO, man/Makefile: be more clear about zoem dependency
2012-07-05 Joost van Baal-Илић
* debian/changelog: new .deb
2012-07-05 Joost van Baal-Илић
* NEWS, TODO, script/draai.in: commands "skip" and "pause" no longer
fail when volume is set to 100%, or when volume n/a.
2012-07-05 Joost van Baal-Илић
* script/draai.in: update copyright
2012-07-04 Joost van Baal-Илић
* setup: new disthost
2012-07-04 Joost van Baal-Илић
* : commit 2e28c51c0a9d83be013ad319b3bd842642f23b30 Author: Joost
van Baal-Илић Date: Wed Jul 4 09:33:53 2012 +0200
2012-07-04 Joost van Baal-Илић
* TODO: reprioritize
2012-07-04 Joost van Baal-Илић
* TODO: more to do : use new mpc features
2012-07-04 Joost van Baal-Ilić
* script/dr_times: for new mpd
2012-07-03 Joost van Baal-Илић
* TODO: more to do
2012-07-03 Joost van Baal-Илић
* TODO: prioritized todo items
2012-07-03 Joost van Baal-Илић
* NEWS, TODO: document changes
2012-07-03 Joost van Baal-Илић
* TODO, man/Makefile: get rid of hardcoded ZOEMSEARCHPATH. We now
require zoem > 10-265-1, and we require aephea.
2012-07-03 Joost van Baal-Илић
* NEWS, README, man/include.zmm.in, script/draai-nonmpc.in,
script/draai.in, setup: My name is Joost van Baal-Ilić now.
Updated copyright
2012-07-03 Joost van Baal-Илић
* TODO, script/draai.in: when invoked with command tail, syslog,
list, peek (and staart, spiek), and with option --raw, add position
to displayed tags
2012-02-20 Joost van Baal-Ilić
* TODO, script/dr_times: times
2012-02-12 Joost van Baal-Ilić
* script/dr_times: it would be nice to be able to find long tracks
easily
2011-06-03 Joost van Baal-Ilić
* debian/changelog: ship it: draai 20110603-1
2011-06-03 Joost van Baal-Ilić
* NEWS, TODO, script/dr_symlinks: ship it: draai version 20110603
2011-06-03 Joost van Baal-Ilić
* TODO, man/dr_symlinks.azm, man/dr_unsort.azm, man/dr_watch.azm,
man/draai.azm, script/draai.in: update year in copyright
2011-06-03 Joost van Baal-Ilić
* NEWS, TODO, man/dr_symlinks.azm, man/dr_unsort.azm,
man/dr_watch.azm, man/draai.azm, man/include.zmm.in: fix cosmetic
bugs in draai(1) and other manpages. Thanks Stijn van Dongen for
zoem support
2011-06-03 Joost van Baal-Ilić
* NEWS, TODO: asked for zoem support
2011-06-03 Joost van Baal-Ilić
* TODO: reported zoem wishlist bug upstream, clean up man/Makefile
once that is fixed
2011-06-02 Joost van Baal-Ilić
* NEWS, TODO, debian/changelog: record some rc bugs
2011-06-02 Joost van Baal-Ilić
* NEWS: document changes
2011-06-02 Joost van Baal-Ilić
* TODO, script/draai.in: add new extra aliases: init: genesis; next:
volgende; unguestlist: unfriend, ontvriend; insert: voegin; skip:
slaover; fastforward: voorwaarts; tail: staart; peek: spiek; play
(unpause, resume): ga; quit (exit, stop, pause): ho. Thanks Guus
Sliepen and jiggel for suggestion.
2011-06-02 Joost van Baal-Ilić
* TODO: dr_symlinks has been fixed; update TODO
2011-06-02 Joost van Baal-Ilić
* README, TODO: enhance README: another TODO-item done
2011-06-02 Joost van Baal-Ilić
* NEWS, README: enhance HISTORY section
2011-06-02 Joost van Baal-Ilić
* TODO: dr_unsort manpage is fine, TODO-item done
2011-05-18 Joost van Baal
* man/dr_symlinks.azm, script/dr_symlinks: fixed bug in DR_SL_RCFILE
handling, improved dr_symlinks manpage
2011-05-18 Joost van Baal
* NEWS, man/dr_symlinks.azm, script/dr_symlinks: honor new env var
DR_SL_RCFILE
2011-05-16 Joost van Baal-Ilić
* debian/changelog: oops, we in 2011
2011-05-16 Joost van Baal-Ilić
* debian/changelog: new upstream
2011-05-16 Joost van Baal-Ilić
* NEWS: ship release 20110516
2011-05-16 Joost van Baal-Ilić
* man/dr_symlinks.azm, man/dr_unsort.azm, man/dr_watch.azm:
converting manpages to format for zoem >= 10-265-1
2011-05-16 Joost van Baal-Ilić
* man/Makefile, man/draai.azm: it compiles
2011-05-16 Joost van Baal-Ilić
* man/Makefile, man/dr_symlinks.azm, man/dr_unsort.azm,
man/dr_watch.azm, man/draai.azm: start converting manpages to format
for zoem >= 10-265-1
2011-05-16 Joost van Baal
* NEWS: document some changes
2010-12-05 Joost van Baal
* man/draai.azm: minor improvements in manpage
2010-12-05 Joost van Baal
* setup: add changelog command
2010-12-05 Joost van Baal
* setup: autogenerate ChangeLog
2010-12-05 Joost van Baal
* TODO, help/command/insert, man/draai.azm, man/include.zmm.in,
script/draai.in: documented command insert
2010-12-05 Joost van Baal
* TODO: some issues have been dealt with
2010-07-26 Joost van Baal
* TODO: tnx Fruit
2010-05-12 Joost van Baal
* debian/changelog, debian/copyright: ship debian package
2010-05-12 Joost van Baal
* debian/TODO: dr_unsort copyright added
2010-05-12 Joost van Baal
* debian/changelog, debian/control, debian/manpages: preparing next
debian package
2010-05-12 Joost van Baal
* debian/README.Debian: preparing next debian package
2010-05-11 Joost van Baal
* man/dr_unsort.azm: added dr_unsort(1) manpage
2010-05-11 Joost van Baal
* NEWS, script/draai.in: ship it
2010-02-10 Joost van Baal
* NEWS, TODO, script/draai.in: compatible with recent mpc
2010-01-16 Joost van Baal
* TODO: draai chokes on mpc > 0.17
2009-12-16 Joost van Baal
* debian/changelog, debian/control: refer to VCS git, no longer Arch
2009-12-16 Joost van Baal
* NEWS, README, TODO, contrib/mp3symlinks, debian/TODO,
debian/compat, debian/control, debian/copyright, debian/manpages,
debian/rules, man/dr_symlinks.azm, man/dr_watch.azm, man/draai.azm,
man/include.zmm.in, modules/draai.py, script/dr_cdrip,
script/dr_file2tag, script/dr_mount, script/dr_permutate,
script/dr_push, script/dr_symlinks, script/dr_unsort,
script/dr_watch, script/draai-nonmpc.in, script/draai.in,
script/oggsymlinks, setup, zsh/_draai.in: adjust tags in files to
refer to git repo, not arch
2009-12-13 Joost van Baal
* INSTALL, README: move zsh-specific installation instructions from
INSTALL to README
2009-12-13 Joost van Baal
* TODO: %comment% seems to fail...
2009-12-13 Joost van Baal
* TODO: add some more peaksheetisms
2009-12-13 Joost van Baal
* script/draai.in: show metadata like comment in rawformat
(introduced in mpd 0.15 2009/06/23)
2009-10-02 Joost van Baal
* TODO: tnx jiggel
2009-10-02 Joost van Baal
* TODO: tnx Guus
2009-10-01 Joost van Baal
* TODO: users are happy, document this
2009-09-30 Joost van Baal
* TODO: Another wishlist bug / feature request
2009-08-26 Joost van Baal
* TODO: update, prioritize
2009-08-26 Joost van Baal
* NEWS, TODO, man/Makefile, setup: dr_unsort now installed in PATH,
manpage added
2009-08-26 Joost van Baal
* NEWS, TODO, script/draai.in: added (as of yet undocumented, and
lacking completion-support) new command "insert"
2009-08-26 Joost van Baal
* README: documenting migration from arch to git
2009-08-26 Joost van Baal
* debian/TODO: updated
2009-08-26 Joost van Baal
* NEWS, TODO, script/draai.in: command "play" (and "unpause" and
"resume") now honors --time
2009-08-26 Joost van Baal
* debian/changelog: starting new .deb
2009-08-26 Joost van Baal
* ChangeLog, ChangeLog.from-arch-era: make status ChangeLog explicit
2009-08-25 Joost van Baal
* ChangeLog, NEWS, TODO, script/draai.in: draai: command "pause" now
does fadeout, and honors --time. draai: command "pause" now does fadeout, and honors --time. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-290
2009-08-23 Joost van Baal
* ChangeLog, debian/changelog, debian/control: updated from 3.8.1.0
to policy 3.8.2 (no changes needed) updated from 3.8.1.0 to policy 3.8.2 (no changes needed) git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-289
2009-08-23 Joost van Baal
* ChangeLog, debian/changelog, debian/control: add zsh (needed by
./setup) to Build-Depends (closes: #543093). add zsh (needed by ./setup) to Build-Depends (closes: #543093). git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-288
2009-08-10 Joost van Baal
* ChangeLog, debian/changelog: make clear this one is not yet
released make clear this one is not yet released git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-287
2009-08-10 Joost van Baal
* ChangeLog: Enhance short description to mention MPD. Thanks Mike
Massonnet (closes: #540781). Enhance short description to mention MPD. Thanks Mike Massonnet
(closes: #540781). git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-286
2009-08-10 Joost van Baal
* ChangeLog: Enhance short description to mention MPD. Thanks Mike
Massonnet (closes: #540781). Enhance short description to mention MPD. Thanks Mike Massonnet
(closes: #540781). git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-285
2009-08-10 Joost van Baal
* ChangeLog, debian/changelog, debian/control: Enhance short
description to mention MPD. Thanks Mike Massonnet (closes:
#540781). Enhance short description to mention MPD. Thanks Mike Massonnet
(closes: #540781). git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-284
2009-06-21 Joost van Baal
* ChangeLog, debian/changelog: release release git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-283
2009-06-21 Joost van Baal
* ChangeLog, debian/TODO, debian/changelog, debian/control,
debian/copyright: debian packaging debian packaging git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-282
2009-06-15 Joost van Baal
* ChangeLog, NEWS, man/Makefile, setup: release 20090615 release 20090615 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-281
2009-06-15 Joost van Baal
* ChangeLog, man/draai.azm: tweak manpage, workaround zoem issue tweak manpage, workaround zoem issue git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-280
2009-06-15 Joost van Baal
* ChangeLog, help/option/playlist, help/option/time, man/draai.azm,
man/include.zmm.in, zsh/_draai, zsh/_draai.in: document options
--playlist and --time document options --playlist and --time git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-279
2009-06-15 Joost van Baal
* ChangeLog, debian/manpages: install manpages install manpages git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-278
2009-06-15 Joost van Baal
* ChangeLog, NEWS, setup: install draai123 install draai123 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-277
2009-06-15 Joost van Baal
* ChangeLog, INSTALL, NEWS, README, TODO, debian/TODO,
debian/copyright, debian/manpages, man/Makefile, script/cdrip,
script/dr_cdrip, setup: renamed cdrip to dr_cdrip renamed cdrip to dr_cdrip git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-276
2009-06-15 Joost van Baal
* ChangeLog, help/option/noshuffle, help/shortoption/debug,
help/shortoption/help, help/shortoption/license,
help/shortoption/notime, help/shortoption/number,
help/shortoption/playlist, help/shortoption/raw,
help/shortoption/sloppy, help/shortoption/time,
help/shortoption/version: more help templates more help templates git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-275
2009-06-15 Joost van Baal
* ChangeLog, script/dr_unsort: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-274
2009-06-15 Joost van Baal
* ChangeLog, man/draai.azm, man/include.zmm.in: new upstream new upstream git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-273
2009-06-15 Joost van Baal
* ChangeLog, debian/TODO, debian/changelog: new upstream new upstream git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-272
2009-06-15 Joost van Baal
* ChangeLog, NEWS, TODO, setup: automagically generate zsh
completion info from templates in help/ automagically generate zsh completion info from templates in help/ git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-271
2009-05-05 Joost van Baal
* ChangeLog, NEWS, man/dr_symlinks.azm, man/dr_watch.azm:
dr_watch(1) manpage dr_watch(1) manpage git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-270
2009-05-05 Joost van Baal
* ChangeLog, NEWS, man/dr_symlinks.azm: added manpage added manpage git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-269
2009-05-05 Joost van Baal
* ChangeLog, NEWS, man/dr_symlinks.azm, script/dr_symlinks: not
ROOTS but DR_SL_TARGETS, not MP3HOME but DR_SL_SOURCE. not ROOTS but DR_SL_TARGETS, not MP3HOME but DR_SL_SOURCE. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-268
2009-05-04 Joost van Baal
* ChangeLog, debian/changelog, man/Makefile, man/dr_symlinks.azm,
setup: set up infrastructure for installing dr_symlinks(1) and
dr_watch(1) set up infrastructure for installing dr_symlinks(1) and dr_watch(1) git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-267
2009-05-02 Joost van Baal
* ChangeLog, NEWS, TODO, debian/control: release 20090502 release 20090502 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-266
2009-05-02 Joost van Baal
* ChangeLog, NEWS, TODO, help/command/crescendo,
help/command/diminuendo, help/command/harder, help/command/zachter,
script/dr_unsort, script/draai.in, setup: added commands crescendo
and diminuendo added commands crescendo and diminuendo git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-265
2009-05-02 Joost van Baal
* ChangeLog, NEWS, TODO, script/dr_unsort: contributed by Wessel
Dankers. DR_-configuration support by Joost van Baal contributed by Wessel Dankers. DR_-configuration support by Joost
van Baal git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-264
2009-05-02 Joost van Baal
* ChangeLog, NEWS, script/dr_symlinks, script/mp3symlinks: renamed renamed git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-263
2009-05-02 Joost van Baal
* ChangeLog, man/dr_symlinks.azm: manpage in zoem format manpage in zoem format git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-262
2009-05-02 Joost van Baal
* ChangeLog, NEWS, TODO, setup: record changes record changes git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-261
2009-05-02 Joost van Baal
* ChangeLog, script/mp3symlinks: allow for oggsymlinks to be
installed as /usr/share/draai/oggsymlinks, not in PATH. Do not use
~/.mp3symlinksrc but ~/.draai/symlinksrc allow for oggsymlinks to be installed as
/usr/share/draai/oggsymlinks, not in PATH. Do not use
~/.mp3symlinksrc but ~/.draai/symlinksrc git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-260
2009-05-02 Joost van Baal
* ChangeLog, debian/TODO, debian/changelog, debian/control,
debian/copyright: mp3symlinks will get renamed to dr_symlinks mp3symlinks will get renamed to dr_symlinks git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-259
2008-12-28 Joost van Baal
* ChangeLog, NEWS, TODO, debian/changelog, man/draai.azm,
man/include.zmm.in, script/draai.in, setup: sync with last months
work: autogenerated manpage etc. Keywords: sync with last months work: autogenerated manpage etc. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-258
2008-11-27 Joost van Baal
* ChangeLog, help/command/delete, help/command/draai,
help/command/fastforward, help/command/init, help/command/list,
help/command/logtail, help/command/osjittisstil, help/command/peek,
help/command/quit, help/command/skip, help/command/syslog,
help/command/tail, help/command/unguestlist, help/option/debug,
help/option/raw, help/option/sloppy, man/draai.azm,
man/include.zmm.in: Build manpage using help::command::*, using
man/include.zmm.in and help/{option,command}/* Build manpage using help::command::*, using man/include.zmm.in and
help/{option,command}/* git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-257
2008-11-27 Joost van Baal
* ChangeLog, TODO, setup: Document idea for new command: "draai
pick" Document idea for new command: "draai pick" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-256
2008-10-31 Joost van Baal
* ChangeLog: draai is now configurable: it reads $HOME/.draai/rc and
honors DR_-variables in environment draai is now configurable: it reads $HOME/.draai/rc and honors
DR_-variables in environment git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-255
2008-10-31 Joost van Baal
* ChangeLog: draai is now configurable: it reads $HOME/.draai/rc and
honors DR_-variables in environment draai is now configurable: it reads $HOME/.draai/rc and honors
DR_-variables in environment git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-254
2008-10-31 Joost van Baal
* ChangeLog, script/draai.in: draai is now configurable: it reads
$HOME/.draai/rc and honors DR_-variables in environment draai is now configurable: it reads $HOME/.draai/rc and honors
DR_-variables in environment git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-253
2008-10-31 Joost van Baal
* ChangeLog, script/dr_file2tag: add dr_file2tag: build tag info
from filename, for dealing with badly tagged audio files add dr_file2tag: build tag info from filename, for dealing with
badly tagged audio files git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-252
2008-10-19 Joost van Baal
* ChangeLog, script/dr_watch: reimplementation of watch(1) which
deals sane with utf8 reimplementation of watch(1) which deals sane with utf8 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-251
2008-10-19 Joost van Baal
* ChangeLog, help/command/guestlist, help/option/noshuffle,
help/shortoption/noshuffle: skeleton infrastructure for 1-place help skeleton infrastructure for 1-place help git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-250
2008-10-19 Joost van Baal
* ChangeLog, TODO, man/draai.azm, man/include.zmm.in,
script/draai.in: draai: use our own watch reimplementation; migrate
to using one place to store draai --help stuff draai: use our own watch reimplementation; migrate to using one
place to store draai --help stuff git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-249
2008-10-14 Joost van Baal
* ChangeLog: tnx Fruit tnx Fruit git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-248
2008-10-14 Joost van Baal
* ChangeLog, TODO: tnx Fruit tnx Fruit git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-247
2008-10-14 Joost van Baal
* ChangeLog, README, TODO, man/Makefile, man/draai.azm,
man/include.zmm.in: started migrating draai(1) manpage from a
help2man generated to zoem generated one started migrating draai(1) manpage from a help2man generated to zoem
generated one git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-246
2008-10-11 Joost van Baal
* ChangeLog, TODO: some more todo-items some more todo-items git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-245
2008-09-02 Joost van Baal
* ChangeLog, TODO: refer to improved unsort hook. Thanks Wessel refer to improved unsort hook. Thanks Wessel git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-244
2008-09-01 Joost van Baal
* ChangeLog, script/draai123: improve comment documenting suggested
usage improve comment documenting suggested usage git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-243
2008-09-01 Joost van Baal
* ChangeLog, script/draai123: added support for flac, added support
for mp3info (next to id3) added support for flac, added support for mp3info (next to id3) git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-242
2008-07-23 Joost van Baal
* ChangeLog, script/draai.in: /usr/bin/gnome-terminal.wrapper is
picky on quoting /usr/bin/gnome-terminal.wrapper is picky on quoting git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-241
2008-07-20 Joost van Baal
* ChangeLog, TODO, debian/changelog: found another bug found another bug git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-240
2008-06-14 Joost van Baal
* ChangeLog, NEWS: ship it: draai release 20080614 ship it: draai release 20080614 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-239
2008-06-14 Joost van Baal
* ChangeLog, zsh/_draai: add zsh tabcompletion for "osjittisstil",
"resume" and "pause" add zsh tabcompletion for "osjittisstil", "resume" and "pause" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-238
2008-06-14 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-237
2008-06-11 Joost van Baal
* ChangeLog, NEWS, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-236
2008-06-11 Joost van Baal
* ChangeLog, TODO: one done one done git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-235
2008-06-11 Joost van Baal
* ChangeLog, script/draai.in: peek: rightadjust time peek: rightadjust time git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-234
2008-06-11 Joost van Baal
* ChangeLog, script/draai.in: tail: rightadjust time tail: rightadjust time git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-233
2008-05-17 Joost van Baal
* ChangeLog, README: beefed up description beefed up description git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-232
2008-05-17 Joost van Baal
* ChangeLog, debian/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-231
2008-05-17 Joost van Baal
* ChangeLog, debian/TODO, debian/changelog, debian/control: add
Vcs-* header add Vcs-* header git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-230
2008-05-17 Joost van Baal
* ChangeLog, TODO: more wishlist bugs, prioritize, more ideas on
unsort support more wishlist bugs, prioritize, more ideas on unsort support git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-229
2008-05-16 Joost van Baal
* ChangeLog, NEWS: ship it: draai release 20080516 ship it: draai release 20080516 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-228
2008-05-16 Joost van Baal
* ChangeLog, TODO, script/draai.in: implemented (yet undocumented)
"pause" and "resume" commands implemented (yet undocumented) "pause" and "resume" commands git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-227
2008-05-16 Joost van Baal
* ChangeLog, TODO: more wishlist bugs more wishlist bugs git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-226
2008-05-15 Joost van Baal
* ChangeLog, TODO: more bugs found more bugs found git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-225
2008-05-15 Joost van Baal
* ChangeLog, script/draai.in: more robust: initialize position.
fixes more robust: initialize position. fixes "draai peek" when no
playlist loaded: no more ugly errormessages from tail git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-224
2008-04-07 Joost van Baal
* ChangeLog, script/draai.in: fix typo in comment, tnx Fruit fix typo in comment, tnx Fruit git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-223
2008-04-05 Joost van Baal
* ChangeLog, TODO: investigated possible unsort support
implementation investigated possible unsort support implementation git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-222
2008-03-27 Joost van Baal
* ChangeLog, TODO: more radio stuff more radio stuff git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-221
2008-03-09 Joost van Baal
* ChangeLog, TODO: stuff moved to private repo
cvs/gelfand/doc/fuse.txt stuff moved to private repo cvs/gelfand/doc/fuse.txt git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-220
2008-03-09 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-219
2008-03-09 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-218
2008-03-09 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-217
2008-03-09 Joost van Baal
* ChangeLog, TODO, script/draai.in: draai tail now uses more fancy
layout draai tail now uses more fancy layout git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-216
2008-03-09 Joost van Baal
* ChangeLog, TODO, script/draai.in: skip now honors --sloppy even
more. add osjittisstil alias skip now honors --sloppy even more. add osjittisstil alias git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-215
2008-03-09 Joost van Baal
* ChangeLog, script/mp3symlinks, script/oggsymlinks: mp3symlinks now
is less verbose. oggsymlinks now honors DR_DEBUG environment
variable mp3symlinks now is less verbose. oggsymlinks now honors DR_DEBUG
environment variable git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-214
2008-03-06 Joost van Baal
* ChangeLog, TODO: more wishlist bugs more wishlist bugs git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-213
2008-03-05 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-212
2008-03-05 Joost van Baal
* ChangeLog, script/dr_push: dr_push now takes both directories and
files as args, not just files dr_push now takes both directories and files as args, not just files git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-211
2008-03-03 Joost van Baal
* ChangeLog, TODO, debian/changelog: idea for outline fix idea for outline fix git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-210
2008-02-29 Joost van Baal
* ChangeLog, NEWS, TODO: ship it: draai release 20080301 ship it: draai release 20080301 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-209
2008-02-29 Joost van Baal
* ChangeLog, TODO, script/draai.in: draai "skip" is no longer crappy
on slow hardware (it gave a hickup). now, an extra waiting time is
inserted (unless --sloppy is passed). draai "skip" is no longer crappy on slow hardware (it gave a
hickup). now, an extra waiting time is inserted (unless --sloppy is
passed). git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-208
2008-02-28 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-207
2008-02-28 Joost van Baal
* ChangeLog, README, debian/TODO: tnx jegmond for mentioning
"herrie" tnx jegmond for mentioning "herrie" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-206
2008-02-28 Joost van Baal
* ChangeLog, NEWS, debian/TODO: ship it: draai release 20080229 ship it: draai release 20080229 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-205
2008-02-28 Joost van Baal
* ChangeLog, TODO, debian/TODO, script/draai.in, zsh/_draai: draai
init no longer calls xterm, but the (Debian-specific) wrapper
x-terminal-emulator draai init no longer calls xterm, but the (Debian-specific) wrapper
x-terminal-emulator git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-204
2008-02-28 Joost van Baal
* ChangeLog, NEWS, TODO, debian/changelog, script/dr_push, setup:
fix bugs in ./setup --libexecdir handling fix bugs in ./setup --libexecdir handling git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-203
2008-02-28 Joost van Baal
* ChangeLog, NEWS: ship it: draai release 20080228 ship it: draai release 20080228 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-202
2008-02-28 Joost van Baal
* ChangeLog, TODO, script/draai.in, zsh/_draai: updated zsh
tabcompletion stuff: new draai commands updated zsh tabcompletion stuff: new draai commands git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-201
2008-02-28 Joost van Baal
* ChangeLog, TODO, script/dr_push: implemented dr_push implemented dr_push git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-200
2008-02-28 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-199
2008-02-28 Joost van Baal
* ChangeLog, script/dr_mount, script/dr_push, script/draai.in:
"list" now honors --raw "list" now honors --raw git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-198
2008-02-28 Joost van Baal
* ChangeLog, TODO, script/dr_mount, script/dr_push: implemented
dr_mount script implemented dr_mount script git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-197
2008-02-28 Joost van Baal
* ChangeLog, TODO, debian/rules, setup: install helper scripts in
libexecdir/PACKAGE install helper scripts in libexecdir/PACKAGE git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-196
2008-02-28 Joost van Baal
* ChangeLog: implemented "init" command implemented "init" command git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-195
2008-02-28 Joost van Baal
* ChangeLog, TODO, script/draai.in: implemented "init" command implemented "init" command git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-194
2008-02-28 Joost van Baal
* ChangeLog, TODO, script/draai.in: enhance "peek": also show
detailed status of current track enhance "peek": also show detailed status of current track git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-193
2008-02-28 Joost van Baal
* ChangeLog, TODO, script/draai.in: implemented command
"unguestlist" implemented command "unguestlist" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-192
2008-02-28 Joost van Baal
* ChangeLog, script/draai.in: code cleanup: use variables where
appropriate code cleanup: use variables where appropriate git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-191
2008-02-28 Joost van Baal
* ChangeLog, TODO, script/draai.in: enhance "peek" command: do not
show 10 but 30 upcoming tracks per default; honor --raw enhance "peek" command: do not show 10 but 30 upcoming tracks per
default; honor --raw git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-190
2008-02-17 Joost van Baal
* ChangeLog, NEWS: ship it: draai release 20080217 ship it: draai release 20080217 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-189
2008-02-17 Joost van Baal
* ChangeLog, man/.arch-inventory: tell tla about generated manpages tell tla about generated manpages git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-188
2008-02-17 Joost van Baal
* ChangeLog, TODO: reprioritized plans reprioritized plans git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-187
2008-02-17 Joost van Baal
* ChangeLog, TODO, script/draai.in: implemented "logtail" and
"fastforward" commands implemented "logtail" and "fastforward" commands git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-186
2008-02-17 Joost van Baal
* ChangeLog, TODO, script/draai.in: fixed bug in "delete" command fixed bug in "delete" command git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-185
2008-02-17 Joost van Baal
* ChangeLog, TODO, script/draai.in: implemented "guestlist" command implemented "guestlist" command git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-184
2008-02-14 Joost van Baal
* ChangeLog, TODO: another wishlist bug another wishlist bug git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-183
2008-02-14 Joost van Baal
* ChangeLog, TODO: more plans more plans git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-182
2008-02-14 Joost van Baal
* ChangeLog, TODO: found a bug in delete command git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-181
2008-02-13 Joost van Baal
* ChangeLog, TODO: more plans more plans git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-180
2008-02-13 Joost van Baal
* ChangeLog, debian/changelog, debian/control: ship it ship it git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-179
2008-02-13 Joost van Baal
* ChangeLog, debian/control: fix typo, mention extra utilities fix typo, mention extra utilities git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-178
2008-02-13 Joost van Baal
* ChangeLog, debian/changelog, debian/manpages, debian/rules:
manpages manpages git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-177
2008-02-13 Joost van Baal
* ChangeLog, NEWS: ship it: draai release 20080214 ship it: draai release 20080214 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-176
2008-02-13 Joost van Baal
* ChangeLog, NEWS, TODO, man/Makefile, script/dr_permutate,
script/draai.in, setup: fix bug in "delete" fix bug in "delete" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-175
2008-02-13 Joost van Baal
* ChangeLog, NEWS, contrib/mp3symlinks, debian/copyright,
man/Makefile, script/cdrip, script/dr_permutate, script/draai.in,
script/mp3symlinks, zsh/_draai: GPL v3 GPL v3 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-174
2008-02-13 Joost van Baal
* ChangeLog, TODO, debian/changelog, debian/copyright:
machine-interpretable debian/copyright machine-interpretable debian/copyright git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-173
2008-02-13 Joost van Baal
* ChangeLog, TODO: found bug found bug git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-172
2008-02-13 Joost van Baal
* ChangeLog, setup: oops: DO ship cdrip oops: DO ship cdrip git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-171
2008-02-13 Joost van Baal
* ChangeLog, NEWS, TODO: ship it: draai release 20080213 ship it: draai release 20080213 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-170
2008-02-13 Joost van Baal
* ChangeLog, NEWS, TODO, man/Makefile, script/cdrip, setup: install
cdrip(1) and its manpage install cdrip(1) and its manpage git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-169
2008-02-13 Joost van Baal
* ChangeLog, NEWS, script/draai.in: be nice: do not abort current
track when using "draai" command, but append to current track be nice: do not abort current track when using "draai" command, but
append to current track git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-168
2008-02-13 Joost van Baal
* ChangeLog, TODO, script/draai.in: implemented "delete" command implemented "delete" command git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-167
2008-02-12 Joost van Baal
* ChangeLog, script/draai.in: fix bug introduced with "improved"
skip: get rid of little squaks after fadeout due to timing troubles fix bug introduced with "improved" skip: get rid of little squaks
after fadeout due to timing troubles git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-166
2008-02-12 Joost van Baal
* ChangeLog, NEWS: ship it: draai release 20080212 ship it: draai release 20080212 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-165
2008-02-12 Joost van Baal
* ChangeLog, TODO, script/draai.in: improved "skip": now does
fadeout improved "skip": now does fadeout git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-164
2008-02-12 Joost van Baal
* ChangeLog, script/draai.in, setup: minor tweak of fadeout minor tweak of fadeout git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-163
2008-02-12 Joost van Baal
* ChangeLog, setup: add configure-mode. code cleanup. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-162
2008-02-12 Joost van Baal
* ChangeLog, TODO, script/draai.in: better fade-out: exponential better fade-out: exponential git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-161
2008-02-11 Joost van Baal
* ChangeLog, TODO: more to do git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-160
2008-02-10 Joost van Baal
* ChangeLog, NEWS, TODO: plans git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-159
2008-02-10 Joost van Baal
* ChangeLog: oggsymlinks now honors environment variables DR_VERBOSE
and DR_DRYRUN. mp3symlinks runs oggsymlinks in verbose-mode by
default. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-158
2008-02-10 Joost van Baal
* ChangeLog, script/mp3symlinks, script/oggsymlinks: oggsymlinks now
honors environment variables DR_VERBOSE and DR_DRYRUN. mp3symlinks
runs oggsymlinks in verbose-mode by default. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-157
2008-02-09 Joost van Baal
* ChangeLog, TODO: oggsymlinks is not yet ready, imho git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-156
2008-02-09 Joost van Baal
* ChangeLog, TODO, debian/TODO, debian/changelog, debian/control:
new debian package git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-155
2008-02-09 Joost van Baal
* ChangeLog, setup: "setup publish" implemented git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-154
2008-02-09 Joost van Baal
* ChangeLog, NEWS, README, TODO, script/mp3symlinks: ship it: draai
release 20080209 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-153
2008-02-09 Joost van Baal
* ChangeLog, NEWS, TODO, script/dr_permutate, script/permutate,
setup: renamed permutate git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-152
2008-02-09 Joost van Baal
* ChangeLog, script/mp3symlinks, script/oggsymlinks: contribution of
backend of reimplementation of mp3symlinks by Wessel Dankers: Date: Thu, 24 Jan 2008 21:06:25 +0100 From: Wessel Dankers To: joostvb Subject: Re: oggsymlinks (meteen alweer een update :P) Message-ID: 't Script is wat langer geworden dan ik oorspronkelijk bedacht had,
maar wel tot 217,68% hipper. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-151
2008-02-09 Joost van Baal
* ChangeLog, script/mp3symlinks: contribution of reimplementation of
original script, by Wessel Dankers. Date: Thu, 24 Jan 2008 19:33:58 +0100 From: Wessel Dankers To: joostvb Subject: oggsymlinks Message-ID: Bijgevoegd mp3symlinks (een wrapper met dezelfde interface als het
oude script). git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-150
2008-02-09 Joost van Baal
* ChangeLog, contrib/mp3symlinks, script/mp3symlinks: making place
for reimplementation git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-149
2008-01-06 Joost van Baal
* ChangeLog, TODO: mention another nice trick for draai usage:
dedicated console git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-148
2007-12-11 Joost van Baal
* ChangeLog, TODO: listed some more ideas: zomg, zoem, unsort git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-147
2007-10-24 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-146
2007-09-03 Joost van Baal
* ChangeLog, README, TODO, debian/TODO, debian/compat,
debian/copyright, debian/manpages, debian/rules: mention draai
debian package git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-145
2007-09-03 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-144
2007-09-03 Joost van Baal
* ChangeLog, debian/changelog, debian/control: fixed depends git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-143
2007-09-02 Joost van Baal
* ChangeLog, debian/TODO: it might be useable now git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-142
2007-09-02 Joost van Baal
* ChangeLog, debian/changelog, debian/compat, debian/control,
debian/copyright, debian/manpages, debian/rules: added debian
packaging git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-141
2007-08-23 Joost van Baal
* ChangeLog, NEWS, TODO: it's time for a .deb. planned. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-140
2007-08-23 Joost van Baal
* ChangeLog, NEWS: release 20070823 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-139
2007-08-23 Joost van Baal
* ChangeLog, NEWS, script/cdrip: document that cdrip is maintained
in arch repo git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-138
2007-08-23 Joost van Baal
* ChangeLog, setup: ship cdrip with tarball git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-137
2007-08-22 Joost van Baal
* ChangeLog, script/cdrip: add notes on history git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-136
2007-08-22 Joost van Baal
* ChangeLog, TODO, script/cdrip: import from
cvs/topaz/ad1810.com/packages/ad1810-dj git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-135
2007-07-01 Joost van Baal
* ChangeLog, TODO: more last.fm ideas git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-134
2007-06-30 Joost van Baal
* ChangeLog, TODO: add remark on last.fm services. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-133
2007-06-27 Joost van Baal
* ChangeLog, TODO: meer ideeen git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-132
2007-06-27 Joost van Baal
* ChangeLog, TODO: meer leuke features git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-131
2007-06-10 Joost van Baal
* ChangeLog, NEWS, TODO, script/draai.in: disable random mode git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-130
2007-05-29 Joost van Baal
* ChangeLog, NEWS, TODO, setup: mp3symlinks and permutate get
installed git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-129
2007-05-20 Joost van Baal
* ChangeLog, NEWS, TODO: one more thing to do git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-128
2007-05-20 Joost van Baal
* ChangeLog, script/mp3symlinks, script/permutate: add license
information, history, arch note git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-127
2007-05-20 Joost van Baal
* ChangeLog, script/mp3symlinks, script/permutate: imported from
~/cvs/topaz/ad1810.com/packages/ad1810-dj/script/ git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-126
2007-04-18 Joost van Baal
* ChangeLog, TODO: more enhancement requests git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-125
2007-03-27 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-124
2007-03-26 Joost van Baal
* ChangeLog, setup: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-123
2007-03-26 Joost van Baal
* ChangeLog, NEWS: release 20070326 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-122
2007-03-26 Joost van Baal
* ChangeLog, TODO, script/draai.in, zsh/_draai: fixed zsh
tabcompletion (i believe) git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-121
2007-03-22 Joost van Baal
* ChangeLog, INSTALL, NEWS, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-120
2007-03-21 Joost van Baal
* ChangeLog, NEWS: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-119
2007-03-21 Joost van Baal
* ChangeLog, TODO, setup, zsh/_draai: ship and install draai zsh
completion git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-118
2007-03-21 Joost van Baal
* ChangeLog, TODO, zsh/_draai: start working on zsh completion for
draai git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-117
2007-03-21 Joost van Baal
* ChangeLog, script/draai.in: fix small bug in "tail" layout git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-116
2007-03-21 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-115
2007-03-20 Joost van Baal
* ChangeLog, NEWS, TODO, script/draai.in: release 20070321 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-114
2007-03-20 Joost van Baal
* ChangeLog, INSTALL, TODO, script/draai.in: updated INSTALL: new
setup added --raw option; reimplemented "syslog" command git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-113
2007-03-20 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-112
2007-03-20 Joost van Baal
* ChangeLog, TODO: restore original volume after fade out git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-111
2007-03-20 Joost van Baal
* ChangeLog, MANIFEST.in, bootstrap, contrib/MANIFEST.in,
contrib/bootstrap, contrib/setup.py.in, script/draai.in,
setup.py.in: "tail": don't print month, day or seconds "quit": fade
out more cleanly git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-110
2007-03-19 Joost van Baal
* .arch-inventory, ChangeLog: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-109
2007-03-19 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-108
2007-03-19 Joost van Baal
* ChangeLog, setup: bugfixes git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-107
2007-03-19 Joost van Baal
* .arch-inventory, ChangeLog, NEWS, TODO: release 20070320 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-106
2007-03-19 Joost van Baal
* ChangeLog, INSTALL, setup: implemented "install" command git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-105
2007-03-19 Joost van Baal
* ChangeLog, man/Makefile, setup: implemented "dist" command git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-104
2007-03-19 Joost van Baal
* ChangeLog, setup: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-103
2007-03-19 Joost van Baal
* ChangeLog, TODO, setup: start hacking on "distdir" and "dist"
commands git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-102
2007-03-19 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-101
2007-03-19 Joost van Baal
* ChangeLog, TODO, setup: move to new build system git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-100
2007-03-19 Joost van Baal
* ChangeLog, TODO, script/draai.in: fix bug in -t, triggered when no
"+" in timespec git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-99
2007-03-19 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-98
2007-03-18 Joost van Baal
* ChangeLog, TODO, script/draai.in: "quit" no longer gives stuff on
stdout, so that the at job won't generate an email message git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-97
2007-03-18 Joost van Baal
* ChangeLog, script/draai.in: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-96
2007-03-18 Joost van Baal
* ChangeLog, TODO, script/draai.in: command "quit" now does a fade
out git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-95
2007-03-18 Joost van Baal
* ChangeLog, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-94
2007-03-18 Joost van Baal
* ChangeLog, script/draai.in: don't print year in "tail" output git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-93
2007-03-18 Joost van Baal
* ChangeLog, NEWS, TODO, script/draai.in: release 20070319 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-92
2007-03-18 Joost van Baal
* ChangeLog, TODO, script/draai.in: fix and improve "tail" and
"syslog" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-91
2007-03-18 Joost van Baal
* ChangeLog, script/draai.in: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-90
2007-03-18 Joost van Baal
* ChangeLog, TODO, script/draai.in: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-89
2007-03-18 Joost van Baal
* ChangeLog, TODO, script/draai.in: added command "syslog" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-88
2007-03-18 Joost van Baal
* ChangeLog, NEWS, TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-87
2007-03-18 Joost van Baal
* ChangeLog, script/draai.in: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-86
2007-03-18 Joost van Baal
* ChangeLog, TODO, script/draai.in: command "tail" now crops lines
to fit in 80 columns git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-85
2007-03-18 Joost van Baal
* ChangeLog, TODO, script/draai.in, setup.py.in: enable crossfade
implement --time option git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-84
2007-03-18 Joost van Baal
* ChangeLog, NEWS: release 20070318 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-83
2007-03-18 Joost van Baal
* ChangeLog, MANIFEST.in, NEWS, README, TODO: improved README git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-82
2007-03-18 Joost van Baal
* ChangeLog: implement command "peek" better manpage git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-81
2007-03-18 Joost van Baal
* ChangeLog, script/draai.in: implement command "peek" improve
manpage git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-80
2007-03-17 Joost van Baal
* ChangeLog, script/draai.in: plan for implemting command "peek" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-79
2007-03-15 Joost van Baal
* ChangeLog, README: reflect current situation: no longer python git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-78
2007-03-15 Joost van Baal
* ChangeLog, script/draai.in, setup.py.in: implement -S, start
implementing -t and -T git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-77
2007-03-15 Joost van Baal
* ChangeLog, man/.arch-inventory, script/.arch-inventory: ignore
stuff git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-76
2007-03-15 Joost van Baal
* ChangeLog, TODO: more to do git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-75
2007-03-14 Joost van Baal
* ChangeLog, NEWS, TODO: release 20070314 (for real now) git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-74
2007-03-14 Joost van Baal
* ChangeLog, script/draai.in: added command "quit" option "quiet" is
gone git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-73
2007-03-14 Joost van Baal
* ChangeLog, script/draai.in: oops git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-72
2007-03-14 Joost van Baal
* ChangeLog, script/draai.in: implemented tail command: a better
watch git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-71
2007-03-14 Joost van Baal
* ChangeLog, NEWS, TODO: release 20070314 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-70
2007-03-14 Joost van Baal
* ChangeLog: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-69
2007-03-14 Joost van Baal
* ChangeLog: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-68
2007-03-14 Joost van Baal
* ChangeLog: support for VERSION git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-67
2007-03-14 Joost van Baal
* ChangeLog, script/draai, script/draai.in: enable ./bootstrap:
support for VERSION git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-66
2007-03-14 Joost van Baal
* ChangeLog, script/.arch-inventory, script/draai: from contrib git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-65
2007-03-14 Joost van Baal
* ChangeLog, contrib/draai, script/draai-nonmpc.in, script/draai.in:
the mpc-one is the default one now git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-64
2007-03-14 Joost van Baal
* ChangeLog, contrib/draai: better watch try to implement -p git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-63
2007-03-14 Joost van Baal
* ChangeLog, contrib/draai: implemented watch, skip and list
commands in mpc-reimplementation git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-62
2006-09-24 Joost van Baal
* ChangeLog, contrib/draai: deal with quoting of filenames git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-61
2006-09-24 Joost van Baal
* ChangeLog, contrib/draai: draai draai foo.ogg bar.ogg now does
something sane git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-60
2006-09-24 Joost van Baal
* ChangeLog, contrib/draai: added first idea on implementation git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-59
2006-09-24 Joost van Baal
* ChangeLog, contrib/draai: found out more about option parsing git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-58
2006-09-24 Joost van Baal
* ChangeLog, contrib/draai, script/draai.in: start working on
reimplementation in zsh. this will just invoke the mpc commandline
client. new ideas: "watch" and "list" mode. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-57
2006-09-03 Joost van Baal
* ChangeLog, contrib/test.py: some fiddling to see what's possible
using mpdclient2 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-56
2006-09-03 Joost van Baal
* ChangeLog, contrib/test.py: copy from
/usr/share/doc/python-mpdclient/examples/test.py as shipped with the
python-mpdclient 0.11.1-2 Debian package. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-55
2006-09-03 Joost van Baal
* ChangeLog, TODO: more ideas on new ui for mpd support git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-54
2006-09-02 Joost van Baal
* ChangeLog, TODO: first plan to convert this thing into an mpd
client git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-53
2006-04-30 Joost van Baal
* ChangeLog, TODO, modules/draai.py: reported bug: " in audio
filename git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-52
2005-05-06 Joost van Baal
* ChangeLog: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-51
2005-05-05 Joost van Baal
* ChangeLog, modules/draai.py: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-50
2005-05-05 Joost van Baal
* ChangeLog, modules/draai.py: fix syntax error git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-49
2005-05-05 Joost van Baal
* ChangeLog, modules/draai.py: seach in both ~/mp3 and . for track git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-48
2005-05-05 Joost van Baal
* ChangeLog, modules/draai.py, script/draai.in: more than one
playlistfile arg, fix bug in (n/N) print in DrDefault git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-47
2005-03-29 Joost van Baal
* ChangeLog, README, TODO, modules/draai.py: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-46
2005-03-26 Joost van Baal
* ChangeLog, README: be less ambitious git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-45
2005-03-26 Joost van Baal
* ChangeLog, INSTALL, MANIFEST.in, bootstrap, script/draai.in:
cosmetics. bugfix in next command. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-44
2005-03-26 Joost van Baal
* ChangeLog, setup.py.in: new release git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-43
2005-03-26 Joost van Baal
* ChangeLog, MANIFEST.in, TODO, bootstrap, contrib/Makefile,
man/Makefile, script/draai.in, setup.py.in: manpage is being
distributed. contrib/Makefile for easier setup added. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-42
2005-03-26 Joost van Baal
* ChangeLog, TODO, contrib/Makefile, modules/draai.py,
script/draai.in: more sane default filenames. example Makefile for
generating playlists git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-41
2005-03-25 Joost van Baal
* .arch-inventory, ChangeLog, README, bootstrap: more investigating
manpage generation options git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-40
2005-03-25 Joost van Baal
* ChangeLog, TODO, modules/draai.py, script/draai123: added some
docstrings. fixed "next" handling of "n" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-39
2005-03-23 Joost van Baal
* ChangeLog, NEWS, modules/draai.py: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-38
2005-03-23 Joost van Baal
* ChangeLog, MANIFEST.in, NEWS, README, TODO, bootstrap,
modules/draai.py, script/draai.in: next no longer depends upon
Makefile git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-37
2005-03-23 Joost van Baal
* ChangeLog, MANIFEST.in, TODO, bootstrap: hardcoded version fixed:
use bootstrap git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-36
2005-03-23 Joost van Baal
* .arch-inventory, ChangeLog, script/.arch-inventory:
git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-35
2005-03-23 Joost van Baal
* ChangeLog, INSTALL, MANIFEST.in, README, TODO, bootstrap,
script/draai, script/draai.in, setup.py, setup.py.in: got rid of
hardcoded version git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-34
2005-03-23 Joost van Baal
* ChangeLog: unlock mirror git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-33
2005-03-23 Joost van Baal
* ChangeLog, modules/draai.py: license stuff added git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-32
2005-03-23 Joost van Baal
* ChangeLog: cosmetics git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-31
2005-03-23 Joost van Baal
* .arch-inventory, ChangeLog, README, TODO: cosmetics git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-30
2005-03-23 Joost van Baal
* ChangeLog, modules/draai.py, setup.py: make it runnable from
system install git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-29
2005-03-23 Joost van Baal
* ChangeLog, TODO, script/draai: first "release": 20050323 git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-28
2005-03-23 Joost van Baal
* ChangeLog, MANIFEST.in, README, TODO, setup.py: cosmetics git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-27
2005-03-23 Joost van Baal
* ChangeLog, TODO, setup.py: install documentation git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-26
2005-03-23 Joost van Baal
* ChangeLog: get rid of bashism in hook script git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-25
2005-03-23 Joost van Baal
* ChangeLog, TODO: another hook test git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-24
2005-03-23 Joost van Baal
* ChangeLog, TODO: setting up auto-archive-mirroring via hook git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-23
2005-03-23 Joost van Baal
* ChangeLog, TODO: autogenerating ChangeLog git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-22
2005-03-23 Joost van Baal
* setup.py: build file git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-21
2005-03-23 Joost van Baal
* MANIFEST.in, README, TODO: installation instructions added git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-20
2005-03-23 Joost van Baal
* TODO, modules/draai.py, script/draai.py, script/draai123: first
shot at distutils stuff: build a .tar.gz git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-19
2005-03-20 Joost van Baal
* TODO, script/draai, script/draai.py: drDraai has n option git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-18
2005-03-19 Joost van Baal
* script/draai, script/draai.py, script/draai123: implemented "nice" git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-17
2005-03-19 Joost van Baal
* TODO, script/draai, script/draai.py: implemented --number option git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-16
2005-03-19 Joost van Baal
* TODO, script/draai, script/draai.py, script/draai123: "next"
implemented git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-15
2005-03-19 Joost van Baal
* script/draai, script/draai.py: default action implemented: play
from default playlist git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-14
2005-03-19 Joost van Baal
* script/draai, script/draai.py, script/draai123: implemented
shuffle option git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-13
2005-03-17 Joost van Baal
* script/draai, script/draai.py, script/draai123: it can play sound.
woohoo git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-12
2005-03-17 Joost van Baal
* script/draai: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-11
2005-03-17 Joost van Baal
* script/draai.py: executing processes git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-10
2005-03-16 Joost van Baal
* script/draai, script/draai.py: it reads files. wow. git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-9
2005-03-16 Joost van Baal
* script/draai, script/draai.py, script/draai123: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-8
2005-01-25 Joost van Baal
* script/draai: it kinda parses options git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-7
2005-01-25 Joost van Baal
* script/draai, script/draai.py: yes, we have a hello-world-style
thingie git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-6
2005-01-25 Joost van Baal
* : this is where scripts will end up git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-5
2005-01-15 Joost van Baal
* TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-3
2005-01-15 Joost van Baal
* TODO: did some initial looking around in the python world. pydoc
doesn't seem to be the right tool: no roff output :( git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-2
2005-01-15 Joost van Baal
* TODO: initial import git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--patch-1
2005-01-15 Joost van Baal
* initial import git-archimport-id:
joostvb-arch@mdcc.cx--2005-draai/draai--mainline--0.1--base-0
draai-20160601/NEWS 0000644 0001750 0001750 00000031342 12723471374 010470 0000000 0000000 draai NEWS - user visible changes (and some other changes also.)
Refer to ChangeLog for detailed per-file info.
draai version 20160601 - The Јадар Release
- script/dr_watch: Apply patch contributed by Wessel Dankers:
+ no longer use tmpfiles
+ use tput (shipped with ncurses-bin on Debian systems) to do smart redrawing
of the screen. under some circumstances, 'draai watch' would show some
annoying and distracting flicker. This patch solves that problem.
+ deal sane with "$@": no longer chokes on spaces in command
- script/draai.in: improve the "init" command:
+ use dr_watch in the status window, not watch(1)
+ do not blindly assume we can write to /dev/tty12
+ fix bug in x-terminal-emulator call: don't pass "draai logtail" but pass
draai logtail. We used to support just terminals like xterm and
gnome-terminal; now we also support st (aka stterm).
- script/dr_radio: another helper, as of yet largely undocumented (and not
installed in $PATH). Planned to get implemented RSN as "draai radio".
- script/draai.in, man/draai.azm, help/command/zap: implemented new command
"zap".
draai version 20150228 - The Nieuwe Leij Release
- when started with "draai init", draai used to call mpc more than 5 times
every 2 seconds. Now it calls mpc only once every 5 seconds: better
performance, nicer for mpd.
- script/draai.in: "tail" (and syslog) 'use "mpc idle": do not spam mpd log with
extraneous client access'
- script/dr_watch: use DR_NICE_WATCH, DR_SLEEP_CMD; give sane error message if
needed; dr_watch and "draai watch" working changed: will not call watch(1)
unless...
- script/draai.in: changed "init" from
xterm -e "dr_watch draai peek" &
xterm -e "draai logtail" &
draai tail
to
x-term -e "draai logtail" &
x-term -e "watch --no-title --interval 10 mpc" &
x-term -e "draai watch" &
: draai init will now keep the running xterm available; it will do a kind of
running "draai status" (since this is no longer supplied as part of "draai
peek"); it will no longer do "draai tail" since "draai logtail" gives more and
better output.
draai version 20140828 - The Nuuk Release
- man/draai.azm: add some more information on how to get started.
- help/command/add, help/command/listall, man/include.zmm.in, script/draai.in:
implemented and documented new commands "listall" and "add".
- man/draai.azm: documented commands "watch", "play", "crescendo", "diminuendo",
"shuffle", "listall", "add" in draai(1)
draai version 20131212 - The Witte Reiger Release
- help/command/search: Fix bug on tab completion: "_draai:50: parse error near
`|'".
- man/draai.azm: Move example on command 'search' to new section EXAMPLES in
draai(1) manpage.
draai version 20131020 - The Plexus aka Het Platenmanneke Release
- script/dr_permutate: refer to shuf(1) and unsort(1) as alternatives in
dr_permutate(1) manpage.
- script/draai.in: radiostations now displayed somewhat less sloppy in "peek".
- script/draai.in, help/command/insert: command "insert" now accepts files on
stdin (not just as args).
- script/draai.in, help/command/search: implemented new command "search". One
now can run e.g. "draai search 'delia gone' | draai insert".
- script/draai.in, help/command/move: implemented new command "move" (plain
wrapper for 'mpc move '.)
- man/dr_unsort.azm: minor fix in dr_unsort(1) manpage.
- README: minor updates.
draai version 20130228 - The Arjuna, Mill Road, CB1 Release
- setup: no longer ship and no longer install scripts: dr_cdrip, dr_mount,
dr_push; manpage: dr_cdrip(1). Better alternatives exist.
- draai, help/: added command "watch".
draai version 20130208 - The Schwebebahn Release
- help/, setup: (re)implemented system to generate draai --help output, draai
zsh completion and draai(1) manpage from one documentation source.
- dr_watch: now runs watch(1) if found, since bug http://bugs.debian.org/240989
got fixed.
draai version 20120712 - The Lingsfort Release
- draai: bugfix: commands "skip" and "pause" no longer fail when volume is set
to 100%, or when volume n/a.
- now ships man/draai.html, man/dr_symlinks.html, man/dr_unsort.html and
man/dr_watch.html (not installed by default).
draai version 20120704 - The Westerik Release
- man/Makefile: get rid of hardcoded ZOEMSEARCHPATH. We now require zoem >
10-265-1, and we require aephea at build-from-vcs time. There still is no
dependency upon zoem for building from tarball.
- draai: when invoked with command tail, syslog, list, peek (and staart, spiek),
and with option --raw, add position to displayed tags
draai version 20110603
- dr_symlinks: now honors DR_SL_RCFILE.
- draai: add new (not yet fully documented) extra aliases: init: genesis; next:
volgende; unguestlist: unfriend, ontvriend; insert: voegin; skip: slaover;
fastforward: voorwaarts; tail: staart; peek: spiek; play (unpause, resume):
ga; quit (exit, stop, pause): ho. Thanks Guus Sliepen and jiggel for
suggestion.
- fix cosmetic bugs in draai(1) and other manpages. Thanks Stijn van Dongen for
zoem support.
draai version 20110516
- setup: autogenerate ChangeLog
- draai, help/command/insert, man/draai.azm: documented command insert
- man/Makefile, man/dr_symlinks.azm, man/dr_unsort.azm, man/dr_watch.azm,
man/draai.azm: converted manpages to format zoem >= 10-265-1
draai version 20100511
- draai: now compatible with mpc >= 0.18: use %position% if mpc supports this.
(Earlier draai releases are next to unusable with mpc >= 0.18, see mpc
changelog. We are not yet using %id%.)
- draai: command "pause" now does fadeout, and honors --time.
- draai: command "play" (and "unpause" and "resume") now honors --time.
- draai: added new command "insert".
- man/dr_unsort: manpage added.
- dr_unsort is now installed in /usr/{local/,}bin (was libexecdir).
- draai is no longer maintained using GNU Arch, but using the git Version
Control System.
draai version 20090615
- setup, zsh/_draai.in: Use templates in help/ for generating zsh tabcompletion
information on draai commands.
- help/shortoption: added all lacking files.
- man/draai.azm: mention short optionnames too.
- help/option/noshuffle: refer to dr_unsort.
- documented harder|crescendo|louder and zachter|diminuendo|softer
- script/dr_symlinks: environment variables renamed: not ROOTS but
DR_SL_TARGETS; not MP3HOME but DR_SL_SOURCE.
- added manpages dr_symlinks(1) and dr_watch(1).
- renamed script cdrip to dr_cdrip.
- script draai123 now gets installed.
draai version 20090502
- mp3symlinks is renamed to dr_symlinks; setup now installs script dr_symlinks,
not mp3symlinks
- script/dr_symlinks: no longer uses ~/.mp3symlinksrc but ~/.draai/symlinksrc
as configuration file.
- script/dr_symlinks, setup: moved oggsymlinks from /usr/bin/ to
/usr/share/draai/.
- script/dr_file2tag: added: build tag info from filename, for dealing with
badly tagged audio files.
- script/dr_watch: added: reimplementation of watch(1) which deals sane with
utf8. This is now the default watch-implementation used by draai.
- script/dr_unsort: added: wrapper for unsort(1), for playlist management. New
configuration variables DR_PLAYLISTS and DR_UNSORT.
- draai: new commands "crescendo" (aka "harder" and "louder") and "diminuendo"
(aka "zachter" and "softer"). New configuration variable DR_VOLUME_STEP.
- help/{option,command}/*: added: all draai helpfiles are now maintained in one
place in the source. Used for manpage, --help and zsh tabcompletion.
- man/draai.azm, man/include.zmm.in: added. migrated draai(1) manpage from a
help2man generated one to one written in zoem.
- draai123: added support for flac, added support for mp3info (next to id3)
- draai:
+ fixed bug in quoting, triggered when x-terminal-emulator points to
gnome-terminal.wrapper.
+ now configurable: draai reads $HOME/.draai/rc and honors DR_-variables in
environment
draai version 20080614
- draai: "peek" and "tail" command: nicer layout: time is rightadjusted.
- draai: add zsh tabcompletion for "osjittisstil", "resume" and "pause".
draai version 20080516
- dr_push: minor improvement.
- draai: new (yet undocumented) commands "pause" and "resume".
- draai: new command "osjittisstil".
- draai: "tail" command gives nicer layout.
- draai: command "skip" now honors --sloppy even more.
- draai: command "peek" no longer chokes when no playlist is loaded (used to
give ugly errormessages from tail).
- mp3symlinks: now less verbose.
- oggsymlinks: now honors DR_DEBUG environment variable.
draai version 20080301
- draai: new option --sloppy. this enhances the "skip" command: it no longer
gives a little squak after fadeout on old hardware. (the 20080213 release
did _not_ fix this...). the default behaviour of "skip" is to be cautious,
and wait. passing --sloppy makes skip behave somewhat more aggresive.
draai version 20080229
- fix bug in ./setup: honor --libexecdir.
- draai: "init" no longer calls xterm, but the (Debian-specific) wrapper
x-terminal-emulator.
draai version 20080228
- draai: new commands: "unguestlist", "init".
- draai: enhanced command "peek": do not show 10 but 30 upcoming tracks per
default; honor --raw; also show detailed status of current track.
- draai: enhanced command "list": now honors --raw.
- dr_mount, dr_push: helper scripts added, for interfacing with usb-enabled mp3
players. installed in libexecdir/draai per default.
- updated zsh tabcompletion stuff: new draai commands.
draai version 20080217
- draai: new commands: "logtail", "fastforward", "guestlist".
- draai: another bugfix in "delete" command.
draai version 20080214
- major scripts now licensed under GPL v3 or later.
- install dr_permutate manpage.
- fixed bug in "draai delete" (it acted as a no-op).
draai version 20080213
- do no longer abort current track when using "draai" command, but schedule our
playlist just after the current track.
- draai now is more usable for DJ's:
+ implemented "delete" command.
- fix bug introduced with "improved" skip: get rid of little squaks after
fadeout due to timing troubles.
- install cdrip(1) and its manpage.
draai version 20080212
- draai now is more usable for DJ's:
+ improved "skip" command: now does fadeout.
- oggsymlinks now honors environment variables DR_VERBOSE and DR_DRYRUN.
- mp3symlinks runs oggsymlinks in verbose-mode by default.
draai version 20080209
- oggsymlinks: backend script added. Contributed by Wessel Dankers.
- mp3symlinks: reimplemented as a wrapper for oggsymlinks.
- dr_permutate: new name for permutate.
- The draai Debian package is now published. Thanks to Tilburg University
for hosting it.
draai version 20070823
- permutate, mp3symlinks: two simple scripts added, get installed in
/usr/local/bin. They're useful to me.
- cdrip: found another old script, now shipped with draai. This script is not
installed by default.
- By default (i.e. if -S is not given), run "mpc random off" since enabling
random mode interacts badly with a shuffled playlist. Thanks Wessel Dankers
for bugreport.
draai version 20070326
- Installs zsh completion function for draai.
- Improved "tail" command: fix small bug in layout.
draai version 20070321
- Improved "tail" command: add --raw option; don't print month, day or seconds.
- Improved "quit" command: fade out more cleanly, fix bug: restore original
volume after fade out.
draai version 20070320
- Improved "quit" command: now does a fade out; no longer gives stuff on stdout,
so that the at job won't generate an email message.
- Improved "tail" command: don't print year.
- Fix bug in --time option, triggered when no "+" in timespec.
- New build system: no longer needs python; reimplemented setup script in zsh.
- New setup script offers "install" and "dist" command.
draai version 20070319
- Enable crossfade mode for mpc.
- New option: "--time".
- New command: "syslog".
- Command "tail" now crops lines to fit in 80 columns.
draai version 20070318
- New commands: "tail", "quit".
- New option: "--noshuffle".
- Improved manpage and README.
draai version 20070314
- Reimplemented as a zsh shell script, wrapping mpc(1). No more python, no more
calling ogg123 or mpg321 directly. Lots of subcommands are gone, lots of
options are gone. Lots have been added too. Check the manpage.
draai version 20060430
- (This version was never "officially" released.)
This draai has commands "next" and "nice" and options --noshuffle,
--playlistfile=PLAYLIST (can be supplied more than once) and --number.
draai version 20050627
- Fix syntax error
draai version 20050505
- Search in both ~/mp3 and . for track
- More than one playlistfile arg, fix bug in (n/N) print in DrDefault
draai version 20050326
- Ship GPL, fixes in build system.
- No longer needs a Makefile in audiofiles directory.
draai version 20050323
- First public release.
# This file is maintained at http://git.mdcc.cx/draai
draai-20160601/README 0000644 0001750 0001750 00000006316 12375644047 010656 0000000 0000000
Draai is a wrapper around mpc, making playing music from the commandline more
enjoyable. mpc is a client for MPD, the Music Player Daemon. Using draai,
one can play an audiofile (ogg, mp3, flac, whatever your MPD offers), play all
files in a predefined playlist, view details on current, past and future playing
songs, skip to the next song, etc.
Main differences with mpc: draai supports smooth fadeouts, draai can be used as
an alarmclock, draai supports rescheduling a track as the upcoming track, draai
offers fancy status windows. The author uses draai for doing DJ sets in clubs.
The interface is purely command-line. No fancy gui's whatsoever. Not even
curses. Draai consists of just one simple zsh shell script, calling mpc.
Actually, I don't expect many more than one or two users of draai. The
interface is very much tweaked to my own personal taste. Furthermore, there
are a zillion alternatives for draai; everybody seems to be writing her own
playlist manager.
PACKAGES
========
If you're using a Debian or Ubuntu system, install draai by executing
# aptitude update && aptitude install draai
(Debian ships draai since the "squeeze" release.)
There might be draai packages available from non-gnu.uvt.nl too; try:
# echo "deb http://non-gnu.uvt.nl/debian sid draai" >> /etc/apt/sources.list
# aptitude update
# curl http://non-gnu.uvt.nl/debian/uvt_key.asc | apt-key add -
# aptitude update && aptitude install draai
to install it from there.
SOURCE
======
Source packages are available for download from http://mdcc.cx/pub/draai/.
INSTALLATION
============
For instructions for installation using the tarball (i.e.: not binary packages),
see the file INSTALL.
Special installation information for zsh users:
Draai comes with a zsh completion function, by default installed in
/usr/local/share/zsh/site-functions. Make sure this directory is in your
$fpath. If it isn't, you might want to add
_sitecompdir=/usr/local/share/zsh/site-functions
[[ -z $fpath[(r)$_sitecompdir] ]] && fpath=($fpath $_sitecompdir)
to your ~/.zshrc.
Run compinit after installation of draai.
USAGE
=====
After installation, running
$ man draai
(or "$ draai --help") gives information on the usage of the draai command-line
tool.
DEVELOPERS
==========
Bleeding edge draai is available using git from
http://git.mdcc.cx/draai.
WHAT OUR USERS SAY
==================
As heard once on irc meuknet/#uvt: < jiggel> osjittisstil <- beste naam van een
commandline optie die ik in lange tijd gezien heb :)
HISTORY
=======
The first draai implementation, probably from about 2001, consisted of a bunch
of zsh shell functions. The second draai implementation was in python, calling
ogg123 and mpg321. The first implementation which never made it was in python,
using python-pyvorbis, python-id3 and python-pymad. The second implementation
which never made it was in python, using python-mpdclient / py-libmpdclient.
The current draai implementation, around since 2007, is a zsh shell script,
calling mpc.
AUTHOR
======
Draai is written by Joost van Baal-Ilić .
THANKS
======
Wessel Dankers for contributing the oggsymlinks script.
MORE INFORMATION
================
The draai webpage is at http://mdcc.cx/draai.
draai-20160601/TODO 0000644 0001750 0001750 00000046522 12712700560 010455 0000000 0000000 fix The Nieuwe Leij Release NEWS item; document changes in manpages.
fix dr_watch , draai watch = dr_watch draai peek : use mpc idle
add 'watch mpc' or similar
release names: The sluis in maas, ceramique eettent
Цер Cer mountain
Petkovica monastery
Čokešina monastery + village
Prnjavor village
Novo Celo village
Lešnica village + river
Jadar river
Јадар
----
rc rc rc stuff (2014-08) :
things which actually annoy the author (so r.c.):
- radio-stations info in 'draai list' is borken: name of station (e.g. last part
of url) lacking
- when pcm is 100%, draai skip barfs: fails to lower volume/fade out
- implement "mpc move 1; mpc play 1" : change station when playing radio "
draai zap "
----
test 'draai insert': file-as-arg-mode borken, probably since draai version 20100511, when it
was implemented. (implemented succesful 'file on stdin'-mode)
joostvb@arrr:~/git/draai% export DR_DEBUG=true
joostvb@arrr:~/git/draai% draai insert 'LOCAL/201308/Various/Alan_Lomax_Collection_-_Bahamas_1935_Vol_2_-_Ring_Games_and_Round_Dances/22-Nassau_string_band-Delia_Gone.ogg'
this now works:
"draai search 'delia gone' | draai insert"
---
joostvb@sveznalica:~/git/draai% draai --raw list | grep '^22)'
22) http://streams.greenhost.nl:8080/pop: - Popart (do 22 sep 21:00) (Concertzender Pop - )
joostvb@sveznalica:~/git/draai% draai list | grep '()'
22) - Popart (do 22 sep 21:00) ()
86) Radio 5 - ()
89) Radio 2 - ()
108) http://streams.greenhost.nl:8080/jazznotjazz ()
joostvb@sveznalica:~/git/draai% mpc --format "t %title% - f %file% - n %name% - p %position%" playlist | grep -i popart
t Popart (do 22 sep 21:00) - f http://streams.greenhost.nl:8080/pop - n Concertzender Pop - p 21
----
draai inject / draai guestlist should work on both tracknumbers and mpd-files
a bit like mpc findadd, see "searchadd" below.
rc rc items
-----------
test "watch" again
чет 21 07:01 < michiel> zie overigens ook
http://www.acooke.org/cute/TheIdealUs0.html en
https://github.com/andrewcooke/uykfg
чет 21 07:02 < michiel> (mpd playlist generators die een soort van last.fm
database queryen om links tussen obscure muzikanten te
vinden)
------
rc items
--------
- utf8 and http/radio-stations in playlist make draai peek fail: lines too long.
joostvb@arrr:~% draai peek | head -4
[playing] #1/249 2:23/2:48 (85%)
1) Jimi Hendrix - Stockholm Concert second sho...kholm, Sweden) - Fire (2:48)
2) Cumbia Siglo XX - Palenque Palenque: Champe...75-1991 - Naga Pedale (3:27)
3) Joan Baez - Folk Singers Round Harvard Squa...ur Pretty Little Baby (2:31)
joostvb@arrr:~% mpc --format "a %artist% - a %album% - aa %albumartist% - c %composer% - ti %title% - tr %track% - ti %time% - f %file% - p %position%" playlist | grep http
a - a - aa - c - ti - tr - ti - f http://icecast.omroep.nl/radio5-bb-mp3 - p 201
a B92 - a - aa - c - ti Radio B92 - tr - ti - f http://stream.b92.net:7999/radio-b92.ogg - p 206
joostvb@arrr:~% mpc --format "a %artist% - a %album% - aa %albumartist% - c %composer% - ti %title% - tr %track% - ti %time% - f %file% - p %position%" playlist | head -4
a Joan Baez - a Folk Singers Round Harvard Square - aa - c - ti What You Gonna Call Your Pretty Little Baby - tr 06 - ti 2:31 - f USB/Joan_Baez/Folk_Singers_Round_Harvard_Square/06-What_You_Gonna_Call_Your_Pretty_Little_Baby.ogg - p 1
a Jimi Hendrix - a Stockholm Concert second show (January 9, 1969, Konserthuset, Stockholm, Sweden) - aa - c - ti Red House - tr 07 - ti 11:32 - f USB/Jimi_Hendrix/Stockholm_Concert,_second_show/07-Red_House.ogg - p 2
joostvb@sveznalica:~/git/draai% mpc --format "ti %title% - tr %track% - ti %time% - f %file% - n %name% - p %position%" playlist | grep http
ti Kroniek van de Nederlandse muziek (za 6 jun 19:00) - tr - ti - f http://streams.greenhost.nl:8080/raakvlakken - n Concertzender Raakvlakken - p 157
ti - tr - ti - f http://icecast.omroep.nl/radio4-bb-mp3 - n Radio 4 - p 160
ti - tr - ti - f http://streams.greenhost.nl:8080/jazznotjazz - n - p 223
ti - tr - ti - f http://mp3.streampower.be/klara-high - n Klara | kwaliteit *** - p 256
so: %file% and optionally %title% and/or %name%
- report mpc doc bug, see below
- use new (i.e. Debian wheezy) mpd/mpc features (idle, a.o.):
mpc --wait
mpc idle
mpc idleloop
mpc crop -> draai crop
mpc prev -> draai previous
mpc random -> draai random
mpc consume -> draai consume
mpc shuffle -> draai shuffle
mpc search ....
mpc search ... | mpc add -> draai searchadd
mpc search ... | mpc inject -> ....
mpc update --wait -> draai update
report bug:
" idle [events]
Waits until an event occurs. Prints a list of event names, one
per line. See the MPD protocol documentation for further infor‐
mation.
"
mpc(1)
protocol spec not shipped with package.
pretty urgent items
-------------------
- Fix buildhelp() in ./setup
revamp: schedule Cambridge hack session
help texts in zsh completion stuff, --help and manpage should use ONE
source. move help stuff to one place; include help/ stuff in configure phase.
See ./setup for current implementation.
Think about lists in zoem, use stijn's trick.
Alternative way to implement this: Run e.g. "draai --raw --help skip",
"draai --raw help" "draai --raw --nice help"
(as of 2008-06, quite some options are only half-implemented)
.
Another alternative way to implement this:
selfdocumenting zoem stuff:
foo=bar
: cat <
To: Joost van Baal
Subject: zoem mongering
Message-ID: <20081130220521.GA37144@xs4all.nl>
Ha Joost,
zie bijgevoegd *en* geciteerd de file 'lscat.azm' die misschien doet wat je wil.
Roep zoem aan als
zoem -i lscat.azm -allow ls:cat -o -
\: - lees de namen.
\setx{thefiles}{
\inspect{
{mods}{iter-lines,discard-miss}
}{(.*~.bzz)}{_#1{{\1}}}{\system{ls}}
}
\: - maak key-value paren.
\apply{_#1{\!{\setx{%{\1}}{\system{cat}{\1}}}}}{\thefiles}
\: - print een value.
[\%{foo.bzz}]
[\%{bar.bzz}]
\: - print alle key-value paren.
\apply{_#1{\!{[\1]-->[\%{\1}]}}}{\thefiles}
In dit voorbeeld worden de file namen gematcht op een .bzz suffix.
Als je dat niet wilt kun je het patroon (.*) gebruiken (maar ik
raad aan een suffix conventie te gebruiken :-).
Als je vervolgens iets voor alle file namen wil doen, kun je
\apply gebruiken zoals hierboven.
Nog iets: je kunt ls aanroepen met argumenten, bijvoorbeeld zo:
\system{ls}{{-r}{-t}}.
En: \apply expandeert beide argumenten (1e argument: de 'subroutine' key die
iteratief gebruikt wordt op de sub-argumenten in het 2e argument). Dat kan soms
een beetje prutsen zijn om ongewenste evaluatie/expansie te voorkomen. In het
voorbeeld hierboven wordt \!{ } gebruikt om te zorgen dat bepaalde stukken
overgeslagen worden tijden genoemde expansie. In de documentatie heet \!{ }
'delay scope' omdat het 1 expansie stap overslaat. \!!{ } slaat twee stappen
over. En \eval{\eval{\!!{\bar}}} is precies hetzelfde als \bar. Het is de
barre praktijk van macro talen :)
groetjes,
Stijn
----------------------------------------------------------------------------
some items
----------
- fix new author name in manpages copyright: utf8, cyrillic
\set{"man::author"}{Joost van Baal-Ilić } . html, roff
is ok, ps (and pdf) borken. once fixed, ship pdf manpages.
INSTALL zsh stuff:
compinit niet genoeg; nodig:
joostvb@hille:~% exec zsh --login
move zsh stuff to README
urgent items
------------
- update this todo-list; lots of obsolete stuff is in it.
- bug: on empty/non-playing playlist, "draai draai" chokes
- README in html, ship .txt too.
- more docs and features for "draai insert": hang deze track net achter de nu spelende
"insert" is "fileguestlist" (as opposed to "trackguestlist", which is
"guestlist")
insert could honor --prio : --prio 2 : after upcoming track.
-
ma 26 12:56 < joostvb> mpc update; mpc idle; mpc add foo
ma 26 12:56 < Fruit> ah zo hm
ma 26 12:57 < Fruit> ik denk dat ik mpc add foo; mpc move $(getlast)
$(getcurrent+1) wil
ma 26 12:57 < Fruit> en dan liefst in één atomaire operatie (dat kan binnen het
mpd-protocol namelijk)
ma 26 12:58 < Fruit> en dat moet uiteraard ook goed gaan als je een directory
toevoegt
ma 26 12:58 < Fruit> dus eerst aantal opvragen, dan toevoegen, dan oude aantal
t/m nieuwe aantal moven
ma 26 12:59 < joostvb> yep
ma 26 12:59 < Fruit> in jouw draai watch scriptje wil je trouwens misschien mpc
idle gebruiken ipv sleep 1
- fade in/out more aggressive: never silence between tracks.
- implement "draai pick":
draai list | grep Camper | draai pick
draai --raw list | grep Camper | draai pick
draai pick > Picking from:
121) Camper van Beethoven - Camper van Beethoven - Lulu Land (2:41)
157) Camper van Beethoven - Camper van Beethoven - We Saw Jerry's Daughter (2:10)
158) Camper van Beethoven - Camper van Beethoven - Good Guys and Bad Guys (3:56)
>159) Camper van Beethoven - Camper van Beethoven - Jo Stalin's Cadillac (2:32)
Pick first matching entry? [Y,2,3...,l,r,q]
(Yes; no, pick 2nd; no, pick 3rd; no, pick last; no, rerun; quit)
Y
You've picked
121) Camper van Beethoven - Camper van Beethoven - Lulu Land (2:41)
Would you like to guestlist this track? [Y,2,3,..,d,u,q]
draai pick>
Yes; no, schedule as 2nd upcoming track; no, schedule as 3rd upcoming track; delete from playlist; unguestlist; quit
pick should honor --silent
- 'draai osjittisstil' update zsh stuff.
- dr_push: it'd be nice if it would mangle files and pathnames to fit on a
vfat filesystem.
- dr_umount would be nice
- add stuff to generate playlist "latest"
- draai second 123 = draai --prio 2 guestlist 123
- make this tool usable for DJ's: more flexible playlist handling, more
fade-in/fade-out features:
+ draai "peek" should accept an arg
draai peek noftracks
+ draai draai should do an "insert": insert these songs just after current
song. implement as "mpc add; mpc move":
old curr old curr old curr
old 1 new 4 new 2
old 2 old 1 new 3
old 3 old 2 ... new 4
new 1 old 3 old 1
new 2 new 1 old 2
new 3 new 2 old 3
new 4 new 3 new 1
- reimplement "tail" using ncurses (or watch(1)?): tail should show "peek" too.
current song in boldface or reverse video
- document "pause" and "resume|unpause|play" commands (mpc pause, mpc play), add
zsh completion
- draai draai should not clear current playlist, but remove all pending songs
but the current one from the current playlist, and append the given
tracks/playlists. This makes for more smooth fade in/out.
- add ui for
mpc search artist Stooges | mpc add
mpc search artist Hendrix | mpc add
- document extra aliases: init: genesis; next: volgende; unguestlist: unfriend,
ontvriend; insert: voegin; skip: slaover; fastforward: voorwaarts; tail:
staart; peek: spiek; play (unpause, resume): ga; quit (exit, stop, pause): ho
items as found while working on eeepc
-------------------------------------
inspect $DISPLAY for draai-init-nox
draai move 34 50 (just like mpc)
draai --terse list
draai --terse --search 'greatest_hits' list : gives 3 6 12 19
tty12 group tty for draai:
root@hille:/etc/udev/rules.d# vi 93-permissions-local.rules
udev / dr-mount
/dev/disk/by-label/PENDRIVE /media/PENDRIVE vfat user,noauto 0 0
watch(1) "cat -v" !?, see http://mdcc.cx/tmp/watch/
joostvb@hille:~% draai unguestlist $( draai --raw list | grep Best_Ever | head | while read n r; do echo $n | sed 's/)//'; done )
> add --match option:
> draai --match greatest_hits delete
> draai --match greatest_hits guestlist
> suggested usage: first run --match with --no-act, to inspect
> what would get matched.
private/local items
-------------------
- radio kink classix: dj@nagy:~% mpg321 http://81.173.3.24/
- see also dj@nagy:etc/zsh/rc.local for radio6 and bbc3
other items
-----------
- add support for smart merging of playlists:
--playlist=foo,1 --playlist=bar,40 --playlist=duh,7
--playlist=foo --playlist=bar is equivalent to
--playlist=foo,1 --playlist=bar,1
--playlist=foo,2 --playlist=bar is equivalent to
--playlist=foo,2 --playlist=bar,1 is equivalent to
--playlist=foo --playlist=foo --playlist=bar
: adding ,N is a shorthand for repeating the arg N times. playlists get
truncated to the size of the smallest one. so, no matter the size of foo
and bar, --playlist=foo,2 --playlist=bar,1 will give you 2 foo-tracks for
every bar-track.
- support voor last.fm audioscrobbling erin. An account at last.fm
is needed to get any services from them.
- support voor last.fm streaming audio erin. shell-fm(1)
shell-fm heeft plugin voor event tijdens wisselen track.
shell-fm is niet eenvoudig om te bouwen tot mpd client.
t heeft wel een socket en netwerk-interface
Wed 27 14:11 http://www.last.fm/user/Fruitje/
An account at last.fm is needed to get any services from them.
dj@nagy:~% shell-fm lastfm://artist/Alexander+von+Schlippenbach/similarartists
dj@nagy:~% shell-fm lastfm://artist/Anthony+Braxton/similarartists
Perhaps zomg is more interesting: ZOMG is a console-based last.fm submission
and radio client written in Z-Shell.
http://hg.debian.org/hg/private/schizo/zomg http://packages.debian.org/zomg
- document (and implement on gelfand): syslog.conf: local? to e.g.
/var/log/draai
- add to contrib:
root@kovalevskaya:/etc/logcheck/ignore.d.server# cat draai
#
#
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ draai\[[0-9]+\]:
- Give examples in documentation:
suggested desktop layout
.----------------.
| logtail .------.
` ------- | tail |
| |
`------'
.------.
| peek |
| |
`------'
and once in a while, press ctrl-alt-F12
startup:
% draai init calls draai tail > /dev/tty12 & (document: dj is a member of group tty)
dj@gelfand:~/mp3% draai -t +30 quit
dj@gelfand:~/mp3% draai -t 08:30 quit
dj@gelfand:~/mp3% draai -p all draai
dj@gelfand:~/mp3% draai tail <- in separate window
dj@gelfand:~/mp3% draai skip
dj@gelfand:~/mp3% draai -t 23:01 -p all draai
dj@gelfand:~/mp3% draai peek
dj@nagy:~% draai delete $(seq 3 65)
zsh: draai delete {12..29}
draai guestlist {50..34}
% repeat 10; do draai skip; done
dj@nagy:~% shell-fm lastfm://artist/This+Heat/similarartists
Air
Biosphere
dj@nagy:~% shell-fm lastfm://artist/Alexander+von+Schlippenbach/similarartists
dj@nagy:~% shell-fm lastfm://artist/Anthony+Braxton/similarartists
- "tail" is buggy:
2007-03-18 21:54:56 Anvil FX - Brazz-Ill - Miolo de Cabeça (4:28)
has borken line length: utf-8 issue, probably.
- implement setup uninstall
- don't use help2man, but something "real" for the manpage (see also
ideas from python era, below) ReST still (2007-03) doesn't seem to be easily
transformed to roff. use zoem? use xml? have zoem run --help and --version?
the last trick _is_ used and documented in some zoem example. zum has e.g.
\verbatim{\system{../src/zoem}{{-l}{session}}}
see aangifte-ib and webalizer-stonesteps manpages for roff example.
- document this
draai draai Lee_Scratch_Perry/Roast_Fish,_Collie_Weed_and_Corn_Bread/ The_Fall/
works: args don't need to be tracks. Also,
draai draai Various/Mind_The_Gap_6{0,1,2}
works.
Wishlist items
--------------
- don't do "draai --raw tail" but "draai tail --raw", etc.
- perhaps it'd be nice if we could still play local files too:
~$ draai draai /tmp/foo.ogg
- should process .m3u , stdin and command line args;
cat <
http://sourceforge.net/mailarchive/message.php?msg_id=9285365
result.append(formatter.format_heading(_("options")))
def format_usage(self, usage):
return _("usage: %s\n") % usage
joostvb@nagy:/usr/lib/python2.4% less optparse.py
joostvb@nagy:~/svn/starship.python.net% svn co svn://starship.python.net/optik/trunk optik
r484 | gward | 2005-01-17 03:22:13 +0100 (Mon, 17 Jan 2005) | 2 lines
Always capitalize "Usage" and "Options" in help output for consistency.
latest release as of Fri Mar 25 12:02:04 CET 2005 is optik 1.5 (2004-12-07 02:04)
1.5.1 is yet to be released.
- check for ogg/mp3 interfaces
python-pyvorbis - A Python interface to the Ogg Vorbis library
1.3-1 Dec 2003 (upstream is dead, latest upstream)
include (part of) ogg123.py ? ogg123.py is GPL-ed, since pyvorbis-1.3 is.
ogg123.py --module=lad file.ogg works (somewhat (for me)). However, it plays
tracks on a much slower pitch...
Use python-id3 and python-pymad for mp3
- make it a mpd client. probably should use:
python-mpdclient - Python interface to MPD (source: py-libmpdclient)
(see also: pygmy, pympd, libmpd-dev, libmpd0)
run: ~% pydoc mpdclient2
libmpd-dev: "This package contains the development libraries, headers and documentation."
no it doesn't: no docs there...
try http://www.musicpd.org/ for docs
Peeksheet
---------
joostvb@nagy:~/arch/draai/draai% DIB_V=$(cat VERSION) DIB_P=draai DIB_TARDIR=. debian-install-build
joostvb@bruhat:~/git/draai% git pull ssh://git/~joostvb/git/draai.git
joostvb@bruhat:~/git/draai/debian% git push ssh://git/~joostvb/git/draai.git joostvb-arch@mdcc.cx--2005-draai,draai--mainline--0.1
draai-20160601/INSTALL 0000644 0001750 0001750 00000000617 12345413626 011017 0000000 0000000 Building and installing the draai distribution is a simple matter of running
./setup install
. If you prefer to install under your home directory, run
./setup --prefix=$HOME install
; that will install in ~/bin and ~/share/doc . If your needs are more
fancy, run
./setup --help
. The setup script has some support for DESTDIR too. The README file has
some installation tips too.
draai-20160601/VERSION 0000644 0001750 0001750 00000000011 12723471433 011022 0000000 0000000 20160601
draai-20160601/setup 0000755 0001750 0001750 00000022057 12723466123 011056 0000000 0000000 #!/bin/zsh
# This file is maintained at http://git.mdcc.cx/draai
# copyright:
COPYRIGHT='Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Joost van Baal-Ilić'
# This program is freely distributable per the following license:
LICENSE="
This file is part of draai.
Draai is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License, as published by the Free Software
Foundation on http://www.gnu.org/licenses/gpl.html. You should have received
a copy of the GNU General Public License along with draai.
There is NO warranty."
PACKAGE=draai
prefix=/usr/local
typeset -a docfiles dist_docfiles man1files dist_man1files scriptfiles \
dist_scriptfiles libexecfiles dist_libexecfiles zshfiles dist_zshfiles \
dist_files
manhtmlfiles=(man/draai.html man/dr_symlinks.html man/dr_unsort.html \
man/dr_watch.html)
docfiles=(COPYING ChangeLog NEWS README)
dist_docfiles=($docfiles $manhtmlfiles TODO INSTALL)
man1files=(man/draai.1 man/dr_permutate.1 man/dr_symlinks.1 \
man/dr_unsort.1 man/dr_watch.1)
dist_man1files=($man1files man/include.zmm.in man/*.azm)
scriptfiles=(script/draai script/dr_permutate \
script/dr_symlinks script/dr_unsort script/dr_watch)
dist_scriptfiles=($scriptfiles script/draai.in)
libexecfiles=(script/dr_file2tag script/dr_radio \
script/oggsymlinks script/draai123)
dist_libexecfiles=($libexecfiles)
zshfiles=(zsh/_draai)
dist_zshfiles=($zshfiles)
dist_helpfiles=(help/{command,option,shortoption}/*)
dist_files=($dist_docfiles $dist_man1files $dist_scriptfiles \
$dist_libexecfiles $dist_zshfiles $dist_helpfiles VERSION \
setup man/Makefile)
dist_subdirs=(man script zsh help/{command,option,shortoption})
prog=`basename $0`
usage()
{
cat <VERSION
fi
{ cat <$f
fi
done
distdir=$PACKAGE-$version
tgz=$distdir.tar.gz
}
buildhelp()
{
# create
# -V, --version show program's version number and exit
# -h, --help show this help message and exit
# -d, --debug be very verbose
# from
# % cat help/option/raw/description
# Print raw stuff, suitable for postprocessing (if combined with tail, peek or
# list).
# % cat help/option/raw/option
# r
# % cat help/option/time/argument
# TIME
cd help/option
for f in *
do
# FIXME probably could better use full printf
unset argument
test -f "$f/argument" && argument="$( echo -n $( cat $f/argument ) )"
# why does this not do what i think it would do?
# echo -n '-'
# anyway, this behaves the way i want
printf ' -'
echo -n "$( cat $f/option )"
test "$argument" && echo -n " $argument"
echo -n ', --'
echo -n "$f"
test "$argument" && echo -n "=$argument"
echo -n "\\\n"
while read l; do echo -n " $l\\\n"; done <$f/description
done
cd -
echo -n "\\\ncommands:\\\n\\\n"
cd help/command
for f in *
do
# yes, we want a literal \n in the output: sed should be able to grok it
echo -n " $f:\\\n"
while read l; do echo -n " $l\\\n"; done <$f
echo -n "\\\n"
done
cd -
}
build_cmds()
{
cd help/command
# create output like:
# draai:"play music (now or later)"
# init:"start a bunch of x terminals setting up some draai jobs"
for f in *
do
echo -n " $f:"'"'
while read l; do echo -n "$l "; done < $f
echo -n '"'"\\\n"
done
cd -
}
build_opts()
{
# merge with buildhelp()?
cd help/option
for f in *
do
# '--noshuffle[do not shuffle tracks]' \
# '--playlist[playlist file]:playlist:_draai_playlist' \
unset argument
test -f "$f/argument" && argument="$( echo -n $( cat $f/argument ) )"
printf " '--"
echo -n "$f"'['
# FIXME
# test "$argument" && echo -n "[=$argument]"
while read l; do echo -n "$l "; done <$f/description
# make sure literal \ ends up in zsh/_draai
# echo -n ']'"' \\\n" just \n
# echo -n ']'"' \\\\\\\n" just \\n
# yes, we need 11 \'s here...
echo -n ']'"' \\\\\\\\\\\n"
done
cd -
}
configure()
{
buildhelp >help.txt
echo generated help.txt
build_cmds >cmds.txt
echo generated cmds.txt
# '--noshuffle[do not shuffle tracks]' \
# '--playlist[playlist file]:playlist:_draai_playlist' \
build_opts >opts.txt
echo generated opts.txt
for f in script/draai.in man/include.zmm.in zsh/_draai.in
do
# FIXME test this
sed "s/@VERSION@/$version/; s|@top_srcdir@|`pwd`|;
s/@HELPTEXT@/`cat help.txt`/; s/@CMDSTEXT@/`cat cmds.txt`/;
s|@OPTSTEXT@|`cat opts.txt`|" $f >${f%.in}
echo generated ${f%.in} from $f
done
# rm help.txt cmds.txt
}
changelog()
{
# we want no unprotected emailadresses in the cl
git log --pretty --numstat --summary | sed 's/<[^>][^>]*>//g' | git2cl >ChangeLog
}
all()
{
( cd man && make )
}
OPTS=$(getopt -o h,l,p: --long help,license,prefix:,libexecdir: -- "$@")
eval set -- "$OPTS"
while true; do
case "$1" in
-h|--help)
usage
exit 0
;;
-p|--prefix)
prefix="$2"
shift 2
;;
--libexecdir)
libexecdir="$2"
shift 2
;;
-l|--license)
echo $COPYRIGHT
echo $LICENSE
exit 0
;;
--)
shift
break
;;
*)
usage
exit 1
;;
esac
done
shift $(($OPTIND - 1))
command=$1
shift
exec_prefix=$prefix
bindir=${exec_prefix}/bin
mandir=$prefix/man
man1dir=$mandir/man1
datarootdir=$prefix/share
datadir=$datarootdir
docdir=$datadir/doc/$PACKAGE
: ${libexecdir:=${exec_prefix}/libexec}
libexecpdir=$libexecdir/$PACKAGE
zshdir=$datadir/zsh/site-functions
case $command in
install)
for d in $DESTDIR$bindir $DESTDIR$man1dir $DESTDIR$docdir $DESTDIR$libexecpdir $DESTDIR$zshdir
do
test -d "$d" || { mkdir -p "$d" && echo created $d }
done
for p in $scriptfiles
do
if test -f $p
then
install -c "$p" "$DESTDIR$bindir/$(basename $p)" && \
echo installed $DESTDIR$bindir/$(basename $p)
fi
done
for p in $man1files
do
if test -f $p
then
install -c -m 644 "$p" "$DESTDIR$man1dir/$(basename $p)" && \
echo installed $DESTDIR$man1dir/$(basename $p)
fi
done
for p in $docfiles
do
if test -f $p
then
install -c -m 644 "$p" "$DESTDIR$docdir/$(basename $p)" && \
echo installed $DESTDIR$docdir/$(basename $p)
fi
done
for p in $libexecfiles
do
if test -f $p
then
install -c "$p" "$DESTDIR$libexecpdir/$(basename $p)" && \
echo installed $DESTDIR$libexecpdir/$(basename $p)
fi
done
for p in $zshfiles
do
if test -f $p
then
install -c -m 644 "$p" "$DESTDIR$zshdir/$(basename $p)" && \
echo installed $DESTDIR$zshdir/$(basename $p)
fi
done
;;
uninstall)
# FIXME
echo not yet implemented
;;
dist)
cp /usr/share/common-licenses/GPL COPYING
init
echo $version >VERSION
configure
changelog
all
if head NEWS | grep -q $version
then
:
else
echo error: NEWS does not mention release $version
exit 1
fi
rm -rf $distdir
mkdir $distdir
for dir in $dist_subdirs
do
mkdir -p $distdir/$dir
done
for file in $dist_files
do
dir=$(echo "$file" | sed -e 's,/[^/]*$,,')
cp -pR $file $distdir/$dir
done
tar chof - $distdir | gzip -c >$distdir.tar.gz
ls -l $distdir.tar.gz
;;
publish)
init
scp $tgz beskar.mdcc.cx:www/mdcc.cx/pub/draai/
;;
# sign: for i in $(DIST_ARCHIVES); do echo "gpg --armor --detach-sign $$i"; gpg --armor --detach-sign $$i; done
#
# publish: for i in $(DIST_ARCHIVES); do echo "scp $$i $$i.asc $(MY_RDIR)"; scp $$i $$i.asc $(MY_RDIR); done
# @echo now run: ssh beskar update-tar-symlinks uruk
# @echo '( or: ssh beskar.mdcc.cx ./bin/update-tar-symlinks uruk )'
configure)
# not for users, merely convenience for developers
init
configure
;;
changelog)
changelog
;;
*)
usage
exit 1
;;
esac