draai-20180521/0000755000175000017500000000000013300564702010037 500000000000000draai-20180521/man/0000755000175000017500000000000013300564702010612 500000000000000draai-20180521/man/draai.html0000644000175000017500000003413713300525337012511 00000000000000 draai

22 дец 2016    draai 20180520

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

draai

Play music: the files given as args and playlists passed via --playlist.

watch

Run watch(1) on "draai peek".

init

Start a bunch of X terminals setting up some draai jobs: tail, logtail, watch, syslog, ...

guestlist

Reschedule listed tracknumbers as upcoming tracks. Last arguments should be the positions of tracks to be put on the guestlist, not filenames.

unguestlist

Reschedule listed tracknumbers to end of playlist.

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'.

move

Move tracknumber to tracknumber given as last argument.

zap

Move tracknumber to position one and immediately start playing it. Typically used to deal with radiostations in playlist.

search

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'.

tail

Print information about track when it starts playing, similar to tail -f on a logfile.

logtail

Run tail(1) on system log file.

list

List current playlist.

peek

Show status of current song, and show upcoming $peek FIXME tracks.

play

Play music.

syslog

Send raw information from tail to syslog. You likely want to run "draai syslog" in the background.

skip

Skip this track, start playing the next one now.

osjittisstil

Run this if unwanted silence pops up during a playing session (for now, it runs draai --sloppy skip).

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.

fastforward

Seek forward in current track.

crescendo

Play louder.

diminuendo

Play softer.

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.

listall

List all files as served by music database.

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'.

quit

quit

OPTIONS

--debug (debug), -d

Be very verbose.

--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.

--raw (raw), -r

Print raw stuff, suitable for postprocessing (if combined with tail, peek or list).

--sloppy (sloppy), -s

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-20180521/man/dr_symlinks.html0000644000175000017500000001315713300525337013766 00000000000000 dr_symlinks

22 дец 2016    dr_symlinks 20180520

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-20180521/man/dr_unsort.html0000644000175000017500000001375313300525337013451 00000000000000 dr_unsort

22 дец 2016    dr_unsort 20180520

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-20180521/man/dr_watch.html0000644000175000017500000000723613300525337013224 00000000000000 dr_watch

22 дец 2016    dr_watch 20180520

NAME

dr_watch — execute a program periodically, showing output fullscreen

SYNOPSIS

dr_watch command

DESCRIPTION

dr_watch behaves like watch(1): it runs command repeatedly, displaying its output. By defaults, it executes "sleep 2" before it refreshes the program's output: it behaves as watch. However, unlike watch, it supports refreshing the screen when some external command, passed in the DR_SLEEP_CMD environment variable, exits. If DR_NICE_WATCH is set to "false", it tests wether watch(1) is available on the system and runs it if found.

ENVIRONMENT

dr_watch honors integer DR_SLEEP: number of seconds to wait between execution; DR_SLEEP_CMD: e.g. 'sleep 5' or 'mpc idle'; and DR_NICE_WATCH: set this to "false" if you prefer traditional watch over our reimplementation.

COPYRIGHT AND LICENSE

This manpage is copyright 2009, 2011, 2012, 2018 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-20180521/man/draai.10000644000175000017500000001607313300525337011704 00000000000000.\" Copyright (c) 2016 Joost van Baal-Ilić .TH "draai" 1 "22 дец 2016" "draai 20180520" "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-20180521/man/dr_permutate.10000644000175000017500000001225313300525337013313 00000000000000.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" 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 >0, 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 .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" .\" 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 "2016-12-22" "draai 20180520" "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-20180521/man/dr_symlinks.10000644000175000017500000000753213300525337013162 00000000000000.\" Copyright (c) 2016 Joost van Baal-Ilić .TH "dr_symlinks" 1 "22 дец 2016" "dr_symlinks 20180520" "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-20180521/man/dr_unsort.10000644000175000017500000001035013300525337012633 00000000000000.\" Copyright (c) 2016 Joost van Baal-Ilić .TH "dr_unsort" 1 "22 дец 2016" "dr_unsort 20180520" "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-20180521/man/dr_watch.10000644000175000017500000000356413300525337012420 00000000000000.\" Copyright (c) 2016 Joost van Baal-Ilić .TH "dr_watch" 1 "22 дец 2016" "dr_watch 20180520" "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 behaves like watch(1): it runs command repeatedly, displaying its output\&. By defaults, it executes "sleep 2" before it refreshes the program\&'s output: it behaves as watch\&. However, unlike watch, it supports refreshing the screen when some external command, passed in the DR_SLEEP_CMD environment variable, exits\&. If DR_NICE_WATCH is set to "false", it tests wether watch(1) is available on the system and runs it if found\&. .SH ENVIRONMENT dr_watch honors integer DR_SLEEP: number of seconds to wait between execution; DR_SLEEP_CMD: e\&.g\&. \&'sleep 5\&' or \&'mpc idle\&'; and DR_NICE_WATCH: set this to "false" if you prefer traditional watch over our reimplementation\&. .SH COPYRIGHT AND LICENSE This manpage is copyright 2009, 2011, 2012, 2018 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-20180521/man/include.zmm.in0000644000175000017500000001000213026656264013312 00000000000000\: 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-20180521/man/draai.azm0000644000175000017500000001267613026656264012351 00000000000000\: 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-20180521/man/dr_symlinks.azm0000644000175000017500000000707613026656264013625 00000000000000\: 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-20180521/man/dr_unsort.azm0000644000175000017500000001001313026656264013267 00000000000000\: 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-20180521/man/dr_watch.azm0000644000175000017500000000342713275057050013050 00000000000000\: 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 behaves like watch(1): it runs command repeatedly, displaying its output. By defaults, it executes "sleep 2" before it refreshes the program's output: it behaves as watch. However, unlike watch, it supports refreshing the screen when some external command, passed in the DR_SLEEP_CMD environment variable, exits. If DR_NICE_WATCH is set to "false", it tests wether watch(1) is available on the system and runs it if found. \sec{environment}{ENVIRONMENT} dr_watch honors integer DR_SLEEP: number of seconds to wait between execution; DR_SLEEP_CMD: e.g. 'sleep 5' or 'mpc idle'; and DR_NICE_WATCH: set this to "false" if you prefer traditional watch over our reimplementation. \sec{copyright and license}{COPYRIGHT AND LICENSE} This manpage is copyright 2009, 2011, 2012, 2018 \"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-20180521/man/Makefile0000644000175000017500000000215413026656264012206 00000000000000# 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-20180521/script/0000755000175000017500000000000013300564701011342 500000000000000draai-20180521/script/draai0000755000175000017500000004704013300564701012275 00000000000000#! /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='20180521' 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} sleepcmd=${DR_SLEEP_CMD:-"mpc idle"} # 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} ncmpcpp=${DR_INIT_NCMPCPP:-false} 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_SLEEP_CMD="$sleepcmd" 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="$sleepcmd" x-terminal-emulator -e dr_watch mpc & x-terminal-emulator -e draai watch & $ncmpcpp && x-terminal-emulator -e ncmpcpp & 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-20180521/script/dr_permutate0000755000175000017500000000413213026656264013716 00000000000000#! /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-20180521/script/dr_symlinks0000755000175000017500000000337113026656264013565 00000000000000#! /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-20180521/script/dr_unsort0000755000175000017500000000437613026656264013254 00000000000000#! /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-20180521/script/dr_watch0000755000175000017500000000214513275054700013011 00000000000000#! /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"} sleepcmd=${DR_SLEEP_CMD:-"sleep $sleep"} 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 "") term_el=$(tput el 2>/dev/null || echo -n "") term_ed=$(tput ed 2>/dev/null || echo -n "") 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-20180521/script/draai.in0000755000175000017500000004025313275055206012707 00000000000000#! /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} sleepcmd=${DR_SLEEP_CMD:-"mpc idle"} # 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} ncmpcpp=${DR_INIT_NCMPCPP:-false} 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_SLEEP_CMD="$sleepcmd" 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="$sleepcmd" x-terminal-emulator -e dr_watch mpc & x-terminal-emulator -e draai watch & $ncmpcpp && x-terminal-emulator -e ncmpcpp & 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-20180521/script/dr_file2tag0000755000175000017500000000130413026656264013403 00000000000000#!/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-20180521/script/dr_radio0000755000175000017500000000020113026656264012777 00000000000000#!/bin/sh # put radio stations in current playlist as next few songs draai guestlist $( draai list | grep '()' | cut -d\) -f1 ) draai-20180521/script/oggsymlinks0000755000175000017500000001047713026656264013602 00000000000000#! /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-20180521/script/draai1230000755000175000017500000000236413026656264012536 00000000000000#! /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-20180521/zsh/0000755000175000017500000000000013300564701010642 500000000000000draai-20180521/zsh/_draai0000644000175000017500000001550313300564701011730 00000000000000#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-20180521/help/0000755000175000017500000000000013300564701010766 500000000000000draai-20180521/help/command/0000755000175000017500000000000013300564702012405 500000000000000draai-20180521/help/command/add0000644000175000017500000000024313026656264013011 00000000000000Add 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-20180521/help/command/crescendo0000644000175000017500000000001513026656264014223 00000000000000Play louder. draai-20180521/help/command/delete0000644000175000017500000000026313026656264013525 00000000000000Delete 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-20180521/help/command/diminuendo0000644000175000017500000000001513026656264014411 00000000000000Play softer. draai-20180521/help/command/draai0000644000175000017500000000011113026656264013333 00000000000000Play music: the files given as args and playlists passed via --playlist. draai-20180521/help/command/fastforward0000644000175000017500000000003713026656264014604 00000000000000Seek forward in current track. draai-20180521/help/command/guestlist0000644000175000017500000000021713026656264014305 00000000000000Reschedule listed tracknumbers as upcoming tracks. Last arguments should be the positions of tracks to be put on the guestlist, not filenames. draai-20180521/help/command/harder0000644000175000017500000000001513026656264013523 00000000000000Play louder. draai-20180521/help/command/init0000644000175000017500000000013313026656264013222 00000000000000Start a bunch of X terminals setting up some draai jobs: tail, logtail, watch, syslog, ... draai-20180521/help/command/insert0000644000175000017500000000026013026656264013564 00000000000000Add 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-20180521/help/command/list0000644000175000017500000000002713026656264013234 00000000000000List current playlist. draai-20180521/help/command/listall0000644000175000017500000000005413026656264013725 00000000000000List all files as served by music database. draai-20180521/help/command/logtail0000644000175000017500000000004013026656264013707 00000000000000Run tail(1) on system log file. draai-20180521/help/command/move0000644000175000017500000000007013026656264013225 00000000000000Move tracknumber to tracknumber given as last argument. draai-20180521/help/command/osjittisstil0000644000175000017500000000014613026656264015027 00000000000000Run this if unwanted silence pops up during a playing session (for now, it runs draai --sloppy skip). draai-20180521/help/command/peek0000644000175000017500000000010313026656264013200 00000000000000Show status of current song, and show upcoming $peek FIXME tracks. draai-20180521/help/command/play0000644000175000017500000000001413026656264013222 00000000000000Play music. draai-20180521/help/command/quit0000644000175000017500000000000513026656264013237 00000000000000quit draai-20180521/help/command/search0000644000175000017500000000030713026656264013527 00000000000000Search 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-20180521/help/command/shuffle0000644000175000017500000000063213026656264013717 00000000000000Shuffle 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-20180521/help/command/skip0000644000175000017500000000006113026656264013225 00000000000000Skip this track, start playing the next one now. draai-20180521/help/command/syslog0000644000175000017500000000014413026656264013601 00000000000000Send raw information from tail to syslog. You likely want to run "draai syslog" in the background. draai-20180521/help/command/tail0000644000175000017500000000012713026656264013213 00000000000000Print information about track when it starts playing, similar to tail -f on a logfile. draai-20180521/help/command/unguestlist0000644000175000017500000000006313026656264014647 00000000000000Reschedule listed tracknumbers to end of playlist. draai-20180521/help/command/watch0000644000175000017500000000003613026656264013367 00000000000000Run watch(1) on "draai peek". draai-20180521/help/command/zachter0000644000175000017500000000001513026656264013716 00000000000000Play softer. draai-20180521/help/command/zap0000644000175000017500000000017313026656264013055 00000000000000Move tracknumber to position one and immediately start playing it. Typically used to deal with radiostations in playlist. draai-20180521/help/option/0000755000175000017500000000000013300564702012277 500000000000000draai-20180521/help/option/debug/0000755000175000017500000000000013026656264013377 500000000000000draai-20180521/help/option/debug/description0000644000175000017500000000002113026656264015556 00000000000000Be very verbose. draai-20180521/help/option/debug/option0000644000175000017500000000000213026656264014542 00000000000000d draai-20180521/help/option/noshuffle/0000755000175000017500000000000013026656264014302 500000000000000draai-20180521/help/option/noshuffle/description0000644000175000017500000000021013026656264016461 00000000000000Do not shuffle tracks and leave random mode untouched (default is: do shuffle and disable random mode). See also the script dr_unsort. draai-20180521/help/option/noshuffle/option0000644000175000017500000000000213026656264015445 00000000000000S draai-20180521/help/option/playlist/0000755000175000017500000000000013026656264014152 500000000000000draai-20180521/help/option/playlist/argument0000644000175000017500000000001113026656264015627 00000000000000PLAYLIST draai-20180521/help/option/playlist/description0000644000175000017500000000013013026656264016332 00000000000000Playlist file; option can be supplied more than once. To be used with command "draai". draai-20180521/help/option/playlist/option0000644000175000017500000000000213026656264015315 00000000000000p draai-20180521/help/option/raw/0000755000175000017500000000000013026656264013102 500000000000000draai-20180521/help/option/raw/description0000644000175000017500000000012413026656264015265 00000000000000Print raw stuff, suitable for postprocessing (if combined with tail, peek or list). draai-20180521/help/option/raw/option0000644000175000017500000000000213026656264014245 00000000000000r draai-20180521/help/option/sloppy/0000755000175000017500000000000013026656264013637 500000000000000draai-20180521/help/option/sloppy/description0000644000175000017500000000015013026656264016021 00000000000000Do not try hard to make everything sound smooth. If combined with skip: risk a squeak on old hardware. draai-20180521/help/option/sloppy/option0000644000175000017500000000000213026656264015002 00000000000000s draai-20180521/help/option/time/0000755000175000017500000000000013026656264013247 500000000000000draai-20180521/help/option/time/argument0000644000175000017500000000000513026656264014727 00000000000000TIME draai-20180521/help/option/time/description0000644000175000017500000000011113026656264015426 00000000000000If combined with commands quit or draai: time at which to quit or start. draai-20180521/help/option/time/option0000644000175000017500000000000213026656264014412 00000000000000t draai-20180521/help/shortoption/0000755000175000017500000000000013300564702013357 500000000000000draai-20180521/help/shortoption/help0000644000175000017500000000000213026656264014154 00000000000000h draai-20180521/help/shortoption/license0000644000175000017500000000000213026656264014646 00000000000000l draai-20180521/help/shortoption/version0000644000175000017500000000000213026656264014711 00000000000000V draai-20180521/COPYING0000644000175000017500000010451313300564701011015 00000000000000 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-20180521/ChangeLog0000644000175000017500000025430113300564701011535 000000000000002018-05-21 Joost van Baal-Ilić * NEWS: named this release: Miramar, as in ISO 3166-2:ES ES-IB, between Deià and Pla de na Cero 2018-05-21 Joost van Baal-Ilić * NEWS, TODO: preparing release 2018-05-10 Joost van Baal-Ilić * NEWS, TODO, man/dr_watch.azm: update TODO, finish dr_watch manpage 2018-05-10 Joost van Baal-Ilić * TODO, man/dr_watch.azm: update TODO 2018-05-10 Joost van Baal-Ilić * NEWS, script/dr_watch, script/draai.in: Behaviour of script dr_watch has changed: default sleep command is no longer "mpc idle" but "sleep 2", like watch(1). However, when calling it as "draai watch", behaviour is unchanged: draai(1) now sets DR_SLEEP_CMD to "mpc idle" when calling dr_watch. 2018-05-08 Joost van Baal-Ilić * NEWS, debian/changelog, debian/control: lots of stuff 2018-05-08 Joost van Baal-Ilić * TODO: cosmetics 2018-05-08 Joost van Baal-Ilić * man/dr_watch.azm: dr_watch; document honored environment vars 2018-05-08 Joost van Baal-Ilić * NEWS, TODO, man/dr_watch.azm: working on dr_watch, WiP 2017-04-21 Joost van Baal-Ilić * script/draai.in: in "draai init", optionally start ncmpcpp (an ncurses Music Player Daemon (MPD) client); introduce DR_INIT_NCMPCPP environment variable 2016-06-02 Joost van Baal-Ilić * debian/README.Debian, debian/README.source, debian/changelog: ship it 2016-06-02 Joost van Baal-Ilić * debian/changelog: new upstream 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 => time/description}, help/{shortoption/time => option/time/option}: option --time now stored in new help/ format 2013-01-28 Joost van Baal-Илић * help/option/{sloppy => sloppy/description}, help/{shortoption/sloppy => option/sloppy/option}: option --sloppy now stored in new help/ format 2013-01-28 Joost van Baal-Илић * help/option/{raw => raw/description}, help/{shortoption/raw => option/raw/option}: option --raw now stored in new help/ format 2013-01-28 Joost van Baal-Илић * help/option/{playlist => playlist/description}, help/{shortoption/playlist => option/playlist/option}: option --playlist now stored in new help/ format 2013-01-28 Joost van Baal-Илић * help/option/{noshuffle => noshuffle/description}, help/{shortoption/noshuffle => option/noshuffle/option}: option --noshuffle now stored in new help/ format 2013-01-28 Joost van Baal-Илић * help/option/{debug => debug/description}, help/{shortoption/debug => option/debug/option}: 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 => _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 => 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/{mp3symlinks => dr_symlinks}: 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/{permutate => dr_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, {script => contrib}/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 => contrib/MANIFEST.in, bootstrap => contrib/bootstrap, setup.py.in => contrib/setup.py.in, script/draai.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 => 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.in => draai-nonmpc.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 => 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, {script => modules}/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-20180521/NEWS0000644000175000017500000003244513300564373010472 00000000000000draai NEWS - user visible changes (and some other changes also.) Refer to ChangeLog for detailed per-file info. draai version 20180521 - The Miramar Release - script/draai.in: improve the "init" command: + run ncmpcpp in case DR_INIT_NCMPCPP is set to "true". ncmpcpp is an ncurses-based client for MPD, see http://unkart.ovh.org/ncmpcpp/ . - script/dr_watch, script/draai.in: Behaviour of script dr_watch has changed: default sleep command is no longer "mpc idle" but "sleep 2", like watch(1). However, when calling it as "draai watch", behaviour is unchanged: draai(1) now sets DR_SLEEP_CMD to "mpc idle" when calling dr_watch. 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 DR_NICE_WATCH is explicitly set to "false". - 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-20180521/README0000644000175000017500000000631613026656264010657 00000000000000 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-20180521/TODO0000644000175000017500000004621313300526230010447 00000000000000fix this TODO, it's ridiculously long release names: The sluis in maas, ceramique eettent Цер Cer mountain Petkovica monastery Čokešina monastery + village Novo Celo village Lešnica village + 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 < 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-20180521/INSTALL0000644000175000017500000000061713026656264011026 00000000000000Building 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-20180521/VERSION0000644000175000017500000000001113300564701011016 0000000000000020180521 draai-20180521/setup0000755000175000017500000002205713026656264011065 00000000000000#!/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