sboui: ncurses-based UI for SBo package managers (call for testers)
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Use your Q key to exit the README and you will be good to go.
EDIT - Assuming you use vi as I do to read the README's when you use sudo sboui and you browse files you have to exit with ZZ
I never quite figured my way around elvis. While other editors clear the screen before displaying a file, elvis does not seem to do that, whether it is run manually or called from sboui. Therefore, I think this is actually the correct behavior (unless someone tells me that I'm doing it all wrong).
As for workarounds, you can do what I do and just change the vi symlink to point to vim, or you can set the EDITOR or VISUAL environment variable, and sboui will open the files in that instead. For the View README option, it will check the PAGER variable first or default to less.
Is anybody good at creating icons and would like to make one for sboui? I have been working on it and found that I'm not very good at it. I made one that came out alright, but no matter what I do, it always looks a little MS Paint-ish in my eyes.
The basic concept is a gear with something representing text or code inside, and a circular arrow going around the outside of the gear. It's supposed to represent building applications from source. I can send the gimp .xcf file I've been working on if there are any takers. Of course, if you have a better concept, that's good too. The reward would be $0 and a shout-out in the AUTHORS file.
Last edited by montagdude; 11-20-2018 at 02:31 PM.
I ended up learning a very minimal amount of Inkscape and simplified the concept a bit too (totally changed it, actually). That improved things to the point where I think it's passable now. It's supposed to represent, simply, "building," as in building from source. I'm still open to suggestions or submissions. (I uploaded a png here, but the actual icon is svg.)
Last edited by montagdude; 11-21-2018 at 07:38 AM.
I have just released sboui-2.0. It should appear in the next SBo public update, or if you're really itching to try it immediately, you can use the SlackBuild here. I was originally going to make this version 1.2, but by the time I was done, there were enough enhancements that I felt it deserved the 2.0 tag. Here are the major changes:
Implement a menu bar
Add full mouse support
Implement "buttons" on all dialog boxes
Add a .desktop launcher file
Add a system tray notifier for available SBo updates and a cronjob to run --sync periodically (optional, off by default)
Make the built-in package manager (sboui-backend) the default
New command line options: --sync, --upgrade-all, and --upgradable
Startup speed improvements
Various bug fixes and other minor enhancements
As you can probably tell, a lot of this was focused on desktop usage, but a lot of the improvements are relevant for the console/server too.
Since there were a lot of changes, there may still be bugs or room for more improvement, so please try it out and let me know! Also please check out the README that accompanies the SlackBuild to make yourself aware of new build options. Enjoy!
Last edited by montagdude; 11-30-2018 at 09:41 AM.
"Add a system tray notifier for available SBo updates and a cronjob to run --sync periodically (optional, off by default)"
Was this really necessary? SBo only updates on the weekends, once per week
Nope, not necessary we all. Desirable? Possibly. The choice is yours.
To explain a little more, the target users are people like my wife, who will definitely not open up a terminal, log in with su, and then update regularly. But they will click a system tray icon if it appears. As it says, this is totally optional and doesn't even install by default. You have to pass INSTALL_SYSTRAY_NOTIFIER=yes to the SlackBuild script and then add sboui-update-notifier as a startup script for your DE or WM.
Last edited by montagdude; 11-30-2018 at 11:04 AM.
I was going to raise this when I reviewed your SlackBuild. I don't know how you're checking for SBo updates; if it's the RSS feed, hourly is ok, but if it's something heavier like a git pull or rsync, that's rather unfriendly to the server IMO.
I was going to raise this when I reviewed your SlackBuild. I don't know how you're checking for SBo updates; if it's the RSS feed, hourly is ok, but if it's something heavier like a git pull or rsync, that's rather unfriendly to the server IMO.
Hm, I didn't think of that. It's a git pull once per hour (that frequently only because otherwise the cronjob may be missed due to desktop computers commonly being suspended). But does a git pull once per hour really put much load on the server, given that it would already be up to date every time except once per week? If so I will submit an update removing that.
Last edited by montagdude; 11-30-2018 at 05:59 PM.
Use the rss feed to detect an update, *then* do a git pull.
Alright, I'll submit something in the next couple days. I may just remove the cron.hourly script altogether and put instructions in the README about how to set up a @weekly entry in crontab, since those still get executed upon resuming from suspend.
Edit: scratch that, that won't work because there may not be a network connect yet when the cronjob is run right after booting up or resuming from suspend. Going with the RSS feed idea instead.
Last edited by montagdude; 12-01-2018 at 11:05 PM.
Due to the fact that the system tray notifier now checks the ChangeLog to determine whether updates are needed, a new dependency on python-requests was added. However, it and all of its sub-dependencies aren't actually needed unless you set INSTALL_SYSTRAY_NOTIFIER=yes at build time. I forgot to put a note about that in the README, but I will do so for the next update.
Also, I believe that python-requests is in -current already, so this dependency will go away for Slackware 15.0 anyway.
Last edited by montagdude; 12-09-2018 at 06:32 AM.
I tried to compile the latest version of sboui, but received this error message relating to linking libconfig:
Code:
[100%] Linking CXX executable sboui
/usr/bin/ld: CMakeFiles/sboui.dir/src/ColorTheme.cpp.o: in function `ColorTheme::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
ColorTheme.cpp:(.text+0x18ec): undefined reference to `libconfig::Config::lookupValue(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
/usr/bin/ld: ColorTheme.cpp:(.text+0x232b): undefined reference to `libconfig::Config::lookupValue(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
/usr/bin/ld: CMakeFiles/sboui.dir/src/settings.cpp.o: in function `read_config(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
settings.cpp:(.text+0x32d0): undefined reference to `libconfig::Config::lookupValue(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
/usr/bin/ld: settings.cpp:(.text+0x390c): undefined reference to `libconfig::Config::lookupValue(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
/usr/bin/ld: settings.cpp:(.text+0x3941): undefined reference to `libconfig::Config::lookupValue(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
/usr/bin/ld: CMakeFiles/sboui.dir/src/settings.cpp.o:settings.cpp:(.text+0x3976): more undefined references to `libconfig::Config::lookupValue(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const' follow
/usr/bin/ld: CMakeFiles/sboui.dir/src/settings.cpp.o: in function `write_config(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
settings.cpp:(.text+0x4bc0): undefined reference to `libconfig::Setting::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: settings.cpp:(.text+0x4be3): undefined reference to `libconfig::Setting::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: settings.cpp:(.text+0x4c06): undefined reference to `libconfig::Setting::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: settings.cpp:(.text+0x4c29): undefined reference to `libconfig::Setting::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: settings.cpp:(.text+0x4c4c): undefined reference to `libconfig::Setting::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/sboui.dir/src/settings.cpp.o:settings.cpp:(.text+0x4c6f): more undefined references to `libconfig::Setting::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' follow
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/sboui.dir/build.make:852: sboui] Error 1
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/sboui.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
No idea what the problem is. Any help is greatly appreciated. Thanks!
This is on -current, I take it? I've tested it on -current, but not for a couple months now, so maybe something has changed. Just to be sure, can you tell me the version of libconfig you have installed, and I will try to reproduce?
The problem seems to be either that it is not finding the libconfig++ library correctly, or that the library is present but not built correctly. After running the SlackBuild script for sboui, you should be able to find a CMakeCache.txt in /tmp/SBo/sboui-2.0.1/build. In that file, check the value of LIBCONFIG++_LIBRARY. Here it is /usr/lib64/libconfig++.so. Then check that the symbols it's complaining about are actually being exported by the library, for example:
This is on -current, I take it? I've tested it on -current, but not for a couple months now, so maybe something has changed. Just to be sure, can you tell me the version of libconfig you have installed, and I will try to reproduce?
The problem seems to be either that it is not finding the libconfig++ library correctly, or that the library is present but not built correctly. After running the SlackBuild script for sboui, you should be able to find a CMakeCache.txt in /tmp/SBo/sboui-2.0.1/build. In that file, check the value of LIBCONFIG++_LIBRARY. Here it is /usr/lib64/libconfig++.so. Then check that the symbols it's complaining about are actually being exported by the library, for example:
0000000000010660 T _ZNK9libconfig6Config11lookupValueEPKcRS2_
00000000000106a0 T _ZNK9libconfig6Config11lookupValueEPKcRSs
00000000000103a0 T _ZNK9libconfig6Config11lookupValueEPKcRb
00000000000105a0 T _ZNK9libconfig6Config11lookupValueEPKcRd
0000000000010600 T _ZNK9libconfig6Config11lookupValueEPKcRf
0000000000010400 T _ZNK9libconfig6Config11lookupValueEPKcRi
0000000000010460 T _ZNK9libconfig6Config11lookupValueEPKcRj
00000000000104c0 T _ZNK9libconfig6Config11lookupValueEPKcRx
0000000000010530 T _ZNK9libconfig6Config11lookupValueEPKcRy
0000000000011570 T _ZNK9libconfig7Setting11lookupValueEPKcRS2_
00000000000115b0 T _ZNK9libconfig7Setting11lookupValueEPKcRSs
00000000000113b0 T _ZNK9libconfig7Setting11lookupValueEPKcRb
00000000000114f0 T _ZNK9libconfig7Setting11lookupValueEPKcRd
0000000000011530 T _ZNK9libconfig7Setting11lookupValueEPKcRf
00000000000113f0 T _ZNK9libconfig7Setting11lookupValueEPKcRi
0000000000011430 T _ZNK9libconfig7Setting11lookupValueEPKcRj
0000000000011470 T _ZNK9libconfig7Setting11lookupValueEPKcRx
00000000000114b0 T _ZNK9libconfig7Setting11lookupValueEPKcRy
Not CMakeLists.txt, but CMakeCache.txt, in the build/ directory. It looks like libconfig++ is built correctly from your other output, so I'm curious as to why it is not linking.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.