Compare commits

..

4 Commits

2 changed files with 15 additions and 2 deletions

View File

@ -21,6 +21,10 @@ func (c *Client) IsReachable() bool {
// and returns true as soon as IsReachable returns true. // and returns true as soon as IsReachable returns true.
// When ctx is closed before Hyprland is reachable, false is returned // When ctx is closed before Hyprland is reachable, false is returned
func (c *Client) WaitUntilReachable(ctx context.Context) bool { func (c *Client) WaitUntilReachable(ctx context.Context) bool {
if c.IsReachable() {
return true
}
ticker := time.NewTicker(100 * time.Millisecond) ticker := time.NewTicker(100 * time.Millisecond)
defer ticker.Stop() defer ticker.Stop()

View File

@ -70,10 +70,19 @@ func GetClients() ([]*Client, error) {
return clients, nil return clients, nil
} }
func WaitForDefaultClient(ctx context.Context) (*Client, error) {
signature, ok := os.LookupEnv("HYPRLAND_INSTANCE_SIGNATURE")
if !ok {
return nil, errors.New("default instance not found because HYPRLAND_INSTANCE_SIGNATURE is not set")
}
return WaitForClient(ctx, signature)
}
func WaitForClient(ctx context.Context, signature string) (*Client, error) { func WaitForClient(ctx context.Context, signature string) (*Client, error) {
lockFilePath := fmt.Sprintf("/run/user/1000/hypr/%s/hyprland.lock", signature) lockFilePath := fmt.Sprintf("/run/user/1000/hypr/%s/hyprland.lock", signature)
lockFileExists := !waitFor(ctx, func() bool { lockFileExists := waitFor(ctx, func() bool {
_, err := os.Stat(lockFilePath) _, err := os.Stat(lockFilePath)
return !errors.Is(err, os.ErrNotExist) return !errors.Is(err, os.ErrNotExist)
}) })
@ -87,7 +96,7 @@ func WaitForClient(ctx context.Context, signature string) (*Client, error) {
return nil, err return nil, err
} }
if client.WaitUntilReachable(context.Background()) { if !client.WaitUntilReachable(context.Background()) {
return nil, errors.New("hyprland not reachable") return nil, errors.New("hyprland not reachable")
} }