1.\" Copyright (c) 2010, 2011 Ryan Flannery <ryan.flannery@gmail.com> 2.\" 3.\" Permission to use, copy, modify, and distribute this software for any 4.\" purpose with or without fee is hereby granted, provided that the above 5.\" copyright notice and this permission notice appear in all copies. 6.\" 7.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 8.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 9.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 10.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 11.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 12.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 13.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14.\" 15.Dd $Mdocdate$ 16.Dt VITUNES 1 17.Os 18.Sh NAME 19.Nm vitunes 20.Nd A curses media indexer and player for vi-users 21.Sh SYNOPSIS 22.Nm vitunes 23.Op Fl c Ar command 24.Op Fl d Ar database-file 25.Op Fl e Ar command Op argument ... 26.Op Fl f Ar config-file 27.Op Fl m Ar media-backend 28.Op Fl p Ar playlist-dir 29.Sh DESCRIPTION 30.Nm 31is a curses-based music player and playlist manager for *nix whose goals are 32a minimalistic appearance, strong vi-like bindings, and quick playlist 33creation/management. 34.Pp 35It is not intended to be a feature-rich media player, but rather a quick, 36vi-like media indexer and playlist manager that also happens to be able to 37play the media it indexes (via 38.Xr mplayer 1 ). 39.Pp 40.Nm 41accepts the following command line options: 42.Bl -tag -width Fl 43.It Fl c Ar command 44Execute the specified command in the currently running 45.Nm 46instance, and exit. This is useful for controlling 47.Nm 48from other windows or scripts. 49.Pp 50The commands that may be specified are both those named in the 51.Sx RUN-TIME COMMANDS 52section below and keybindings specified by their keybinding action name, 53listed in the 54.Sx KEYBINDING ACTIONS 55section below. 56.Pp 57To execute multiple commands, use this option repeatedly as 58.Dl $ vitunes -c command1 -c command2 ... 59.Pp 60For example, to have the currently running 61.Nm 62load and play a playlist, one could issue: 63.Dl $ vitunes -c So playlist SomePlaylist Sc -c media_play 64.Pp 65Note that for this to work, when 66.Nm 67starts up it attempts to create a socket at 68.Pa /tmp/.vitunes 69that are used by this option to communicate with the original instance. 70If this socket cannot be created for any reason, this option will not work. 71.It Fl d Ar database-file 72Specifies the database containing all known media files and their meta 73information that 74.Nm 75should use. 76If you're using this option in conjunction with an e-command, this option 77.Sy must 78be specified before the e-command. 79.Pp 80The default location is 81.Pa ~/.vitunes/vitunes.db . 82.It Fl e Ar command Cm options 83Execute one of the available e-commands to manipulate the database that 84.Nm 85uses. 86See the section below titled 87.Sx E-COMMANDS 88for more information. 89.It Fl f Ar config-file 90Specifies the path of the configuration file 91.Nm 92should load. 93See the section below titled 94.Sx CONFIGURATION FILE 95for information on what the configuration may contain. 96.Pp 97The default location is 98.Pa ~/.vitunes/vitunes.conf . 99.It Fl m Ar media-backend 100Specify the media backend to use for playback. The current list of supported 101media backends are: 102.Bl -tag -width "mplayer" 103.It Cm mplayer 104Uses a 105.Xr fork 2 106/ 107.Xr execvp 3 'd 108instance of 109.Xr mplayer 1 110for all playback. Note that the mplayer binary 111.Sy must 112be in your 113.Ev PATH 114environment variable. 115.El 116.Pp 117Currently only 118.Cm mplayer 119is supported. 120.It Fl p Ar playlist-dir 121Specifies the directory containing all of the playlists 122.Nm 123will load and use. 124Any new playlists created while running 125.Nm 126will be created here. 127.Pp 128The default location is 129.Pa ~/.vitunes/playlists/ . 130.El 131.Ss Getting Started 132.Nm 133works by maintaining a database of tagged media files. 134The database 135.Sy must 136be created and populated before 137.Nm 138can be run normally. 139.Pp 140After that, files can be added, modified, or removed from the database, and 141on the next invocation, 142.Nm 143will see the changes (additionally, the database can be re-loaded at runtime). 144.Bl -bullet 145.It 146All database management is done using "e-commands", which are always of the 147form: 148.Dl $ vitunes -e command-name [ parameters ... ] 149.It 150Once the database has been created, 151.Nm 152can be run normally with the following: 153.Dl $ vitunes 154.It 155All playlist management is done while 156.Nm 157is running normally. 158.El 159.Pp 160See the 161.Sx E-COMMANDS 162section below for more information on database management. 163To get started quickly, simply do the following: 164.Bl -enum 165.It 166Create initial empty database with 167.Dl $ vitunes -e init 168.It 169Add files to your database with 170.Dl $ vitunes -e add ~/music/ /path/to/more/music/ 171.It 172Then just start normally with 173.Dl $ vitunes 174.El 175.Ss The Display 176When run normally, the default display will show the following 4 windows: 177.Bl -tag -width Fl 178.It player 179This window occupies the top row of the display and contains information about 180the currently playing song (if any) and the current play-mode. 181.It command/status 182This window occupies the bottom row of the display. 183It behaves very similar to the command/status window in 184.Xr vi 1 . 185.It library 186This window occupies the left-side of the screen and shows each playlist, in 187addition to the library and filter-buffer. 188The filter buffer is where the results of every 189.Pf : Ic filter Ar ... 190command are temporarily stored. 191.br 192Playlists with unsaved changes appear bold and have their name preceded with 193a '+'. 194.It playlist 195This window is to the right of the library window and occupies most of the 196display. 197It shows the contents of whichever playlist has currently been selected in 198the library window. 199.El 200.Ss Useful Keybindings 201The following is only a partial listing keybindings, but are the most 202frequently used. 203.Bl -tag -width Ds 204.It Cm Enter 205Load the selected playlist for viewing or begin playback of the selected file. 206.It Cm Tab 207Toggle focus between the library and playlist windows. 208.It Cm z 209Pause playback. 210.It Cm s 211Stop playback. 212.It Cm f/b 213Seek forwards/backwards 10 seconds. 214.It Cm F/B 215Seek forwards/backwards 1 minute. 216.It Cm m 217In the playlist window, show/hide information for the current file. 218.El 219.Pp 220See the 221.Sx KEYBINDING ACTIONS 222section for a complete listing. 223.Sh E-COMMANDS 224Below is a brief summary of each e-command available in 225.Nm . 226More detailed usage information and examples for each can be obtained by 227issuing: 228.Dl $ vitunes -e help command-name 229.Bl -tag -width Ds 230.It Nm Fl e Cm init 231Create the necessary database file and playlist directory used by 232.Nm . 233This command only needs to be run once, when 234.Nm 235is first run. 236If either of these already exist, they remain unchanged. 237.It Nm Fl e Cm add Ar path1 Op Ar path2 ... 238This command takes any number of files/directories as parameters. 239Each file is scanned for meta-information and if found, added to the 240database. 241Directories are search recursively. 242.Pp 243.Xr TagLib 3 244is used for all meta-extraction, which includes the following fields: 245album, artist, comment, play-length, title, track number, and year. 246.It Nm Fl e Cm addurl Ar url 247This command is used to add non-files (things like URL's for Internet radio 248stations) to the database, where the meta-information cannot be determined 249automatically. 250It can also be used to update the meta-info of an existing URL in the 251database. 252.Pp 253After executing, you are prompted to enter all of your own information. 254.It Nm Fl e Cm check Oo Fl rsd Oc Ar file1 Op Ar file2 ... 255Scan the files specified and display their meta-information as present in 256the files themselves or in the 257.Nm 258database. 259This is useful for checking if a file is in the database. 260.It Nm Fl e Cm flush Op Fl t Ar time-format 261Dump the contents of the database to stdout in an easy-to-parse format, 262optionally with the specified 263.Xr strftime 3 264compatible format for times. 265.It Nm Fl e Cm help Ar command 266Display detailed usage information and examples for the e-command specified 267by 268.Ar command . 269.It Nm Fl e Cm rm Oo Fl f Oc Ar file/url 270Remove a file/URL from the database. 271.It Nm Fl e Cm rmfile Oo Fl f Oc Ar file/url 272Alias for the "rm" e-command. 273.It Nm Fl e Cm tag Oo options Oc Ar file1 Op Ar file2 ... 274Add/modify the meta-information tags of raw files. 275There are many options to this e-command. 276See the help page for more information: 277.Dl $ vitunes -e help tag 278.It Nm Fl e Cm update Op Fl s 279Load the existing database and check each file to see if its meta-information 280has been updated, or if the file has been removed. 281The database is updated accordingly. 282.El 283.Sh RUN-TIME COMMANDS 284Below is a listing of all run-time commands supported by 285.Nm . 286.Pp 287All commands are entered by typing ':' followed by the command name and any 288parameters (just like in 289.Xr vi 1 ). 290.Pp 291Note that abbreviations are also supported. 292That is, entering any non-ambiguous abbreviation of a command name will also 293execute the command. 294.Bl -tag -width Ds 295.It Pf : Ic bind Ar action Ar keycode 296This will bind the action specified by 297.Ar action 298to the keycode specified by 299.Ar keycode . 300After this command is issued, entering the inputting the specified 301.Ar keycode 302will result in firing the specified 303.Ar action . 304.Pp 305See the section 306.Sx SPECIFYING KEYCODES 307for details on how to specify 308.Ar keycode , 309and section 310.Sx KEYBINDING ACTIONS 311for a listing of all actions 312.Nm 313supports. 314.It Pf : Ic color Cm item Ns = Ns Ar fg Ns , Ns Ar bg 315Change the color of the given 316.Cm item 317to 318.Ar fg 319colored text on a 320.Ar bg 321colored background. 322.Pp 323Available values for 324.Cm item 325are: 326.Pp 327.Bl -tag -width "playing-playlist" -compact -offset indent 328.It Em Item Name 329.Em Description 330.It Cm bars 331The bars dividing the various windows. 332.It Cm player 333The player window. 334.It Cm status 335The status window. 336.It Cm library 337The library window. 338.It Cm playlist 339The playlist window. 340.It Cm errors 341Error messages in the status window. 342.It Cm messages 343Informational messages in the status window. 344.It Cm tildas-library 345The tildas in empty rows of the library window. 346.It Cm tildas-playlist 347The tildas in empty rows of the playlist window. 348.It Cm playing-library 349Currently playing playlist in the library window. 350.It Cm playing-playlist 351Currently playing file in the playlist window. 352.It Cm current-inactive 353Current row in the inactive window. 354.It Cm artist 355The artist column in the playlist window. 356.It Cm album 357The album column in the playlist window. 358.It Cm title 359The title column in the playlist window. 360.It Cm track 361The track column in the playlist window. 362.It Cm year 363The year column in the playlist window. 364.It Cm genre 365The genre column in the playlist window. 366.It Cm comment 367The comment column in the playlist window. 368.It Cm length 369The play-length column in the playlist window. 370.El 371.Pp 372Available colors for 373.Ar fg 374and 375.Ar bg 376are: white, black, red, green, yellow, blue, magenta, cyan, and default. 377The color default is whatever the terminal uses as the default foreground 378or background color. 379.It Pf : Ic display Pq Cm reset | Cm show | Ar display-description 380The display command is used to change which columns are displayed in the 381playlist window, their order, their width, and their alignment. 382.Pp 383The format of 384.Ar display-description 385is a comma separated list of: 386.Qq Oo Ar \&- Oc Ns Ar field . Ns Ar size . 387.Pp 388Valid values for 389.Ar field 390are: album, artist, comment, genre, length, title, track, and year. 391The 392.Ar size 393field indicates the number of columns. 394If 395.Ar field 396is preceded with a 397.Ar \&- 398the field will be right-aligned. 399As an example, the command: 400.Pp 401.Pf : Ic display Ar title.10,artist.20,-track.4 402.Pp 403would only show the title, artist, and track fields, in that order, where the 404title field is 10 columns wide, the artist field is 20 columns wide, and the 405track field is 4 columns wide and right-aligned. 406.Pp 407The default display can be restored with: 408.Pp 409.Pf : Ic display Cm reset 410.Pp 411The current display description can be seen with: 412.Pp 413.Pf : Ic display Cm show 414.Pp 415.It Pf : Ic filter Ns Oo ! Oc Ar token Op Ar token2 ... 416The filter command is used to filter out all songs from the currently viewed 417playlist that do not match (or do match) the provided list of tokens. 418A song matches the list of tokens if each token appears somewhere in the 419song's meta-information or filename. 420.Pp 421If 422.Qq Pf : Ic filter 423is used, all records not matching the list of tokens are removed from the 424current playlist. 425If 426.Qq Pf : Ic filter! 427is used, all records that do match the list of tokens are removed from the 428current playlist. 429.Pp 430The list of tokens is simply any list of strings, each possibly preceded with 431an exclamation point. 432If a token is preceded with an exclamation point, it will only match a song 433if it does not appear anywhere in the song's meta-information or filename. 434.Pp 435For example, the following: 436.Pp 437.Pf : Ic filter Ar nine nails 438.Pp 439would match all songs that contained both "nine" and "nails", and remove all 440other songs from the current playlist. 441However, 442.Pp 443.Pf : Ic filter! Ar nine nails 444.Pp 445would remove all songs that DO contain both "nine" and "nails." 446.Pp 447The query: 448.Pp 449.Pf : Ic filter Ar nine !nails 450.Pp 451would match all songs that contain "nine" and NOT "nails". 452All other songs would be removed from the current playlist. 453.It Pf : Ic mode Pq Cm linear | Cm loop | Cm random 454Set the current playmode to one of the three available options. 455The options are: 456.Bl -tag -width Fl 457.It Cm linear 458Songs in a playlist are played in the order they appear until the end is 459reached. 460.It Cm loop 461Like linear, but when the end of the playlist is reached, playback continues 462at the beginning of the playlist. 463.It Cm random 464Songs are chosen at random from the playlist. 465.El 466.It Pf : Ic new Op Ar name 467Create a new, empty playlist. If 468.Ar name 469is provided, the new playlist will be named accordingly unless a playlist 470with that name already exists. 471If no name is provided, the default is "untitled". 472.It Pf : Ic playlist Ar name 473Load the playlist named by 474.Ar name 475in the playlist window. 476.It Pf : Ic q Ns Oo ! Oc 477Quit 478.Nm . 479If there are playlists with unsaved changes, then you are notified of this and 480prevented from quitting. 481You can forcefully quit by using 482.Pf : Ic q Ns ! , 483and any unsaved changes to any playlists will be lost. 484.Pp 485Note that playlists with unsaved changes appear bold in the library window. 486.It Pf : Ic reload Pq Cm db | Cm conf 487The reload command is used to reload either the database or configuration 488file while 489.Nm 490is running. 491Handy if you update your database using an e-command while also running 492.Nm . 493.It Pf : Ic set Cm property Ns = Ns Ar value 494The set command is used to set various properties within vitunes. 495For properties that accept a value of 496.Ar bool , 497valid values are 'true' and 'false'. 498.Pp 499The following properties are available: 500.Bl -tag -width Fl 501.It Cm lhide Ns = Ns Ar bool 502If set to true, the library window will be hidden (disappear) when it does 503not have focus. 504.It Cm lwidth Ns = Ns Ar number 505Set the width of the library window to 506.Ar number 507columns wide. 508Note that the number provided must be greater than 0 and less than the width 509of the terminal. 510.It Cm match-fname Ns = Ns Ar bool 511When searching or filtering a playlist, normally the filenames are also 512included in the matching algorithm. 513This can sometimes be undesirable, particularly if, for example, all of your 514music/media reside in a directory named "media" and you're trying to search 515for a file with the word "media" in the title. 516.Pp 517To disable this behavior, set match-fnames to false. 518.It Cm save-sorts Ns = Ns Ar bool 519Most operations that change a playlist (such as paste/cut) set 520the 'needs-saving' flag on the playlist, such that you are prompted on 521exiting vitunes that there is a playlist with unsaved changes. 522By default, sorting a playlist does not do this. 523.Pp 524To change this behavior, and be prompted to save sorts on exit, set this 525option to true. 526.El 527.It Pf : Ic sort Ar sort-description 528Sort the currently viewing playlist using the provided 529.Ar sort-description , 530which is a comma separated list of: 531.Qq Oo Ar \&- Oc Ns Ar field , 532specifying which fields to sort by and if they should be sorted 533ascending or descending. 534.Pp 535Valid values for 536.Ar field 537are: album, artist, comment, genre, length, title, track, and year. 538Each field is sorted ascending by default, unless the field is preceeded 539with the dash 540.Ar \&- , 541in which case that field is sorted descending. 542.Pp 543As an example, the following command: 544.Pp 545.Ic :sort artist,-album,title 546.Pp 547would sort all records in the current playlist by artist (ascending) first, 548then album-name (descending), then title (ascending). 549.Pp 550Note that while most operations on playlists set the "needs-saving" flag 551(so you are prompted when quiting 552.Nm 553that the playlist has unsaved changes), sorting a playlist does not do this. 554This is intentional. 555If you wish this behavior to be changed, see the "save-sorts" option for the 556.Ic set 557command. 558.It Pf : Ic toggle Ar register Ar command-list 559This command will associate a list of commands specified by 560.Ar command-list 561to register 562.Ar register . 563Once set, the list of commands can be quickly toggled through using the 564.Ic toggle_forward 565and 566.Ic toggle_backward 567keybindings (which default to 568.Ic t 569and 570.Ic T , 571respectively). 572.Pp 573Toggle-lists can be useful to quickly alternate through, for example, various 574sorting or display schemes that the user may prefer. 575.Pp 576.Ar register 577is any single lower-case letter (a - z) or uppercase letter (A - Z). 578.Ar command-list 579is any list of valid commands listed here, each separated by a backslash 580character '/'. 581.Pp 582As an example, the following would allow one to quickly toggle through various 583sorting schemes: 584.Pp 585.Ic toggle s sort artist,-year,track / sort artist,album,track / sort -year 586.Pp 587Once issued, the three individual sorts specified above can be toggled using 588the 589.Ar s 590register. With the default keybindings this would be done using either 591.Ar ts 592(to toggle forward through the list) or 593.Ar Ts 594(to toggle backward through the list). 595.It Pf : Ic unbind Pq Cm * | Cm action Ar action | Cm key Ar keycode 596This command is used to remove existing keybindings. 597It has three forms. 598The first is simply: 599.Pp 600.Ic unbind Ar * 601.Pp 602which will remove all existing keybindings. 603This is handy in a configuration file where you may want to define all custom 604keybindings. 605Issuing this at runtime will leave you with an instance of 606.Nm 607that will not respond to any keybdings! 608.Pp 609The second form is used to unbind actions: 610.Pp 611.Ic unbind action Ar action 612.Pp 613This will remove any keybindings for the action specified by 614.Ar action . 615.Pp 616The third form is used to unbind keys: 617.Pp 618.Ic unbind key Ar keycode 619.Pp 620This will remove any action currently bound to the key specified by 621.Ar keycode . 622.Pp 623See the section 624.Sx SPECIFYING KEYCODES 625for details on how to specify 626.Ar keycode , 627and section 628.Sx KEYBINDING ACTIONS 629for a listing of all actions 630.Nm 631supports. 632.It Pf : Ic w Ns Oo ! Oc Op Ar name 633Save the currently viewing playlist. 634If a 635.Ar name 636is provided, then the playlist will be saved with this new name. 637If, however, a playlist already exists with that name, then you will be 638prevented from saving with that name unless '!' is provided, in which case 639the existing playlist with that name will be deleted. 640.El 641.Sh SPECIFYING KEYCODES 642This section describes how to specify keycodes used in both the 643.Pf : Ic bind 644and 645.Pf : Ic unbind 646commands. 647.Pp 648Keycodes are specified in the following fashion: 649.Pp 650.Dl Oo Cm Control Oc Pq Ar key | Ar SpecialKey 651.Pp 652Here, 653.Ar key 654is used to specify the actual, printable character entered which is 655case-sensitive (e.g. 'j', 'p', 'P'), and 656.Ar SpecialKey 657is used to specify various non-printable characters (such as the Page-Up 658key). 659.Pp 660If the string 661.Qq Control 662is also specified, then the keycode only applies when the control key is 663pressed in conjunction with the 664.Ar key 665or 666.Ar SpecialKey . 667.Pp 668Although 669.Cm key 670is case-sensitive ('p' and 'P' are treated differently), both 671.Ar SpecialKey 672and 673.Qq Control 674are case-insensitive. 675.Pp 676The currently supported list of non-printable characters available for 677.Ar SpecialKey 678are: 679.Pp 680.Bl -column -compact -offset indent "ValueX" "DescriptionX" 681.It Em Value Ta Em Description 682.It Cm PageUp Ta The page-up key. 683.It Cm PageDown Ta The page-down key. 684.It Cm Up Ta The up-arrow key. 685.It Cm Down Ta The down-arrow key. 686.It Cm Left Ta The left-arrow key. 687.It Cm Right Ta The right-arrow key. 688.It Cm Backspace Ta The backspace key. 689.It Cm Enter Ta The enter key. 690.It Cm Space Ta The space key. 691.It Cm Tab Ta The tab key. 692.El 693.Pp 694Some examples of using keycodes and the 695.Pf : Ic bind 696run-time command are: 697.Bd -literal 698 bind paste_after p 699 bind paste_before P 700 701 bind scroll_up_halfpage Control u 702 bind scroll_down_halfpage Control d 703.Ed 704.Sh KEYBINDING ACTIONS 705The current list of available actions that keys may be bound to is the 706following. 707For each action, the default keys bound to them are also listed. 708.Bl -tag -width "scroll_down_wholepage" 709.It Em Action Name 710.Em Description 711.It Cm scroll_up 712Scroll the current row in the current window up by one line. 713.br 714DEFAULT BINDINGS: 715.Cm k, -, Up 716.It Cm scroll_down 717Scroll the current row in the current window down by one line. 718.br 719DEFAULT BINDINGS: 720.Cm j, Down 721.It Cm scroll_up_page 722Scroll the current window up by one line. 723.br 724DEFAULT BINDINGS: 725.Cm Control y 726.It Cm scroll_down_page 727Scroll the current window down by one line. 728.br 729DEFAULT BINDINGS: 730.Cm Control e 731.It Cm scroll_up_halfpage 732Scroll the current window up one half-page. 733.br 734DEFAULT BINDINGS: 735.Cm Control u 736.It Cm scroll_down_halfpage 737Scroll the current window down one half-page. 738.br 739DEFAULT BINDINGS: 740.Cm Control d 741.It Cm scroll_up_wholepage 742Scroll the current window up one whole page. 743.br 744DEFAULT BINDINGS: 745.Cm Control b, PageUp 746.It Cm scroll_down_wholepage 747Scroll the current window down one whole page. 748.br 749DEFAULT BINDINGS: 750.Cm Control f, PageDown 751.It Cm scroll_left 752Scroll the current window to the left one column. 753.br 754DEFAULT BINDINGS: 755.Cm h, Left, Backspace 756.It Cm scroll_right 757Scroll the current window to the right one column. 758.br 759DEFAULT BINDINGS: 760.Cm l, Right, Space 761.It Cm scroll_leftmost 762Scroll the current window to the left as far as possible. 763.br 764DEFAULT BINDINGS: 765.Cm ^, 0, \&| 766.It Cm scroll_rightmost 767Scroll the current window to the right as far as possible. 768.br 769DEFAULT BINDINGS: 770.Cm $ 771.It Cm jumpto_screen_top 772Move the current line to the first line in the current window. 773.br 774DEFAULT BINDINGS: 775.Cm H 776.It Cm jumpto_screen_middle 777Move the current line to the middle line in the current window. 778.br 779DEFAULT BINDINGS: 780.Cm M 781.It Cm jumpto_screen_bottom 782Move the current line to the bottom line in the current window. 783.br 784DEFAULT BINDINGS: 785.Cm L 786.It Cm jumpto_line 787Jump to either a specified line (if a global input number is present) or to 788the last line in the current window's buffer. 789.br 790DEFAULT BINDINGS: 791.Cm G 792.It Cm jumpto_percent 793Using the global input number N, jump to the line N% the way through the 794current window's buffer. 795.br 796DEFAULT BINDINGS: 797.Cm % 798.It Cm go 799Go to a specific location within the current window. This is planned to be 800similar to 801.Xr vim 1 's 802use of the 'g' keybinding, with multiple suffixes. For now, only 'gg' is 803supported, and this takes you to the first line in the current window's 804buffer. 805.br 806DEFAULT BINDINGS: 807.Cm g 808.It Cm search_forward 809Begin a search for the entered string searching forward in the current window. 810The current row will be updated to the next matching row. 811.br 812DEFAULT BINDINGS: 813.Cm / 814.It Cm search_backward 815Begin a search for the entered string searching backwards in the current 816The current row will be updated to the next matching row. 817window. 818.br 819DEFAULT BINDINGS: 820.Cm \&? 821.It Cm find_next_forward 822Using the previous search-string, search in the same direction as the search 823was input for the next matching row. 824.br 825DEFAULT BINDINGS: 826.Cm n 827.It Cm find_next_backward 828Using the previous search-string, search in the opposite direction as the 829search was input for the next matching row. 830.br 831DEFAULT BINDINGS: 832.Cm N 833.It Cm cut 834Remove the following N lines from the current window, placing them in the copy 835buffer, where N is the global input number. 836Note that if the library window is active, only one row (playlist) can be 837cut/deleted at a time, and that this action cannot be undone. 838.br 839DEFAULT BINDINGS: 840.Cm d 841.It Cm visual 842Begin visual mode. This is only available in the playlist window, and once 843begun, only keybindings that move the cursor within the current window are 844allowed. Visual mode is exited when either a yank or delete operation has 845been performed, or when the Escape key is pressed. 846.br 847DEFAULT BINDINGS: 848.Cm v, V 849.It Cm yank 850Copy the following N lines from the current window into the copy buffer, where 851N is the global input number. 852This action cannot be used in the library window. 853.br 854DEFAULT BINDINGS: 855.Cm y 856.It Cm paste_after 857Paste the contents of the copy buffer after the current row in the playlist 858window. 859This action cannot be used in the library window. 860.br 861DEFAULT BINDINGS: 862.Cm p 863.It Cm paste_before 864Paste the contents of the copy buffer before the current row in the playlist 865window. 866This action cannot be used in the library window. 867.br 868DEFAULT BINDINGS: 869.Cm P 870.It Cm undo 871Undo the previous action on the currently viewed playlist. 872This action cannot be used in the library window. 873.br 874DEFAULT BINDINGS: 875.Cm u 876.It Cm redo 877Redo the previously undone action on the currently viewed playlist. 878This action cannot be used in the library window. 879.br 880DEFAULT BINDINGS: 881.Cm Control r 882.It Cm quit 883Exit 884.Nm . 885If there are unsaved changes in any playlists you will be prevented from 886exiting until you either save those changes or issue a ":q!" command. 887.br 888DEFAULT BINDINGS: 889.Cm Control c, Control / 890.It Cm redraw 891Clear and re-draw the entire display. 892.br 893DEFAULT BINDINGS: 894.Cm Control l 895.It Cm command_mode 896Enter command-mode, where the commands listed in the 897.Sx RUN-TIME COMMANDS 898section may be issued. 899.br 900DEFAULT BINDINGS: 901.Cm \&: 902.It Cm shell 903Enter a command to be executed outsite of 904.Nm 905and in the current shell environment. 906The output of the execution is shown before control and the display returns to 907.Nm . 908.br 909DEFAULT BINDINGS: 910.Cm \&! 911.It Cm switch_windows 912Toggle focus between the library and playlist windows. 913.br 914DEFAULT BINDINGS: 915.Cm Tab 916.It Cm show_file_info 917Show the file information (including meta-information) for the current row/file 918in the playlist window. 919This action does not work in the library window. 920.br 921DEFAULT BINDINGS: 922.Cm m 923.It Cm load_playlist 924Load the playlist specified by the current row in the library window. 925.br 926DEFAULT BINDINGS: 927.Cm Enter 928.It Cm media_play 929Begin playing the file specified by the current row in the playlist window. 930.br 931DEFAULT BINDINGS: 932.Cm Enter 933.It Cm media_pause 934Pause playback of any playing media. 935.br 936DEFAULT BINDINGS: 937.Cm z 938.It Cm media_stop 939Stop all playback of any playing media. 940.br 941DEFAULT BINDINGS: 942.Cm s 943.It Cm seek_forward_seconds 944Seek forwards 10 seconds in any playing media. 945.br 946DEFAULT BINDINGS: 947.Cm f, \&] 948.It Cm seek_backward_seconds 949Seek backwards 10 seconds in any playing media. 950.br 951DEFAULT BINDINGS: 952.Cm b, \&[ 953.It Cm seek_forward_minutes 954Seek forwards 1 minute in any playing media. 955.br 956DEFAULT BINDINGS: 957.Cm F, \&} 958.It Cm seek_backward_minutes 959Seek backwards 1 minute in any playing media. 960.br 961DEFAULT BINDINGS: 962.Cm B, \&{ 963.It Cm media_next 964Play the next song in the playlist. 965.br 966DEFAULT BINDINGS: 967.Cm \&) 968.It Cm media_prev 969Play the previous song in the playlist. 970.br 971DEFAULT BINDINGS: 972.Cm \&( 973.It Cm volume_decrease 974Decrease the volume. 975.br 976DEFAULT BINDINGS: 977.Cm < 978.It Cm volume_increase 979Increase the volume. 980.br 981DEFAULT BINDINGS: 982.Cm > 983.It Cm toggle_forward 984Execute the next command from the toggle list specified by the provided 985register. 986.br 987DEFAULT BINDINGS: 988.Cm t 989.It Cm toggle_backward 990Execute the previous command from the toggle list specified by the provided 991register. 992.br 993DEFAULT BINDINGS: 994.Cm T 995.El 996.Pp 997Some examples of using the above actions and keycodes to define the default 998keybdings are: 999.Bd -literal 1000 bind paste_after p 1001 bind paste_before P 1002 1003 bind scroll_up_halfpage Control u 1004 bind scroll_down_halfpage Control d 1005.Ed 1006.Sh CONFIGURATION FILE 1007The configuration file loaded by 1008.Nm 1009is relatively straight-forward. 1010Each line may be one of the following: 1011.Pp 1012.Bl -bullet -compact 1013.It 1014A comment, which starts with a '#'. 1015.It 1016An empty line. 1017.It 1018One of the commands from the 1019.Sx RUN-TIME COMMANDS 1020section above. 1021.El 1022.Pp 1023That's it. 1024As such, review the list of commands above. 1025.Pp 1026An example configuration file that would setup some hideous DOS-like colors 1027is: 1028.Bd -literal 1029 # setup colors 1030 color bars=white,blue 1031 color player=yellow,blue 1032 color library=green,blue 1033 color playlist=white,blue 1034 color status=red,blue 1035 1036 # format for playlist window 1037 display artist.20,album.20,title.20,track.4,year.4 1038 1039 # show most recent work of an artist first in library window 1040 sort artist,-year 1041 1042 # make library window 20 columns wide and hide when not active 1043 set lwidth=20 1044 set lhide=true 1045.Ed 1046.Sh FILES 1047.Bl -tag -width Ds -compact 1048.It Pa ~/.vitunes/vitunes.conf 1049Default configuration file. 1050.It Pa ~/.vitunes/vitunes.db 1051Default database file. 1052.It Pa ~/.vitunes/playlists/ 1053Default playlist directory. 1054.It Pa /tmp/.vitunes 1055Default location for the socket created on start-up that can be used to control 1056.Nm . 1057.It Pa /usr/local/bin/mplayer 1058Default path to the 1059.Xr mplayer 1 1060binary. 1061.El 1062.Sh SEE ALSO 1063.Xr mplayer 1 , 1064.Xr realpath 3 , 1065.Xr strftime 3 , 1066.Xr vi 1 . 1067.Pp 1068More information about TagLib can be found on the TagLib website: 1069.Lk http://developer.kde.org/~wheeler/taglib.html 1070.Pp 1071The 1072.Nm 1073website has additional information, such as a list of frequently asked 1074questions, a mailing list, and up-to-date bug information. 1075.Pp 1076.Lk http://www.vitunes.org 1077.Sh AUTHORS 1078.Nm 1079was written by 1080.An Ryan Flannery Aq Mt ryan.flannery@gmail.com . 1081.Sh BUGS 1082None known. 1083.Pp 1084If you happen to find any, please send a detailed description to me at 1085.Mt ryan.flannery@gmail.com . 1086