# Laptop/desktop hardware management TUIs?



## irkkaaja (Apr 8, 2020)

FreeBSD developers and users interested in using FreeBSD on the desktop often complain that hardware management utilities in major desktop environments (such as Network Manager) don't do a very good job of supporting FreeBSD or any system but Linux. To date we don't have many workarounds.

FreeBSD is a "complete operating system", but it consciously chooses not to include a GUI layer, preferring to depend on X. This makes sense, because developing a complete GUI would be a lot of extra work, and the team is spread thinly as it is. Personally I think the FreeBSD philosophy of completeness is pretty good, and has advantages for desktop users, even though it is rarely used on the desktop and even less on laptops.

However, I also believe that _managing hardware_ is an essential feature of any operating system. I also don't think it's entirely reasonable to expect desktop users to work entirely through ifconfig(8), especially because getting some things to work smoothly (e.g., prompting the user after they enter a mistyped password) can require scripting. In addition to WiFi, another example is mounting peripheral (usually USB) storage; others are sound, printing, camera, etc. In all of these cases FreeBSD desktop users often find themselves at the mercy of GNOME and KDE to help manage relatively low-level features of their operating system.

Maybe you believe that FreeBSD on a laptop simply _can't_ be that easy, but I retort: why make it harder than it _needs_ to be?

FreeBSD has had success with a TUI-based installer that includes menus and suggested configurations for years now. In fact, setting up WiFi through bsdinstall(8) is usually easier than using ifconfig. I think this might be considered suggestive. It is not necessary for FreeBSD to have its own GUI libraries in order to provide an interface which is dramatically easier than shell commands. ncurses will do.

So my suggestion is to build TUI utilities which can negate the need for any GUI hardware management utilities, and my hope is that such interfaces can be integrated into the FreeBSD project without diverting too much maintainer attention from the more "interesting" parts of operating system development. This would free us from the cruel reign of the desktop environments. In the case of WiFi, the network setup in bsdinstall already provides a good starting point.

Of course some of you have been holding in a thought: "_write it yourself!_". I am certainly considering that. But if I were to do so, I would much prefer to see the possibility that all FreeBSD-on-the-laptop users could benefit from my work, rather than creating a small side-project that nobody will ever notice. So I need your feedback.

Also, it would have to be rolled in together with my other seven side projects and two jobs


----------



## shkhln (Apr 8, 2020)

What is this doing in the feedback section?


----------



## irkkaaja (Apr 8, 2020)

shkhln said:


> What is this doing in the feedback section?


I read through the other forums and this seemed like the best place. Is this only for feedback and suggestions about the forum itself? If so, I apologize.


----------



## shkhln (Apr 8, 2020)

Yes, this is the forum feedback section. There is no section for suggestions for FreeBSD itself because such discussions usually take place on the FreeBSD mailing lists. Or IRC. Or pretty much anywhere other than this place.


----------



## irkkaaja (Apr 8, 2020)

> on the FreeBSD mailing lists


Thanks. I will post there, but for now, hopefully I can get some input from the sort of people who are not familiar with mailing lists?


----------



## PMc (Apr 10, 2020)

Well, I think this is not a bad idea. In fact, I am occasionally doing just that: if something bothers me to configure again and again, I put it in a script, and if that needs multiple options, I put them in ncurses. This is done with the dialog(1) program which is part of the base OS. 
I might suppose an approach to achieve your intended thing is that somebody would just write it, then it might be distrbuted as a port, and then if it happens to be essential, it might be included in base os.


----------

