Add option to enable/disable frameless mode


This is how it looks.


That’s how the native window manager looks. There you can also set a hotkey for app switching, you can modify which symbols to show etc.

Window manager may not be the right word — the pictures show what I mean.

Not sure if I fully understand it, perhaps I don’t have the same problem in my set-up

I do have a window manager kwin script on top of my KDE set up. I’m using krohnkite and I’m able to set up a shortcut to open Obsidian.

this is what my Obsidian looks like

this is what my browser (brave) looks like


Is the goal of this request to remove this top bar? Or did I miss understood?

The goal would have been to have these native elements grafik

It’s not that important, I wanted it for window switching. I’ve just realised that the window shortcuts aren’t persisted during restarts of apps, so this native behaviour isn’t that important.

I’ll look into krohnkite and see if that can do what I want. Thank you! :grinning:

1 Like

Awesome, I understand what you mean now

Garuda Linux kind of helps with this, my making this buttons show on the top left.

However I wasn’t able to do that when I was on Linux Manjaro with Awesome Window Manager

—.

However when it comes to shortcuts and window management. krohnkite is amazing, and it allows me to not have any issues managing Obsidian

This video is a great place to learn it

1 Like

If you are still interested, I figured out how to hack this in. If you’re on linux, you can

  1. unpack the appimage file by running with the --appimage-extract flag,
  2. then unpack the obsidian.asar file inside using “npx asar extract”,
  3. change “frame: true” in main.js inside the extracted asar directory, and finally
  4. use appimagetool to rebundle the previously extracted directory into a new appimage.

This will put the frame back. For me, I did this so that my window manager (dwm) could highlight Obsidian when I had it focused.

4 Likes

Thank you kzhang, I wouldn’t have figured it out without your comment.

In my case (ArchLinux + XMonad, installed via the obsidian AUR package) I had to change frame: false to frame: true in two places in the file for the window border to be visible and controllable by my window manager.

In case it may help someone, I’ll post my process as well.

cd /usr/lib/obsidian
sudo npx azar extract obsidian.azar obsidian.azar.extracted
sudo vim obsidian.azar.extracted/main.js # edit and save
sudo npx azar pack obsidian.azar.extracted/ obsidian.azar

and then restart Obsidian, and the border will be visible.

2 Likes

Hi, i3wm user here. I need the border to see which window is focused.
(I don’t care about the file/edit/help bar)

Thank you so much for the workaround! But yes this would be a great toggle to have! Can I vote on that feature somewhere?

I installed the aur/obsidian as well (Manjaro) but I had a different packing format. The commands below should accomplished the same thing as above. Use with caution.

sudo asar extract obsidian.asar obsidian.asar.extracted
sudo sed -i 's/frame: false/frame: true/' obsidian.asar.extracted/main.js
sudo asar pack obsidian.asar.extracted/ obsidian.asar

So to keep this up to date…I switched to the insider build because Obsidian is awesome!

I am using the AUR-Package obsidian-insider and ticked the “Insider Builds” in the settings. Now the asar file is in a different location:

asar_path=~/.config/obsidian/obsidian-0.12.13.asar
sudo asar extract "$asar_path" /tmp/obsidian.asar.extracted \
&& sudo sed -i 's/frame: false/frame: true/' /tmp/obsidian.asar.extracted/main.js \
&& sudo asar pack /tmp/obsidian.asar.extracted/ "$asar_path"

PS: I still want this tickbox to for disabling frameless mode, please :slight_smile:

I’ve tried the method here (albeit with a few changes) and it worked.
I like obsidian’s title bar better I think, because plugins can target it. Things like back/forward history (with numbers) with one of pjeby’s plugins or also his quick explorer use it and (I tested it with the first one) didn’t work/display with the native title bar but only with Obsidian’s one.

Obsidian’s title bar also looks better. It’s also not sure whether it could be easily implemented with a toggle (iirc what Licat said).

To clarify, I don’t care about the looks or functionality/buttons of the bar. I need the frame to show me that Obsidian is focused.

Without frame:


With frame (focused):

With frame (unfocused):

The bar is fine, but I need Obsidian to have a frame the system (Xorg) understands and can display. This is a system wide setting (border color, border size). Every window has it if it is in focus, browser, terminal, Discord – every window except Obsidian. This makes it impossible to reliably tell, if it is focus or not.

PS: Update on what I currently do, since Insider builds are quite frequent:

find ~/.config/obsidian/ -type f -name 'obsidian-*.asar' | xargs --no-run-if-empty -I{} sh -c 'asar extract "{}" /tmp/obsidian.asar.extracted && sed -i "s/frame: false/frame: true/" /tmp/obsidian.asar.extracted/main.js && asar pack /tmp/obsidian.asar.extracted/ "{}"'

Permanent workaround for users of i3 who just want the border back. You can force this by adding this line to your i3 config.

for_window [class="obsidian"] border pixel 1

Without this line i3 respects if a window requests “no decorations”

1 Like

Can you describe in more detail (step by step) how to get a system window frame in Ubuntu. I will be very grateful :blush:

How did you do it? Can you describe in more detail (step by step) how to get a system window frame in Ubuntu. I will be very grateful.

I can confirm that the solution by @Syphdias will show native window decorations in KDE.

To automatically patch it in nixos, you can grab my overrideAttrs: dotfiles/default.nix at 5e053fc646fbde437fadeab5f2883eeed08bea8e · viperML/dotfiles · GitHub . (For example, environment.systemPackages = [ (pkgs.obsidian.overrideAttrs ( ... )) ]

Another way on KDE to force the system title bar is by going to ‘Settings → Window Managment → Window Rules’. There you can add a rule (‘Add Rule’ down the bottom) for obsidian. In there you can add the ‘No titlebar and frame’ property, and check the ‘no’ option.

Below is what mine looks like. Depending on your obsidian theme settings you may end up with both the system title bar and obsidian’s title bar. One bonus for KDE users might be that obsidian opens only in the active activity, rather than in all activities.

4 Likes

Hi @all,

here is my solution:

it is able to check for updates and change the frame to native while installing newest release.
I have test it on archlinux and debian.

best regards

1 Like

Same for me. The window bars on KDE have so much power that is all lost with the custom Obsidian bar. Also, not consistent with the rest of the system. Not only visual, but what buttons I have where on my bars.

Thank you!!! This restored the system title bar on Obsidian. I installed the Hider community plugin and turned on the “Hide title bar (frameless mode)” option to hide Obsidian’s titlebar.

Now Obsidian fits in with the rest of the applications running on my system. :smiley:

1 Like

I don’t mind about CSD but Obsidian title bar looks rather ugly. It’s sad because Gnome Adwaita is gorgeous. Tnx for the tip. I also managed to remove menu bar because it has no use. To do this add win.setMenuBarVisibility(false); to the end of the createWindow(...).

Will be implemented in v0.16.

3 Likes