mirror of
https://github.com/hyprwm/hyprland-welcome.git
synced 2025-05-13 05:40:37 +01:00
various layout fixes
This commit is contained in:
parent
ab3283b903
commit
80fddebf86
5 changed files with 348 additions and 262 deletions
|
@ -38,7 +38,7 @@ else()
|
||||||
else()
|
else()
|
||||||
add_executable(HyprlandWelcome
|
add_executable(HyprlandWelcome
|
||||||
${PROJECT_SOURCES}
|
${PROJECT_SOURCES}
|
||||||
Logo.qrc
|
assets/Logo.qrc
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
5
Logo.qrc
5
Logo.qrc
|
@ -1,5 +0,0 @@
|
||||||
<RCC>
|
|
||||||
<qresource prefix="/assets">
|
|
||||||
<file>assets/logobanner.png</file>
|
|
||||||
</qresource>
|
|
||||||
</RCC>
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
QWidget* findByName(QString name) {
|
QWidget* findByName(QString name) {
|
||||||
QList<QWidget*> widgets = QApplication::allWidgets();
|
QList<QWidget*> widgets = QApplication::allWidgets();
|
||||||
|
@ -47,10 +48,12 @@ struct SAppCheck {
|
||||||
std::vector<std::string> binaryNames;
|
std::vector<std::string> binaryNames;
|
||||||
std::vector<std::string> binaryPaths;
|
std::vector<std::string> binaryPaths;
|
||||||
std::string name;
|
std::string name;
|
||||||
QLabel* label = nullptr;
|
QLabel* label = nullptr;
|
||||||
bool needsAllInstalled = false;
|
bool needsAllInstalled = false;
|
||||||
bool needsAllRunning = false;
|
bool needsAllRunning = false;
|
||||||
std::vector<std::string> runningNames;
|
std::vector<std::string> runningNames;
|
||||||
|
|
||||||
|
std::string currentText = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
std::vector<SAppCheck> appChecks;
|
std::vector<SAppCheck> appChecks;
|
||||||
|
@ -68,8 +71,12 @@ void CHyprlandWelcome::startAppTimer() {
|
||||||
{"/usr/lib/xdg-desktop-portal", "/usr/lib/xdg-desktop-portal-hyprland", "/usr/lib/xdg-desktop-portal-gtk", "/usr/libexec/xdg-desktop-portal",
|
{"/usr/lib/xdg-desktop-portal", "/usr/lib/xdg-desktop-portal-hyprland", "/usr/lib/xdg-desktop-portal-gtk", "/usr/libexec/xdg-desktop-portal",
|
||||||
"/usr/libexec/xdg-desktop-portal-hyprland", "/usr/libexec/xdg-desktop-portal-gtk"},
|
"/usr/libexec/xdg-desktop-portal-hyprland", "/usr/libexec/xdg-desktop-portal-gtk"},
|
||||||
"XDG Desktop Portal*",
|
"XDG Desktop Portal*",
|
||||||
(QLabel*)findByName("INSTALL_XDP"), false, true, {"xdg-desktop-portal", "xdg-desktop-portal-hyprland"}});
|
(QLabel*)findByName("INSTALL_XDP"),
|
||||||
appChecks.push_back(SAppCheck{{}, {"/usr/lib/polkit-kde-authentication-agent-1"}, "Authentication Agent", (QLabel*)findByName("INSTALL_AUTH"), false, false, {"polkit-kde-authentication-agent-1"}});
|
false,
|
||||||
|
true,
|
||||||
|
{"xdg-desktop-portal", "xdg-desktop-portal-hyprland"}});
|
||||||
|
appChecks.push_back(SAppCheck{
|
||||||
|
{}, {"/usr/lib/polkit-kde-authentication-agent-1"}, "Authentication Agent", (QLabel*)findByName("INSTALL_AUTH"), false, false, {"polkit-kde-authentication-agent-1"}});
|
||||||
appChecks.push_back(SAppCheck{{"qtwaylandscanner"}, {}, "QT Wayland Support", (QLabel*)findByName("INSTALL_QTW")});
|
appChecks.push_back(SAppCheck{{"qtwaylandscanner"}, {}, "QT Wayland Support", (QLabel*)findByName("INSTALL_QTW")});
|
||||||
appChecks.push_back(SAppCheck{{"kitty", "wezterm", "alacritty", "foot", "konsole", "gnome-terminal"}, {}, "Terminal", (QLabel*)findByName("INSTALL_TERM")});
|
appChecks.push_back(SAppCheck{{"kitty", "wezterm", "alacritty", "foot", "konsole", "gnome-terminal"}, {}, "Terminal", (QLabel*)findByName("INSTALL_TERM")});
|
||||||
appChecks.push_back(SAppCheck{{"qt5ct", "qt6ct"}, {}, "QT Theming", (QLabel*)findByName("INSTALL_QTTHEME")});
|
appChecks.push_back(SAppCheck{{"qt5ct", "qt6ct"}, {}, "QT Theming", (QLabel*)findByName("INSTALL_QTTHEME")});
|
||||||
|
@ -79,55 +86,90 @@ void CHyprlandWelcome::startAppTimer() {
|
||||||
if (this->currentTab != 1)
|
if (this->currentTab != 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
appScanMutex.lock();
|
||||||
|
|
||||||
for (const auto& app : appChecks) {
|
for (const auto& app : appChecks) {
|
||||||
std::vector<std::string> found;
|
if (app.currentText.empty())
|
||||||
std::vector<std::string> runningApps;
|
continue;
|
||||||
bool running = false;
|
app.label->setText(QString::fromStdString(app.currentText));
|
||||||
for (const auto& bin : app.binaryNames) {
|
|
||||||
if (appExists(bin))
|
|
||||||
found.push_back(bin);
|
|
||||||
|
|
||||||
if (app.runningNames.empty() && appIsRunning(bin)) {
|
|
||||||
runningApps.push_back(bin);
|
|
||||||
running = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!app.runningNames.empty()) for (const auto& bin : app.runningNames) {
|
|
||||||
if (appIsRunning(bin)) {
|
|
||||||
runningApps.push_back(bin);
|
|
||||||
running = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const auto& bin : app.binaryPaths) {
|
|
||||||
if (binExists(bin))
|
|
||||||
found.push_back(bin);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((found.empty() && !running) || (app.needsAllInstalled && found.size() != app.binaryNames.size() + app.binaryPaths.size())) {
|
|
||||||
app.label->setText(QString::fromStdString("<html><head/><body><p><span style=\" color:#ff0000;\">❌</span> " + app.name + "</p></body></html>"));
|
|
||||||
} else if (app.needsAllRunning && runningApps.size() != (app.runningNames.empty() ? app.binaryNames : app.runningNames).size()) {
|
|
||||||
app.label->setText(QString::fromStdString("<html><head/><body><p><span style=\" color:#ff0000;\">❌</span> " + app.name + ": Found all, but not running.</p></body></html>"));
|
|
||||||
} else if (!running) {
|
|
||||||
std::string text = "<html><head/><body><p><span style=\" color:#00ff00;\">✔️</span> " + app.name + ": <span style=\" color:#00ff00;\">found</span> ";
|
|
||||||
for (auto& f : found)
|
|
||||||
text += f + ", ";
|
|
||||||
text.pop_back();
|
|
||||||
text.pop_back();
|
|
||||||
text += "</p></body></html>";
|
|
||||||
app.label->setText(QString::fromStdString(text));
|
|
||||||
} else {
|
|
||||||
std::string text = "<html><head/><body><p><span style=\" color:#00ffff;\">✔️</span> " + app.name + ": <span style=\" color:#00ffff;\">running</span> ";
|
|
||||||
for (auto& f : runningApps)
|
|
||||||
text += f + ", ";
|
|
||||||
text.pop_back();
|
|
||||||
text.pop_back();
|
|
||||||
text += "</p></body></html>";
|
|
||||||
app.label->setText(QString::fromStdString(text));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
appScanMutex.unlock();
|
||||||
});
|
});
|
||||||
timer->start(1000);
|
timer->start(1000);
|
||||||
|
|
||||||
|
std::thread t([this]() {
|
||||||
|
while (true) {
|
||||||
|
|
||||||
|
if (exit)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (currentTab != 1) {
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto& app : appChecks) {
|
||||||
|
std::vector<std::string> found;
|
||||||
|
std::vector<std::string> runningApps;
|
||||||
|
bool running = false;
|
||||||
|
for (const auto& bin : app.binaryNames) {
|
||||||
|
if (appExists(bin))
|
||||||
|
found.push_back(bin);
|
||||||
|
|
||||||
|
if (app.runningNames.empty() && appIsRunning(bin)) {
|
||||||
|
runningApps.push_back(bin);
|
||||||
|
running = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!app.runningNames.empty())
|
||||||
|
for (const auto& bin : app.runningNames) {
|
||||||
|
if (appIsRunning(bin)) {
|
||||||
|
runningApps.push_back(bin);
|
||||||
|
running = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const auto& bin : app.binaryPaths) {
|
||||||
|
if (binExists(bin))
|
||||||
|
found.push_back(bin);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((found.empty() && !running) || (app.needsAllInstalled && found.size() != app.binaryNames.size() + app.binaryPaths.size())) {
|
||||||
|
appScanMutex.lock();
|
||||||
|
app.currentText = "<html><head/><body><p><span style=\" color:#ff0000;\">❌</span> " + app.name + "</p></body></html>";
|
||||||
|
appScanMutex.unlock();
|
||||||
|
} else if (app.needsAllRunning && runningApps.size() != (app.runningNames.empty() ? app.binaryNames : app.runningNames).size()) {
|
||||||
|
appScanMutex.lock();
|
||||||
|
app.currentText = "<html><head/><body><p><span style=\" color:#ff0000;\">❌</span> " + app.name + ": Found all, but not running.</p></body></html>";
|
||||||
|
appScanMutex.unlock();
|
||||||
|
} else if (!running) {
|
||||||
|
std::string text = "<html><head/><body><p><span style=\" color:#00ff00;\">✔️</span> " + app.name + ": <span style=\" color:#00ff00;\">found</span> ";
|
||||||
|
for (auto& f : found)
|
||||||
|
text += f + ", ";
|
||||||
|
text.pop_back();
|
||||||
|
text.pop_back();
|
||||||
|
text += "</p></body></html>";
|
||||||
|
appScanMutex.lock();
|
||||||
|
app.currentText = text;
|
||||||
|
appScanMutex.unlock();
|
||||||
|
} else {
|
||||||
|
std::string text = "<html><head/><body><p><span style=\" color:#00ffff;\">✔️</span> " + app.name + ": <span style=\" color:#00ffff;\">running</span> ";
|
||||||
|
for (auto& f : runningApps)
|
||||||
|
text += f + ", ";
|
||||||
|
text.pop_back();
|
||||||
|
text.pop_back();
|
||||||
|
text += "</p></body></html>";
|
||||||
|
appScanMutex.lock();
|
||||||
|
app.currentText = text;
|
||||||
|
appScanMutex.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::this_thread::sleep_for(std::chrono::seconds(1));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
t.detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getDataStatePath() {
|
std::string getDataStatePath() {
|
||||||
|
@ -145,6 +187,7 @@ std::string getDataStatePath() {
|
||||||
void CHyprlandWelcome::exitDontShowAgain() {
|
void CHyprlandWelcome::exitDontShowAgain() {
|
||||||
const auto STATEPATH = getDataStatePath();
|
const auto STATEPATH = getDataStatePath();
|
||||||
if (STATEPATH.empty()) {
|
if (STATEPATH.empty()) {
|
||||||
|
exit = true;
|
||||||
QApplication::exit(0);
|
QApplication::exit(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -155,6 +198,7 @@ void CHyprlandWelcome::exitDontShowAgain() {
|
||||||
std::filesystem::create_directories(STATEPATH);
|
std::filesystem::create_directories(STATEPATH);
|
||||||
|
|
||||||
execAndGet("echo \"noshow\" > " + CONFPATH);
|
execAndGet("echo \"noshow\" > " + CONFPATH);
|
||||||
|
exit = true;
|
||||||
QApplication::exit(0);
|
QApplication::exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +212,10 @@ CHyprlandWelcome::CHyprlandWelcome(QWidget* parent) : QMainWindow(parent), ui(ne
|
||||||
QObject::connect(WIKIBUTTON, &QPushButton::clicked, [] { QDesktopServices::openUrl(QString{"https://wiki.hyprland.org/Configuring/Configuring-Hyprland/"}); });
|
QObject::connect(WIKIBUTTON, &QPushButton::clicked, [] { QDesktopServices::openUrl(QString{"https://wiki.hyprland.org/Configuring/Configuring-Hyprland/"}); });
|
||||||
|
|
||||||
const auto EXITBUTTON = (QPushButton*)findByName("exitButton");
|
const auto EXITBUTTON = (QPushButton*)findByName("exitButton");
|
||||||
QObject::connect(EXITBUTTON, &QPushButton::clicked, [] { QApplication::exit(0); });
|
QObject::connect(EXITBUTTON, &QPushButton::clicked, [this] {
|
||||||
|
exit = true;
|
||||||
|
QApplication::exit(0);
|
||||||
|
});
|
||||||
|
|
||||||
const auto TABS = (QTabWidget*)findByName("tabs");
|
const auto TABS = (QTabWidget*)findByName("tabs");
|
||||||
QObject::connect(TABS->tabBar(), &QTabBar::currentChanged, [TABS, this] { TABS->tabBar()->setCurrentIndex(this->currentTab); });
|
QObject::connect(TABS->tabBar(), &QTabBar::currentChanged, [TABS, this] { TABS->tabBar()->setCurrentIndex(this->currentTab); });
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define CHYPRLANDWELCOME_H
|
#define CHYPRLANDWELCOME_H
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
|
@ -23,5 +24,7 @@ class CHyprlandWelcome : public QMainWindow {
|
||||||
void exitDontShowAgain();
|
void exitDontShowAgain();
|
||||||
|
|
||||||
int currentTab = 0;
|
int currentTab = 0;
|
||||||
|
bool exit = false;
|
||||||
|
std::mutex appScanMutex;
|
||||||
};
|
};
|
||||||
#endif // CHYPRLANDWELCOME_H
|
#endif // CHYPRLANDWELCOME_H
|
||||||
|
|
|
@ -29,14 +29,10 @@
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>CHyprlandWelcome</string>
|
<string>Welcome to Hyprland!</string>
|
||||||
</property>
|
|
||||||
<property name="windowIcon">
|
|
||||||
<iconset>
|
|
||||||
<normaloff>../../Documents/Hypr/try3finaltransparent.png</normaloff>../../Documents/Hypr/try3finaltransparent.png</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="windowOpacity">
|
<property name="windowOpacity">
|
||||||
<double>0.900000000000000</double>
|
<double>1.000000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
<property name="autoFillBackground">
|
<property name="autoFillBackground">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
@ -55,7 +51,7 @@
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="pixmap">
|
<property name="pixmap">
|
||||||
<pixmap resource="Logo.qrc">:/assets/assets/logobanner.png</pixmap>
|
<pixmap>:/logobanner.png</pixmap>
|
||||||
</property>
|
</property>
|
||||||
<property name="scaledContents">
|
<property name="scaledContents">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
@ -80,7 +76,7 @@
|
||||||
<enum>Qt::NoFocus</enum>
|
<enum>Qt::NoFocus</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>3</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="usesScrollButtons">
|
<property name="usesScrollButtons">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
|
@ -164,185 +160,6 @@
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Getting Started</string>
|
<string>Getting Started</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<widget class="QLabel" name="label_3">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>10</y>
|
|
||||||
<width>751</width>
|
|
||||||
<height>171</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p>The first thing we'll need to do is get some packages installed that you absolutely need in order for your system to be working properly.</p><p>Apps with * are absolutely necessary. All other are <span style=" font-weight:700; font-style:italic;">highly</span> recommended, as they provide core parts of a working environment.</p><p>You <span style=" font-style:italic;">can </span>proceed without any of those, but it's not advised. There is a possibility that this app is unable to detect some of your installed binaries. In that case, it's okay to ignore them.</p><p>Use the &quot;launch terminal&quot; button to launch a terminal. Supported terminals are kitty, alacritty, foot, wezterm, konsole, gnome-terminal, xterm. If none are installed, you'll need to exit hyprland and install one. Use SUPER+M to exit hyprland.<br/><br/>Hover on the different components to see what options are accepted. <span style=" color:#00ff00;">Green</span> means the component is found to be installed, <span style=" color:#00ffff;">blue</span> means it's running.</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_TERM">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>30</x>
|
|
||||||
<y>180</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: kitty, alacritty, wezterm, foot, konsole, gnome-terminal. Worth noting this is not a comprehensive list and Hyprland will work with any wayland-compatible terminal emulator, however this app will not automatically detect it.</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Terminal</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_FM">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>30</x>
|
|
||||||
<y>200</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: dolphin, ranger, thunar</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> File Manager</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_WALLPAPER">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>30</x>
|
|
||||||
<y>220</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: hyprpaper, swaybg, swww, wpaperd. Recommended: hyprpaper</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Wallpaper Utility</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_PW">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>30</x>
|
|
||||||
<y>240</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: pipewire <span style=" font-weight:700;">and</span> wireplumber</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Pipewire*</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_XDP">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>440</x>
|
|
||||||
<y>180</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: xdg-desktop-portal <span style=" font-weight:700;">and</span> xdg-desktop-portal-hyprland. Recommended to also install xdg-desktop-portal-gtk for a file picker.</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> XDG Desktop Portal*</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_AUTH">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>440</x>
|
|
||||||
<y>200</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: <span style=" font-family:'monospace';">kde-authentication-agent</span></p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Authentication Agent</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_QTW">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>440</x>
|
|
||||||
<y>220</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: qt5-wayland, qt6-wayland (highly recommended both)</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> QT Wayland support</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_NOTIF">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>30</x>
|
|
||||||
<y>280</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: dunst, mako. Worth noting you can also create your own notification daemons with stuff like ags or eww.</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Notification Daemon</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_BAR">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>440</x>
|
|
||||||
<y>260</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: waybar, eww, ags</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Status Bar</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="INSTALL_LAUNCHER">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>30</x>
|
|
||||||
<y>260</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: fuzzel, wofi, anyrun, tofi</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> App Launcher</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="tab2Next">
|
<widget class="QPushButton" name="tab2Next">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
|
@ -375,22 +192,6 @@
|
||||||
<string>Open Terminal</string>
|
<string>Open Terminal</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="INSTALL_QTTHEME">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>440</x>
|
|
||||||
<y>240</y>
|
|
||||||
<width>301</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Accepted: qt5ct, qt6ct.</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> QT Theming</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="tab2Back">
|
<widget class="QPushButton" name="tab2Back">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
|
@ -407,6 +208,248 @@
|
||||||
<string>Back</string>
|
<string>Back</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QScrollArea" name="scrollArea">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>775</width>
|
||||||
|
<height>313</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="toolTipDuration">
|
||||||
|
<number>-2</number>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Sunken</enum>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="verticalScrollBarPolicy">
|
||||||
|
<enum>Qt::ScrollBarAsNeeded</enum>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalScrollBarPolicy">
|
||||||
|
<enum>Qt::ScrollBarAlwaysOff</enum>
|
||||||
|
</property>
|
||||||
|
<property name="widgetResizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="verticalLayoutWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>769</width>
|
||||||
|
<height>315</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="GettingStartedText">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Minimum">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>760</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"><html><head/><body><p>The first thing we'll need to do is get some packages installed that you absolutely need in order for your system to be working properly.</p><p>Apps with * are absolutely necessary. All other are <span style=" font-weight:700; font-style:italic;">highly</span> recommended, as they provide core parts of a working environment.</p><p>You <span style=" font-style:italic;">can </span>proceed without any of those, but it's not advised. There is a possibility that this app is unable to detect some of your installed binaries. In that case, it's okay to ignore them. Nix users might have the issue.</p><p>Use the &quot;launch terminal&quot; button to launch a terminal. Use SUPER+M to exit hyprland. Supported terminals: kitty, alacritty, foot, wezterm, konsole, gnome-terminal, xterm.<br/><br/>Hover on the different components to see what options are accepted. <span style=" color:#00ff00;">Green</span> means the component is found to be installed, <span style=" color:#00ffff;">blue</span> means it's running.</p><p>This list refreshes automatically.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="textFormat">
|
||||||
|
<enum>Qt::RichText</enum>
|
||||||
|
</property>
|
||||||
|
<property name="scaledContents">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" name="Components" columnminimumwidth="155,155">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>40</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>40</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalSpacing">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
<property name="verticalSpacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="INSTALL_AUTH">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: <span style=" font-family:'monospace';">kde-authentication-agent</span></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Authentication Agent</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="INSTALL_QTW">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: qt5-wayland, qt6-wayland (highly recommended both)</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> QT Wayland support</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="INSTALL_FM">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: dolphin, ranger, thunar</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> File Manager</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="INSTALL_TERM">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: kitty, alacritty, wezterm, foot, konsole, gnome-terminal. Worth noting this is not a comprehensive list and Hyprland will work with any wayland-compatible terminal emulator, however this app will not automatically detect it.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Terminal</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLabel" name="INSTALL_PW">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: pipewire <span style=" font-weight:700;">and</span> wireplumber</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Pipewire*</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="INSTALL_WALLPAPER">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: hyprpaper, swaybg, swww, wpaperd. Recommended: hyprpaper</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Wallpaper Utility</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="INSTALL_XDP">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: xdg-desktop-portal <span style=" font-weight:700;">and</span> xdg-desktop-portal-hyprland. Recommended to also install xdg-desktop-portal-gtk for a file picker.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> XDG Desktop Portal*</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QLabel" name="INSTALL_QTTHEME">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: qt5ct, qt6ct.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> QT Theming</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QLabel" name="INSTALL_NOTIF">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: dunst, mako. Worth noting you can also create your own notification daemons with stuff like ags or eww.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Notification Daemon</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QLabel" name="INSTALL_BAR">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: waybar, eww, ags</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> Status Bar</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QLabel" name="INSTALL_LAUNCHER">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Accepted: fuzzel, wofi, anyrun, tofi</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" color:#ff0000;">❌</span> App Launcher</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="configuringTab">
|
<widget class="QWidget" name="configuringTab">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
@ -713,8 +756,6 @@
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources/>
|
||||||
<include location="Logo.qrc"/>
|
|
||||||
</resources>
|
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|
Loading…
Reference in a new issue