FelixKratz / SketchyBar

A highly customizable macOS status bar replacement
https://felixkratz.github.io/SketchyBar/
GNU General Public License v3.0
5.2k stars 82 forks source link

Cannot run SketchyBar if configuration is execeutable symbolic link #553

Open vkravets opened 1 month ago

vkravets commented 1 month ago

In case of nix all config files are symlink. The SketcyBar check if config file is executable (and it will be false in case of symlink, even if target is executable) and try to set the execute permission and it's fail since it's a nix )))

It seems issue is arising here https://github.com/FelixKratz/SketchyBar/blob/4aa602ac71f98fe9f4a4edb7cd0fd434c38010f9/src/misc/helpers.h#L427

and this code for executable symlink won't return true

I don't have knowladge of c++ to fix this, so please aware of the issue related to symlinked configuration

in my case I've fixed it, by manualy configure launchctl service using following changes at my configuration and don't using the nix-darwin service for the integration

    launchd.user.agents.sketchybar = {
      path = [ pkgs.sketchybar ] ++ [ pkgs.sketchybar-app-font ] ++ [ config.environment.systemPath ];
      serviceConfig.ProgramArguments = [ "${pkgs.sketchybar}/bin/sketchybar" ] ++ ["--config" "${self}/sketchybar/sketchybarrc"];
      serviceConfig.KeepAlive = true;
      serviceConfig.RunAtLoad = true;
    };

Where self it's my flake configuration inherits to system configuration and to home-manager configuration via specialArgs and extraSpecialArgs.

Note: nix-darwin solution works since create the service using real path to configuration, not symlink