mirror of
https://github.com/kossLAN/dots.git
synced 2025-11-04 22:49:50 -05:00
Compare commits
2 commits
e33d3d574a
...
102fa853a8
| Author | SHA1 | Date | |
|---|---|---|---|
| 102fa853a8 | |||
| 65894a08c9 |
10 changed files with 246 additions and 38 deletions
|
|
@ -73,11 +73,11 @@ Variants {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
}
|
}
|
||||||
|
|
||||||
// VolumeIndicator {
|
VolumeIndicator {
|
||||||
// bar: root
|
bar: root
|
||||||
// Layout.preferredWidth: this.height
|
Layout.preferredWidth: this.height
|
||||||
// Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
// }
|
}
|
||||||
|
|
||||||
PowerMenu {
|
PowerMenu {
|
||||||
bar: root
|
bar: root
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ Scope {
|
||||||
|
|
||||||
LazyLoader {
|
LazyLoader {
|
||||||
id: popupLoader
|
id: popupLoader
|
||||||
activeAsync: root.shownItem != null
|
active: root.shownItem != null
|
||||||
|
|
||||||
PopupWindow {
|
PopupWindow {
|
||||||
id: popup
|
id: popup
|
||||||
|
|
|
||||||
84
shell/bar/control/ControlCenter.qml
Normal file
84
shell/bar/control/ControlCenter.qml
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import Qt5Compat.GraphicalEffects
|
||||||
|
import Quickshell.Services.Pipewire
|
||||||
|
import Quickshell.Widgets
|
||||||
|
import qs.widgets
|
||||||
|
import qs.bar
|
||||||
|
|
||||||
|
StyledMouseArea {
|
||||||
|
id: root
|
||||||
|
onClicked: showMenu = !showMenu
|
||||||
|
|
||||||
|
required property var bar
|
||||||
|
property bool showMenu: false
|
||||||
|
|
||||||
|
IconImage {
|
||||||
|
id: icon
|
||||||
|
source: "root:resources/control/controls-button.svg"
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
margins: 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property PopupItem menu: PopupItem {
|
||||||
|
id: menu
|
||||||
|
owner: root
|
||||||
|
popup: root.bar.popup
|
||||||
|
show: root.showMenu
|
||||||
|
onClosed: root.showMenu = false
|
||||||
|
|
||||||
|
property real padding: 10
|
||||||
|
|
||||||
|
implicitWidth: 275
|
||||||
|
implicitHeight: 350
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: container
|
||||||
|
spacing: 4
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
margins: 8
|
||||||
|
}
|
||||||
|
|
||||||
|
ControlCenterCard {
|
||||||
|
title: "Wi-Fi"
|
||||||
|
description: "Wifi Network"
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: 40
|
||||||
|
}
|
||||||
|
|
||||||
|
ControlCenterCard {
|
||||||
|
title: "Bluetooth"
|
||||||
|
description: "Manage bluetooth devices."
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: 40
|
||||||
|
}
|
||||||
|
|
||||||
|
// ControlCenterCard {
|
||||||
|
// title: "Bluetooth"
|
||||||
|
// description: "Manage bluetooth devices."
|
||||||
|
// Layout.fillWidth: true
|
||||||
|
// Layout.preferredHeight: 40
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// ControlCenterCard {
|
||||||
|
// title: "Bluetooth"
|
||||||
|
// description: "Manage bluetooth devices."
|
||||||
|
// Layout.fillWidth: true
|
||||||
|
// Layout.preferredHeight: 40
|
||||||
|
// }
|
||||||
|
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
45
shell/bar/control/ControlCenterCard.qml
Normal file
45
shell/bar/control/ControlCenterCard.qml
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import Quickshell.Widgets
|
||||||
|
import qs
|
||||||
|
|
||||||
|
WrapperMouseArea {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
required property var title
|
||||||
|
required property var description
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
ColumnLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: root.title
|
||||||
|
color: ShellSettings.colors.active
|
||||||
|
font.pointSize: 10
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: root.description
|
||||||
|
color: ShellSettings.colors.active.darker(2.0)
|
||||||
|
font.pointSize: 9
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IconImage {
|
||||||
|
source: "root:resources/general/right-arrow.svg"
|
||||||
|
Layout.preferredWidth: height
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
Layout.margins: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rectangle {
|
||||||
|
// Layout.preferredWidth: height
|
||||||
|
// Layout.fillHeight: true
|
||||||
|
// Layout.alignment: Qt.AlignRight
|
||||||
|
// Layout.margins: 2
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,19 +5,20 @@ import QtQuick.Layouts
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import Quickshell.Widgets
|
import Quickshell.Widgets
|
||||||
import Quickshell.Services.Pipewire
|
import Quickshell.Services.Pipewire
|
||||||
import qs
|
|
||||||
import qs.widgets
|
import qs.widgets
|
||||||
|
import qs
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
id: root
|
id: root
|
||||||
active: node !== null
|
active: node != null
|
||||||
|
|
||||||
required property PwNode node
|
required property PwNode node
|
||||||
|
property string label: node.nickname
|
||||||
|
|
||||||
sourceComponent: WrapperRectangle {
|
sourceComponent: WrapperRectangle {
|
||||||
id: comp
|
id: comp
|
||||||
color: ShellSettings.colors.surface_container_translucent
|
color: ShellSettings.colors.surface_container_translucent
|
||||||
radius: 12
|
radius: 12
|
||||||
margin: 6
|
margin: 6
|
||||||
|
|
||||||
border {
|
border {
|
||||||
|
|
@ -25,7 +26,6 @@ Loader {
|
||||||
color: ShellSettings.colors.active_translucent
|
color: ShellSettings.colors.active_translucent
|
||||||
}
|
}
|
||||||
|
|
||||||
// property string text
|
|
||||||
// property Component button
|
// property Component button
|
||||||
// property Component icon
|
// property Component icon
|
||||||
|
|
||||||
|
|
@ -35,23 +35,48 @@ Loader {
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Slider {
|
ColumnLayout {
|
||||||
value: root.node.audio.volume ?? 0
|
|
||||||
// text: root.text
|
|
||||||
// icon: root.icon
|
|
||||||
|
|
||||||
onValueChanged: {
|
|
||||||
// only allow changes when the node is ready other wise you will combust
|
|
||||||
if (!root.node.ready)
|
|
||||||
return;
|
|
||||||
|
|
||||||
root.node.audio.volume = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: root.label
|
||||||
|
color: ShellSettings.colors.active
|
||||||
|
elide: Text.ElideRight
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
|
||||||
|
StyledSlider {
|
||||||
|
value: root.node.audio.volume ?? 0
|
||||||
|
// text: root.text
|
||||||
|
// icon: root.icon
|
||||||
|
|
||||||
|
onValueChanged: {
|
||||||
|
// only allow changes when the node is ready other wise you will combust
|
||||||
|
if (!root.node.ready)
|
||||||
|
return;
|
||||||
|
|
||||||
|
root.node.audio.volume = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StyledMouseArea {
|
||||||
|
// id: rightArrow
|
||||||
|
// Layout.preferredWidth: rightArrow.height
|
||||||
|
// // Layout.fillWidth: true
|
||||||
|
// Layout.fillHeight: true
|
||||||
|
//
|
||||||
|
// IconImage {
|
||||||
|
// source: "root:resources/general/right-arrow.svg"
|
||||||
|
// anchors.fill: parent
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
// Loader {
|
// Loader {
|
||||||
// id: buttonLoader
|
// id: buttonLoader
|
||||||
// sourceComponent: root.button
|
// sourceComponent: root.button
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import Quickshell.Widgets
|
||||||
import Quickshell.Services.Pipewire
|
import Quickshell.Services.Pipewire
|
||||||
import qs.widgets
|
import qs.widgets
|
||||||
import qs.bar
|
import qs.bar
|
||||||
|
import qs
|
||||||
|
|
||||||
StyledMouseArea {
|
StyledMouseArea {
|
||||||
id: root
|
id: root
|
||||||
|
|
@ -34,31 +35,66 @@ StyledMouseArea {
|
||||||
implicitWidth: 300
|
implicitWidth: 300
|
||||||
implicitHeight: container.implicitHeight + (2 * 8)
|
implicitHeight: container.implicitHeight + (2 * 8)
|
||||||
|
|
||||||
// implicitWidth: volumeMenu.implicitWidth
|
property PwNode sink: Pipewire.defaultAudioSink
|
||||||
// implicitHeight: volumeMenu.implicitHeight
|
property real entryHeight: 45
|
||||||
|
|
||||||
// VolumeControl {
|
|
||||||
// id: volumeMenu
|
|
||||||
// }
|
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: container
|
id: container
|
||||||
|
spacing: 4
|
||||||
|
|
||||||
anchors {
|
anchors {
|
||||||
fill: parent
|
fill: parent
|
||||||
margins: 8
|
margins: 8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Default Audio
|
||||||
VolumeCard {
|
VolumeCard {
|
||||||
node: Pipewire.defaultAudioSink
|
node: menu.sink
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: 45
|
Layout.preferredHeight: menu.entryHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
VolumeCard {
|
Rectangle {
|
||||||
node: Pipewire.defaultAudioSource
|
color: ShellSettings.colors.active_translucent
|
||||||
|
radius: height / 2
|
||||||
|
Layout.leftMargin: 3
|
||||||
|
Layout.rightMargin: 3
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: 45
|
Layout.preferredHeight: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
// Application Mixer
|
||||||
|
Loader {
|
||||||
|
id: sinkLoader
|
||||||
|
active: menu.sink
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: 5 * menu.entryHeight
|
||||||
|
|
||||||
|
PwNodeLinkTracker {
|
||||||
|
id: linkTracker
|
||||||
|
node: menu.sink
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceComponent: ListView {
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 6
|
||||||
|
model: linkTracker.linkGroups
|
||||||
|
|
||||||
|
delegate: Loader {
|
||||||
|
id: nodeLoader
|
||||||
|
active: modelData.source != null
|
||||||
|
width: ListView.view.width
|
||||||
|
height: menu.entryHeight
|
||||||
|
|
||||||
|
required property PwLinkGroup modelData
|
||||||
|
|
||||||
|
sourceComponent: VolumeCard {
|
||||||
|
node: nodeLoader.modelData.source
|
||||||
|
label: node.properties["media.name"] ?? ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||||
<svg fill="#ffffff" width="800px" height="800px" viewBox="0 -32 576 576" xmlns="http://www.w3.org/2000/svg">
|
<svg fill="#ffffff" width="128px" height="128px" viewBox="0 -32 576 576" xmlns="http://www.w3.org/2000/svg" stroke="#ffffff">
|
||||||
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
<g id="SVGRepo_iconCarrier">
|
<g id="SVGRepo_iconCarrier">
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
9
shell/resources/volume/volume-low.svg
Normal file
9
shell/resources/volume/volume-low.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||||
|
<svg fill="#ffffff" width="800px" height="800px" viewBox="-64 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||||
|
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<g id="SVGRepo_iconCarrier">
|
||||||
|
<path d="M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 914 B |
9
shell/resources/volume/volume-off.svg
Normal file
9
shell/resources/volume/volume-off.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||||
|
<svg fill="#ffffff" width="800px" height="800px" viewBox="-128 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||||
|
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<g id="SVGRepo_iconCarrier">
|
||||||
|
<path d="M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 594 B |
|
|
@ -8,13 +8,13 @@ import ".."
|
||||||
Slider {
|
Slider {
|
||||||
id: slider
|
id: slider
|
||||||
implicitHeight: 8
|
implicitHeight: 8
|
||||||
property var accentColor: ShellSettings.colors["primary"]
|
property var accentColor: ShellSettings.colors.active
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
id: sliderContainer
|
id: sliderContainer
|
||||||
width: slider.availableWidth
|
width: slider.availableWidth
|
||||||
height: slider.implicitHeight
|
height: slider.implicitHeight
|
||||||
color: ShellSettings.colors["inverse_surface"]
|
color: ShellSettings.colors.inactive
|
||||||
radius: 4
|
radius: 4
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue