* Also use PKEXEC_UID to get username
Privilege elevation can occur through pkexec, where many environment
variables are not accessible.
This fixes the following problem - if howdy-gtk is run without sudo,
authorization occurs via pkexec, and the user variable is empty. So when
adding the first model, it is unclear to which user to add it.
* Update the container when the slide changes
In some GTK themes, when we change a slide, we see a blank window
because there is nothing to trigger the size update, and the slide is
displayed at zero size. Let's force a size update so that it always
works.
* Remove reading of non-existent '_variables' file
* More correct preview when stretching the window
The "Video" tab layout did not display correctly when resizing the
window.
* Don't add a model if the user list is empty
The list of users may be empty, and if you try to add a model, a string
concatenation error with None will occur.
For simplicity and consistency with the "Delete" button, we simply check
the size of the list after clicking.
* Show real camera ID in the 'Video' tab
* Handle the case if there are no cameras via except
Otherwise, when trying to read the /dev/v4l/by-path directory, an
exception is thrown and the program visually freezes.
On all test machines available to me (3), the "map" event was apparently
fired before the "Please look directly into the camera" dialog was
finally created. Therefore, the dialog was not displayed at all when
scanning a face, and a segfault occurred when calling destroy().
Copied the code from onboarding.py, it works well there.