diff --git a/settings/hyprland.nix b/settings/hyprland.nix index 7db4da0..0b01028 100644 --- a/settings/hyprland.nix +++ b/settings/hyprland.nix @@ -560,6 +560,106 @@ in ''; }; + xdg.configFile."quickshell/shell.qml" = lib.mkIf isGaming { + text = '' + import Quickshell + import Quickshell.Hyprland + import Quickshell.Services.SystemTray + import QtQuick + import QtQuick.Layouts + + ShellRoot { + Variants { + model: Quickshell.screens + + PanelWindow { + required property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + implicitHeight: 32 + color: "#${c.base00}" + + RowLayout { + anchors.fill: parent + spacing: 0 + + // Workspaces + RowLayout { + spacing: 0 + Layout.leftMargin: 6 + + Repeater { + model: Hyprland.workspaces + + Rectangle { + required property var modelData + Layout.preferredWidth: 32 + Layout.preferredHeight: 32 + color: modelData.focused ? "#${c.base02}" : "transparent" + radius: 6 + + Text { + anchors.centerIn: parent + text: modelData.name + color: modelData.focused ? "#${c.base05}" : "#${c.base03}" + font.family: "FiraMono Nerd Font" + font.pixelSize: 13 + font.weight: modelData.focused ? Font.Bold : Font.Normal + } + + MouseArea { + anchors.fill: parent + onClicked: modelData.activate() + } + } + } + } + + // Spacer + Item { Layout.fillWidth: true } + + // System tray + RowLayout { + spacing: 4 + Layout.rightMargin: 8 + + Repeater { + model: SystemTray.items + + Image { + required property var modelData + source: modelData.icon + Layout.preferredWidth: 18 + Layout.preferredHeight: 18 + smooth: true + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.LeftButton | Qt.RightButton + onClicked: (event) => { + if (event.button === Qt.RightButton && parent.modelData.hasMenu) { + parent.modelData.menu.open(); + } else { + parent.modelData.activate(); + } + } + } + } + } + } + } + } + } + } + ''; + }; + }; }; }