mirror of
https://github.com/celesrenata/end-4-flakes.git
synced 2026-06-11 04:29:27 -05:00
fix: add wayland dev headers and scanner for pywayland build on NixOS
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Quickshell
|
||||
import Quickshell.Services.SystemdUser
|
||||
|
||||
// Transparency and Blur Settings Module
|
||||
// Based on AGS configuration from ~/.config/ags/modules/sideright/centermodules/configure.js
|
||||
|
||||
Rectangle {
|
||||
id: transparencySettings
|
||||
|
||||
property bool globalTransparency: false
|
||||
property int terminalOpacity: 100
|
||||
property bool blurEnabled: false
|
||||
property bool blurXray: true
|
||||
property int blurSize: 8
|
||||
property int blurPasses: 4
|
||||
|
||||
// Storage paths (matching AGS structure)
|
||||
property string colorModeFile: StandardPaths.writableLocation(StandardPaths.CacheLocation) + "/ags/user/colormode.txt"
|
||||
property string terminalTransparencyFile: StandardPaths.writableLocation(StandardPaths.CacheLocation) + "/ags/user/generated/terminal/transparency"
|
||||
|
||||
color: "transparent"
|
||||
|
||||
Component.onCompleted: {
|
||||
loadSettings()
|
||||
}
|
||||
|
||||
// Load settings from files (AGS compatibility)
|
||||
function loadSettings() {
|
||||
// Load global transparency mode
|
||||
Process.exec("bash", ["-c", `mkdir -p $(dirname "${colorModeFile}")`])
|
||||
let colorModeResult = Process.exec("bash", ["-c", `sed -n '2p' "${colorModeFile}" 2>/dev/null || echo "opaque"`])
|
||||
globalTransparency = (colorModeResult.stdout.trim() === "transparent")
|
||||
|
||||
// Load terminal opacity
|
||||
Process.exec("bash", ["-c", `mkdir -p $(dirname "${terminalTransparencyFile}")`])
|
||||
let termOpacityResult = Process.exec("bash", ["-c", `cat "${terminalTransparencyFile}" 2>/dev/null || echo "100"`])
|
||||
terminalOpacity = parseInt(termOpacityResult.stdout.trim()) || 100
|
||||
|
||||
// Load Hyprland blur settings
|
||||
loadHyprlandSettings()
|
||||
}
|
||||
|
||||
function loadHyprlandSettings() {
|
||||
// Load blur enabled
|
||||
let blurResult = Process.exec("hyprctl", ["getoption", "-j", "decoration:blur:enabled"])
|
||||
try {
|
||||
let blurData = JSON.parse(blurResult.stdout)
|
||||
blurEnabled = blurData.int !== 0
|
||||
} catch (e) {
|
||||
console.log("Failed to load blur enabled setting:", e)
|
||||
}
|
||||
|
||||
// Load blur xray
|
||||
let xrayResult = Process.exec("hyprctl", ["getoption", "-j", "decoration:blur:xray"])
|
||||
try {
|
||||
let xrayData = JSON.parse(xrayResult.stdout)
|
||||
blurXray = xrayData.int !== 0
|
||||
} catch (e) {
|
||||
console.log("Failed to load blur xray setting:", e)
|
||||
}
|
||||
|
||||
// Load blur size
|
||||
let sizeResult = Process.exec("hyprctl", ["getoption", "-j", "decoration:blur:size"])
|
||||
try {
|
||||
let sizeData = JSON.parse(sizeResult.stdout)
|
||||
blurSize = sizeData.int
|
||||
} catch (e) {
|
||||
console.log("Failed to load blur size setting:", e)
|
||||
}
|
||||
|
||||
// Load blur passes
|
||||
let passesResult = Process.exec("hyprctl", ["getoption", "-j", "decoration:blur:passes"])
|
||||
try {
|
||||
let passesData = JSON.parse(passesResult.stdout)
|
||||
blurPasses = passesData.int
|
||||
} catch (e) {
|
||||
console.log("Failed to load blur passes setting:", e)
|
||||
}
|
||||
}
|
||||
|
||||
// Save and apply global transparency
|
||||
function setGlobalTransparency(enabled) {
|
||||
globalTransparency = enabled
|
||||
let mode = enabled ? "transparent" : "opaque"
|
||||
|
||||
// Save to colormode.txt (line 2)
|
||||
Process.exec("bash", ["-c", `mkdir -p $(dirname "${colorModeFile}")
|
||||
if [ ! -f "${colorModeFile}" ]; then
|
||||
echo "dark" > "${colorModeFile}"
|
||||
echo "${mode}" >> "${colorModeFile}"
|
||||
else
|
||||
sed -i "2s/.*/${mode}/" "${colorModeFile}"
|
||||
fi`])
|
||||
|
||||
// Apply color changes (equivalent to AGS switchcolor.sh)
|
||||
applyColorChanges()
|
||||
}
|
||||
|
||||
// Save and apply terminal opacity
|
||||
function setTerminalOpacity(opacity) {
|
||||
terminalOpacity = opacity
|
||||
|
||||
// Save to terminal transparency file
|
||||
Process.exec("bash", ["-c", `mkdir -p $(dirname "${terminalTransparencyFile}")
|
||||
echo "${opacity}" > "${terminalTransparencyFile}"`])
|
||||
|
||||
// Apply terminal colors (equivalent to AGS applycolor.sh term)
|
||||
applyTerminalColors()
|
||||
}
|
||||
|
||||
// Apply Hyprland blur settings
|
||||
function setBlurEnabled(enabled) {
|
||||
blurEnabled = enabled
|
||||
Process.exec("hyprctl", ["keyword", "decoration:blur:enabled", enabled ? "1" : "0"])
|
||||
}
|
||||
|
||||
function setBlurXray(enabled) {
|
||||
blurXray = enabled
|
||||
Process.exec("hyprctl", ["keyword", "decoration:blur:xray", enabled ? "1" : "0"])
|
||||
}
|
||||
|
||||
function setBlurSize(size) {
|
||||
blurSize = size
|
||||
Process.exec("hyprctl", ["keyword", "decoration:blur:size", size.toString()])
|
||||
}
|
||||
|
||||
function setBlurPasses(passes) {
|
||||
blurPasses = passes
|
||||
Process.exec("hyprctl", ["keyword", "decoration:blur:passes", passes.toString()])
|
||||
}
|
||||
|
||||
// Apply color changes (equivalent to AGS color generation)
|
||||
function applyColorChanges() {
|
||||
// This would call the equivalent of AGS color generation scripts
|
||||
Process.exec("bash", ["-c", `
|
||||
# Apply transparency mode to all shell elements
|
||||
# This is where we'd integrate with the quickshell theming system
|
||||
echo "Applying transparency mode: ${globalTransparency ? 'transparent' : 'opaque'}"
|
||||
|
||||
# Reload quickshell to apply changes
|
||||
quickshell ipc call settings reload || true
|
||||
`])
|
||||
}
|
||||
|
||||
// Apply terminal colors (equivalent to AGS applycolor.sh term)
|
||||
function applyTerminalColors() {
|
||||
let alpha = terminalOpacity / 100.0
|
||||
|
||||
Process.exec("bash", ["-c", `
|
||||
# Update foot terminal configuration with new opacity
|
||||
FOOT_CONFIG="$HOME/.config/foot/foot.ini"
|
||||
if [ -f "$FOOT_CONFIG" ]; then
|
||||
# Update alpha value in foot.ini
|
||||
sed -i "s/^alpha=.*/alpha=${alpha}/" "$FOOT_CONFIG" || echo "alpha=${alpha}" >> "$FOOT_CONFIG"
|
||||
fi
|
||||
|
||||
# Send terminal escape sequence to update running terminals
|
||||
# This matches the AGS terminal sequences functionality
|
||||
echo "Applied terminal opacity: ${terminalOpacity}%"
|
||||
`])
|
||||
}
|
||||
|
||||
// IPC Handler for external control
|
||||
IpcHandler {
|
||||
target: "transparencySettings"
|
||||
|
||||
function setTransparency(enabled) {
|
||||
transparencySettings.setGlobalTransparency(enabled)
|
||||
}
|
||||
|
||||
function setTerminalOpacity(opacity) {
|
||||
transparencySettings.setTerminalOpacity(opacity)
|
||||
}
|
||||
|
||||
function setBlur(enabled) {
|
||||
transparencySettings.setBlurEnabled(enabled)
|
||||
}
|
||||
|
||||
function setBlurXray(enabled) {
|
||||
transparencySettings.setBlurXray(enabled)
|
||||
}
|
||||
|
||||
function setBlurSize(size) {
|
||||
transparencySettings.setBlurSize(size)
|
||||
}
|
||||
|
||||
function setBlurPasses(passes) {
|
||||
transparencySettings.setBlurPasses(passes)
|
||||
}
|
||||
|
||||
function getSettings() {
|
||||
return {
|
||||
globalTransparency: transparencySettings.globalTransparency,
|
||||
terminalOpacity: transparencySettings.terminalOpacity,
|
||||
blurEnabled: transparencySettings.blurEnabled,
|
||||
blurXray: transparencySettings.blurXray,
|
||||
blurSize: transparencySettings.blurSize,
|
||||
blurPasses: transparencySettings.blurPasses
|
||||
}
|
||||
}
|
||||
|
||||
function reload() {
|
||||
transparencySettings.loadSettings()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user