Fullscreen on Mac?

Is there a way to make Quelea use the entire screen for projector screen on Mac? I see a menu line in the top of the screen.
I is possible for me to make it go away by using auto-hide in the OSX settings, but other applications like powerpoint etc. are able hide it and I frequently use it. Is it also possible to auto-hide it with Quelea?

Thanks for signing up! Afraid I’m going to have to bow out on this as I’m not a Mac user; hopefully there’s one out there who may be able to answer…!

@berry120, just took a quick look at PlatformUtils.setFullScreenAlwaysOnTop() and it always returns false unless it is run on Linux. Is that intended? I think the stage.setFullScreen(true) line there is needed for Mac as well, but maybe that is set somewhere else?

Yup - I think windows is actually the exception here though, so it should really be the other way around (we should set it to always return true unless we’re running on windows.)

Should be fixed in the latest CI - could someone confirm?

It still does not hide the menu line

Hmm, it may be that I’ve done something incorrectly or it may be that’s not the fix.(Hard for me to verify either way as I don’t have a Mac to develop on!) If someone does and can suggest something else to try, I’m all ears :slight_smile:

This small sample app makes perfect fullscreen on Mac.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;

public class FullScreenApp extends Application {

public static void main(String[] args) {

public void start(final Stage primaryStage) {
    primaryStage.setScene(new Scene(new Label("Foo")));


Looking at the docs https://docs.oracle.com/javase/8/javafx/api/javafx/stage/Stage.html#setFullScreen-boolean-
it says that “Applications can only enter FSEM in response to user input.” - maybe there is a difference between platforms here?

All that’s doing to set a full screen window is calling “setFullScreen(true)” on the appropriate stage, which is also what we’re doing (unless I’ve missed something there which is always possible.) It may be there’s something else we’re doing that’s interfering with it or stopping it from happening properly, but unfortunately without a Mac I’ve no way to debug that.

If you’re able to play around with the Quelea source and let me know if you can find a fix (maybe even submit a PR!) that’d be fantastic, but I completely understand not everyone has the time or ability to do that.

It’s possible - I would’ve thought that sample application isn’t entering FSEM from a click event either though, unless the click / keypress for the running of the program counts.

Think I have solved it…
But trying to push it to github I get:

Unable to find source for object 7348b28af5ad3a84790301fe955512bb27630e7844fed29559a5e91d7c7c5557 (try running git lfs fetch --all): open /Users/od/src/Quelea.to-save/Quelea/testdata/Kingsway Database/database_new/database_new.lobs: no such file or directory
error: failed to push some refs to ‘git@github.com:odlg/Quelea.git’

Any ideas?

Ah yeah, it’s missing the LFS file. Have you tried running the LFS command specified in that error message?

Yes, that returns

fetch: 2 object(s) found, done
fetch: Fetching all references…
[7348b28af5ad3a84790301fe955512bb27630e7844fed29559a5e91d7c7c5557] Object does not exist on the server: [404] Object does not exist on the server
error: failed to fetch some objects from ‘https://github.com/quelea-projection/Quelea.git/info/lfs

Bizarre. Afraid I’m not really sure at this point - LFS does do bizarre things sometimes, I’m far from an expert in it.

You could try recloning with it disabled?


Git lfs on my mac makes trouble. I have created a pull request from a linux box. I do not know if the change should only apply to Mac?

Thanks for merging.
I have tested it further now. It seems that not everything related to fullscreen on mac is working perfectly.

  1. Videos does not work. OSX has its own understanding of fullscreen mode, which Quelea now uses. It is possible to slide between different fullscreen apps and the main screen. Videos seem to use the main screen and Quelea uses its own fullscreen. Do not know what it takes to connect the two?
  2. Clicking the X button to hide main display, makes Quelea hang. Adding code to un-fullscreen and un-modalize it before hiding seems to fix this. I can make a pull request for this.

No idea on the video side of things I’m afraid - I have no Mac to test on and no specific Mac dev experience, so we can only rely on community contributions to get things working properly.

I’ll see if we can get Greg on this thread, who’s the OSX mastermind that sorted Queleas Mac based video implementation :slight_smile: he may have some ideas!

Hello All!

So, ya, I wrote the video integration on Mac a few years back. It works actually quite similarly to the windows VLC integration if I remember correctly.

I just finally got new quelea cloned and running on my mac, and I’ve seen what happens here.

The problem with using the “Fullscreen” option on mac is that it doesn’t allow for window transparency, which is how the video is playing ‘underneath’ text. (The javaFX stage window is transparent with words drawn on top of it, and the video window is some native Objective C crap underneath).

When implementing the video feature on mac, I needed to be able to use the desktop windowing system macOS provides not in full screen mode. Unfortunately that is where that pesky menu bar comes into play.

Did you know that on mac you can just disable it for all but your main display? (Which is how mac Quelea is designed to run). Simply go to System Preferences -> Mission Control -> and UNCHECK ‘Displays have separate spaces’ . It will require you to log out and back in, but the menu bar on the second display will be gone, and as long as the quelea version running does not set the stage to fullscreen, video should work great.

Hope that helps!

1 Like

Thanks very much for that Greg - I’ve rolled that fullscreen change back now so the video should work as it did before.

If we find a way to hide the menu without disrupting the video functionality then that’s fantastic, but for now it looks like this is the only feasible option.