2024-09-23 19:59:07 +00:00
|
|
|
# lowfi
|
|
|
|
|
|
|
|
lowfi is a tiny rust app that serves a single purpose: play lofi.
|
|
|
|
It'll do this as simply as it can: no albums, no ads, just lofi.
|
|
|
|
|
2024-09-30 10:28:08 +00:00
|
|
|
![example image](media/example1.png)
|
2024-09-30 05:46:57 +00:00
|
|
|
|
2024-09-27 22:06:22 +00:00
|
|
|
## Disclaimer
|
|
|
|
|
|
|
|
**All** of the audio files played in lowfi are from [Lofi Girl's](https://lofigirl.com/) website,
|
|
|
|
under their [licensing guidelines](https://form.lofigirl.com/CommercialLicense).
|
|
|
|
|
|
|
|
If god forbid you're planning to use this in a commercial setting, please
|
|
|
|
follow their rules.
|
|
|
|
|
2024-09-23 19:59:07 +00:00
|
|
|
## Why?
|
|
|
|
|
|
|
|
I really hate modern music platforms, and I wanted a small, "suckless"
|
|
|
|
app that would literally just play lofi without video so I could use it
|
|
|
|
whenever.
|
2024-09-26 14:13:40 +00:00
|
|
|
|
|
|
|
I also wanted it to be fairly resiliant to inconsistent networks,
|
|
|
|
so it buffers 5 whole songs at a time instead of parts of the same song.
|
2024-09-27 22:06:22 +00:00
|
|
|
|
|
|
|
Although, lowfi is yet to be properly tested in difficult conditions,
|
|
|
|
so don't rely on it too much until I do that. See [Scraping](#scraping) if
|
|
|
|
you're interested in downloading the tracks. Beware, there's a lot of them.
|
|
|
|
|
2024-09-27 22:39:01 +00:00
|
|
|
## Installing
|
|
|
|
|
2024-10-07 20:47:32 +00:00
|
|
|
> [!NOTE]
|
|
|
|
>
|
2024-10-07 20:46:10 +00:00
|
|
|
> If you're interested in maintaining a package for `lowfi`
|
|
|
|
> on package managers such as homebrew and the like, open an issue.
|
|
|
|
|
|
|
|
### Dependencies
|
|
|
|
|
2024-10-01 17:36:35 +00:00
|
|
|
You'll need Rust 1.74.0+.
|
|
|
|
|
2024-10-07 20:46:10 +00:00
|
|
|
On MacOS & Windows, no extra dependencies are needed.
|
|
|
|
|
2024-10-16 05:57:19 +00:00
|
|
|
On Linux, you'll also need openssl & alsa, as well as their headers.
|
|
|
|
|
|
|
|
- `alsa-lib` on Arch, `libasound2-dev` on Ubuntu.
|
|
|
|
- `openssl` on Arch, `libssl-dev` on Ubuntu.
|
|
|
|
|
|
|
|
Make sure to also install `pulseaudio-alsa` if you're using pulseaudio.
|
2024-10-04 09:37:52 +00:00
|
|
|
|
2024-09-27 22:39:01 +00:00
|
|
|
### Cargo
|
|
|
|
|
|
|
|
The recommended installation method is to use cargo:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
cargo install lowfi
|
2024-10-07 20:46:10 +00:00
|
|
|
|
|
|
|
# If you want MPRIS support.
|
|
|
|
cargo install lowfi --features mpris
|
2024-09-27 22:39:01 +00:00
|
|
|
```
|
|
|
|
|
2024-10-01 17:36:35 +00:00
|
|
|
and making sure `$HOME/.cargo/bin` is added to `$PATH`.
|
2024-09-27 22:39:01 +00:00
|
|
|
|
2024-10-15 13:58:08 +00:00
|
|
|
### Release Binaries
|
|
|
|
|
|
|
|
If you're struggling or unwilling to use cargo, you can just download
|
|
|
|
precompiled binaries from the [latest release](https://github.com/talwat/lowfi/releases/latest).
|
|
|
|
|
2024-09-27 22:39:01 +00:00
|
|
|
### AUR
|
|
|
|
|
|
|
|
If you're on Arch, you can also use the AUR:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
yay -S lowfi
|
|
|
|
```
|
|
|
|
|
2024-10-16 14:34:55 +00:00
|
|
|
### openSUSE
|
|
|
|
|
|
|
|
```sh
|
|
|
|
zypper install lowfi
|
|
|
|
```
|
|
|
|
|
2024-10-05 10:34:54 +00:00
|
|
|
### Manual
|
|
|
|
|
2024-10-17 20:33:00 +00:00
|
|
|
This is good for debugging, especially in issues.
|
|
|
|
|
2024-10-05 10:34:54 +00:00
|
|
|
```sh
|
|
|
|
git clone https://github.com/talwat/lowfi
|
|
|
|
cd lowfi
|
|
|
|
|
2024-10-17 20:33:00 +00:00
|
|
|
# If you want an actual binary
|
|
|
|
cargo build --release --all-features
|
2024-10-05 10:34:54 +00:00
|
|
|
./target/release/lowfi
|
2024-10-17 20:33:00 +00:00
|
|
|
|
|
|
|
# If you just want to test
|
|
|
|
cargo run --all-features
|
2024-10-05 10:34:54 +00:00
|
|
|
```
|
|
|
|
|
2024-09-27 22:06:22 +00:00
|
|
|
## Usage
|
|
|
|
|
|
|
|
`lowfi`
|
|
|
|
|
2024-10-11 18:06:43 +00:00
|
|
|
Yeah, that's it.
|
|
|
|
|
|
|
|
### Controls
|
|
|
|
|
|
|
|
| Key | Function |
|
|
|
|
|-------|----------------|
|
|
|
|
| `s` | Skip song |
|
|
|
|
| `p` | Play/Pause |
|
|
|
|
| `+/-` | Volume Up/Down |
|
|
|
|
| `q` | Quit |
|
2024-09-27 22:06:22 +00:00
|
|
|
|
2024-10-02 16:39:30 +00:00
|
|
|
### Extra Flags
|
|
|
|
|
2024-10-07 12:40:39 +00:00
|
|
|
If you have something you'd like to tweak about lowfi, you can run `lowfi help`
|
|
|
|
to view the available options.
|
2024-10-02 16:39:30 +00:00
|
|
|
|
2024-09-27 22:06:22 +00:00
|
|
|
### Scraping
|
|
|
|
|
|
|
|
lowfi also has a `scrape` command which is usually not relevant, but
|
|
|
|
if you're trying to download some files from Lofi Girls' website,
|
|
|
|
it can be useful.
|
|
|
|
|
|
|
|
An example of scrape is as follows,
|
|
|
|
|
|
|
|
`lowfi scrape --extension zip --include-full`
|
|
|
|
|
|
|
|
where more information can be found by running `lowfi help scrape`.
|
2024-10-15 12:15:51 +00:00
|
|
|
|
|
|
|
### Custom Track Lists
|
|
|
|
|
|
|
|
> [!WARNING]
|
|
|
|
>
|
|
|
|
> Custom track lists are going to be pretty particular.
|
|
|
|
> This is because I still want to keep `lowfi` as simple as possible,
|
|
|
|
> so custom lists will be very similar to how the built in list functions.
|
|
|
|
>
|
|
|
|
> This also means that there will be no added flexibility to these lists,
|
|
|
|
> so you'll have to work that out on your own.
|
|
|
|
|
2024-10-17 20:48:33 +00:00
|
|
|
lowfi also can support custom track lists, although the default one from Lofi Girl
|
2024-10-15 12:15:51 +00:00
|
|
|
is embedded into the binary.
|
|
|
|
|
|
|
|
To use a custom list, use the `--tracks` flag. This can either be a path to some file,
|
|
|
|
or it could also be the name of a file (without the `.txt` extension) in the data
|
|
|
|
directory, so on Linux it's `~/.local/share/lowfi`.
|
|
|
|
|
|
|
|
For example, `lowfi --tracks minipop` would load `~/.local/share/lowfi/minipop.txt`.
|
|
|
|
Whereas if you did `lowfi --tracks /home/user/Music/minipop.txt` it would load from that
|
|
|
|
specified directory.
|
|
|
|
|
|
|
|
#### The Format
|
|
|
|
|
2024-10-17 20:48:33 +00:00
|
|
|
In Lists, the first line should be the base URL, followed by the rest of the tracks.
|
2024-10-15 12:15:51 +00:00
|
|
|
|
|
|
|
Each track will be first appended to the base URL, and then the result use to download
|
|
|
|
the track. All tracks should end in `.mp3` and as such must be in the MP3 format.
|
|
|
|
|
|
|
|
lowfi won't put a `/` between the base & track for added flexibility, so for most cases you
|
|
|
|
should have a trailing `/` in your base url. The exception to this is if the track name begins
|
|
|
|
with something like `https://`, where in that case the base will not be prepended to it.
|
|
|
|
|
|
|
|
For example, in this list:
|
|
|
|
|
|
|
|
```txt
|
|
|
|
https://lofigirl.com/wp-content/uploads/
|
|
|
|
2023/06/Foudroie-Finding-The-Edge-V2.mp3
|
|
|
|
2023/04/2-In-Front-Of-Me.mp3
|
|
|
|
https://file-examples.com/storage/fea570b16e6703ef79e65b4/2017/11/file_example_MP3_5MG.mp3
|
|
|
|
```
|
|
|
|
|
|
|
|
lowfi would download these three URLs:
|
|
|
|
|
|
|
|
- `https://lofigirl.com/wp-content/uploads/2023/06/Foudroie-Finding-The-Edge-V2.mp3`
|
|
|
|
- `https://file-examples.com/storage/fea570b16e6703ef79e65b4/2017/11/file_example_MP3_5MG.mp3`
|
|
|
|
- `https://lofigirl.com/wp-content/uploads/2023/04/2-In-Front-Of-Me.mp3`
|