diff --git a/modules/nixvim/home.nix b/modules/nixvim/home.nix index 03f9232..ff1fd34 100644 --- a/modules/nixvim/home.nix +++ b/modules/nixvim/home.nix @@ -60,6 +60,10 @@ in }; }; }; + lsp-format = { + enable = true; + # lspServersToEnable = [ "qmlls" ]; + }; notify.enable = true; mini-cursorword.enable = true; # mini-statusline.enable = true; diff --git a/modules/quickshell/home.nix b/modules/quickshell/home.nix index 8180462..619086c 100644 --- a/modules/quickshell/home.nix +++ b/modules/quickshell/home.nix @@ -17,7 +17,7 @@ in }; config.xdg.configFile."quickshell" = lib.mkIf cfg.enable { recursive = true; - source = config.lib.file.mkOutOfStoreSymlink "${nix-meow.flakeRoot}/modules/quickshell/quickshell"; + source = config.lib.file.mkOutOfStoreSymlink /home/doloro/dotfiles/modules/quickshell/quickshell; }; config.systemd.user.services.quickshell = lib.mkIf cfg.enable { Unit = { diff --git a/modules/quickshell/quickshell/assets/bar/V2/mic.svg b/modules/quickshell/quickshell/assets/bar/V2/mic.svg new file mode 100644 index 0000000..0d26014 --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/V2/mic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/V2/micOff.svg b/modules/quickshell/quickshell/assets/bar/V2/micOff.svg new file mode 100644 index 0000000..155b7db --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/V2/micOff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/V2/speaker.svg b/modules/quickshell/quickshell/assets/bar/V2/speaker.svg new file mode 100644 index 0000000..ed3296d --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/V2/speaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/V2/speakerOff.svg b/modules/quickshell/quickshell/assets/bar/V2/speakerOff.svg new file mode 100644 index 0000000..19b855a --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/V2/speakerOff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/batt/1.svg b/modules/quickshell/quickshell/assets/bar/batt/1.svg new file mode 100644 index 0000000..dfedcde --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/batt/1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/batt/2.svg b/modules/quickshell/quickshell/assets/bar/batt/2.svg new file mode 100644 index 0000000..5cf37f7 --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/batt/2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/batt/3.svg b/modules/quickshell/quickshell/assets/bar/batt/3.svg new file mode 100644 index 0000000..8ef1896 --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/batt/3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/batt/4.svg b/modules/quickshell/quickshell/assets/bar/batt/4.svg new file mode 100644 index 0000000..3f715c2 --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/batt/4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/batt/5.svg b/modules/quickshell/quickshell/assets/bar/batt/5.svg new file mode 100644 index 0000000..dc3eac9 --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/batt/5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/batt/6.svg b/modules/quickshell/quickshell/assets/bar/batt/6.svg new file mode 100644 index 0000000..9fb13a8 --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/batt/6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/assets/bar/batt/7.svg b/modules/quickshell/quickshell/assets/bar/batt/7.svg new file mode 100644 index 0000000..7bb97d7 --- /dev/null +++ b/modules/quickshell/quickshell/assets/bar/batt/7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/quickshell/quickshell/bar/Bar.qml b/modules/quickshell/quickshell/bar/Bar.qml index 5e84935..36f574e 100755 --- a/modules/quickshell/quickshell/bar/Bar.qml +++ b/modules/quickshell/quickshell/bar/Bar.qml @@ -12,65 +12,50 @@ import "widgets/common" as Common import "widgets/clock" as Clock import "widgets/workspace" as Workspace -// Tako kindly threatened you to sort the naming schema and to put all the svg's in an asset folder, so please do that +PanelWindow { + property var modelData + screen: modelData.values[0] - PanelWindow { - property var modelData - screen: modelData.values[0]; + color: '#20ffffff' + anchors { + top: true + left: true + right: true + } - color: '#20ffffff' + implicitHeight: 31 + RowLayout { + height: 30 anchors { - top: true - left: true - right: true + top: parent.top + left: parent.left + right: parent.right + // bottomMargin: 2 + leftMargin: 5 + rightMargin: 5 } - - implicitHeight: 32 RowLayout { - height: 28 - anchors { - top: parent.top - left: parent.left - right: parent.right - // bottomMargin: 2 - leftMargin: 10 - rightMargin: 10 - } - RowLayout { // Left - Layout.alignment: Qt.AlignLeft - Clock.Date {} - Clock.Clock {} - Workspace.WorkspaceWidget {} - } - RowLayout { // Center - // TODO: add icons of the active window per workspace in the workspace tab - anchors.centerIn: parent - } - RowLayout { // Right - Layout.alignment: Qt.AlignRight - Loader { - sourceComponent: Widgets.Audio {} - } - RowLayout { - Text { - text: HyprlandWindowTracker.HyprlandWindowTracker.aaaa - } - visible: Player.activePlayer.isPlaying() - Player.PlayerWidgetV2 { - } - } - Widgets.SystemTray { - id: systemTray - } - } + // Left + Layout.alignment: Qt.AlignLeft + Widgets.Workspaces {} } - Rectangle { - anchors { - bottom: parent.bottom - left: parent.left - right: parent.right - } - height: 1 - color: "#8d8d8d" + RowLayout { + // Center + Layout.alignment: Qt.AlignCenter } - } + RowLayout { + // Right + Layout.alignment: Qt.AlignRight + Widgets.Demo {} + } + } + // Rectangle { + // anchors { + // bottom: parent.bottom + // left: parent.left + // right: parent.right + // } + // height: 1 + // color: "#8d8d8d" + // } +} diff --git a/modules/quickshell/quickshell/bar/widgets/Audio.qml b/modules/quickshell/quickshell/bar/widgets/Audio.qml index f12e85d..6c55944 100755 --- a/modules/quickshell/quickshell/bar/widgets/Audio.qml +++ b/modules/quickshell/quickshell/bar/widgets/Audio.qml @@ -4,56 +4,59 @@ import QtQuick import QtQuick.Layouts import Quickshell.Widgets import Quickshell.Services.Pipewire +import QtQuick.VectorImage +import QtQuick.Effects import "common" as Common - -Item { +Rectangle { id: root property PwNode speakerNode: Pipewire.defaultAudioSink property PwNode microphoneNode: Pipewire.defaultAudioSource - PwObjectTracker { objects: [ root.microphoneNode, root.speakerNode ] } - - width: row.width - height: row.height - - // console.log("a"); - + PwObjectTracker { + objects: [root.microphoneNode, root.speakerNode] + } + implicitWidth: itemContent.width + 4 + implicitHeight: 24 + radius: 5.5 + Layout.alignment: Qt.AlignVCenter + color: "#2a2a2a" // Define item color RowLayout { - id: row - Item { - implicitWidth: 28 - implicitHeight: 28 - Rectangle { - width: parent.width - height: parent.height - radius: 7 - color: "black" - } - Text { - anchors.centerIn: parent - // implicitSize: 25 - font.pixelSize: 28 - color: root.speakerNode.audio.muted ? "#FF474C" : "white" - font.family: "CaskaydiaCove Nerd Font Mono" - text: root.speakerNode.audio.muted ? Common.Icons.audioIcons.speakerMuted : Common.Icons.audioIcons.speaker - } - } - Item { - implicitWidth: 28 - implicitHeight: 28 - Rectangle { - width: parent.width - height: parent.height - radius: 7 - color: "black" - } - Text { - anchors.centerIn: parent - // implicitSize: 25 - font.pixelSize: 34 - color: root.microphoneNode.audio.muted ? "#FF474C" : "white" - font.family: "CaskaydiaCove Nerd Font Mono" - text: root.microphoneNode.audio.muted ? Common.Icons.audioIcons.microphoneMuted : Common.Icons.audioIcons.microphone + id: itemContent + Repeater { + model: [ + { + on: "../../assets/bar/V2/speaker.svg", + off: "../../assets/bar/V2/speakerOff.svg", + node: root.speakerNode + }, + { + on: "../../assets/bar/V2/mic.svg", + off: "../../assets/bar/V2/micOff.svg", + node: root.microphoneNode + }, + ] + Item { + implicitWidth: 24 + implicitHeight: 24 + // anchors.centerIn: parent + VectorImage { + id: svgImage + width: parent.width + height: parent.height + source: modelData.node.audio.muted ? modelData.off : modelData.on + visible: false + fillMode: Image.PreserveAspectFit // Adjusts the SVG while keeping the aspect ratio + } + MultiEffect { + source: svgImage + width: parent.width + height: parent.height + // anchors.centerIn: parent + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + colorization: 1 + brightness: 1 + colorizationColor: modelData.node.audio.muted ? "#e53b3c" : "#b1b2b5" + } } } } diff --git a/modules/quickshell/quickshell/bar/widgets/Battery.qml b/modules/quickshell/quickshell/bar/widgets/Battery.qml new file mode 100644 index 0000000..c6c296b --- /dev/null +++ b/modules/quickshell/quickshell/bar/widgets/Battery.qml @@ -0,0 +1,71 @@ +import Quickshell +import Quickshell.Io +import QtQuick +import QtQuick.Layouts +import Quickshell.Widgets +import Quickshell.Services.Pipewire +import QtQuick.VectorImage +import QtQuick.Effects +import Quickshell.Services.UPower +import "common" as Common + +Rectangle { + id: root + property int battPercent: 58 + implicitWidth: itemContent.width + 4 + implicitHeight: 24 + radius: 5.5 + Layout.alignment: Qt.AlignVCenter + color: "#2a2a2a" // Define item color + Item { + id: itemContent + implicitWidth: 24 + implicitHeight: 24 + // anchors.centerIn: parent + VectorImage { + id: svgImage + width: parent.width + height: parent.height + source: "../../assets/bar/batt/" + root.getBatteryState(UPower.displayDevice.percentage) + ".svg" + visible: false + fillMode: Image.PreserveAspectFit // Adjusts the SVG while keeping the aspect ratio + } + MultiEffect { + source: svgImage + width: parent.width + height: parent.height + // anchors.centerIn: parent + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + // colorization: 1 + brightness: 1 + // colorizationColor: modelData.node.audio.muted ? "#e53b3c" : "#b1b2b5" + } + } + function getBatteryState(level) { + if (level === null) { + return 0; + } + + level = Math.max(0, Math.min(100, level)); + + if (level === 0) + return 0; // 0% exactly + if (level === 100) + return 7; // 100% exactly + + if (level > 0 && level <= 16) + return 1; + if (level > 16 && level <= 32) + return 2; + if (level > 32 && level <= 48) + return 3; + if (level > 48 && level <= 64) + return 4; + if (level > 64 && level <= 80) + return 5; + if (level > 80 && level < 100) + return 6; + + return 0; + } +} diff --git a/modules/quickshell/quickshell/bar/widgets/BatteryData.qml b/modules/quickshell/quickshell/bar/widgets/BatteryData.qml new file mode 100644 index 0000000..e69de29 diff --git a/modules/quickshell/quickshell/bar/widgets/Demo.qml b/modules/quickshell/quickshell/bar/widgets/Demo.qml new file mode 100644 index 0000000..6401e02 --- /dev/null +++ b/modules/quickshell/quickshell/bar/widgets/Demo.qml @@ -0,0 +1,40 @@ +import Quickshell +import Quickshell.Io +import QtQuick +import QtQuick.Layouts +import Quickshell.Widgets +import Quickshell.Services.Pipewire +import "common" as Common +import "clock" as Clock + +Rectangle { + id: backgroundRect + implicitWidth: rowLayout.implicitWidth + 6 // Account for padding (2px left + 2px right) + implicitHeight: rowLayout.implicitHeight + 4 // Account for padding (2px top + 2px bottom) + color: "black" + radius: 6.5 // Background rectangle with rounded corners + // border.color: "gray" + // border.width: 1 + + // Inner Rectangle for padding and layout + Rectangle { + id: content + anchors.fill: parent + anchors.margins: 2 // Create 2px padding on all sides + anchors.leftMargin: 3 + anchors.rightMargin: 3 + color: "transparent" + + RowLayout { + id: rowLayout + anchors.fill: parent + Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter // Center content + spacing: 10 // Space between items + + Audio {} + Battery {} + Clock.Date {} + Clock.Clock {} + } + } +} diff --git a/modules/quickshell/quickshell/bar/widgets/V2/Audio.qml b/modules/quickshell/quickshell/bar/widgets/V2/Audio.qml new file mode 100644 index 0000000..6dece1f --- /dev/null +++ b/modules/quickshell/quickshell/bar/widgets/V2/Audio.qml @@ -0,0 +1,59 @@ +import Quickshell +import Quickshell.Io +import QtQuick +import QtQuick.Layouts +import Quickshell.Widgets +import Quickshell.Services.Pipewire +import "common" as Common + +Item { + id: root + property PwNode speakerNode: Pipewire.defaultAudioSink + property PwNode microphoneNode: Pipewire.defaultAudioSource + PwObjectTracker { + objects: [root.microphoneNode, root.speakerNode] + } + + width: row.width + height: row.height + + // console.log("a"); + + RowLayout { + id: row + Item { + implicitWidth: 28 + implicitHeight: 28 + Rectangle { + width: parent.width + height: parent.height + radius: 7 + color: "black" + } + Text { + anchors.centerIn: parent + font.pixelSize: 28 + color: root.speakerNode.audio.muted ? "#B1B2B5" : "white" + font.family: "CaskaydiaCove Nerd Font Mono" + text: root.speakerNode.audio.muted ? Common.Icons.audioIcons.speakerMuted : Common.Icons.audioIcons.speaker + } + } + Item { + implicitWidth: 28 + implicitHeight: 28 + Rectangle { + width: parent.width + height: parent.height + radius: 7 + color: "black" + } + Text { + anchors.centerIn: parent + font.pixelSize: 34 + color: root.microphoneNode.audio.muted ? "#B1B2B5" : "white" + font.family: "CaskaydiaCove Nerd Font Mono" + text: root.microphoneNode.audio.muted ? Common.Icons.audioIcons.microphoneMuted : Common.Icons.audioIcons.microphone + } + } + } +} diff --git a/modules/quickshell/quickshell/bar/widgets/Wireless.qml b/modules/quickshell/quickshell/bar/widgets/Wireless.qml new file mode 100644 index 0000000..9745928 --- /dev/null +++ b/modules/quickshell/quickshell/bar/widgets/Wireless.qml @@ -0,0 +1,58 @@ +import Quickshell +import Quickshell.Io +import QtQuick +import QtQuick.Layouts +import Quickshell.Widgets +import Quickshell.Services.Pipewire +import QtQuick.VectorImage +import QtQuick.Effects +import "common" as Common + +Rectangle { + id: root + implicitWidth: itemContent.width + 4 + implicitHeight: 24 + radius: 5.5 + Layout.alignment: Qt.AlignVCenter + color: "#2a2a2a" // Define item color + RowLayout { + id: itemContent + Repeater { + model: [ + { + on: "../../assets/bar/V2/speaker.svg", + off: "../../assets/bar/V2/speakerOff.svg", + node: root.speakerNode + }, + { + on: "../../assets/bar/V2/mic.svg", + off: "../../assets/bar/V2/micOff.svg", + node: root.microphoneNode + }, + ] + Item { + implicitWidth: 24 + implicitHeight: 24 + // anchors.centerIn: parent + VectorImage { + id: svgImage + width: parent.width + height: parent.height + source: modelData.node.audio.muted ? modelData.off : modelData.on + visible: false + fillMode: Image.PreserveAspectFit // Adjusts the SVG while keeping the aspect ratio + } + MultiEffect { + source: svgImage + width: parent.width + height: parent.height + // anchors.centerIn: parent + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + colorization: 1 + brightness: 1 + colorizationColor: modelData.node.audio.muted ? "#e53b3c" : "#b1b2b5" + } + } + } + } +} diff --git a/modules/quickshell/quickshell/bar/widgets/Workspaces.qml b/modules/quickshell/quickshell/bar/widgets/Workspaces.qml index 61df8a6..d5a1ee4 100755 --- a/modules/quickshell/quickshell/bar/widgets/Workspaces.qml +++ b/modules/quickshell/quickshell/bar/widgets/Workspaces.qml @@ -36,7 +36,7 @@ RowLayout { Hyprland.dispatch('workspace ' + index_workspace.id); } for (x in index_workspace.toplevels.values) { - console.log(index_workspace.toplevels.values[x].title) + console.log(index_workspace.toplevels.values[x].title); } } } diff --git a/modules/quickshell/quickshell/bar/widgets/clock/Clock.qml b/modules/quickshell/quickshell/bar/widgets/clock/Clock.qml index 2d95795..23d0017 100755 --- a/modules/quickshell/quickshell/bar/widgets/clock/Clock.qml +++ b/modules/quickshell/quickshell/bar/widgets/clock/Clock.qml @@ -1,19 +1,28 @@ import Quickshell import Quickshell.Io import QtQuick +import QtQuick.Layouts +import Quickshell.Widgets +import Quickshell.Services.Pipewire +import QtQuick.VectorImage +import QtQuick.Effects +import "common" as Common -import "../common" as Common - -Item { +Rectangle { id: root - width: text.width + 15 - height: text.height - Common.Container {} + implicitWidth: clock.width + 4 + implicitHeight: clock.height + radius: 5.5 + color: "#2a2a2a" // Define item color Text { + id: clock + // width: parent.width - 4 + height: 24 anchors.centerIn: parent - id: text + verticalAlignment: Qt.AlignVCenter text: ClockData.time - font.pointSize: 10.25 - color: "white" + font.pixelSize: 16 + lineHeight: 1 + color: "#cacaca" } } diff --git a/modules/quickshell/quickshell/bar/widgets/clock/Date.qml b/modules/quickshell/quickshell/bar/widgets/clock/Date.qml index c67df9b..2bd6cfe 100755 --- a/modules/quickshell/quickshell/bar/widgets/clock/Date.qml +++ b/modules/quickshell/quickshell/bar/widgets/clock/Date.qml @@ -4,16 +4,21 @@ import QtQuick import "../common" as Common -Item { +Rectangle { id: root - width: text.width + 15 - height: text.height - Common.Container {} + implicitWidth: clock.width + 4 + implicitHeight: clock.height + radius: 5.5 + color: "#2a2a2a" // Define item color Text { + id: clock + // width: parent.width - 4 + height: 24 anchors.centerIn: parent - id: text + verticalAlignment: Qt.AlignVCenter text: ClockData.date - font.pointSize: 10.25 - color: "white" + font.pixelSize: 16 + lineHeight: 1 + color: "#cacaca" } } diff --git a/modules/quickshell/quickshell/bar/widgets/common/ChildContainer.qml b/modules/quickshell/quickshell/bar/widgets/common/ChildContainer.qml new file mode 100644 index 0000000..d6c2a49 --- /dev/null +++ b/modules/quickshell/quickshell/bar/widgets/common/ChildContainer.qml @@ -0,0 +1,14 @@ +import Quickshell +import QtQuick + +Rectangle { + z: 1 + color: "#2a2a2a" + opacity: 20 + anchors { + verticalCenter: parent.verticalCenter + } + height: 24 + width: parent.width + radius: 5.5 +} diff --git a/modules/quickshell/quickshell/bar/widgets/common/Icons.qml b/modules/quickshell/quickshell/bar/widgets/common/Icons.qml index f148639..30b2845 100755 --- a/modules/quickshell/quickshell/bar/widgets/common/Icons.qml +++ b/modules/quickshell/quickshell/bar/widgets/common/Icons.qml @@ -6,25 +6,32 @@ import Quickshell.Io Singleton { id: root + readonly property var svgs: ({ + micOff: "../../../assets/bar/V2/micOff.svg", + mic: "../../../assets/bar/V2/mic.svg", + speaker: "../../../assets/bar/V2/speaker.svg", + speakerOff: "../../../assets/bar/V2/speakerOff.svg" + }) + readonly property var audioIcons: ({ - microphone: "", - microphoneMuted: "", - speaker: "󰕾", - speakerMuted: "󰖁", - }) + microphone: "", + microphoneMuted: "", + speaker: "󰕾", + speakerMuted: "󰖁" + }) // {class}: {icon} readonly property var appIcons: ({ - "vesktop": "", - "steam": "", - "org.telegram.desktop": "", - "chromium": "", - "dev.zed.Zed": "", - "foot": "", - "gamescope": "󰺵", - "blender": "󰂫", - "Spotify": "", - "Unity": "", - "fallback": "󰏩" - }) + "vesktop": "", + "steam": "", + "org.telegram.desktop": "", + "chromium": "", + "dev.zed.Zed": "", + "foot": "", + "gamescope": "󰺵", + "blender": "󰂫", + "Spotify": "", + "Unity": "", + "fallback": "󰏩" + }) } diff --git a/modules/quickshell/quickshell/bar/widgets/common/ParentContainer.qml b/modules/quickshell/quickshell/bar/widgets/common/ParentContainer.qml new file mode 100644 index 0000000..e13255f --- /dev/null +++ b/modules/quickshell/quickshell/bar/widgets/common/ParentContainer.qml @@ -0,0 +1,17 @@ +import Quickshell +import QtQuick +import QtQuick.Layouts + +Item { + RowLayout { + Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter + } + Rectangle { + z: -1 + color: "black" + // anchors: parent.anchors + height: 28 + width: parent.width + radius: 6.5 + } +}