LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

always on top, задаваемый юзером, реализуется композитором так, как ему угодно.

Для подобных манипуляций со стороны программы существует wlr-layer-shell. Про поддержку в не wlroots-based композиторах сказать ничего не могу.

Можете прояснить?

Программа не должна сама заниматься своим размещением, как я уже писал. SetWindowPos же именно этим и занимается. В идеале это должно выглядеть как-то в духе

if (compositor.supports (ALWAYS_ON_TOP)) {
    if (compositor.ask_update_state(ALWAYS_ON_TOP) != Ok) {
        // нет так нет
    }
    // хорошо
}

Ключевым моментом является возможность отказа со стороны пользователя и/или композитора. На том же виндовс до невозможного раздражают нескрываемые окошки убогих инсталляторов с атрибутом always on top. Ни закрыть, ни свернуть, ни просто под другое окно запихать.

Еще одним важным аргументом является недоступность юзеру (именно от удобства которого все и должно отталкиваться) возможности задать always on top желаемому окну. Все сделано наоборот – приложения размещают себя так, как им вздумается, а юзер даже закрепить окно не может.

Исходная версия Siborgium, :

always on top, задаваемый юзером, реализуется композитором так, как ему угодно.

Для подобных манипуляций со стороны программы существует wlr-layer-shell. Про поддержку в не wlroots-based композиторах сказать ничего не могу.

Можете прояснить?

Программа не должна сама заниматься своим размещением, как я уже писал. SetWindowPos же именно этим и занимается. В идеале это должно выглядеть как-то в духе

if (compositor.supports (ALWAYS_ON_TOP)) {
    if (compositor.ask_update_state(ALWAYS_ON_TOP) != Ok) {
        // нет так нет
    }
    // хорошо
}

Ключевым моментом является возможность отказа со стороны пользователя и/или композитора. На том же виндовс до невозможного раздражают нескрываемые окошки убогих инсталляторов с атрибутом always on top. Ни закрыть, ни свернуть, ни просто под другое окно запихать.