A fork of suleman1971/boinctui, the
ncurses console manager for the BOINC client, with some fixes and one new
feature. Everything here is on branches; master is upstream plus this file.
This is not the official boinctui. For releases, packages and support, go to upstream. Nothing here has been proposed upstream yet.
I run BOINC across a number of machines and use boinctui daily. A couple of
things got in my way, so I fixed them, and rather than keep the patches on my
own disk and hand them round as .deb files, they may as well be somewhere
people can read them, build them, or take them.
To the maintainer: please help yourself to any of this, in whole or in part, with or without attribution. The commits are kept separate and each one stands alone so they can be cherry-picked individually. If you would rather have any of it as a pull request, say so and I will open one.
Task counts above 999 were clipped. The info panel formatted them with %3d
into a 20-column window, so a host with 1016 tasks reported nonsense, and the
task list's row-number column was too narrow to keep rows aligned once the
count reached four digits.
Field tested against a live client holding 1016 tasks.
| commit | |
|---|---|
444e7e5 |
Fix task counts >999 being clipped in info panel |
e3a42a4 |
Changelog entry for the local package build, and a .gitignore |
Two commits, and the first is worth having on its own:
| commit | |
|---|---|
b7c60f3 |
Fix RPC requests longer than 1KB being silently truncated |
1a954d6 |
Add an Options menu for client preferences |
The 1KB fix is an upstream bug and is independent of the feature. Both
request paths wrote into a fixed char[1024]. Srv::req() built the
<boinc_gui_rpc_request> envelope with strcpy/strcat and no bound at all;
TConnect::sendreq() used vsnprintf, which stayed in bounds but quietly cut
the request short. Either way the client receives malformed XML and the
operation fails without logging anything useful. It is reachable by anything
that sends a large request — a full preference set is comfortably over 1KB.
Srv::req() now builds the envelope in a std::string, and sendreq()
measures with vsnprintf(NULL, 0, ...) and allocates to fit.
The Options feature is the part that is a matter of taste. boinctui could
display the client's preferences but not change them, so adjusting a CPU or
disk limit meant leaving the terminal. F9 → Options opens a form for the four
settings that actually get adjusted — CPU usage %, work buffer days, disk usage
% and RAM % — reading current values with <get_global_prefs_working/> so the
form opens showing what is in force. Writes go through
set_global_prefs_override, merged into any existing override rather than
replacing it, so a hand-edited global_prefs_override.xml keeps the keys this
form does not manage. There is a "Clear local overrides" action that removes
the file and returns the host to its project/venue defaults. Up/Down move
between fields, which the existing forms did not support.
This branch is based on fix-task-count-display, so it carries that fix too.
Same as upstream — autotools, no extra dependencies beyond what boinctui already needs:
sudo apt install autoconf libncurses-dev libssl-dev libexpat1-dev
git clone -b client-settings https://github.com/lblanchardiii/boinctui.git
cd boinctui
autoreconf -i
./configure
make
sudo make installSwap the branch name for fix-task-count-display if you only want the task
count fix. Both branches carry a debian/changelog entry, so
dpkg-buildpackage -b -uc -us produces an identifiable package rather than one
that collides with the distribution's.
Note that make install writes /usr/bin/boinctui, which on Debian and Ubuntu
is the same path the boinctui package owns — dpkg will then report the file
as modified. Building the .deb avoids that.
GPL-3.0, same as upstream. boinctui is the work of its original author and contributors; the changes on these branches are mine and are offered under the same terms.