darkhz

joined 1 year ago
[–] darkhz@lemm.ee 3 points 5 months ago

Yes, I am already considering it, but it has various limitations, which I would like to avoid.

[–] darkhz@lemm.ee 5 points 5 months ago (1 children)

It's not about the size of the stacks IMO, the Bluetooth stack is notoriously difficult to interact with since the implementation varies wildly across different platforms and maybe architectures, and communicating with those different stacks is difficult, in a way. And within each stack you may find many features that are sparsely or not documented at all.

Just saying, but if it were easy, cross-platform libraries would have been developed long ago, but to this day most libraries have implementations where some functions are either finicky or not implemented. In no way am I trying to criticize the authors of those libraries, IMO it is a commendable achievement that they have understood the standard and the different stacks and have attempted make it cross-platform friendly and easy-to-use, but that's just the state of Bluetooth these days.

[–] darkhz@lemm.ee 1 points 5 months ago (1 children)

I would like to be involved in the development as much as I can, but I cannot work on rust since I have no experience with it, unlike with Go and Java (a little). Also, cross-platform libraries tend to have more limitations and caveats as to what is implemented and usable. But please, do link the rust library here so I can check it out.

I think platform specific binaries is the way due to more flexibility, although we can debate about that. My objectives are to provide a standard API for any bluetooth client to use, and to retain bluetuith's existing features. If you are willing to contribute to the MacOS part of it, it would be great, and we can have further discussions via DM.

[–] darkhz@lemm.ee 6 points 5 months ago (5 children)

Windows is indeed a different beast, which is why I am looking for contributors. For Linux it can be done, but since I don't have a macOS based device, I cannot work on a macOS based implementation.

 

Hello Lemmy,

I am the author of bluetuith, an open-source TUI-based bluetooth manager for Linux only. I have been working on this project for over 2 years on and off, and I was wondering about extending support to other platforms as well.

To begin with, the Bluetooth Classic (BR/EDR) implementation on Linux is fairly standardized (via bluez APIs), but on other platforms, especially windows, Bluetooth APIs are finicky, and tricky to deal with, and also there is no standardized management in general.

I would like to start creating a centralized Bluetooth server or a daemon for other platforms (natively maybe), mainly Windows and Linux, which can expose relevant APIs so that clients can use them to handle Bluetooth-based operations. I know this is quite an uphill task, but I would like suggestions on how to implement it, or if anyone has a better idea, please do suggest that as well.

To summarize, my current plan is this:

  • Create bluetooth servers natively for each platform, utilizing the platform's proven APIs to handle bluetooth-based functions and expose a standard API to clients
  • Adapt clients to use said APIs provided by the daemons to allow the user to control bluetooth in general.

For the server implementation (mainly to other platforms), I will require contributors, so contributors are highly welcome to be involved in the project. I am in the process of securing an NLnet grant to invest into this project and mainly pay contributors to implement this platform-wise (the proposal has been accepted, and the negotiation call will be hosted in a few weeks, more details about this can be further published if anyone has questions about this. If contributors are confirmed, maybe the budget could be adjusted as well).

I apologize if the post is naive or does not fit this community's guidelines, and if it doesn't, a comment on where to redirect this question would be great.

Constructive feedback is appreciated. Thank you.

Note: By Bluetooth operations, I mainly mean Bluetooth Classic based operations.

 

Hello Lemmy,

invidtui is a TUI-based Invidious client, which can:

  • Search for and browse videos, playlists and channels
  • Play audio or video from any instance
  • View, open, edit and save m3u8 playlists
  • Download video/audio in any format
  • Authenticate with the preferred instance, and show user feed, playlists and subscriptions

This release contains the following new features/fixes:


Embedded Recommendations tab

Recommendations for the video that is currently being played is now shown in a separate tab within the queue.

A demo and instructions are posted here


YouTube timestamps

Timestamps found within Youtube URIs are now seeked to on playback.

A demo and instructions are posted here


Custom seeking

A separate modal is shown to modify the playback position. Positions can be seeked to relatively/absolutely.

A demo and instructions are posted here


I hope you enjoy this release, and any feedback is appreciated.

 

Hello Lemmy,

invidtui is a TUI-based Invidious client, which can:

  • Search for and browse videos, playlists and channels
  • Play audio or video from any instance
  • View, open, edit and save m3u8 playlists
  • Download video/audio in any format
  • Authenticate with the preferred instance, and show user feed, playlists and subscriptions

This release contains the following new features/fixes:


Embedded Recommendations tab

Recommendations for the video that is currently being played is now shown in a separate tab within the queue.

A demo and instructions are posted here


YouTube timestamps

Timestamps found within Youtube URIs are now seeked to on playback.

A demo and instructions are posted here


Custom seeking

A separate modal is shown to modify the playback position. Positions can be seeked to relatively/absolutely.

A demo and instructions are posted here


I hope you enjoy this release, and any feedback is appreciated.

 

Hello Lemmy,

invidtui is a TUI-based Invidious client, which can:

  • Search for and browse videos, playlists and channels
  • Play audio or video from any instance
  • View, open, edit and save m3u8 playlists
  • Download video/audio in any format
  • Authenticate with the preferred instance, and show user feed, playlists and subscriptions

This release contains the following new features/fixes:


Dynamic theming

Themes can now be applied from theme files dynamically within the application as well as from command-line and configuration options.

A demo and instructions are posted here


Channel 'Releases' tab

A new 'releases' tab is added to the channel page, to show new content from channel authors.


Enhanced configuration handling

Configuration handling is now done in the most cross-platform way as possible.


I hope you enjoy this release, and any feedback is appreciated.

 

Hello Lemmy,

invidtui is a TUI-based Invidious client, which can:

  • Search for and browse videos, playlists and channels
  • Play audio or video from any instance
  • View, open, edit and save m3u8 playlists
  • Download video/audio in any format
  • Authenticate with the preferred instance, and show user feed, playlists and subscriptions

This release contains the following new features/fixes:


Dynamic theming

Themes can now be applied from theme files dynamically within the application as well as from command-line and configuration options.

A demo and instructions are posted here


Channel 'Releases' tab

A new 'releases' tab is added to the channel page, to show new content from channel authors.


Enhanced configuration handling

Configuration handling is now done in the most cross-platform way as possible.


I hope you enjoy this release, and any feedback is appreciated.

 

Hello Lemmy,

invidtui is a TUI-based Invidious client, which can:

  • Search for and browse videos, playlists and channels
  • Play audio or video from any instance
  • View, open, edit and save m3u8 playlists
  • Download video/audio in any format
  • Authenticate with the preferred instance, and show user feed, playlists and subscriptions

This release contains the following new features/fixes:


Dynamic theming

Themes can now be applied from theme files dynamically within the application as well as from command-line and configuration options.

A demo and instructions are posted here


Channel 'Releases' tab

A new 'releases' tab is added to the channel page, to show new content from channel authors.


Enhanced configuration handling

Configuration handling is now done in the most cross-platform way as possible.


I hope you enjoy this release, and any feedback is appreciated.

 

Hello Lemmy,

invidtui is a TUI-based Invidious client, which can:

  • Search for and browse videos, playlists and channels
  • Play audio or video from any instance
  • View, open, edit and save m3u8 playlists
  • Download video/audio in any format
  • Authenticate with the preferred instance, and show user feed, playlists and subscriptions

A new demo video has been uploaded here.

This release contains the following new features/fixes:


Redesigned Media Queue

The queue is now completely managed by invidtui, with MPV being used only for playback. This change resulted in a big reduction in CPU usage, especially when loading large playlists.

  • Shuffle mode is on-demand, with a focus on not playing the same item more than once in a single cycle.
  • Media statuses (fetching/loading/playing) are shown for the currently selected item
  • Dynamic audio/video switching of any item in the queue
  • Media items are fetched from the selected instance, and can be reloaded as the instance is changed.

Media Fetcher

The new media fetcher will show statuses of each added media item, and allow for viewing any errors and performing reload/cancel actions on each or all media items being added.


Playlist/Player Improvements

Playlists are now downloaded faster, and are generated in the proper M3U8 format. The player also shows media statuses, as well as the buffering percentage of the current media.

Note that playlists may have to be regenerated/redownloaded if they were previously generated by older versions.


I hope you enjoy this release, and any feedback is appreciated.

[–] darkhz@lemm.ee 2 points 11 months ago

Noted. I will edit the README to indicate where the installation and other instructions are.

[–] darkhz@lemm.ee 1 points 11 months ago (2 children)

The installation instructions are covered in the project website (here), and yes, I will update the demo video to show playing a YouTube video from an instance.

 

Hello Lemmy,

invidtui is a TUI-based Invidious client, which can:

  • Search for and browse videos, playlists and channels
  • Play audio or video from any instance
  • View, open, edit and save m3u8 playlists
  • Download video/audio in any format
  • Authenticate with the preferred instance, and show user feed, playlists and subscriptions

This release contains the following new features/fixes:


  • Playlists are downloadable as well, with progress display in the "Downloads" page. Deleted/private videos are stored separately from the public ones.

    To use this feature:

    • Select a playlist with the i key, wait for the playlist to load
    • Press Ctrl+S to initialize the download
    • To view the progress of the download, press Y

  • Optimizations to the playlist file loading and queue rendering (reduced CPU usage)
    • Updating the queue only for new/updated items
    • Rate limiting the calls to MPV
    • Cancellable loading of playlist entries
      • Open the queue and press x to cancel loading the playlist entries.

  • An "Initializing" indicator is shown when the player is hidden and about to start playing a file

I hope you enjoy this release, and any feedback is appreciated.

 

Hello Lemmy,

invidtui is a TUI-based Invidious client, which can:

  • Search for and browse videos, playlists and channels
  • Play audio or video from any instance
  • View, open, edit and save m3u8 playlists
  • Download video/audio in any format
  • Authenticate with the preferred instance, and show user feed, playlists and subscriptions

This release contains the following new features/fixes:


  • Playlists are downloadable as well, with progress display in the "Downloads" page. Deleted/private videos are stored separately from the public ones.

    To use this feature:

    • Select a playlist with the i key, wait for the playlist to load
    • Press Ctrl+S to initialize the download
    • To view the progress of the download, press Y

  • Optimizations to the playlist file loading and queue rendering (reduced CPU usage)
    • Updating the queue only for new/updated items
    • Rate limiting the calls to MPV
    • Cancellable loading of playlist entries
      • Open the queue and press x to cancel loading the playlist entries.

  • An "Initializing" indicator is shown when the player is hidden and about to start playing a file

I hope you enjoy this release, and any feedback is appreciated.

 

Hello Lemmy,

invidtui is a TUI-based Invidious client, which can:

  • Search for and browse videos, playlists and channels
  • Play audio or video from any instance
  • View, open, edit and save m3u8 playlists
  • Download video/audio in any format
  • Authenticate with the preferred instance, and show user feed, playlists and subscriptions

This release contains the following new features/fixes:


  • Playlists are downloadable as well, with progress display in the "Downloads" page. Deleted/private videos are stored separately from the public ones.

    To use this feature:

    • Select a playlist with the i key, wait for the playlist to load
    • Press Ctrl+S to initialize the download
    • To view the progress of the download, press Y

  • Optimizations to the playlist file loading and queue rendering (reduced CPU usage)
    • Updating the queue only for new/updated items
    • Rate limiting the calls to MPV
    • Cancellable loading of playlist entries
      • Open the queue and press x to cancel loading the playlist entries.

  • An "Initializing" indicator is shown when the player is hidden and about to start playing a file

I hope you enjoy this release, and any feedback is appreciated.

 

Hello Lemmy,

Bluetuith is a TUI based bluetooth manager for Linux, that aims to be an alternative to most bluetooth managers, and can perform bluetooth based operations like:

  • Connection to and general management of bluetooth devices, with device information like battery percentage, RSSI etc. displayed, if the information is available. More detailed information about a device can be viewed by selecting the 'Info' option in the menu or by clicking the 'i' key.

  • Bluetooth adapter management, with toggleable power, discoverability, pairablilty and scanning modes.

  • Transfer and receive files via the OBEX protocol, with an interactive file picker to choose and select multiple files.

  • Handle both PANU and DUN based networking for each bluetooth device

  • Control media playback on the currently connected device, with a media player popup that displays playback information and controls.

This release contains the following new features:

  • New command-line options --adapter-states to set adapter properties and --connect-bdaddr to connect to a device on initialization
  • Block/unblock devices
  • Indefinite passkey/pincode display
  • Modifiable navigation keys
  • Display the 'Bonded' property for a device

I hope you enjoy this release, and any feedback is appreciated.

 

Hello Lemmy,

Bluetuith is a TUI based bluetooth manager for Linux, that aims to be an alternative to most bluetooth managers, and can perform bluetooth based operations like:

  • Connection to and general management of bluetooth devices, with device information like battery percentage, RSSI etc. displayed, if the information is available. More detailed information about a device can be viewed by selecting the 'Info' option in the menu or by clicking the 'i' key.

  • Bluetooth adapter management, with toggleable power, discoverability, pairablilty and scanning modes.

  • Transfer and receive files via the OBEX protocol, with an interactive file picker to choose and select multiple files.

  • Handle both PANU and DUN based networking for each bluetooth device

  • Control media playback on the currently connected device, with a media player popup that displays playback information and controls.

This release contains the following new features:

  • New command-line options --adapter-states to set adapter properties and --connect-bdaddr to connect to a device on initialization
  • Block/unblock devices
  • Indefinite passkey/pincode display
  • Modifiable navigation keys
  • Display the 'Bonded' property for a device

I hope you enjoy this release, and any feedback is appreciated.

[–] darkhz@lemm.ee 3 points 1 year ago

You have quite an interesting situation here. You could use a good Bluetooth adapter, pair all your devices to it, and maybe use pulseaudio/pipewire (depending on what your system uses) to manage audio inputs/outputs?

view more: next ›