i3ipc-0.1.0.0: src/I3IPC/Subscribe.hs
{-|
Describes the different kinds of events one can subscribe to.
-}
module I3IPC.Subscribe
( Subscribe(..)
)
where
import GHC.Generics
import Data.Aeson
import Data.Aeson.Encoding ( text )
-- | Subscribe from i3 have the following types (https://i3wm.org/docs/ipc.html#_events)
data Subscribe =
-- | Sent when the user switches to a different workspace, when a new workspace is initialized or when a workspace is removed (because the last client vanished).
Workspace
-- | Sent when RandR issues a change notification (of either screens, outputs, CRTCs or output properties).
| Output
-- | Sent whenever i3 changes its binding mode.
| Mode
-- | Sent when a client’s window is successfully reparented (that is when i3 has finished fitting it into a container), when a window received input focus or when certain properties of the window have changed.
| Window
-- | Sent when the hidden_state or mode field in the barconfig of any bar instance was updated and when the config is reloaded.
| BarConfigUpdate
-- | Sent when a configured command binding is triggered with the keyboard or mouse
| Binding
-- | Sent when the ipc shuts down because of a restart or exit by user command
| Shutdown
-- | Sent when the ipc client subscribes to the tick event (with "first": true) or when any ipc client sends a SEND_TICK message (with "first": false).
| Tick
deriving (Enum, Eq, Generic, Show)
instance ToJSON Subscribe where
toEncoding = \case
Workspace -> text "workspace"
Output -> text "output"
Mode -> text "mode"
Window -> text "window"
BarConfigUpdate -> text "barconfig_update"
Binding -> text "binding"
Shutdown -> text "shutdown"
Tick -> text "tick"