GithubHelp home page GithubHelp logo

Support Sticky Windows about bspwm HOT 16 CLOSED

baskerville avatar baskerville commented on September 22, 2024
Support Sticky Windows

from bspwm.

Comments (16)

baskerville avatar baskerville commented on September 22, 2024

How could a node exist in multiple trees?

from bspwm.

Stebalien avatar Stebalien commented on September 22, 2024

A node can't but it should (maybe, I don't know much about how this part of bspwm works) be possible for a client to exist in multiple nodes.

from bspwm.

baskerville avatar baskerville commented on September 22, 2024

If a window is sticky in all desktops, then it will be visible at more than one place if there is more than one monitor.

from bspwm.

Stebalien avatar Stebalien commented on September 22, 2024

*All desktops on one monitor. As the ewmh spec puts it, sticky windows should "stick to the glass [of the monitor]".

Of course, might cause some problems when moving a desktop from one monitor to the other. A reasonable solution would be to make all sticky windows float (thereby following the spec even more closely as sticky windows are supposed to maintain geometry across multiple desktops). This could be accomplished by putting sticky windows in a separate per-monitor sticky window list instead of in the per-desktop window trees.

from bspwm.

Stebalien avatar Stebalien commented on September 22, 2024

Actually, after looking at the code, I realized that this would probably be a major pain in the a** to implement and would require quite a bit of refactoring (everything assumes that client's are contained in nodes). I'm closing this for now because I feel like I'm the only one who would use this. I'll reopen it if I can come up with a reasonable patch.

from bspwm.

baskerville avatar baskerville commented on September 22, 2024

In fact, it might not be as hard as I thought:

If a desktop is focused, I could simply transfer to it the sticky windows from the previously focused desktop.

So the sticky windows would always be in the tree of the focused desktop.

from bspwm.

Stebalien avatar Stebalien commented on September 22, 2024

That does make it much easier. It also solves the problem of transferring a desktop from one monitor to the other.

from bspwm.

baskerville avatar baskerville commented on September 22, 2024

Should be working as of c6ceca7.

from bspwm.

Stebalien avatar Stebalien commented on September 22, 2024

Thanks. Works great.

from bspwm.

Stebalien avatar Stebalien commented on September 22, 2024

Sorry to bug you but can you make it so that sticky windows aren't transferred between monitors on focus? That is, transfer sticky windows from the previously focused desktop on the current monitor.

from bspwm.

baskerville avatar baskerville commented on September 22, 2024

Fixed by 35e9927?

from bspwm.

Stebalien avatar Stebalien commented on September 22, 2024

Better but now switching desktops on an unfocused monitor doesn't transfer the sticky window. In other words, the following happens:

# * = focus; (s) = sticky window
#
# Mon A      Mon B

---------  ----------
| A1*   |  | B1 (s) |
---------  ----------

$ bspc desktop -f B2

---------  ----------
| A1    |  | B2*    |
---------  ----------

# Sticky window still on B1 after B2 focused.

from bspwm.

baskerville avatar baskerville commented on September 22, 2024

Fixed by 0d1ad51?

from bspwm.

Stebalien avatar Stebalien commented on September 22, 2024

Thanks! Only one tiny (ridiculously low priority) bug remaining: control --adopt-orphans doesn't appear identify sticky windows (sticky windows loose their stickiness when bspwm is restarted).

from bspwm.

baskerville avatar baskerville commented on September 22, 2024

It should be working as of c5d4c65.

However, control --adopt-orphans shall only be used if restore -T fails.

from bspwm.

Stebalien avatar Stebalien commented on September 22, 2024

Fixed. Thanks.

from bspwm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.