kitty icon indicating copy to clipboard operation
kitty copied to clipboard

MacOS --start-as=fullscreen works improperly when launched with spotlight from full-screen apps

Open ejj opened this issue 1 year ago • 1 comments

Describe the bug On MacOS --start-as=fullscreen does not work properly when launching from spotlight while using another full screen application.

To Reproduce

  • Following the documented instructions, create a file: <kitty config dir>/macos-launch-services-cmdline
  • Populate this file with --start-as=fullscreen.
  • Launch Kitty. Note that it starts full screen as expected. Quit Kitty.
  • Open another non-Kitty application. Doesn't matter what, let's use safari for this example.
  • Click the green circle to maximize safari into it's own full-screen window.
  • Type Command-Space (or whatever your shortcut is) to launch spotlight search.
  • Search for Kitty and Launch it.
  • The OS will switch to the desktop and launch Kitty, but it will not be full screen. Furthermore the normal shortcuts to make it full screen will not work.

Screenshots Screenshot 2024-05-18 at 10 20 12 PM

Screenshot 2024-05-18 at 10 20 26 PM

Environment details

kitty 0.34.1 (7f61f1f9f3) created by Kovid Goyal
Darwin main.tail3b4e5.ts.net 23.3.0 Darwin Kernel Version 23.3.0: Wed Dec 20 21:30:59 PST 2023; root:xnu-10002.81.5~7/RELEASE_ARM64_T6030 arm64
ProductName:		macOS ProductVersion:		14.3 BuildVersion:		23D56
Frozen: True
Paths:
  kitty: /Applications/kitty.app/Contents/MacOS/kitty
  base dir: /Applications/kitty.app/Contents/Resources/kitty
  extensions dir: /Applications/kitty.app/Contents/Resources/Python/lib/kitty-extensions
  system shell: /Users/ejj/.nix-profile/bin/zsh
Loaded config files:
  /Users/ejj/.config/kitty/kitty.conf

Config options different from defaults:
bold_font               FiraCode Nerd Font Mono Retina
bold_italic_font        FiraCode Nerd Font Mono Retina
confirm_os_window_close 0
disable_ligatures       2
enabled_layouts         ['tall:bias=50;full_size=1;mirrored=false']
font_family             FiraCode Nerd Font Mono Retina
font_size               16.5
italic_font             FiraCode Nerd Font Mono Retina
tab_bar_edge            1
tab_bar_style           powerline
tab_title_template      {fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{tab.active_exe}
Added shortcuts:
	shift+cmd+t →  new_tab_with_cwd
Removed shortcuts:
	cmd+, →  edit_config_file
	cmd+h →  hide_macos_app
	cmd+m →  minimize_macos_window
	cmd+n →  new_os_window
	cmd+q →  quit
	cmd+w →  close_tab
	ctrl+cmd+, →  load_config_file
	ctrl+cmd+f →  toggle_fullscreen
	kitty_mod+enter →  new_window
	kitty_mod+t →  new_tab
	opt+cmd+h →  hide_macos_other_apps
	opt+cmd+r →  clear_terminal reset active
	opt+cmd+s →  toggle_macos_secure_keyboard_entry
	shift+cmd+/ →  open_url https://sw.kovidgoyal.net/kitty/
Changed shortcuts:
	cmd+1 →  previous_window
	cmd+2 →  next_window
	cmd+3 →  new_window_with_cwd
	cmd+4 →  close_window
	cmd+enter →  toggle_fullscreen
	cmd+k →  no-op
	cmd+t →  new_tab_with_cwd
	shift+cmd+w →  close_tab

Important environment variables seen by the kitty process:
	PATH                                /Applications/kitty.app/Contents/MacOS:/usr/bin:/bin:/usr/sbin:/sbin
	LANG                                en_US.UTF-8
	SHELL                               /Users/ejj/.nix-profile/bin/zsh
	USER                                ejj

Additional context Changed my command line options to --start-as=fullscreen --config NONE and the problem still occurs.

ejj avatar May 19 '24 05:05 ejj

Are you saying this is specific to launching via spotlight? Does it work if you run

kitty --start-as=fullscreen

from another terminal?

kovidgoyal avatar May 19 '24 05:05 kovidgoyal

Just tried it from another terminal and it appears to work correctly.

Another experiment I just tried, I opened a finder window, made the finder window full screen, navigated to the applications directory, and double clicked on the kitty application, and the problem occurred.

So given that I think it would be more accurate to say that the problem has something to do with the MacOS system application launcher

ejj avatar May 19 '24 14:05 ejj

Yes, spotlight just uses the same launch services as anything else. In fact you can reproduce this from another terminal as

open -a kitty.app --args --start-as=fullscreen

to open kitty via launch services in fullscreen.

As for the bug itself, no clue, this seems to be some weird interaction with launch services, probably can be worked around by detecting when started via launch services and sleep for a short time before entering full screen. Maybe someday I will look into trying to workaround the issue. In the meantime you can just add

macos_traditional_fullscreen yes

to kitty.conf. That bypasses apples weird fullscreen implementation so it wont suffer from this issue and also avoids the time-wasting Apple fullscreen animation.

kovidgoyal avatar May 19 '24 14:05 kovidgoyal

Great thanks for the tip and looking into this!

ejj avatar May 19 '24 15:05 ejj

I have implemented the workaroud of calling the cocoa full screen method only after the show is called.

kovidgoyal avatar May 19 '24 16:05 kovidgoyal