Для управляемого окна рабочего стола EWMH оконный менеджер в конечном счете по-прежнему управляет и может делать все, что ему заблагорассудится. К сожалению, с KDE было сложнее всего работать пользователям, так как он имеет странное поведение в отношении размещения окон, порядка размещения и видимости окон рабочего стола (см. , проблема #4). С другой стороны, KWin имеет широкие возможности для установки правил окон, см. :https://userbase.kde.org/KWin_Rules--, вы можете найти там решение.
Другим обходным решением может быть простое игнорирование оконного менеджера. GLava предоставляет некоторые встроенные -параметры для этого, которые вы можете установить с помощью #request setxwintype "!-"
. Символ !
задает неуправляемый режим, а следующий за ним -
диктует порядок наложения, чтобы он располагался под всеми остальными окнами, но это не идеальное решение.
Источник :автор GLava
Нет простого способа проверить, (например, нет переменной среды, которая идентифицирует вашу оболочку как ту, которая была запущена из sftp ).
Вы можете пройтись по дереву процессов и посмотреть, является ли один из ваших предков sftp
процессом:
#!/bin/bash
pid=$$
while :; do
# if we reach pid 1, we know we're not a child of an sftp process
[[ $pid -eq 1 ]] && break
# get parent of $pid
ppid=$(ps -o ppid= $pid)
# get the command associated with $ppid
cmd=$(ps -o cmd= -p $ppid)
# check if it was sftp
if [[ $cmd =~ sftp ]]; then
echo "Running under sftp"
exit
fi
pid=$ppid
done
echo "Not a child of sftp"
% sftp myhost
Connected to myhost.
sftp> !sh
$ if pgrep -s 0 sftp >/dev/null; then echo 'in sftp session'; fi
in sftp session
Это использует pgrep
для проверки того, существует ли команда sftp
, работающая в том же сеансе, что и текущая оболочка. Если есть, то эта оболочка, скорее всего, была запущена из sftp
.
Если ваш pgrep
поддерживает параметр -q
, используйте его вместо перенаправления вывода на /dev/null
.
Для быстрой визуальной проверки вы также можете использоватьpstree -s -p "$$"
(в Linux; pstree -p "$$"
на некоторых BSD, в зависимости от pstree
реализации ). Это покажет вам дерево процессов для текущего процесса, и вы, надеюсь, сможете увидеть там sftp
на глаз.