Giter Site home page Giter Site logo

gonk's Introduction

gonk's People

Contributors

brian6932 avatar zx3no avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

brian6932

gonk's Issues

PipeWire support

Follow up for #18.
Linux support was dropped after 0.1.2 so a custom backend will need to be written.
I have briefly skimmed over pipewire-rs and it looks easier than WASAPI.

Having some trouble with pkg-config but this is next on the list.

Seperate UI and Player

I like the idea of being able to close the player and still listen to music. Sometimes I don't want the UI to be open or I accidentally close it.

MPD has this and I miss it.

Audio not working with SIMD

Version 4cbfd31
Thread is spawned:

02:43:52 INFO gonk_player\src/lib.rs:197 - 02:43:52 INFO gonk_player\src/lib.rs:285 - Spawned WASAPI thread!
Spawned decoder thread!

Global hotkeys

Currently they are not cross-platform and there is no way to configure them.

Improve the search page

Currently it looks pretty bad. I would like something similar to spotify, where artists, albums and songs are shown seperately.
It may be useful to know which songs/artists are played more. Ordering by query and popularity is probably better.

I would like a way to just search artists, albums or songs.

Panic when adding music dir

❯ gonk add D:\Music
thread '<unnamed>' panicked at '"D:\\Music\\DRAGON_BALL_SUPER_OST\\DRAGON_BALL_SUPER_OST\\[180228] 住友紀人 - ドラゴンボール超 オリジナルサウンドトラック -Vol.2- (flac)\\Disc 1\\27 限界突破.flac"', gonk-core\src\lib.rs:687:23
stack backtrace:
   0:     0x7ff6485e73c2 - <unknown>
   1:     0x7ff6486002ab - <unknown>
   2:     0x7ff6485e344a - <unknown>
   3:     0x7ff6485e710b - <unknown>
   4:     0x7ff6485e9de9 - <unknown>
   5:     0x7ff6485e9a6a - <unknown>
   6:     0x7ff6484e6ff7 - <unknown>
   7:     0x7ff6485ea6a0 - <unknown>
   8:     0x7ff6485ea3fd - <unknown>
   9:     0x7ff6485e7def - <unknown>
  10:     0x7ff6485ea0c0 - <unknown>
  11:     0x7ff648615b15 - <unknown>
  12:     0x7ff6485304a8 - <unknown>
  13:     0x7ff648546658 - <unknown>
  14:     0x7ff648546f91 - <unknown>
  15:     0x7ff64854c742 - <unknown>
  16:     0x7ff648544059 - <unknown>
  17:     0x7ff64854708e - <unknown>
  18:     0x7ff64854c742 - <unknown>
  19:     0x7ff648544059 - <unknown>
  20:     0x7ff64854708e - <unknown>
  21:     0x7ff64854c742 - <unknown>
  22:     0x7ff648544059 - <unknown>
  23:     0x7ff64854708e - <unknown>
  24:     0x7ff64854c742 - <unknown>
  25:     0x7ff648544059 - <unknown>
  26:     0x7ff64854708e - <unknown>
  27:     0x7ff64854c742 - <unknown>
  28:     0x7ff648544059 - <unknown>
  29:     0x7ff64854708e - <unknown>
  30:     0x7ff64854c742 - <unknown>
  31:     0x7ff648544059 - <unknown>
  32:     0x7ff64854708e - <unknown>
  33:     0x7ff64853367e - <unknown>
  34:     0x7ff648612808 - <unknown>
  35:     0x7ff6485ca6e1 - <unknown>
  36:     0x7ff6485cf383 - <unknown>
  37:     0x7ff6485cd246 - <unknown>
  38:     0x7ff6485ee97c - <unknown>
  39:     0x7ffa5c14117e - BaseThreadInitThunk
  40:     0x7ffa5dfe42db - RtlUserThreadStart

I'm guessing it has to do with it having unicode Japanese chars 🤷
Ver: gonk v0.2.0 (built with: cargo +nightly install --git https://github.com/zX3no/gonk.git)
Happens with the v0.12 bin as well

panic at gonk-core\src\vdb.rs:62:47

I updated to latest commit, and everything was working fine, until I ran a gonk reset and gonk add, I got this panic:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." }', gonk-core\src\vdb.rs:62:47
stack backtrace:
   0:     0x7ff65e1b53f2 - <unknown>
   1:     0x7ff65e1ce97b - <unknown>
   2:     0x7ff65e1b11ea - <unknown>
   3:     0x7ff65e1b513b - <unknown>
   4:     0x7ff65e1b7d7a - <unknown>
   5:     0x7ff65e1b79e0 - <unknown>
   6:     0x7ff65e0536c7 - <unknown>
   7:     0x7ff65e1b85ef - <unknown>
   8:     0x7ff65e1b834e - <unknown>
   9:     0x7ff65e1b5db9 - <unknown>
  10:     0x7ff65e1b8060 - <unknown>
  11:     0x7ff65e1e6dd5 - <unknown>
  12:     0x7ff65e1e72f6 - <unknown>
  13:     0x7ff65e083860 - <unknown>
  14:     0x7ff65e05025b - <unknown>
  15:     0x7ff65e0599a6 - <unknown>
  16:     0x7ff65e059d10 - <unknown>
  17:     0x7ff65e1aa79e - <unknown>
  18:     0x7ff65e05370c - <unknown>
  19:     0x7ff65e1d66a4 - <unknown>
  20:     0x7ffe279f117e - BaseThreadInitThunk
  21:     0x7ffe289042db - RtlUserThreadStart

Running:

rm $env:APPDATA\gonk\*.db

did not help either

Icon

An icon is not really that important since it's a terminal application. However, I want one.

thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', gonk-core\src\lazy.rs:76:34

stack backtrace:
   0:     0x7ff7df8cbac2 - <unknown>
   1:     0x7ff7df8e4b6b - <unknown>
   2:     0x7ff7df8c78ba - <unknown>
   3:     0x7ff7df8cb80b - <unknown>
   4:     0x7ff7df8ce44a - <unknown>
   5:     0x7ff7df8ce0b0 - <unknown>
   6:     0x7ff7df8ceb26 - <unknown>
   7:     0x7ff7df8ce9db - <unknown>
   8:     0x7ff7df8cc489 - <unknown>
   9:     0x7ff7df8ce730 - <unknown>
  10:     0x7ff7df8fec05 - <unknown>
  11:     0x7ff7df8fecbc - <unknown>
  12:     0x7ff7df791863 - <unknown>
  13:     0x7ff7df791095 - <unknown>
  14:     0x7ff7df749510 - <unknown>
  15:     0x7ff7df758cf6 - <unknown>
  16:     0x7ff7df75c19c - <unknown>
  17:     0x7ff7df8c148e - <unknown>
  18:     0x7ff7df74d80c - <unknown>
  19:     0x7ff7df8ec6d4 - <unknown>
  20:     0x7ffd41ee117e - BaseThreadInitThunk
  21:     0x7ffd424242db - RtlUserThreadStart

Happens when using the bin, no matter the arguments

Installed with:

cargo +nightly install --git https://github.com/zX3no/gonk.git

Compiler warning: shared reference of mutable static is discouraged

warning: shared reference of mutable static is discouraged
   --> gonk_player\src/lib.rs:299:39
    |
299 |                 if let Some(device) = &OUTPUT_DEVICE {
    |                                       ^^^^^^^^^^^^^^ shared reference of mutable static
    |
    = note: for more information, see issue #114447 <https://github.com/rust-lang/rust/issues/114447>
    = note: reference of mutable static is a hard error from 2024 edition
    = note: mutable statics can be written to by multiple threads: aliasing violations or data races will cause undefined behavior
    = note: `#[warn(static_mut_ref)]` on by default
help: shared references are dangerous since if there's any kind of mutation of that static while the reference lives, that's UB; use `addr_of!` instead to create a raw pointer
    |
299 |                 if let Some(device) = addr_of!(OUTPUT_DEVICE) {
    |                                       ~~~~~~~~~~~~~~~~~~~~~~~

warning: `gonk_player` (lib) generated 1 warning

Lag under heavy disk load

Audio starts to stutter when copying large files. Probably something to do with poor buffering in the audio thread.

Clickable songs in the queue.

Half working right now. Shouldn't be too hard to fix.

gonk/gonk/src/ui.rs

Lines 27 to 44 in 41d6fde

if let Some((_, row)) = queue.clicked_pos {
let size = f.size();
let height = size.height as usize;
let len = queue.list.len();
if height > 7 {
if height - 7 < len {
//TODO: I have no idea how to figure out what index i clicked on
} else {
let start_row = 5;
if row >= start_row {
let index = (row - start_row) as usize;
if index < len {
queue.ui.select(Some(index));
}
}
}
}
}

Songs break when the volume is 0

If the volume is set to 0, the next song will play faster than usual. Once it's finished, it will get stuck until you change the volume.

Automatically adjust margins

Sometimes the song name is really long but it's cut off, since the space is equally seperate between title, album and artist. It would be nice if the margins were automatic and allocate space more efficiently.

Heisenbug: Seeking will sometimes trigger the 'UnexpectedEof' error.

End of file is used to flag when the decoder is out of packets and will trigger the next song to play. This means seeking can cause the next song to play. I am unable to replicate this issue consistently.

I have a few ideas on what might fix this:

  • Fork Symphonia and write a custom error for when the decoder is finished (this didn't work).
  • Re-write the player to use less unsafe so I can be sure this isn't an issue with shared mutable state (spoiler this was not it).
  • Strip the decoders out of symphonia and write my own interface for them (similar to what I did with rodio and cpal).

I've tried a few things, Symphonia is so complicated and I'm not even sure if it's my fault or a bug in the library. I can't reproduce it so it's hard to report.
I've been writing a FLAC decoder so hopefully Symphonia can be completely replaced. I wanted to do this anyway because Symphonia has a lot of code and some of the dependencies are slow to compile.

#20 should provide a temporary fix.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.