|
1 | 1 | // Copyright (C) 2020 ~ 2021 Uniontech Software Technology Co.,Ltd. |
2 | | -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. |
| 2 | +// SPDX-FileCopyrightText: 2022 - 2026 UnionTech Software Technology Co., Ltd. |
3 | 3 | // |
4 | 4 | // SPDX-License-Identifier: GPL-3.0-or-later |
5 | 5 |
|
@@ -241,6 +241,35 @@ void Utils::showCurrentSys() |
241 | 241 | //qDebug() << "udpateVersion: " << DSysInfo::udpateVersion(); |
242 | 242 | //qDebug() << "majorVersion: " << DSysInfo::majorVersion(); |
243 | 243 | //qDebug() << "majorVersion: " << DSysInfo::majorVersion(); |
| 244 | + qInfo() << "isVirtualMachine: " << isRunningInVirtualMachine(); |
| 245 | +} |
| 246 | + |
| 247 | +//Detect whether running in a virtual machine |
| 248 | +bool Utils::isRunningInVirtualMachine(bool forceVirtualMachine) |
| 249 | +{ |
| 250 | + QProcess process; |
| 251 | + process.start("/usr/bin/systemd-detect-virt"); |
| 252 | + process.waitForFinished(); |
| 253 | + QString output = process.readAllStandardOutput().trimmed(); |
| 254 | + |
| 255 | + // Print the output of systemd-detect-virt command |
| 256 | + qInfo() << "systemd-detect-virt output: " << output; |
| 257 | + |
| 258 | + // none: not a virtual machine |
| 259 | + // kvm, vmware, virtualbox, xen, qemu, etc.: virtual machine |
| 260 | + // empty output: also considered as not a virtual machine |
| 261 | + if (forceVirtualMachine) { |
| 262 | + qInfo() << "Force treat as virtual machine"; |
| 263 | + return true; |
| 264 | + } |
| 265 | + |
| 266 | + if (output.isEmpty() || output.toLower() == "none") { |
| 267 | + qInfo() << "Running on physical machine, not a virtual machine"; |
| 268 | + return false; |
| 269 | + } else { |
| 270 | + qInfo() << "Running in a virtual machine, type:" << output; |
| 271 | + return true; |
| 272 | + } |
244 | 273 | } |
245 | 274 | void Utils::enableXGrabButton() |
246 | 275 | { |
|
0 commit comments