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.
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.
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?
omarchy is a shitshow. Please stay away from it. It's a disaster waiting to happen. It's the most bloated install script I have ever seen. DHH is fucking liar and taking up all the credit for himself by ripping off of bunch of well established open source projects
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.
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...
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
This kind of thing is what drives advanced users from debian based distros to things like Arch and Nixos. With niche tools like this that don't have official packages, having a easy way for users to share build scripts, and have them managed by the package manager is a life saver.
How long have you been using ubuntu? From my past unpleasant experience of using it, one thing I learned is never rely on apt for package updates. Most will just keep rotting and hardly get any updates. It's the same with debian. Either use install scripts from packages or switch to a much more serious distro like Arch, where packages are always updated
Of all the Rust stuff that I've seen on HN, this is the first one that makes me go "maybe I should learn Rust". Not for the performance aspect, but because it seems so neat to be able to compile to a binary. I went to the releases page, I downloaded bluetui-x86_64-linux-gnu, and it works.
What is with this wave of Text User Interface applications everywhere; and why does dev go through this type of cycle so often? Is it just new gen type behavior, so around 2030 we'll see a new wave of whatever and whatever?
I refuse to be old man who yells at clouds, but I think just like the new gen can't help what comes, neither can I. I just feel so old sometimes because most of the "new ideas" aren't really at all; they just have a different language to describe the same thing.
Highly recommend on macos blueutil and aliasing these with your bluetooth devices IDs to bluetooth on+connect device in one command, bluetooth off. It’s more user friendly than any GUI workflow for repeat devices.
28 comments
[ 3.9 ms ] story [ 50.6 ms ] threadThanks, glad you like it. And yes Big kudos to Orhun !
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.
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.
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. 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
I refuse to be old man who yells at clouds, but I think just like the new gen can't help what comes, neither can I. I just feel so old sometimes because most of the "new ideas" aren't really at all; they just have a different language to describe the same thing.