CARVIEW |
43 Folders
New to 43 folders? Here are our All-time Most Popular Posts. Want the best stuff? Here’s our Classics.
Login or register
Register for free on 43 Folders to comment on articles, post to our forum, customize your visits, and much more. Current users can login now.
Open Thread: Developing for Full Screen Mode?
Merlin Mann | Jan 23 2006
Full Screen Mode is a topic that comes up a lot here and abroad — it’s a way to set a given application to operate with as few menus, panels, and other navigational widgets as possible, claiming the entire screen, and enabling the user to focus exclusively on one task without distraction. Essentially, it temporarily hobbles your maddeningly versatile Mac into a machine for doing exactly one thing, being whatever is appearing in your single Full Screen window. And you might be amazed what a nice thing that can be sometimes. It’s great for writers in particular, so it’s perhaps not surprising that writing applications seem to be leading the Full Screen charge. Although you can also get FSM in Firefox using extensions and in Safari with the help of Saft. So my question, for you Mac developers in the house: I’m curious to learn more about Full Screen mode and how hard it is to make it a part of Cocoa applications. I’ve gotten the impression that Cocoa has “hooks” in place to hide the Menu Bar and claim all the screen space with a given document’s front window, so I’m curious whether it’s something that’s difficult to implement. I’d love to request it in some favorite applications of mine (Hi, again, Allan!). What do you guys say? Piece of cake or pony? POSTED IN:
|
|
EXPLORE 43Folders | THE GOOD STUFF |
Popular |
|
Inbox ZeroThe original 43 Folders series looking at the skills, tools, and attitude needed to empty your email inbox — and then keep it that way. Don’t miss the free video of Merlin’s Inbox Zero presentation. Get Started with ‘GTD’David Allen’s popular productivity book and the system on which it’s based help turn ‘stuff’ into actions that support valuable outcomes. |
43 Folders is powered by Drupal, which rules. Our site was designed by a bearded fella from Wire and Twine and has been lovingly skinned for Drupal by the code ninjas at RoopleTheme. Web Hosting by A2. Here's our Legal and Ground Rules. 43 Folders loves you. Namaste.
Please don't make it the...
Please don’t make it the only mode for your application. I hate when applications assume they can grab the whole screen - I frequently have long-term things like compiles or downloads going on in background windows and want to be able to see what kind of progress is being made while I do something else in the foreground.
Please don’t make it the...
Please don’t make it the only mode
I can’t think of any apps like that that I’ve come across.
In my experience, with the exception of, say, “DVD Player,” FSM is something you deliberately call up for a purpose then flip off when you’re done. Although I could be wrong. What app’s doing that to you now?
Last summer I tried my...
Last summer I tried my hand at developing a plugin for Terminal.app that made it full screen, and I ended up with a solution that works about half way. The API call to hide the dock and menubar is one line of Carbon code, but making the actual window frameless is slightly more involved.
My solution was to call Carbon to hide the dock and menu bar, then tell the window to zoom, which fills the screen but doesn’t hide the window’s title bar. I had to tweak a preferences file by hand to change font sizes and window postion settings, which is why I haven’t released it.
As a recent Switcher, my...
As a recent Switcher, my main gripe about Mac OS X is that 90% of Mac apps refuse to go full screen. If Fitts’ Law is good enough for the Mac OS system controls, why not the apps, too?? I don’t want to scroll unnecessarilyl and I want my scrollbar in the “Fittsable” location on the right side of the screen!
My second gripe about Mac OS X is the lack of consistent, universal keyboard shortcuts (especially for arrow key navigation within an app).
I hate that full screen...
I hate that full screen windows… I will not use them, ever. The main two reasons: I can not read text that is that wide and it kills my work flow between applications.
Did it once for a...
Did it once for a movie player project. Used AppleScript Studio. Trivial to use a call method…
Hmmm, what's required? You subclass NSWindow...
Hmmm, what’s required?
You subclass NSWindow and override - (BOOL)canBecomeKeyWindow to return YES.
Then you instantiate it, passing NSBorderlessWindowMask as the styleMask parameter of a call to NSWindow’s -initWithContentRect:styleMask:backing:defer:screen: initializer.
Then you probably want to pass something like CGShieldingWindowLevel() to NSWindow’s -setLevel: method before setting the window’s frame (CORRECTLY handling the case where -[NSScreen screens] returns an array of more than one item (i.e. you’re on a dual display box)) and putting it on-screen.
Oh, and don’t forget to capture some keystroke so people can get out of your fullscreen world!
It's actually quite easy to...
It’s actually quite easy to do it in Cocoa…. by subclassing NSWindow (playing a bit with its initWithContentRect:styleMask:backing:defer: method); no need to “hide” the menu bar, just set the window’s level to something higher than NSMainMenuWindowLevel. This is actually how most 3rd party apps are implementing the FSM. Look for example at VLC: when you’re in FSM hit Shift+Command+F11 to actually slow down the Exposé effect and find out that the full screen view is nothing more than a “normal” window. Even Apple apps (DVD Player and QuickTiime Pro Player) use this method; but others (like Keynote.app) use a more “sirius” FSM that can’t be exposé-ed.
Thanks, guys. This is awesome....
Thanks, guys. This is awesome. Over me head, but useful and awesome. :-)
It would be great if there were some kind of haxie for emulating/inserting this in apps that don’t have FSM baked in.
If any of you are...
If any of you are interested here’s the code. It’s messy and probably really bad, but it was(is) my first Obj-C project.
I thought about subclassing the Terminal.app window when I was writing it, but it turns out that you have to assign NSBorderlessWindowMask to the window at creation time and I couldn’t figure out how to move the contents of a current window to a new one. That’s why I used the hide-and-zoom method.
Oh, by the way, my plugin uses SIMBL to inject code at runtime into existing apps, so you have to install that first. The author hasn’t touched it in awhile and I bet there’s a better method now.
Oops. That's the binary, not...
Oops. That’s the binary, not the code. I’ll find the code tonight and post it.
source code here ...
source code here
Apropos text being too wide...
Apropos text being too wide in full-screen mode, if you’re not already using Tofu (https://homepage.mac.com/asagoo/tofu/index.html) to read text, you should check it out. Its full-screen mode is probably the most pleasant way to read un-typeset text on a computer I know of (over-wide text is a big annoyance of mine).
What about snap-to-edge? It's in...
What about snap-to-edge? It’s in a couple apps and I love it, but I’ve not found any way to add it to existing stuff.
DeskShade by MacRabbit software is...
DeskShade by MacRabbit software is pretty handy for that sort of function with apps that don’t have fullscreen. It performs the task of easily hiding and showing icons on the desktop with other fun stuff in there too. I use it when I’m working on stuff and don’t want to be distracted.
Another all in one example...
Another all in one example of a Cocoa project here: https://toxicsoftware.com/blog/index.php/P40/ Frasier has some good suggestions that I’ll added to the code when I work on it next.
The screen width thing is...
The screen width thing is definitely an issue for me as I have a 24” widescreen monitor. Many applications in fullscreen mode are not very usable at that width.
Another thing I find to be a related issue is cursor colour. I’ve used Terminal, SubEthaEdit, and Ulysses in the past for full screen editing, all of them with a light-on-dark colour scheme. Of the three, only Terminal manages to make my mouse cursor visible against the dark background. With the other two, it gets lost. I spend a lot of time frustrated, hunting for it.
Those interested in a full-screen...
Those interested in a full-screen Terminal emulator could take a look at the thread below over on ars technica about an application called GLTerminal (not to be confused with GL Terminal, another app). As well as simulating old-fashioned “WarGames” style terminals in OpenGL, it also has a default renderer with a full-screen mode, which would work well for running Vim or emacs.
https://episteme.arstechnica.com/groupee/forums/a/tpc/f/8300945231/m/355008096731
There's an old article on...
There’s an old article on how create full screen apps here: https://cocoadevcentral.com/articles/000028.php
The previous poster beat me to the punch on the GLTerminal app. If you do download it remember that it won’t work until you change the renderer at least once.
As I’ve already mailed Merlin directly about, DevonThink Pro has some great full screen modes. The full screen mode for PDF reading is amazing and makes PDFs a joy to read. It also handles full screen web pages and full screen editing of text documents. You can check it out with the trial download (bottom of the page): https://www.devon-technologies.com/products/devonthink/overview.php
TC! mentions DEVONthink, which I...
TC! mentions DEVONthink, which I agree has a great full-screen mode. I’ll add that users can set how much of the screen width “full-screen” actually means. On my 12” PowerBook, I like 70%, which means 15% of the screen on the right and left is black. That keeps lines of text from being too long for me to read comfortably. I don’t use the feature that often, but it’s nice to have it when I want it.
I know 43 folders is...
I know 43 folders is mostly mac-focused (as am I)… Just curious if anyone knows of Windows software similar to Tofu, which looks awesome.
This is the Shuffle insight:...
This is the Shuffle insight: that you can pare down a tool to it’s most Patereto-ish 80% to really get the most out of it. I thought the “handicapped” menu in System Prefs on OS X gave you most of this functionality… Good post.
The new Apple Aperature program...
The new Apple Aperature program has a wonder implementation of FSM for viewing, rating, and sorting high volumes of photographs.
I used to think it...
I used to think it was just non-computer savvy people — the sort of clients that I had to explain why I designed their sites to fit in an 800px wide browser — who ran everything full screen, and didn’t really use windows for their intended purpose.
But then I opened my eyes and looked a little more carefully at the desktops of my friends and colleagues. They run everything, even Finder and iTunes, full-screen, even on widescreen 20” displays.
The window GUI metaphor has failed.
Eric, the window GUI metaphor...
Eric, the window GUI metaphor failed long ago.
Take this with a pinch...
Take this with a pinch of salt but LoopRumors is reporting we will be getting more full screen Apple apps in leopard: https://www.looprumors.com/Pages/leopardinfo01242006.html
He mentions iTunes and iCal, including having iCal as a desktop picture which means my brain probe is still transmitting all my ideas to Apple!
I suppose if you're really...
I suppose if you’re really keen on fullscreen you should run all your apps in X11 with ratpoison as a window manager ;)
actually, i installed ratpoison and...
actually, i installed ratpoison and kate for writing fullscreen on OS X.
I think that a superior...
I think that a superior WM for the full-screen and tiled afficionado would be “ion”. I used “ion” on my linux workstation at work and was exceedingly pleased with its customizability and speed.
"Classic case for recruitment by...
“Classic case for recruitment by the Soviets.”…
Next in an occasional series[1] on creating a full-screen writing environment is an article by Merlin Mann over at 43 Folders: Open Thread: Developing for Full Screen Mode? Here’s his summary of what it’s all about: Essentially, it temporarily hobble…