No native titlebar in Linux with `window.titleBarStyle` set to `native`

Indeed. It makes all menu items effectively unusable. For me, I’d consider this a showstopper because there are multiple menu items I use on a very frequent basis that make it impossible to save a workspace, open recent projects, add folders to a workspace, etc…

The following are must-have menu items:

  • Open Workspace from File
  • Open Recent
  • Add Folder to Workspace
  • Save Workspace As ...

This issue, along with a few other problems are causing me to consider stop using Cursor and look for alternatives:

  • getcursor/cursor#1143:
    • Makes it nearly impossible to maintain a PKGBUILD due to the nature of only the latest download link being behind an API.
    • It also makes repeatable system installs impossible. That’s a DevOps / RelEng showstopper for my purposes.
  • Missing / Broken Inspect Context Keys command:
    • Makes it nearly impossible to work around the keyboard shortcut mess that Cursor creates by overriding the default keyboard shortcuts (especially Ctrl+K and Ctrl+L)
    • Some alleviation of the issue can be found by setting workbench.action.keychord.leader or installing an extension YuTengjing.vscode-classic-experience
    • Yet still, this makes it impossible to configure when conditions for context-sensitive or overloaded keyboard bindings.
    • This problem is amplified by keyboard shortcut conflicts becoming a common experience when using Cursor with other VSCode Marketplace extensions.
  • Cursor is distributed as an AppImage:
    • While not a dealbreaker in and of itself (many apps are distributed this way), it seems to cause problems in certain cases due to the complex nature of electron / Chromium and VSCode with the split-horizon dependency situation it creates on the system.
    • It creates 2 semi-isolated sets of dependencies: Those inside the AppImage bundle, and those on the Linux system itself (e.g. FHS)
    • Some tools expect to interact with externally installed tools (either installed at the system or user level) yet those tools dependencies are now on the system rather than in the AppImage bundle.
    • This can cause linker issues and sometimes even segfaults due to incompatible libraries when LD_LIBRARY_PATH is meddled with
    • Chromium & Electron’s sandbox can cause problems when run within an AppImage bundle (which is a squashfs filesystem that gets mounted temporarily via FUSE)
    • While unpacking the AppImage is possible (indeed, it’s what I ended up doing), the complexity of managing to build that and apply fixes every update cycle adds up. It doesn’t help that Cursor constantly wants to alert the user to update when a new version is available, and even has broken API support for running older Cursor versions at times.

All the above issues including this one with the native title bar clearly indicate that Linux is treated yet again like a third or fourth class citizen when it comes to software support and introducing bugs & regressions. VSCode is a highly complex project, with a lot of work that goes into supporting all operating systems and many extensions that add complexity. Maintaining such a fork as Cursor is admittedly a Herculean effort, but the typical “move fast and break things” approach ends up causing more problems that seem to pile up and never get fixed. Eventually this impacts the developer & software packagers enough that it turns into “death by 1,000 papercuts” and severely impacts productivity.

Meanwhile, the focus in the AI space currently seems to be on extracting as much money through as many restricted or metered API calls as possible. This was plainly highlighted by an experience which created for me a bad first impression. The first experience I had using Cursor was cut extremely short and abruptly due to a muscle memory keybinding that Cursor decided to override by default: Ctrl+Right Arrow. Typically this keyboard shortcut is for quickly moving the cursor right in a text file word by word. It’s part of a pair, with Ctrl+Left Arrow moving left quickly by words. Every other editor in existence uses these keyboard shortcuts for movement except maybe vim, emacs, and any readline-like similar keybindings such as Ctrl+f, Ctrl+b, etc… Yet, Cursor overrides Ctrl+Right Arrow to accept an inline AI suggestion. Each AI suggestion consumes API credits, and so users with a muscle-memory habit of pressing Ctrl+Right Arrow to move around are caught by surprise with all their API credits being consumed extremely quickly. Perhaps this was an oversight, and I hesitated to assume that this was due to some sort of nefarious intention, as ignoring Hanlon’s Razor and the “Fundamental Attribution Error” often cause us to make incorrect assumptions about people’s intentions. However, I’m sure we can all agree that this initial user experience didn’t leave a great first impression. Moreover, it also adds to the growing pile of small bugs, UX design pitfalls, and “papercuts” mentioned earlier.

Given the above observations, it’s causing me to consider putting Cursor down for a while to search for greener pastures. Maybe I’ll revisit it sometime later to see if some of these UX issues are eventually resolved. Yet, for now I simply can’t afford the time sink required to maintain such a complicated PKGBUILD while managing all the keybindings, UI/UX workarounds, AI response hallucinations & formatting bugs, plus all the complicated external extensions and breakages or bugs those introduce on top of everything else. In the past year it’s caused me to spend far too much time trying to keep the IDE & developer toolchains updated and operational while managing API credit limits, than is reasonable to expect. Maintaining an IDE shouldn’t be my full time job, because right now I don’t work for Cursor, MicroSoft, JetBrains, or any other company developing an IDE [1]. I currently am lucky enough to work on Open Source Software, pro bono, for free [2]. I don’t even have enough time in the day already just to focus on that alone. The promises of AI to help save us time (and money?) seem to be falling very flat in the stark reality of these experiences.


[1]: Not yet… is Cursor hiring? :thinking:
[2]: At least, until my savings run out… which they will very soon.