mirror of
https://github.com/celesrenata/end-4-flakes.git
synced 2026-06-06 02:39:27 -05:00
158 lines
6.3 KiB
QML
158 lines
6.3 KiB
QML
import qs
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
import QtQuick
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import Quickshell.Hyprland
|
|
import Quickshell.Io
|
|
import Quickshell.Services.Pipewire
|
|
import Quickshell.Services.UPower
|
|
|
|
Item {
|
|
id: root
|
|
property bool borderless: Config.options.bar.borderless
|
|
implicitWidth: rowLayout.implicitWidth + rowLayout.spacing * 2
|
|
implicitHeight: rowLayout.implicitHeight
|
|
|
|
Process {
|
|
id: themeSwitchProcess
|
|
running: false
|
|
stdout: SplitParser {
|
|
onRead: data => console.log("switchwall:", data)
|
|
}
|
|
stderr: SplitParser {
|
|
onRead: data => console.log("switchwall err:", data)
|
|
}
|
|
onExited: (code, status) => {
|
|
console.log("switchwall exited:", code)
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
id: rowLayout
|
|
|
|
spacing: 4
|
|
anchors.centerIn: parent
|
|
|
|
Loader {
|
|
active: Config.options.bar.utilButtons.showScreenSnip
|
|
visible: Config.options.bar.utilButtons.showScreenSnip
|
|
sourceComponent: CircleUtilButton {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
onClicked: Quickshell.execDetached(["quickshell", "-p", Quickshell.shellPath("screenshot.qml")])
|
|
MaterialSymbol {
|
|
horizontalAlignment: Qt.AlignHCenter
|
|
fill: 1
|
|
text: "screenshot_region"
|
|
iconSize: Appearance.font.pixelSize.large
|
|
color: Appearance.colors.colOnLayer2
|
|
}
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: Config.options.bar.utilButtons.showColorPicker
|
|
visible: Config.options.bar.utilButtons.showColorPicker
|
|
sourceComponent: CircleUtilButton {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
onClicked: Quickshell.execDetached(["hyprpicker", "-a"])
|
|
MaterialSymbol {
|
|
horizontalAlignment: Qt.AlignHCenter
|
|
fill: 1
|
|
text: "colorize"
|
|
iconSize: Appearance.font.pixelSize.large
|
|
color: Appearance.colors.colOnLayer2
|
|
}
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: Config.options.bar.utilButtons.showKeyboardToggle
|
|
visible: Config.options.bar.utilButtons.showKeyboardToggle
|
|
sourceComponent: CircleUtilButton {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
onClicked: GlobalStates.oskOpen = !GlobalStates.oskOpen
|
|
MaterialSymbol {
|
|
horizontalAlignment: Qt.AlignHCenter
|
|
fill: 0
|
|
text: "keyboard"
|
|
iconSize: Appearance.font.pixelSize.large
|
|
color: Appearance.colors.colOnLayer2
|
|
}
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: Config.options.bar.utilButtons.showMicToggle
|
|
visible: Config.options.bar.utilButtons.showMicToggle
|
|
sourceComponent: CircleUtilButton {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
onClicked: Quickshell.execDetached(["wpctl", "set-mute", "@DEFAULT_SOURCE@", "toggle"])
|
|
MaterialSymbol {
|
|
horizontalAlignment: Qt.AlignHCenter
|
|
fill: 0
|
|
text: Pipewire.defaultAudioSource?.audio?.muted ? "mic_off" : "mic"
|
|
iconSize: Appearance.font.pixelSize.large
|
|
color: Appearance.colors.colOnLayer2
|
|
}
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: Config.options.bar.utilButtons.showDarkModeToggle
|
|
visible: Config.options.bar.utilButtons.showDarkModeToggle
|
|
sourceComponent: CircleUtilButton {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
onClicked: event => {
|
|
const mode = Appearance.m3colors.darkmode ? "light" : "dark"
|
|
const wallpaper = Config.options.background.wallpaperPath || `${Quickshell.env("HOME")}/Pictures/Wallpapers/konachan_random_image.png`
|
|
themeSwitchProcess.command = ["bash", `${Directories.scriptPath}/colors/switchwall-wrapper.sh`, wallpaper, "--mode", mode]
|
|
themeSwitchProcess.running = false
|
|
themeSwitchProcess.running = true
|
|
}
|
|
MaterialSymbol {
|
|
horizontalAlignment: Qt.AlignHCenter
|
|
fill: 0
|
|
text: Appearance.m3colors.darkmode ? "light_mode" : "dark_mode"
|
|
iconSize: Appearance.font.pixelSize.large
|
|
color: Appearance.colors.colOnLayer2
|
|
}
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: Config.options.bar.utilButtons.showPerformanceProfileToggle
|
|
visible: Config.options.bar.utilButtons.showPerformanceProfileToggle
|
|
sourceComponent: CircleUtilButton {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
onClicked: event => {
|
|
if (PowerProfiles.hasPerformanceProfile) {
|
|
switch(PowerProfiles.profile) {
|
|
case PowerProfile.PowerSaver: PowerProfiles.profile = PowerProfile.Balanced
|
|
break;
|
|
case PowerProfile.Balanced: PowerProfiles.profile = PowerProfile.Performance
|
|
break;
|
|
case PowerProfile.Performance: PowerProfiles.profile = PowerProfile.PowerSaver
|
|
break;
|
|
}
|
|
} else {
|
|
PowerProfiles.profile = PowerProfiles.profile == PowerProfile.Balanced ? PowerProfile.PowerSaver : PowerProfile.Balanced
|
|
}
|
|
}
|
|
MaterialSymbol {
|
|
horizontalAlignment: Qt.AlignHCenter
|
|
fill: 0
|
|
text: switch(PowerProfiles.profile) {
|
|
case PowerProfile.PowerSaver: return "energy_savings_leaf"
|
|
case PowerProfile.Balanced: return "settings_slow_motion"
|
|
case PowerProfile.Performance: return "local_fire_department"
|
|
}
|
|
iconSize: Appearance.font.pixelSize.large
|
|
color: Appearance.colors.colOnLayer2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|