diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index a7c72ce69..a757f5d5a 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -3,6 +3,7 @@ * Copyright 2014-2017, Teo Mrnjavac * Copyright 2017-2018, Adriaan de Groot * Copyright 2019, Collabora Ltd + * Copyright 2020, Gabriel Craciunescu * * Portions from the Manjaro Installation Framework * by Roland Singer @@ -40,6 +41,7 @@ #include "utils/String.h" #include +#include #include #include #include @@ -303,7 +305,27 @@ UsersPage::fillSuggestions() { if ( !cleanParts.isEmpty() && !cleanParts.first().isEmpty() ) { - QString hostnameSuggestion = QString( "%1-pc" ).arg( cleanParts.first() ); + + QString dmiProductName; + QString hostnameSuggestion; + // yes validateHostnameText() but these files can be a mess + QRegExp dmirx( "[^a-zA-Z0-9]", Qt::CaseInsensitive ); + QFile dmiFile( QStringLiteral( "/sys/devices/virtual/dmi/id/product_name" ) ); + + if ( dmiFile.exists() && + dmiFile.open(QIODevice::ReadOnly)) + { + dmiProductName = QString::fromLocal8Bit( dmiFile.readAll().simplified().data() ) + .toLower().replace(dmirx, " ").remove(' '); + } + if ( !dmiProductName.isEmpty() ) + { + hostnameSuggestion = QString( "%1-%2" ).arg( cleanParts.first() ).arg( dmiProductName ); + } + else + { + hostnameSuggestion = QString( "%1-pc" ).arg( cleanParts.first() ); + } if ( HOSTNAME_RX.indexIn( hostnameSuggestion ) != -1 ) { ui->textBoxHostname->setText( hostnameSuggestion );