What a coincidence, I just discovered this tool yesterday. It made me really happy how a tool so simple makes such a huge difference in terms of how smooth it is to solve a problem, compared eg with using bluetoothctl.
It also occurred to me that there's a real value to tuis vs guis which is that since they're simpler to build with the same developer effort you can build more tools. I remember the dwarf fortress guys saying this in their interview, that they had at some point a similar game to DF but in 3d, but at some point they realized that by not wasting effort building the graphics part of the game they saved time to focus on what mattered.
If I have one tiny criticism about bluetui is the annoying fonts. I understand what they're trying to do: with more glyphs you can increase the density of information. But the thing is it's not really necessary in this case. Like someone else commented, there's plenty of white space. I know to some people it feels like eye candy, but to me the emojis sprinkled in the text are an eye sore.
pythops 3 hours ago [-]
bluetui author here.
> It made me really happy how a tool so simple makes such a huge difference in terms of how smooth it is to solve a problem,
Happy to hear that :)
> if I have one tiny criticism about bluetui is the annoying fonts
You suggest to get rid of the icons ? what if they can be disabled in the config, will that fix the issue for you ?
> there's plenty of white space
You can set the window width from the config file (width = positive integer) if you don't want the TUI to be responsive.
PostOnce 44 minutes ago [-]
I think the icons are cool.
Emoji in text is annoying, but this isn't a page of text, it's a UI element, and that can make something clear especially if you're connecting a device whose name is unknown, but you know it's a speaker, or whatever.
So having the option to enable / disable is better than taking away the icons, in my opinion.
alias_neo 36 minutes ago [-]
Absolutely this. Particularly when there might be a few unnamed devices, but you know your devices is a particular device class, you can guesstimate the correct device based on its class, and the icon is extremely useful for this!
bfkwlfkjf 10 minutes ago [-]
> what if they can be disabled in the config, will that fix the issue for you ?
I mean if you're offering, I would love that.
And thank you for releasing under GPL. <3
rjzzleep 6 hours ago [-]
I don't usually comment on these things. But this is phenomenal. I really like that the person that did this thought about a simple space for connect and enter for disconnect. I use rofi based tool whenever I don't feel like using my mouse and frequently disconnect because I toggled something that was already connecting.
The same happens when connecting or disconnecting from VPN using the nm applet. This is a simple but extremely useful way of separating two states.
pythops 3 hours ago [-]
Bluetui author here
Happy to hear that :)
hsbauauvhabzb 1 hours ago [-]
Have you considered a network manager? Weirdly enough I have no trouble connecting to a Bluetooth device via bluetoothctl, I can never remember how to disable wifi, or set a static ip though
Its written in python using the textual framework and displays the connections inline in your Terminal.
nevon 5 hours ago [-]
Used this the other day when for whatever reason Gnome's built-in bluetooth GUI refused to connect to my headphones. Very nice and easy to use.
kachapopopow 5 hours ago [-]
I wonder why omarchy isn't using this yet.
kachapopopow 5 hours ago [-]
I found out: it used to be a lot less intuitive
hombre_fatal 7 hours ago [-]
Much better than bluetuith which has weirdly bad UI/keybindings.
general1465 2 hours ago [-]
I have tried to install it and got absolutely nowhere.
1. sudo apt install cargo on latest ubuntu and on attempt to "cargo install bluetui" it will say something about edition 2024 error. Because ubuntu is installing rust from 2023 and nobody bothered to update it?
2. Installing from https://rust-lang.org/tools/install/ will install rust only after removing existing version from 2023 (Why you won't just rewrite it?). Now I don't have cargo at all.
3. On attempt to use rustup it will tell me that path was not found. I need separate installation?
I am sorry but WTF is this garbage? Seems like whole rust ecosystem is broken...
Apt packages are managed by the OS so its normal they don't get overwritten by tools you download of the internet directly as that could break other apps installed with apt. As a general rule, don't use coding tools from apt as they are normally out of date, install them from other sources
skydhash 19 minutes ago [-]
I had similar with just (a make replacement) and debian 12. It seems requiring the latest of everything is the latest trend of rust ecosystem.
baobun 38 minutes ago [-]
You could use docker to build and then run the resulting binary without.
imiric 2 hours ago [-]
Heh, my sympathies.
Have you tried mise[1]? The last thing you probably want is to add another abstraction on top of this mess, but I've had good experiences with it, and it manages Rust, Go, Python, etc. environments very well.
IME getting any modern toolchain setup on different distros can be problematic, especially if you mix in the often outdated distro packages. So using isolated environments with a tool specifically built for that works better.
I currently use `bluetoothctl` with a wrapper script and `expect` so that I can quickly fire off `bluetooth.sh <device name substring>`, and it does the tedium of ensuring that the connection is established regardless of my audio settings. I do still use `bluetoothctl` for manually scanning and pairing, but once a device is paired, I don't run it directly. So it would be great if I could solve both things with the same tool.
I would only really need an interactive TUI for scanning and pairing. Maybe not even for that. E.g. if I run `bt pair <some device name>` then the tool could scan available devices and try to pair with one that fuzzily matches the provided name. And `scan` could work in a similar way. E.g. `bt scan --duration 10s` could show found devices within a specific time.
I'm not a big fan of interactive UIs if the same can be accomplished non-interactively. This allows the tool to be scripted, and can be much quicker to do what you want.
Does such a tool exist for Bluetooth? I'm tempted to whip something up myself, though I really have enough side projects as it is...
imvetri 5 hours ago [-]
does TUI stand for terminal user interface ?
unwind 4 hours ago [-]
My understanding is T for text-based [1], the term is used about e.g. DOS programs too where the text interface is not historically called a terminal.
Yes. The term has been around for at least a few decades, but only became somewhat more widely used in the past decade. Only really known by people who spend a lot of time on the command line.
EgregiousCube 4 hours ago [-]
Not to be confused with CLI, which is literally for people who spend a lot of time on the Command Line :)
gbin 8 hours ago [-]
Yet another impressive rust/ratatui tool! I am really a fan of those projects (kudos to Orhun).
At Copper Robotics we use it for our monitoring console, it is so easy to just ssh on a robot and get all your monitoring state in super snappy TUI screens instead of web stuff.
userbinator 5 hours ago [-]
Why not show the device address? There's plenty of room for it and it's important when you have multiple devices with the same name. Or has the abominable trend of excess whitespace infected TUIs too?
dymk 4 hours ago [-]
There's probably nicer ways to express that criticism
userbinator 3 hours ago [-]
I've absolutely had it with shit "designer" UIs hiding useful information and leaving a sea of useless space instead. There's nothing "nicer" about making users go through more effort.
lysp 3 hours ago [-]
That has nothing to do with this author and everything to do with you.
maeln 52 minutes ago [-]
It's open source, you can fork it :)
spookie 1 hours ago [-]
Have you thought that you may want the window for this to be super small and that whitespace you see no longer exists?
pythops 23 minutes ago [-]
bluetui author there
You can set a window with in the config file (with = positive integer) and TUI will be displayed with this width even in a large screen.
It's a plague under TUI go software too made with Bubbletea. Also, with some mesh related interfaces written in Python. Both slow and with a shitty interface not properly working under an 80x24 terminal with 16 colours.
I remember some hipster fauxretro player with just some playlist made of m3u links, written in Go. The visualization animations made it unusable under my n270 CPU based netbook. Meanwhile, the playlist URL's from the code played perfectly well under mocp with a really low CPU usage. Oh, you want bells and whistles? I think the Cava terminal visualizer can work with MPD and plug any CLI/TUI client you like.
skydhash 4 minutes ago [-]
Hardcoding any color than base16 is usually a poor choice. It should be up to the user to use any other color.
And colors should be semantic. If you don’t have any theming ability, just use reverse video to indicate selected state.
My current pet peeve is cli tools using ansi codes for progress bar. And with very poor detection of terminals.
Rendered at 10:19:53 GMT+0000 (Coordinated Universal Time) with Vercel.
It also occurred to me that there's a real value to tuis vs guis which is that since they're simpler to build with the same developer effort you can build more tools. I remember the dwarf fortress guys saying this in their interview, that they had at some point a similar game to DF but in 3d, but at some point they realized that by not wasting effort building the graphics part of the game they saved time to focus on what mattered.
If I have one tiny criticism about bluetui is the annoying fonts. I understand what they're trying to do: with more glyphs you can increase the density of information. But the thing is it's not really necessary in this case. Like someone else commented, there's plenty of white space. I know to some people it feels like eye candy, but to me the emojis sprinkled in the text are an eye sore.
> It made me really happy how a tool so simple makes such a huge difference in terms of how smooth it is to solve a problem,
Happy to hear that :)
> if I have one tiny criticism about bluetui is the annoying fonts
You suggest to get rid of the icons ? what if they can be disabled in the config, will that fix the issue for you ?
> there's plenty of white space You can set the window width from the config file (width = positive integer) if you don't want the TUI to be responsive.
Emoji in text is annoying, but this isn't a page of text, it's a UI element, and that can make something clear especially if you're connecting a device whose name is unknown, but you know it's a speaker, or whatever.
So having the option to enable / disable is better than taking away the icons, in my opinion.
I mean if you're offering, I would love that.
And thank you for releasing under GPL. <3
The same happens when connecting or disconnecting from VPN using the nm applet. This is a simple but extremely useful way of separating two states.
https://github.com/Zaloog/blueutil-tui
Its written in python using the textual framework and displays the connections inline in your Terminal.
1. sudo apt install cargo on latest ubuntu and on attempt to "cargo install bluetui" it will say something about edition 2024 error. Because ubuntu is installing rust from 2023 and nobody bothered to update it?
2. Installing from https://rust-lang.org/tools/install/ will install rust only after removing existing version from 2023 (Why you won't just rewrite it?). Now I don't have cargo at all.
3. On attempt to use rustup it will tell me that path was not found. I need separate installation?
I am sorry but WTF is this garbage? Seems like whole rust ecosystem is broken...
Apt packages are managed by the OS so its normal they don't get overwritten by tools you download of the internet directly as that could break other apps installed with apt. As a general rule, don't use coding tools from apt as they are normally out of date, install them from other sources
Have you tried mise[1]? The last thing you probably want is to add another abstraction on top of this mess, but I've had good experiences with it, and it manages Rust, Go, Python, etc. environments very well.
IME getting any modern toolchain setup on different distros can be problematic, especially if you mix in the often outdated distro packages. So using isolated environments with a tool specifically built for that works better.
[1]: https://mise.jdx.dev/
Is there a non-interactive CLI as well?
I currently use `bluetoothctl` with a wrapper script and `expect` so that I can quickly fire off `bluetooth.sh <device name substring>`, and it does the tedium of ensuring that the connection is established regardless of my audio settings. I do still use `bluetoothctl` for manually scanning and pairing, but once a device is paired, I don't run it directly. So it would be great if I could solve both things with the same tool.
I would only really need an interactive TUI for scanning and pairing. Maybe not even for that. E.g. if I run `bt pair <some device name>` then the tool could scan available devices and try to pair with one that fuzzily matches the provided name. And `scan` could work in a similar way. E.g. `bt scan --duration 10s` could show found devices within a specific time.
I'm not a big fan of interactive UIs if the same can be accomplished non-interactively. This allows the tool to be scripted, and can be much quicker to do what you want.
Does such a tool exist for Bluetooth? I'm tempted to whip something up myself, though I really have enough side projects as it is...
[1]: https://en.wikipedia.org/wiki/Text-based_user_interface
You can set a window with in the config file (with = positive integer) and TUI will be displayed with this width even in a large screen.
https://github.com/pythops/bluetui?tab=readme-ov-file#custom...
I remember some hipster fauxretro player with just some playlist made of m3u links, written in Go. The visualization animations made it unusable under my n270 CPU based netbook. Meanwhile, the playlist URL's from the code played perfectly well under mocp with a really low CPU usage. Oh, you want bells and whistles? I think the Cava terminal visualizer can work with MPD and plug any CLI/TUI client you like.
And colors should be semantic. If you don’t have any theming ability, just use reverse video to indicate selected state.
My current pet peeve is cli tools using ansi codes for progress bar. And with very poor detection of terminals.