Double title bars on Ubuntu AppImage

Hi guys, love cursor and have moved over from VSCode a while ago. Been following you guys since the app was in beta and the code was publicly available on Github!

I’m using Cursor on Ubuntu and I see 2 title bars as shown in the screenshot below. Its not a bug or anything ground breaking, but seeing the options to maximize, minimize and close the application window twice is kinda off putting especially when we compare it to the application style available on Windows and Mac.

Can we get this fixed on Ubuntu? I tried to find a solution on web myself, but didn’t really come across anything useful.

1 Like

Yep, that’s weird. Noted it down.

(Disclaimer: I don’t work for Cursor)

It looks like the double-header-bar debate has been raging for a number of years and isn’t specific to VS Code/Cursor. If you want some light reading on the subject, try adding something like ‘gtk3 client side decorations’ to your web search. If you’re just after a solution though:

  • File > Preferences > Settings (or Ctrl+comma)
  • Search for titleBar
  • Change the drop-down from ‘custom’ to ‘native’

This means you’ll just get the native titlebar, so you’ll lose the extra shortcuts (layout control, command center). But if you’re more interested in getting the screen real estate back, this should do the trick. Tested on Ubuntu 23 using appimage converted to deb and installed.

1 Like

Thanks for this, this shall should work for the time being, I’ll miss having the shortcuts that we get on mac and windows tho.

1 Like

I was having the same issue with gnome on Fedora. Two title bars. Of course, the suggested solution for reverting to native title bar worked for me, I kinda liked the custom titlebar from the vscodium that I am using on the side.

Since I know that it’s electron app, there has to be just a single parameter change either in some JSON or JS file. So I extracted the AppImage file.

./cursor.AppImage  --appimage-extract

Entered into the squashfs-root directory that was generated after extraction and searched a few files. To make things simpler for you, I went to the /resources/app/out/vs/code/electron-main/main.js file and searched for title:h.nameLong. Right before it, I added this property, frame: false. This is how it should look like after that

minHeight:s.$1G.HEIGHT,frame:false,title:h.nameLong

Save it and with that, the AppRun shell file should load the frameless window. Now in order to make the new AppImage out of these extracted files, just install the appimagetool and run the following command.

./appimagetool-x86_64.AppImage squashfs-root/

And that should generate the new cursor.AppImage file.

And there you go! Worked for me, hope it works for others too.

I’m not from cursor dev team and I’m not taking any responsibility if the AppImage breaks. This info is shared just for the “curious cats” to try things out.

4 Likes

I tried this and it works like a charm! Thanks for this solution! @chak

1 Like

i have tried this but the only ref to what you saying is title:h.getTitle() ive put the frame:false,title:h.getTitle() before it , re built the image but is still the same

Still present and not only on Ubuntu (I am on Manjaro, i3). So much wasted space…

I would like an option to remove those three for me useless buttons

This means you’ll just get the native titlebar, so you’ll lose the extra shortcuts (layout control, command center).

and not be forced to use a workaround which worsens UX.


Few weeks back I wrote a “feedback” post, pretty sure I mentioned those buttons there as well, among many other things I encountered. I don’t think anybody responded, not even lazy short “we will look into it” (I mean not just this issue). Some annoyances I managed to fix in settings or workaround with extensions since then, but it is not a great impression. It creates an image like the company doesn’t care about new people coming from other IDEs. And looking at this thread, half a year passed and nothing happens…

Still works. Here’s a script I run each time I update Cursor:

#!/bin/bash

# Step 1: Extract the AppImage
./Cursor.AppImage --appimage-extract

# Step 2: Define the path to the target file
TARGET_FILE="squashfs-root/resources/app/out/vs/code/electron-main/main.js"

# Step 3: Replace all occurrences of ",minHeight" with ",frame:false,minHeight"
sed -i 's/,minHeight/,frame:false,minHeight/g' "$TARGET_FILE"

# Step 4: Repackage the AppImage using appimagetool
./appimagetool-x86_64.AppImage squashfs-root/

Get the appimagetool appimage from the releases page here: GitHub - AppImage/appimagetool: A low-level tool to generate an AppImage from an existing AppDir

Might break one day but works for now!

2 Likes

Great. This did the trick. Thanks. I was also looking for this. But I like it to keep the appimage extracted, so I did not repack again. I think the program starts faster when launching from the extracted AppRun file instead of appimage file.

1 Like

(post deleted by author)

i tried the solutions but unfortunately they didn’t work. can someone confirm these still work in the latest versions or if there are any other solutions? wish cursor team would fix it on their side instead of relying hacks. vscode doesn’t have this issue

also posted on github:

/getcursor/cursor/issues/837#issuecomment-2334370123

(sorry for repost, apparently posts with links get hidden. i hope someone approves me already)

An alternative that (half) worked me under Ubuntu 24.04 was this Gnome Shell extension: Undecorate Window - GNOME Shell Extensions - right click the title bar and select “Undecorate” to remove the native title bar. Needs to be done per-window each time, and the File/Edit/etc menu is still duplicated, but good enough for me until it’s properly fixed.

Interestingly, in my personal machine, this works properly without any changes (no double title bars), even each time I download and extract the appimage.

But in my office message, each time I download it, I have to modify this file.

(I have to download it because update doesn’t work.)