mirror of
https://github.com/celesrenata/end-4-flakes.git
synced 2026-06-05 18:29:26 -05:00
fix: add wayland dev headers and scanner for pywayland build on NixOS
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
|
||||
/**
|
||||
* Application launcher patch for NixOS integration
|
||||
* Ensures applications are launched with proper PATH environment
|
||||
*/
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
// Get the launcher wrapper path from environment
|
||||
readonly property string launcherWrapper: Quickshell.env("DOTS_HYPRLAND_APP_LAUNCHER") || ""
|
||||
|
||||
/**
|
||||
* Launch an application using the NixOS-compatible launcher wrapper
|
||||
* @param command - The command to execute (can be string or array)
|
||||
*/
|
||||
function launchApp(command) {
|
||||
if (launcherWrapper === "") {
|
||||
console.warn("AppLauncherPatch: No launcher wrapper found, falling back to direct execution");
|
||||
if (Array.isArray(command)) {
|
||||
Quickshell.execDetached(command);
|
||||
} else {
|
||||
Quickshell.execDetached(["bash", "-c", command]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("AppLauncherPatch: Launching app with wrapper:", command);
|
||||
|
||||
if (Array.isArray(command)) {
|
||||
// If command is an array, prepend the launcher wrapper
|
||||
Quickshell.execDetached([launcherWrapper].concat(command));
|
||||
} else {
|
||||
// If command is a string, use bash to execute it through the wrapper
|
||||
Quickshell.execDetached([launcherWrapper, "bash", "-c", command]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Launch a desktop entry using the launcher wrapper
|
||||
* @param desktopEntry - The DesktopEntry object
|
||||
*/
|
||||
function launchDesktopEntry(desktopEntry) {
|
||||
if (!desktopEntry) {
|
||||
console.warn("AppLauncherPatch: No desktop entry provided");
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("AppLauncherPatch: Launching desktop entry:", desktopEntry.name);
|
||||
|
||||
// Try to use the desktop entry's execute method first
|
||||
try {
|
||||
desktopEntry.execute();
|
||||
} catch (error) {
|
||||
console.warn("AppLauncherPatch: Desktop entry execute failed, trying wrapper approach:", error);
|
||||
|
||||
// Fallback: extract the Exec command and use our wrapper
|
||||
if (desktopEntry.exec) {
|
||||
launchApp(desktopEntry.exec);
|
||||
} else {
|
||||
console.error("AppLauncherPatch: No exec command found in desktop entry");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user