koekeishiya / yabai

A tiling window manager for macOS based on binary space partitioning
MIT License
24.19k stars 645 forks source link

Yabai not showing up in Accessibility and plist could not be installed #1784

Closed xSnejx closed 9 months ago

xSnejx commented 1 year ago

I'm trying to install yabai on my M1 Pro Macbook, I partially disabled SIP and followed the installation guide. I even uninstalled everything and retried multiple times always ending up with the Error that the plist could not be installed.

yabai --start-service
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' is not installed! attempting installation..
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' could not be installed! abort..

Currently I have the installation with HEAD, but that didn't resolve the issue. Besides getting that error when trying to start yabai I also never got prompted to activate Yabai in the Privacy & Security Accessibility Settings. It's not showing up. I tried manually adding it like shown in the HEAD installation guide, but the shown directory is not where it's installed, I guess because its a M1 Mac. I tried /opt/homebrew/bin/yabai and /opt/homebrew/opt/yabai/bin/yabai but it didn't work. It's also just showing the terminal and not the Yabai Icon. image

Other Threads said you need to manually create the LaunchAgent Folder but I already have it and its not working. Maybe I understood it wrong though and it needs to be in a different location. Here a screenshot with the path at the bottom: image

I have no idea whats the problem and I'm not well versed in coding or to troubleshoot the issue further myself. If there already is a thread addressing all issues i mentioned, then I'm sorry. I couldn't find a thread that helped me fix my issues.

leo-cx commented 1 year ago

Hi my memory is a bit blurry because I had the same problem a week ago with no prompt in Accessibility, but I did

yabai --uninstall-service
yabai --install-service 
yabai --start-service

I had a plist file but it wasn't accepted so I reinstalled it ,and yabai popped up with its logo instead of the terminal in Accessibility this time. Hope this helps. Before the fix I just used yabai& and left it in terminal lol

xSnejx commented 1 year ago

Hey thanks for the idea, but that doesn't work either. It gives me the same error:

yabai --uninstall-service
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' is not installed! abort..
leo-cx commented 1 year ago

How about if you omit the yabai --uninstall-service? My plist didn't work at the time so I used that but you should be able to skip that since you don't have a plist at all.

xSnejx commented 1 year ago

I think I tried all possible combinations of those commands already yabai --install-service does nothing, not even giving me any error but uninstalling or starting gives me said error:

snex@Yeeee-Macbook ~ % yabai --install-service
snex@Yeeee-Macbook ~ % yabai --start-service
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' is not installed! attempting installation..
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' could not be installed! abort..
javierguzman commented 1 year ago

I have the same problem

varon commented 1 year ago

This is likely caused by an update in brew eventually turning the plist/service description warning on installation into an error.

@koekeishiya - this is an important one in urgent need of a fix.

varon commented 1 year ago

I reinstalled this from head, following the instructions here: https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(from-HEAD)

After running with yabai --start-service, everything worked as expected.

xSnejx commented 1 year ago

It still doesn't work for me, maybe I'm doing something severely wrong but I am following the instructions... I think the plist should be created automatically on install, which isn't the case for me and that gives me a lot of error messages as shown in the previous posts

oleg-korolenko commented 1 year ago

same issue +1 with 5.0.7

pencilcheck commented 11 months ago

What worked for me is to replace the PATH string in the plist with the one from homebrew plist (e.g. sketchybar plist) as my plist contains invalid characters in the PATH that makes launchctl not able to launch the plist properly.

Once I fixed that I restart my computer and then run yabai --start-service again and then it works (of course I also do the same for skhd as well)

Chiarandini commented 11 months ago

Can you elaborate on this solution? I've done all the other recommended fixes and they have not worked

pencilcheck commented 11 months ago

Can you elaborate on this solution? I've done all the other recommended fixes and they have not worked

The buildin yabai launchagents doesn't work for me, because it generates the PATH variable with invalid characters, just replace your launchagents with the following.

Here is my yabai launchagents plist it sits under ~/Library/LaunchAgents/com.koekeishiya.yabai.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.koekeishiya.yabai</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/bin/yabai</string>
    </array>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/opt/homebrew/bin:/opt/homebrew/sbin:/usr/bin:/bin:/usr/sbin:/sbin</string>
    </dict>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
         <false/>
         <key>Crashed</key>
         <true/>
    </dict>
    <key>StandardOutPath</key>
    <string>/tmp/yabai_penn.out.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/yabai_penn.err.log</string>
    <key>ProcessType</key>
    <string>Interactive</string>
    <key>Nice</key>
    <integer>-20</integer>
</dict>
</plist>
koekeishiya commented 10 months ago

@pencilcheck yabai just runs char *path_env = getenv("PATH"); and inserts it into the generated file using snprintf. Can you open your terminal, run echo $PATH and upload the output?

pencilcheck commented 10 months ago

@pencilcheck yabai just runs char *path_env = getenv("PATH"); and inserts it into the generated file using snprintf. Can you open your terminal, run echo $PATH and upload the output?

I don't think it makes sense to paste it here, since I have a lot of work sensitive stuff in there I don't want to put it in the public.

The problem is that there are invalid characters that somehow is valid in PATH and shell but not valid when running inside launchagent.