29 lines
		
	
	
		
			995 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			995 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| // ┌                                               ┐
 | |
| // │  From https://github.com/Neurarian/matshell   │
 | |
| // └                                               ┘
 | |
| import { App, Gdk } from "astal/gtk4";
 | |
| import Hyprland from "gi://AstalHyprland";
 | |
| 
 | |
| /* Match Hyprland monitor to GDK monitor
 | |
| THIS MAY NOT WORK AS INTENDED IF YOU HAVE MONITORS OF THE SAME MODEL
 | |
| I did not find a more elegant solution to this. 
 | |
| On my setup GDK coordinates and hyprland coordinates are flipped,
 | |
| so I cant match by coordinates. */
 | |
| 
 | |
| export function hyprToGdk(monitor: Hyprland.Monitor): Gdk.Monitor | null {
 | |
|     const monitors = App.get_monitors();
 | |
|     if (!monitors || monitors.length === 0) return null;
 | |
| 
 | |
|     for (let gdkmonitor of monitors) {
 | |
|         if (
 | |
|             monitor &&
 | |
|             gdkmonitor &&
 | |
|             monitor.get_name() === gdkmonitor.get_connector()
 | |
|         )
 | |
|             return gdkmonitor;
 | |
|     }
 | |
| 
 | |
|     // Default monitor with null safety
 | |
|     return monitors.length > 0 ? monitors[0] : null;
 | |
| }
 |