Compare commits

...

3 Commits

Author SHA1 Message Date
b314fe10d2 finished the launcher 2026-09-02 19:22:43 +01:00
c7f8c86fe1 removed redundant region shenanigans 2026-09-02 19:22:35 +01:00
ca6b5aae78 made the tablet buttons a component and added an animation 2026-09-02 19:21:41 +01:00
4 changed files with 127 additions and 107 deletions

View File

@@ -56,8 +56,6 @@ Scope {
id: maskRegion
Region {
// Setting to subtract effectively disables the region
// intersection: Intersection.Subtract
item: launcher
}
@@ -109,9 +107,6 @@ Scope {
Launcher {
id: launcher
// visible: false
}
Row {

View File

@@ -1,10 +1,13 @@
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import Quickshell
import Quickshell.Hyprland
import "../Color.js" as Colors
import "../Components/"
import "../Services/"
Item {
id: root
@@ -12,36 +15,53 @@ Item {
property var buttons: [
{
icon: "",
color: Colors.surface1
color: Colors.surface1,
action: function () {}
},
{
icon: "",
color: Colors.yellow
color: Colors.yellow,
action: function () {
Quickshell.execDetached("nemo");
}
},
{
icon: "󰪶",
color: Colors.green
color: Colors.green,
action: function () {
Hyprland.dispatch("hl.dsp.exec_cmd('firefox --new-window \"https://office.voidarc.co.uk\"')");
}
},
{
icon: "󰊻",
color: Colors.sky
color: Colors.sky,
action: function () {
Hyprland.dispatch("hl.dsp.exec_cmd('firefox --new-window \"https://teams.cloud.microsoft\"')");
}
},
{
icon: "",
color: Colors.mauve
color: Colors.mauve,
action: function () {
Hyprland.dispatch("hl.dsp.exec_cmd('kitty')");
}
},
{
icon: "󰼁",
color: Colors.red
color: Colors.red,
action: function () {}
},
{
icon: "󰈹",
color: Colors.peach
color: Colors.peach,
action: function () {
Hyprland.dispatch("hl.dsp.exec_cmd('firefox')");
}
}
]
property real cx: width / 2
property real cy: height / 2
property bool hidden: true
property bool hidden: !IpcManager.launcherOpen
property real r: 120
property double topMargin: 50
@@ -68,12 +88,6 @@ Item {
}
}
]
// Behavior on topMargin {
// SpringAnimation {
// damping: 0.3
// spring: 5
// }
// }
transitions: [
Transition {
from: "hidden"
@@ -156,6 +170,13 @@ Item {
implicitWidth: 80 + (itemRoot.index === 0 ? 2 : 0)
radius: 10
TapHandler {
onTapped: {
itemRoot.modelData.action();
IpcManager.toggleLauncher();
}
}
anchors {
horizontalCenter: parent.horizontalCenter
verticalCenter: parent.verticalCenter

View File

@@ -344,6 +344,63 @@ Container {
anchors {
fill: parent
margins: 3
topMargin: 3
}
Component {
id: tabletButton
Rectangle {
id: tabletButtonRoot
required property var modelData
color: Colors.overlay0
implicitWidth: 25
radius: root.boxRadius - 4
Behavior on color {
ColorAnimation {
duration: 60
}
}
anchors {
bottom: parent.bottom
top: parent.top
}
TapHandler {
onTapped: {
tabletButtonRoot.modelData.onTapped();
tabletButtonRoot.color = Colors.text;
tapAnimationTimer.restart();
}
}
Timer {
id: tapAnimationTimer
interval: 80
repeat: false
running: false
onTriggered: {
tabletButtonRoot.color = Colors.overlay0;
}
}
StyledText {
anchors.fill: parent
color: Colors.mauve
fontSize: 14
fontWeight: 10
horizontalAlignment: Qt.AlignHCenter
propo: true
text: tabletButtonRoot.modelData.text
verticalAlignment: Qt.AlignVCenter
}
}
}
Row {
@@ -356,32 +413,16 @@ Container {
topMargin: 3
}
Rectangle {
color: Colors.overlay0
implicitWidth: 25
radius: root.boxRadius - 4
anchors {
bottom: parent.bottom
top: parent.top
}
TapHandler {
onTapped: {
console.log("kando");
}
}
StyledText {
anchors.fill: parent
color: Colors.mauve
fontSize: 14
fontWeight: 10
horizontalAlignment: Qt.AlignHCenter
propo: true
text: "󱗿"
verticalAlignment: Qt.AlignVCenter
}
Repeater {
delegate: tabletButton
model: [
{
text: "󱗿",
onTapped: function () {
IpcManager.toggleLauncher();
}
},
]
}
}
@@ -389,77 +430,35 @@ Container {
color: Colors.mauve
text: TimeManager.time
}
}
Row {
spacing: 3
anchors {
bottom: parent.bottom
bottomMargin: 3
right: parent.right
rightMargin: 7
top: parent.top
topMargin: 3
}
Rectangle {
color: Colors.overlay0
implicitWidth: 25
radius: root.boxRadius - 4
Row {
spacing: 3
anchors {
bottom: parent.bottom
bottomMargin: 3
right: parent.right
rightMargin: 4
top: parent.top
topMargin: 3
}
TapHandler {
onTapped: {
WorkspaceManager.activateWorkspaceById("-1");
}
}
StyledText {
anchors.fill: parent
color: Colors.mauve
fontSize: 14
fontWeight: 10
horizontalAlignment: Qt.AlignHCenter
propo: true
text: ""
verticalAlignment: Qt.AlignVCenter
}
}
Rectangle {
color: Colors.overlay0
implicitWidth: 25
radius: root.boxRadius - 4
anchors {
bottom: parent.bottom
bottomMargin: 3
top: parent.top
topMargin: 3
}
TapHandler {
onTapped: {
Hyprland.dispatch(`hl.dsp.focus({workspace = "+1"})`);
}
}
StyledText {
anchors.fill: parent
color: Colors.mauve
fontSize: 14
fontWeight: 10
horizontalAlignment: Qt.AlignHCenter
propo: true
text: ""
verticalAlignment: Qt.AlignVCenter
Repeater {
delegate: tabletButton
model: [
{
text: "",
onTapped: function () {
WorkspaceManager.activateWorkspaceById("-1");
}
},
{
text: "",
onTapped: function () {
Hyprland.dispatch(`hl.dsp.focus({workspace = "+1"})`);
}
},
]
}
}
}

View File

@@ -9,6 +9,7 @@ Singleton {
id: root
property var focusState: WlrKeyboardFocus.None
property bool launcherOpen: false
property bool logoutMenuOpen: false
property bool tabletMode: false
@@ -16,11 +17,15 @@ Singleton {
signal enableTabletMode
signal logoutMenu
signal normalMode
signal toggleLauncher
onCloseLogoutMenu: {
root.focusState = WlrKeyboardFocus.None;
root.logoutMenuOpen = false;
}
onToggleLauncher: {
root.launcherOpen = root.launcherOpen == true ? false : true;
}
IpcHandler {
function disableTabletMode(): void {