Files
alt-illogical-impulse/configs/quickshell/modules/settings/Settings.qml
T
Celes Renata ac6d3adeb9 Make flake self-contained - consolidate installer-replication
BREAKING CHANGE: Remove external dots-hyprland dependency

- Imported all essential configs from dots-hyprland/installer-replication
- Added complete configs/ directory with:
  - hypr/ - Hyprland configuration
  - quickshell/ - Quickshell widgets and config
  - applications/ - Application configurations
  - scripts/ - Utility scripts
  - matugen/ - Material You theming
- Updated flake.nix to use local ./configs instead of external repo
- Simplified update-flake script (removed external repo management)
- Updated README to reflect self-contained architecture
- All builds pass with local configurations

Benefits:
- No external repository dependencies
- Faster builds (no network dependencies)
- Version controlled configs in single repo
- Easier maintenance and development
- Complete installer replication in one place
2025-08-08 22:26:47 -07:00

216 lines
5.5 KiB
QML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import Quickshell
// Main Settings Window
// Integrates transparency settings and other configuration options
ApplicationWindow {
id: settingsWindow
title: "dots-hyprland Settings"
width: 500
height: 700
visible: false
color: "#1e1e2e"
// Make window float and center it
flags: Qt.Window | Qt.WindowStaysOnTopHint
Component.onCompleted: {
// Center the window
x = (Screen.width - width) / 2
y = (Screen.height - height) / 2
}
TabBar {
id: tabBar
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: 50
background: Rectangle {
color: "#313244"
}
TabButton {
text: "Effects"
width: implicitWidth
background: Rectangle {
color: parent.checked ? "#45475a" : "transparent"
radius: 4
}
contentItem: Text {
text: parent.text
color: "#cdd6f4"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
}
TabButton {
text: "Appearance"
width: implicitWidth
background: Rectangle {
color: parent.checked ? "#45475a" : "transparent"
radius: 4
}
contentItem: Text {
text: parent.text
color: "#cdd6f4"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
}
TabButton {
text: "Keybinds"
width: implicitWidth
background: Rectangle {
color: parent.checked ? "#45475a" : "transparent"
radius: 4
}
contentItem: Text {
text: parent.text
color: "#cdd6f4"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
}
}
StackLayout {
anchors.top: tabBar.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.margins: 10
currentIndex: tabBar.currentIndex
// Effects Tab (Transparency & Blur)
Item {
TransparencyUI {
anchors.fill: parent
color: "transparent"
border.width: 0
}
}
// Appearance Tab (Future: themes, colors, etc.)
Item {
Rectangle {
anchors.fill: parent
color: "#313244"
radius: 8
Text {
anchors.centerIn: parent
text: "Appearance settings\n(Coming soon)"
color: "#a6adc8"
horizontalAlignment: Text.AlignHCenter
}
}
}
// Keybinds Tab (Future: keybind customization)
Item {
Rectangle {
anchors.fill: parent
color: "#313244"
radius: 8
Text {
anchors.centerIn: parent
text: "Keybind settings\n(Coming soon)"
color: "#a6adc8"
horizontalAlignment: Text.AlignHCenter
}
}
}
}
// Close button
Button {
anchors.top: parent.top
anchors.right: parent.right
anchors.margins: 10
width: 30
height: 30
text: "×"
background: Rectangle {
color: parent.hovered ? "#f38ba8" : "#45475a"
radius: 15
}
contentItem: Text {
text: parent.text
color: "white"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font.pixelSize: 16
font.bold: true
}
onClicked: settingsWindow.close()
}
// IPC Handler for external control
IpcHandler {
target: "settings"
function show() {
settingsWindow.show()
settingsWindow.raise()
settingsWindow.requestActivate()
}
function hide() {
settingsWindow.hide()
}
function toggle() {
if (settingsWindow.visible) {
settingsWindow.hide()
} else {
settingsWindow.show()
settingsWindow.raise()
settingsWindow.requestActivate()
}
}
function showEffects() {
tabBar.currentIndex = 0
settingsWindow.show()
settingsWindow.raise()
settingsWindow.requestActivate()
}
function showAppearance() {
tabBar.currentIndex = 1
settingsWindow.show()
settingsWindow.raise()
settingsWindow.requestActivate()
}
function showKeybinds() {
tabBar.currentIndex = 2
settingsWindow.show()
settingsWindow.raise()
settingsWindow.requestActivate()
}
}
}