import QtQuick import QtQuick.Controls import QtQuick.Layouts import Quickshell import Quickshell.Io import Quickshell.Widgets import Quickshell.Hyprland import "root:/" import "root:/services/" import "root:/modules/common/" import "root:/modules/common/widgets/" import "root:/modules/common/functions/color_utils.js" as ColorUtils import "root:/modules/common/functions/file_utils.js" as FileUtils ContentPage { baseWidth: lightDarkButtonGroup.implicitWidth forceWidth: true Process { id: konachanWallProc property string status: "" command: ["bash", "-c", FileUtils.trimFileProtocol(`${Directories.scriptPath}/colors/random_konachan_wall.sh`)] stdout: SplitParser { onRead: data => { console.log(`Konachan wall proc output: ${data}`); konachanWallProc.status = data.trim(); } } } ContentSection { title: Translation.tr("Colors & Wallpaper") // Light/Dark mode preference ButtonGroup { id: lightDarkButtonGroup Layout.fillWidth: true LightDarkPreferenceButton { dark: false } LightDarkPreferenceButton { dark: true } } // Material palette selection ContentSubsection { title: Translation.tr("Material palette") ConfigSelectionArray { currentValue: Config.options.appearance.palette.type configOptionName: "appearance.palette.type" onSelected: (newValue) => { Config.options.appearance.palette.type = newValue; Quickshell.execDetached(["bash", "-c", `${Directories.wallpaperSwitchScriptPath} --noswitch`]) } options: [ {"value": "auto", "displayName": Translation.tr("Auto")}, {"value": "scheme-content", "displayName": Translation.tr("Content")}, {"value": "scheme-expressive", "displayName": Translation.tr("Expressive")}, {"value": "scheme-fidelity", "displayName": Translation.tr("Fidelity")}, {"value": "scheme-fruit-salad", "displayName": Translation.tr("Fruit Salad")}, {"value": "scheme-monochrome", "displayName": Translation.tr("Monochrome")}, {"value": "scheme-neutral", "displayName": Translation.tr("Neutral")}, {"value": "scheme-rainbow", "displayName": Translation.tr("Rainbow")}, {"value": "scheme-tonal-spot", "displayName": Translation.tr("Tonal Spot")} ] } } // Wallpaper selection ContentSubsection { title: Translation.tr("Wallpaper") RowLayout { Layout.alignment: Qt.AlignHCenter RippleButtonWithIcon { id: rndWallBtn buttonRadius: Appearance.rounding.small materialIcon: "wallpaper" mainText: konachanWallProc.running ? Translation.tr("Be patient...") : Translation.tr("Random: Konachan") onClicked: { console.log(konachanWallProc.command.join(" ")) konachanWallProc.running = true; } StyledToolTip { content: Translation.tr("Random SFW Anime wallpaper from Konachan\nImage is saved to ~/Pictures/Wallpapers") } } RippleButtonWithIcon { materialIcon: "wallpaper" StyledToolTip { content: Translation.tr("Pick wallpaper image on your system") } onClicked: { Quickshell.execDetached(`${Directories.wallpaperSwitchScriptPath}`) } mainContentComponent: Component { RowLayout { spacing: 10 StyledText { font.pixelSize: Appearance.font.pixelSize.small text: Translation.tr("Choose file") color: Appearance.colors.colOnSecondaryContainer } RowLayout { spacing: 3 KeyboardKey { key: "Ctrl" } KeyboardKey { key: "󰖳" } StyledText { Layout.alignment: Qt.AlignVCenter text: "+" } KeyboardKey { key: "T" } } } } } } } StyledText { Layout.topMargin: 5 Layout.alignment: Qt.AlignHCenter text: Translation.tr("Alternatively use /dark, /light, /img in the launcher") font.pixelSize: Appearance.font.pixelSize.smaller color: Appearance.colors.colSubtext } } ContentSection { title: Translation.tr("Decorations & Effects") ContentSubsection { title: Translation.tr("Transparency") ConfigRow { ConfigSwitch { text: Translation.tr("Enable") checked: Config.options.appearance.transparency onCheckedChanged: { Config.options.appearance.transparency = checked; } StyledToolTip { content: Translation.tr("Might look ass. Unsupported.") } } } } ContentSubsection { title: Translation.tr("Fake screen rounding") ButtonGroup { id: fakeScreenRoundingButtonGroup property int selectedPolicy: Config.options.appearance.fakeScreenRounding spacing: 2 SelectionGroupButton { property int value: 0 leftmost: true buttonText: Translation.tr("No") toggled: (fakeScreenRoundingButtonGroup.selectedPolicy === value) onClicked: { Config.options.appearance.fakeScreenRounding = value; } } SelectionGroupButton { property int value: 1 buttonText: Translation.tr("Yes") toggled: (fakeScreenRoundingButtonGroup.selectedPolicy === value) onClicked: { Config.options.appearance.fakeScreenRounding = value; } } SelectionGroupButton { property int value: 2 rightmost: true buttonText: Translation.tr("When not fullscreen") toggled: (fakeScreenRoundingButtonGroup.selectedPolicy === value) onClicked: { Config.options.appearance.fakeScreenRounding = value; } } } } ContentSubsection { title: Translation.tr("Shell windows") ConfigRow { uniform: true ConfigSwitch { text: Translation.tr("Title bar") checked: Config.options.windows.showTitlebar onCheckedChanged: { Config.options.windows.showTitlebar = checked; } } ConfigSwitch { text: Translation.tr("Center title") checked: Config.options.windows.centerTitle onCheckedChanged: { Config.options.windows.centerTitle = checked; } } } } } }