From 361368020fc66816d0ea916aa3a3e7f08f85b288 Mon Sep 17 00:00:00 2001 From: xSghetti Date: Wed, 17 Jul 2024 00:22:59 -0400 Subject: [PATCH] install.sh --- grub | 1 + grub.sh | 8 + install.sh | 32 +++- sddm.sh | 4 + src/catppuccin-mocha/Components/Clock.qml | 14 ++ .../Components/LoginPanel.qml | 147 +++++++++++++++++ .../Components/PasswordField.qml | 48 ++++++ .../Components/PowerButton.qml | 41 +++++ .../Components/RebootButton.qml | 41 +++++ .../Components/SessionPanel.qml | 156 ++++++++++++++++++ .../Components/SleepButton.qml | 41 +++++ src/catppuccin-mocha/Components/UserField.qml | 50 ++++++ src/catppuccin-mocha/Main.qml | 48 ++++++ src/catppuccin-mocha/assets/angle-down.png | Bin 0 -> 6488 bytes src/catppuccin-mocha/backgrounds/.gitkeep | 0 src/catppuccin-mocha/icons/power.svg | 14 ++ src/catppuccin-mocha/icons/reboot.svg | 13 ++ src/catppuccin-mocha/icons/settings.svg | 1 + src/catppuccin-mocha/icons/sleep.svg | 5 + src/catppuccin-mocha/metadata.desktop | 14 ++ src/catppuccin-mocha/preview.png | Bin 0 -> 34959 bytes src/catppuccin-mocha/theme.conf | 39 +++++ src/grub | 62 +++++++ src/mkinitcpio.conf | 4 + src/nvidia.conf | 1 + src/pacman.txt | 82 +++++++++ src/sddm.conf | 2 + src/yay.txt | 14 ++ yay-bin | 1 + 29 files changed, 879 insertions(+), 4 deletions(-) create mode 160000 grub create mode 100755 grub.sh create mode 100755 sddm.sh create mode 100644 src/catppuccin-mocha/Components/Clock.qml create mode 100644 src/catppuccin-mocha/Components/LoginPanel.qml create mode 100644 src/catppuccin-mocha/Components/PasswordField.qml create mode 100644 src/catppuccin-mocha/Components/PowerButton.qml create mode 100644 src/catppuccin-mocha/Components/RebootButton.qml create mode 100644 src/catppuccin-mocha/Components/SessionPanel.qml create mode 100644 src/catppuccin-mocha/Components/SleepButton.qml create mode 100644 src/catppuccin-mocha/Components/UserField.qml create mode 100644 src/catppuccin-mocha/Main.qml create mode 100644 src/catppuccin-mocha/assets/angle-down.png create mode 100644 src/catppuccin-mocha/backgrounds/.gitkeep create mode 100644 src/catppuccin-mocha/icons/power.svg create mode 100644 src/catppuccin-mocha/icons/reboot.svg create mode 100644 src/catppuccin-mocha/icons/settings.svg create mode 100644 src/catppuccin-mocha/icons/sleep.svg create mode 100644 src/catppuccin-mocha/metadata.desktop create mode 100644 src/catppuccin-mocha/preview.png create mode 100644 src/catppuccin-mocha/theme.conf create mode 100644 src/grub create mode 100644 src/mkinitcpio.conf create mode 100644 src/nvidia.conf create mode 100644 src/pacman.txt create mode 100644 src/sddm.conf create mode 100644 src/yay.txt create mode 160000 yay-bin diff --git a/grub b/grub new file mode 160000 index 0000000..88f6124 --- /dev/null +++ b/grub @@ -0,0 +1 @@ +Subproject commit 88f6124757331fd3a37c8a69473021389b7663ad diff --git a/grub.sh b/grub.sh new file mode 100755 index 0000000..06b7f52 --- /dev/null +++ b/grub.sh @@ -0,0 +1,8 @@ +#!/bin/bash +echo ":: Installing Grub Theme" +cd .. +git clone https://github.com/catppuccin/grub.git && cd grub +sudo cp -r ~/script/src/catppuccin-mocha/ /usr/share/grub/themes/ +sudo cp ~/script/src/grub /etc/default/ +sudo grub-mkconfig -o /boot/grub/grub.cfg + diff --git a/install.sh b/install.sh index 6b8b463..d10949f 100755 --- a/install.sh +++ b/install.sh @@ -22,11 +22,11 @@ case $answer in [Yy]* ) echo ":: Install Continuing..." #Copy mkinitcpio.conf - sudo cp -r ~/script/mkinitcpio.conf /etc/mkinitcpio.conf + sudo cp -r ~/script/src/mkinitcpio.conf /etc/mkinitcpio.conf #Make /etc/modprobe.d/nvidia.conf sudo touch /etc/modprobe.d/nvidia.conf - sudo cp -r ~/script/nvidia.conf /etc/modprobe.d/nvidia.conf + sudo cp -r ~/script/src/nvidia.conf /etc/modprobe.d/nvidia.conf sudo mkinitcpio -P @@ -37,8 +37,8 @@ case $answer in makepkg -si #Download and Install packages - sudo pacman -S --needed - < ~/script/pacman.txt - yay -S --needed - < ~/script/yay.txt + sudo pacman -S --needed - < ~/script/src/pacman.txt + yay -S --needed - < ~/script/src/yay.txt #Clones Hyprcrux Repo and copies them to their correct locations. cd ~/script/ @@ -56,3 +56,27 @@ esac echo ":: Preparing to Install HyprPM Plugins..." sleep 5 ~/script/hyprpm.sh + +echo ":: Preparing to Install Grub Theme" +~/script/grub.sh + +echo ":: Preparing to Install SDDM Theme" +~/script/sddm.sh + + +cat << "EOF" + You have succesfully installed +----------------------------------------------------------------------- + ██░ ██▓██ ██▓ ██▓███ ██▀███ ▄████▄ ██▀███ █ ██ ▒██ ██▒ +▓██░ ██▒▒██ ██▒▓██░ ██▒▓██ ▒ ██▒▒██▀ ▀█ ▓██ ▒ ██▒ ██ ▓██▒▒▒ █ █ ▒░ +▒██▀▀██░ ▒██ ██░▓██░ ██▓▒▓██ ░▄█ ▒▒▓█ ▄ ▓██ ░▄█ ▒▓██ ▒██░░░ █ ░ +░▓█ ░██ ░ ▐██▓░▒██▄█▓▒ ▒▒██▀▀█▄ ▒▓▓▄ ▄██▒▒██▀▀█▄ ▓▓█ ░██░ ░ █ █ ▒ +░▓█▒░██▓ ░ ██▒▓░▒██▒ ░ ░░██▓ ▒██▒▒ ▓███▀ ░░██▓ ▒██▒▒▒█████▓ ▒██▒ ▒██▒ + ▒ ░░▒░▒ ██▒▒▒ ▒▓▒░ ░ ░░ ▒▓ ░▒▓░░ ░▒ ▒ ░░ ▒▓ ░▒▓░░▒▓▒ ▒ ▒ ▒▒ ░ ░▓ ░ + ▒ ░▒░ ░▓██ ░▒░ ░▒ ░ ░▒ ░ ▒░ ░ ▒ ░▒ ░ ▒░░░▒░ ░ ░ ░░ ░▒ ░ + ░ ░░ ░▒ ▒ ░░ ░░ ░░ ░ ░ ░░ ░ ░░░ ░ ░ ░ ░ + ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ + ░ ░ ░ +----------------------------------------------------------------------- + Enjoy :) +EOF diff --git a/sddm.sh b/sddm.sh new file mode 100755 index 0000000..c506c46 --- /dev/null +++ b/sddm.sh @@ -0,0 +1,4 @@ +#!/bin/bash +sudo cp -r ~/script/src/catppuccin-mocha/ /usr/share/sddm/themes/ +sudo cp -r ~/script/src/sddm.conf /etc/ + diff --git a/src/catppuccin-mocha/Components/Clock.qml b/src/catppuccin-mocha/Components/Clock.qml new file mode 100644 index 0000000..f076d28 --- /dev/null +++ b/src/catppuccin-mocha/Components/Clock.qml @@ -0,0 +1,14 @@ +import QtQuick 2.15 +import SddmComponents 2.0 + +Clock { + id: time + color: config.text + timeFont.family: config.Font + dateFont.family: config.Font + anchors { + margins: 10 + top: parent.top + right: parent.right + } +} diff --git a/src/catppuccin-mocha/Components/LoginPanel.qml b/src/catppuccin-mocha/Components/LoginPanel.qml new file mode 100644 index 0000000..e0dec79 --- /dev/null +++ b/src/catppuccin-mocha/Components/LoginPanel.qml @@ -0,0 +1,147 @@ +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 + +Item { + property var user: userField.text + property var password: passwordField.text + property var session: sessionPanel.session + property var inputHeight: Screen.height * 0.032 + property var inputWidth: Screen.width * 0.16 + Rectangle { + id: loginBackground + anchors { + verticalCenter: parent.verticalCenter + horizontalCenter: parent.horizontalCenter + } + height: inputHeight * 5.3 + width: inputWidth * 1.2 + radius: 5 + visible: config.LoginBackground == "true" ? true : false + color: config.mantle + } + Column { + spacing: 8 + anchors { + bottom: parent.bottom + left: parent.left + } + PowerButton { + id: powerButton + } + RebootButton { + id: rebootButton + } + SleepButton { + id: sleepButton + } + z: 5 + } + Column { + spacing: 8 + anchors { + bottom: parent.bottom + right: parent.right + } + SessionPanel { + id: sessionPanel + } + z: 5 + } + Column { + spacing: 8 + z: 5 + width: inputWidth + anchors { + verticalCenter: parent.verticalCenter + horizontalCenter: parent.horizontalCenter + } + UserField { + id: userField + height: inputHeight + width: parent.width + } + PasswordField { + id: passwordField + height: inputHeight + width: parent.width + onAccepted: loginButton.clicked() + } + Button { + id: loginButton + height: inputHeight + width: parent.width + enabled: user != "" && password != "" ? true : false + hoverEnabled: true + contentItem: Text { + id: buttonText + renderType: Text.NativeRendering + font { + family: config.Font + pointSize: config.FontSize + bold: true + } + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: config.crust + text: "Login" + } + background: Rectangle { + id: buttonBackground + color: config.sapphire + radius: 3 + } + states: [ + State { + name: "pressed" + when: loginButton.down + PropertyChanges { + target: buttonBackground + color: config.teal + } + PropertyChanges { + target: buttonText + } + }, + State { + name: "hovered" + when: loginButton.hovered + PropertyChanges { + target: buttonBackground + color: config.teal + } + PropertyChanges { + target: buttonText + } + }, + State { + name: "enabled" + when: loginButton.enabled + PropertyChanges { + target: buttonBackground + } + PropertyChanges { + target: buttonText + } + } + ] + transitions: Transition { + PropertyAnimation { + properties: "color" + duration: 300 + } + } + onClicked: { + sddm.login(user, password, session) + } + } + } + Connections { + target: sddm + + function onLoginFailed() { + passwordField.text = "" + passwordField.focus = true + } + } +} diff --git a/src/catppuccin-mocha/Components/PasswordField.qml b/src/catppuccin-mocha/Components/PasswordField.qml new file mode 100644 index 0000000..dd0f384 --- /dev/null +++ b/src/catppuccin-mocha/Components/PasswordField.qml @@ -0,0 +1,48 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +TextField { + id: passwordField + focus: true + selectByMouse: true + placeholderText: "Password" + echoMode: TextInput.Password + passwordCharacter: "•" + passwordMaskDelay: config.PasswordShowLastLetter + selectionColor: config.overlay0 + renderType: Text.NativeRendering + font.family: config.Font + font.pointSize: config.FontSize + font.bold: true + color: config.text + horizontalAlignment: TextInput.AlignHCenter + background: Rectangle { + id: passFieldBackground + radius: 3 + color: config.surface0 + } + states: [ + State { + name: "focused" + when: passwordField.activeFocus + PropertyChanges { + target: passFieldBackground + color: config.surface1 + } + }, + State { + name: "hovered" + when: passwordField.hovered + PropertyChanges { + target: passFieldBackground + color: config.surface1 + } + } + ] + transitions: Transition { + PropertyAnimation { + properties: "color" + duration: 300 + } + } +} diff --git a/src/catppuccin-mocha/Components/PowerButton.qml b/src/catppuccin-mocha/Components/PowerButton.qml new file mode 100644 index 0000000..dc74269 --- /dev/null +++ b/src/catppuccin-mocha/Components/PowerButton.qml @@ -0,0 +1,41 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Item { + implicitHeight: powerButton.height + implicitWidth: powerButton.width + Button { + id: powerButton + height: inputHeight + width: inputHeight + hoverEnabled: true + icon { + source: Qt.resolvedUrl("../icons/power.svg") + height: height + width: width + color: config.crust + } + background: Rectangle { + id: powerButtonBackground + radius: 3 + color: config.red + } + states: [ + State { + name: "hovered" + when: powerButton.hovered + PropertyChanges { + target: powerButtonBackground + color: config.rosewater + } + } + ] + transitions: Transition { + PropertyAnimation { + properties: "color" + duration: 300 + } + } + onClicked: sddm.powerOff() + } +} diff --git a/src/catppuccin-mocha/Components/RebootButton.qml b/src/catppuccin-mocha/Components/RebootButton.qml new file mode 100644 index 0000000..a2c9b9f --- /dev/null +++ b/src/catppuccin-mocha/Components/RebootButton.qml @@ -0,0 +1,41 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Item { + implicitHeight: rebootButton.height + implicitWidth: rebootButton.width + Button { + id: rebootButton + height: inputHeight + width: inputHeight + hoverEnabled: true + icon { + source: Qt.resolvedUrl("../icons/reboot.svg") + height: height + width: width + color: config.crust + } + background: Rectangle { + id: rebootButtonBackground + radius: 3 + color: config.red + } + states: [ + State { + name: "hovered" + when: rebootButton.hovered + PropertyChanges { + target: rebootButtonBackground + color: config.rosewater + } + } + ] + transitions: Transition { + PropertyAnimation { + properties: "color" + duration: 300 + } + } + onClicked: sddm.reboot() + } +} diff --git a/src/catppuccin-mocha/Components/SessionPanel.qml b/src/catppuccin-mocha/Components/SessionPanel.qml new file mode 100644 index 0000000..0edfcb3 --- /dev/null +++ b/src/catppuccin-mocha/Components/SessionPanel.qml @@ -0,0 +1,156 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQml.Models 2.15 + +Item { + property var session: sessionList.currentIndex + implicitHeight: sessionButton.height + implicitWidth: sessionButton.width + DelegateModel { + id: sessionWrapper + model: sessionModel + delegate: ItemDelegate { + id: sessionEntry + height: inputHeight + width: parent.width + highlighted: sessionList.currentIndex == index + contentItem: Text { + renderType: Text.NativeRendering + font.family: config.Font + font.pointSize: config.FontSize + font.bold: true + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: config.text + text: name + } + background: Rectangle { + id: sessionEntryBackground + color: config.surface1 + radius: 3 + } + states: [ + State { + name: "hovered" + when: sessionEntry.hovered + PropertyChanges { + target: sessionEntryBackground + color: config.surface2 + } + } + ] + transitions: Transition { + PropertyAnimation { + property: "color" + duration: 300 + } + } + MouseArea { + anchors.fill: parent + onClicked: { + sessionList.currentIndex = index + sessionPopup.close() + } + } + } + } + Button { + id: sessionButton + height: inputHeight + width: inputHeight + hoverEnabled: true + icon { + source: Qt.resolvedUrl("../icons/settings.svg") + height: height + width: width + color: config.text + } + background: Rectangle { + id: sessionButtonBackground + color: config.surface0 + radius: 3 + } + states: [ + State { + name: "pressed" + when: sessionButton.down + PropertyChanges { + target: sessionButtonBackground + color: config.surface1 + } + }, + State { + name: "hovered" + when: sessionButton.hovered + PropertyChanges { + target: sessionButtonBackground + color: config.surface2 + } + }, + State { + name: "selection" + when: sessionPopup.visible + PropertyChanges { + target: sessionButtonBackground + color: config.surface2 + } + } + ] + transitions: Transition { + PropertyAnimation { + properties: "color" + duration: 150 + } + } + onClicked: { + sessionPopup.visible ? sessionPopup.close() : sessionPopup.open() + sessionButton.state = "pressed" + } + } + Popup { + id: sessionPopup + width: inputWidth + padding * 2 + x: (sessionButton.width + sessionList.spacing) * -7.6 + y: -(contentHeight + padding * 2) + sessionButton.height + padding: inputHeight / 10 + background: Rectangle { + radius: 5.4 + color: config.surface0 + } + contentItem: ListView { + id: sessionList + implicitHeight: contentHeight + spacing: 8 + model: sessionWrapper + currentIndex: sessionModel.lastIndex + clip: true + } + enter: Transition { + ParallelAnimation { + NumberAnimation { + property: "opacity" + from: 0 + to: 1 + duration: 400 + easing.type: Easing.OutExpo + } + NumberAnimation { + property: "x" + from: sessionPopup.x + (inputWidth * 0.1) + to: sessionPopup.x + duration: 500 + easing.type: Easing.OutExpo + } + } + } + exit: Transition { + NumberAnimation { + property: "opacity" + from: 1 + to: 0 + duration: 300 + easing.type: Easing.OutExpo + } + } + } +} diff --git a/src/catppuccin-mocha/Components/SleepButton.qml b/src/catppuccin-mocha/Components/SleepButton.qml new file mode 100644 index 0000000..f4a4b7a --- /dev/null +++ b/src/catppuccin-mocha/Components/SleepButton.qml @@ -0,0 +1,41 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Item { + implicitHeight: sleepButton.height + implicitWidth: sleepButton.width + Button { + id: sleepButton + height: inputHeight + width: inputHeight + hoverEnabled: true + icon { + source: Qt.resolvedUrl("../icons/sleep.svg") + height: height + width: width + color: config.crust + } + background: Rectangle { + id: sleepButtonBg + color: config.red + radius: 3 + } + states: [ + State { + name: "hovered" + when: sleepButton.hovered + PropertyChanges { + target: sleepButtonBg + color: config.rosewater + } + } + ] + transitions: Transition { + PropertyAnimation { + properties: "color" + duration: 300 + } + } + onClicked: sddm.suspend() + } +} diff --git a/src/catppuccin-mocha/Components/UserField.qml b/src/catppuccin-mocha/Components/UserField.qml new file mode 100644 index 0000000..9f8ca61 --- /dev/null +++ b/src/catppuccin-mocha/Components/UserField.qml @@ -0,0 +1,50 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +TextField { + id: userField + height: inputHeight + width: inputWidth + selectByMouse: true + echoMode: TextInput.Normal + selectionColor: config.overlay0 + renderType: Text.NativeRendering + font { + family: config.Font + pointSize: config.FontSize + bold: true + } + color: config.text + horizontalAlignment: Text.AlignHCenter + placeholderText: "Username" + text: userModel.lastUser + background: Rectangle { + id: userFieldBackground + color: config.surface0 + radius: 3 + } + states: [ + State { + name: "focused" + when: userField.activeFocus + PropertyChanges { + target: userFieldBackground + color: config.surface1 + } + }, + State { + name: "hovered" + when: userField.hovered + PropertyChanges { + target: userFieldBackground + color: config.surface1 + } + } + ] + transitions: Transition { + PropertyAnimation { + properties: "color" + duration: 300 + } + } +} diff --git a/src/catppuccin-mocha/Main.qml b/src/catppuccin-mocha/Main.qml new file mode 100644 index 0000000..422054b --- /dev/null +++ b/src/catppuccin-mocha/Main.qml @@ -0,0 +1,48 @@ +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 +import "Components" + +Item { + id: root + height: Screen.height + width: Screen.width + Rectangle { + id: background + anchors.fill: parent + height: parent.height + width: parent.width + z: 0 + color: config.base + } + Image { + id: backgroundImage + anchors.fill: parent + height: parent.height + width: parent.width + fillMode: Image.PreserveAspectCrop + visible: config.CustomBackground == "true" ? true : false + z: 1 + source: config.Background + asynchronous: false + cache: true + mipmap: true + clip: true + } + Item { + id: mainPanel + z: 3 + anchors { + fill: parent + margins: 50 + } + Clock { + id: time + visible: config.ClockEnabled == "true" ? true : false + } + LoginPanel { + id: loginPanel + anchors.fill: parent + } + } +} diff --git a/src/catppuccin-mocha/assets/angle-down.png b/src/catppuccin-mocha/assets/angle-down.png new file mode 100644 index 0000000000000000000000000000000000000000..f621bfc936c189c682115e5e313604f894187b5c GIT binary patch literal 6488 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 S60ELLOnESU7-h~IQvVM*H=8>E literal 0 HcmV?d00001 diff --git a/src/catppuccin-mocha/backgrounds/.gitkeep b/src/catppuccin-mocha/backgrounds/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/catppuccin-mocha/icons/power.svg b/src/catppuccin-mocha/icons/power.svg new file mode 100644 index 0000000..70495dd --- /dev/null +++ b/src/catppuccin-mocha/icons/power.svg @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/src/catppuccin-mocha/icons/reboot.svg b/src/catppuccin-mocha/icons/reboot.svg new file mode 100644 index 0000000..5506bbb --- /dev/null +++ b/src/catppuccin-mocha/icons/reboot.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/catppuccin-mocha/icons/settings.svg b/src/catppuccin-mocha/icons/settings.svg new file mode 100644 index 0000000..9a64fbd --- /dev/null +++ b/src/catppuccin-mocha/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/catppuccin-mocha/icons/sleep.svg b/src/catppuccin-mocha/icons/sleep.svg new file mode 100644 index 0000000..4102f2d --- /dev/null +++ b/src/catppuccin-mocha/icons/sleep.svg @@ -0,0 +1,5 @@ + + +moon + + \ No newline at end of file diff --git a/src/catppuccin-mocha/metadata.desktop b/src/catppuccin-mocha/metadata.desktop new file mode 100644 index 0000000..82c1be2 --- /dev/null +++ b/src/catppuccin-mocha/metadata.desktop @@ -0,0 +1,14 @@ +[SddmGreeterTheme] +Name=Catppuccin mocha +Description=Soothing pastel theme for SDDM +Type=sddm-theme +Version=2.1 +Website=https://github.com/catppuccin/sddm +Screenshot=preview.png +MainScript=Main.qml +ConfigFile=theme.conf +TranslationsDirectory=translations +Theme-Id=Catppuccin +Theme-API=2.0 +License=MIT +QtVersion=6 diff --git a/src/catppuccin-mocha/preview.png b/src/catppuccin-mocha/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..ad78e685a316e6108cc5c13d1da8c58ea79c7863 GIT binary patch literal 34959 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