ianyh / Amethyst

Automatic tiling window manager for macOS à la xmonad.
https://ianyh.com/amethyst/
MIT License
14.87k stars 487 forks source link

Option to hide the title bar #198

Open TimSoethout opened 10 years ago

TimSoethout commented 10 years ago

Thanks for your wonderful tool.

It would be very nice if the bar with the title of the application can also be hidden, to make even more use of the screen estate. In xmonad this is already the case (on linux).

Trello Card

ype commented 10 years ago

I found a hack a couple of days ago to do just this - you can hide/show the top menubar and dock by modifying an apps plist file (i know it's not best practice but it works)

Here's how I've done it until I find a better method note: this doesn't work with all applications, I can confirm it works for Emacs and Chrome warning: it can mess with keychain access a bit as some of the apps complain

Xcode way:

  1. Go to Applications folder, select app and right-click in menu to show package contents
  2. Open file Info.plist
  3. Select the first item in column labelled "Key" (should be called "Information Property List")
  4. Once selected a little plus (+) symbol should appear
  5. Click the plus and type LSUIPresentationMode - and then return
  6. Name of entry should change to Application UI Presentation Mode with a value of Normal
  7. Double click on the "Value" Normal and change value to 4 - press return ("Value" should now be All suppressed)

Text Editor:

  1. Open Info.plist in favourite text editor
  2. Add following entry after label <dict>
<key>LSUIPresentationMode</key>
    <integer>4</integer>
thomaskern commented 10 years ago

@ype couldn't reproduce it, Chrome gives me keychain access messages and won't start. do you experience resizing issues after doing this with Amethyst?

ype commented 10 years ago

@thomaskern i should've mentioned the chrome error - chrome doesn't like having it's plist mettled with and as such will throw annoying keychain access errors - the way I solved this was by going into keychain access and setting Chrome Safe Storage access control to Allow all applications to access this item (may not be the safest alternative, but it works)

As for the resizing issues - applications will still think the menubar is present - you can get the raw screen values by running the below applescript:

tell application "Finder" to get the bounds of the window of the desktop

for my system the script returns {min_X, min_Y, max_X, max_Y} = {0, 0, 1920, 1200} which is incorrect as the screen y has increased by 22 - for example if you wanted a window to cover the whole screen including the area where the menubar used to be you'd set the value of the window to {0, -22, 1920, 1200}

I haven't tested it yet, but to get Amethyst to automatically account for the extra 22 pixels Line 39, of AMLayout.m might need to be change to something like:

finalFrame.size = CGSizeMake(MAX(window.frame.size.width, finalFrame.size.width), MAX(window.frame.size.height - 22, finalFrame.size.height + 22));

or potentially Line: 42 to something like:

finalPosition.y = MIN(finalPosition.y, (CGRectGetMaxY(screenFrame) - 22) - (CGRectGetHeight(finalFrame) + 22));

basically the screen needs to tell our frame it can move up 22 pixels, and our frames height needs to increase by 22

i still need to dig into the source a bit more, but maybe some of the above will help get things going - i'm using Slate for the time being, as it allows me to define the screenOriginY - to account for the added screen real estate, I simply set screenOriginY+-22 and the frames adjust to where I want them

NOTE: I am using this SIMBL plugin to auto-hide the OS X menu bar now, which is a simple "batteries-included" option that uses EasySIMBL (i got tired of the annoy and time consuming task of modifying multiple plists), i should mention however, that it does not hide the menubar in chrome do to an issue with how chrome blocks bundles

TimSoethout commented 10 years ago

Thanks for the comments. But I actually meant something else. If you use XMonad it actually hides the bar on top of the window itself, where the title of the program is shown (not the part with the dropdown menu options on the top of the screen).

Is it possible to hide those to make for more screen estate for the program? It is actually hidden in fullscreen mode of most applications.

thomaskern commented 10 years ago

Tim, having never used xmonad myself, does it actually hide toolbars too?

-- thomas

On Tue, Sep 2, 2014 at 7:43 PM, Tim notifications@github.com wrote:

Thanks for the comments. But I actually meant something else. If you use XMonad it actually hides the bar on top of the window itself, where the title of the program is shown (not the part with the dropdown menu options on the top of the screen).

Is it possible to hide those to make for more screen estate for the program? It is actually hidden in fullscreen mode of most applications.

— Reply to this email directly or view it on GitHub https://github.com/ianyh/Amethyst/issues/198#issuecomment-54198198.

anoother commented 10 years ago

No, xmonad doesn't hide toolbars.

In fact, it doesn't hide title bars either - it just doesn't implement them (title bars being an X window manager function in the first place).

I would also second the desire for hiding title bars, if this is at all possible on OSX.

Fullscreen mode is a good observation - could we trick apps (and/or the OS) into thinking they are 'fullscreen' while still occupying an Amethyst-managed area?

casidiablo commented 10 years ago

:+1:

Yes, it'd be really cool to hide the title bar. For tiling window managers users title bars are useless anyway. But there does not seem to be a way to achieve that :(

Hultner commented 9 years ago

@anoother Fullscreen mode is probably useful, I've actually managed to get applications to run in fullscreen mode without being in fullscreen. Here's an example where I'm running notes and calendar in fullscreen. skarmavbild 2014-06-30 kl 09 43 51

distracteddev commented 9 years ago

@Hultner How are you managing that?

szymonkaliski commented 9 years ago

@Hultner oh yeas please share!

TimSoethout commented 9 years ago

@Hultner +1, would love that functionality

rbermani commented 9 years ago

@Hultner +1, also looking for this functionality.

Hultner commented 9 years ago

Well I don't know how I managed to do it, I were messing around a lot and never managed to reproduce it. Also it would probably technically be a bug so I'm not even sure it's still possible in Yosemite. But if anyone finds a way to reproduce fullscreen mode in windowed mode that could be an option for borderless windows.

wdanilo commented 9 years ago

@Hultner would you be so nice and give any hints or descriptions what have you tested to get the posted result?

acidjazz commented 8 years ago

+1, ITerm 2.9 (3) now supports not having the title bar seen, so I know this is possible:

image

( Look at Style: )

acidjazz commented 8 years ago

so I figured out @Hultner 's setup, this is an El Capitan feature, you need to hold down the full screen green circle until it sort of pulls back, this will allow you to snap it to a certain spot and be full screen, it'll then sort of prompt you of what goes elsewhere.

image

It will also then become its own full screen compilation of apps

image

@distracteddev @szymonkaliski @timsoethout @rbermani @wdanilo

FFT any VIM users here that like my setup feel free to try it out

OJFord commented 8 years ago

@acidjazz That's not what @Hultner was doing - El Capitan hadn't been released when he posted (and he said "not sure if you can still do it in Yosemite") and more importantly that feature works only with 2 side by side, not with a 'three squares' type layout as seen in his screenshot.

It may very well be using it under the hood, but he definitely managed something magical to make it work with >2. Maybe it was a lucky bug that's since been "fixed". :(

fmartingr commented 8 years ago

Just as a comment, if I use the "no title bar" option for iTerm, Amethyst recognises it as a "floating" window and it won't tile it with the other windows.