История изменений
Исправление 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. Ни закрыть, ни свернуть, ни просто под другое окно запихать.