From ebc6edc0c3662d4b0e4d6c2ec938fa38b93a77e4 Mon Sep 17 00:00:00 2001 From: Floris Bos Date: Tue, 15 Nov 2022 01:10:46 +0100 Subject: [PATCH] Advanced settings: use current username instead of Pi as default Instead of using 'pi' as default, try to get the username of the current user from the OS. May not always work. (e.g. some Windows users may not have setup a username themselves, but may be using a default user created by the PC vendor). Closes #497 --- src/OptionsPopup.qml | 3 +++ src/imagewriter.cpp | 20 ++++++++++++++++++++ src/imagewriter.h | 1 + 3 files changed, 24 insertions(+) diff --git a/src/OptionsPopup.qml b/src/OptionsPopup.qml index 2498ac2..d7458d5 100644 --- a/src/OptionsPopup.qml +++ b/src/OptionsPopup.qml @@ -478,7 +478,10 @@ Popup { if ('sshUserName' in settings) { fieldUserName.text = settings.sshUserName chkSetUser.checked = true + } else { + fieldUserName.text = imageWriter.getCurrentUser() } + if ('wifiSSID' in settings) { fieldWifiSSID.text = settings.wifiSSID if ('wifiSSIDHidden' in settings && settings.wifiSSIDHidden) { diff --git a/src/imagewriter.cpp b/src/imagewriter.cpp index c598d84..b4f2557 100644 --- a/src/imagewriter.cpp +++ b/src/imagewriter.cpp @@ -1232,6 +1232,26 @@ QString ImageWriter::detectPiKeyboard() return QString(); } +QString ImageWriter::getCurrentUser() +{ + QString user = qgetenv("USER"); + + if (user.isEmpty()) + user = qgetenv("USERNAME"); + + user = user.toLower(); + if (user.contains(" ")) + { + auto names = user.split(" "); + user = names.first(); + } + + if (user.isEmpty() || user == "root") + user = "pi"; + + return user; +} + bool ImageWriter::hasMouse() { return !_embeddedMode || QFile::exists("/dev/input/mouse0"); diff --git a/src/imagewriter.h b/src/imagewriter.h index f8bb878..380c944 100644 --- a/src/imagewriter.h +++ b/src/imagewriter.h @@ -117,6 +117,7 @@ public: Q_INVOKABLE QStringList getTranslations(); Q_INVOKABLE QString getCurrentLanguage(); Q_INVOKABLE QString getCurrentKeyboard(); + Q_INVOKABLE QString getCurrentUser(); Q_INVOKABLE void changeLanguage(const QString &newLanguageName); Q_INVOKABLE void changeKeyboard(const QString &newKeymapLayout); Q_INVOKABLE bool customRepo();