# IPC Hyprland exposes 2 UNIX Sockets, for controlling / getting info about Hyprland via code / bash utilities. ## Hyprland Instance Signature (HIS) ``` echo $HYPRLAND_INSTANCE_SIGNATURE ``` # /tmp/hypr/\[HIS\]/.socket.sock Used for hyprctl-like requests. See the [Hyprctl page](https://github.com/hyprwm/Hyprland/wiki/Using-hyprctl) for commands. basically, write `command args`. # /tmp/hypr/\[HIS\]/.socket2.sock Used for events. Hyprland will write to each connected client live events like this: `EVENT>>DATA\n` (\\n is a linebreak) e.g.: `workspace>>2` ## Events list: ### workspace emitted on workspace change. Is emitted ONLY when a user requests a workspace change, and is not emitted on mouse movements (see `activemon`) Data: WORKSPACENAME ### focusedmon emitted on the active monitor being changed. Data: MONNAME,WORKSPACENAME ### activewindow emitted on the active window being changed. Data: WINDOWCLASS,WINDOWTITLE ### fullscreen emitted when a fullscreen status of a window changes. Warning: a fullscreen event is not guaranteed to fire on/off once in succession. A window might do for example 3 requests to be fullscreen'd, which would result in 3 fullscreen events. Data: 0/1 (exit fullscreen / enter fullscreen) ### monitorremoved emitted when a monitor is removed (disconnected) Data: MONITORNAME ### monitoradded emitted when a monitor is added (connected) Data: MONITORNAME ### createworkspace and destroyworkspace emitted when a workspace is created or removed Data: WORKSPANCENAME ## How to use socket2 with bash example script using socket2 events with bash and `socat`: ``` #!/bin/sh function handle { if [[ ${1:0:12} == "monitoradded" ]]; then # do_something fi } socat - UNIX-CONNECT:/tmp/hypr/$(echo $HYPRLAND_INSTANCE_SIGNATURE)/.socket2.sock | while read line; do handle $line; done ```