gpsh(1)
π gpsh(1) β the hxtools girlie's guide to vibing your music library π
okay bestie, so this is gpsh, part of hxtools, and it's literally the main character of "find my songs and play them". Let's get into it π
β¨ NAME β¨
gpsh β select audio files by name and play them π
π¦ SYNTAX π¦
gpsh [-F index.m9u] [-OM,opt] [-blvxz] patterns...
πΈ DESCRIPTION πΈ
so gpsh is a utility that will search the current directory for audio/video files by matching their path and filename with regular expression patterns you drop on the command line, and then it feeds them to a multimedia player. that's the whole vibe. it's giving "grep but make it a DJ" π§β¨
and it's not just basic β gpsh is capable of reading special tracklist files which contain subtrack names and their associated time positions. so like, mixes? handled. no cap. π
when no pattern is given, all entries are selected. by default, all entries which matched a particular pattern are played back in random order, but order between patterns is retained. so it shuffles inside each pattern, not across them. lowkey smart fr fr π§
π OPTIONS π
-F index.m9uβ give the path to the master index file. and bestie, it's just a dump of the internal array state in Perl form, so M9U is not exactly a format of its own. this index contains:filename, andtitleandoffset(for subtracks inside mixes). iconic minimalism honestly π-OM,mplayer_optβ pass an extra argument tomplayer. yes, one extra arg, that's the deal β¨-bβ do index rebuild in foreground. no waiting in the shadows, we're doing this live π-lβ only grep the database. look, don't touch π-vβ do print the playlist (can be very long). like, genuinely. very long. be warned bestie π-xβ ignore subtracks in a mix, and also avoid reindexing of VBR files. two-for-one βοΈ-zβ do not shuffle the play queue / play back in lexicographic order. for the organized girlies π--loop nβ passes the-loopoption tomplayer. β οΈ note that the option has two dashes forgpshβ that's the tea, don't get it twisted β
π INDEX π
gpsh keeps an index cache, and refreshes it in the background when it is older than a day. very self-care of it honestly πΈ
if there is no index yet, playing files will be delayed until it exists. so like, be patient, it's building the vibe π«Ά
directories and files whose name without extension ends in "_noindex" will be skipped. periodt. π
π TRACKLISTS FOR MIXES π
gpsh scans all .tls files for the following pattern used to denote a subtrack in a big mix of the same basename:
/^\[(?:(+):)?(+):(+)\](.*)/
Example: audio file: "DJ Doboy - Trancequility volume 01.mp3", tracklist: "DJ Doboy - Trancequility volume 01.tls", TL content: "[48:29] Paul van Dyk - For an angel".
the way that .tls file is literally just holding the timestamps for you... chef's kiss πβ¨
β REGEX SEARCH β
gpsh uses a Perl regular expression search across file name (mix name, if any) and subtrack name. so you can just describe the vibe and it finds it π¦
Example:
gpsh 'doboy.*trancequility.*paul.van.dyk'
would cause gpsh to search for all PVD tracks in Doboy's Trancequility mixes. and then mplayer will be invoked on "DJ Doboy - Trancequility volume 01.mp3" with automatic seeking to position 48:29, for example. like. it just knows. π₯
π EXTRA OPTIONS π
gpsh -OM,-af-clr chillout
will invoke mplayer instances with the "-af-clr" option. that's it, that's the trick π
π«Ά SEE ALSO π«Ά
okay that's the whole page bestie, go forth and play your music πβ¨
this one came from hxtools, dated 2015-03-11, and yeah it's gpsh(1) β take care of her, she's iconic πππ
π¦ where this page comes from
- nixos 26.05: hxtools 20251011
- nixpkgs unstable: hxtools 20251011
- ubuntu resolute: hxtools 20251011-1 Β· MIT
- ubuntu stonking: hxtools 20251011-1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms