Настройка показывать только приложения текущего рабочего пространства в панели запуска?
Возможно ли иметь открытые приложения текущей рабочей области в панели запуска, но не из других рабочих областей?
3 ответа
Для Ubuntu Dock поставляется с Ubuntu 17.10 и более поздними версиями (с GNOME)
Ну, другие ответы довольно старые, поэтому я думаю, что стоит добавить актуальный ответ. Это можно сделать прямо сейчас и не слишком сложно (с Ubuntu 17.10 и Gnome).
Просто используйте dconf-editor:
sudo apt install dconf-editor
Перейдите к org > gnome > shell > extensions > dash-to-dock и проверьте изолят-рабочие пространства
Как сделать приложения недоступными для отслеживания в (других) рабочих пространствах
С помощью xdotool
"s windowunmap
Окно, можно полностью скрыть. Окно и его приложение больше не отображаются в значке средства запуска и даже не отображаются в выводе wmctrl
,
Теоретически это может быть связано с "движком рабочего пространства", который использовался в этом и в этом ответе. Это было бы самым элегантным решением.
Однако процесс только скрытия окон в других рабочих пространствах и их автоматического вызова в текущем рабочем пространстве слишком сложен для использования в текущем фоновом скрипте (пока) и не исключает, что он также "простудится". Поскольку окна теряются навсегда в случае ошибок, поэтому я решил не предлагать процедуру как автоматический (фоновый) процесс.
Если этот ответ, тем не менее, полезен для вас или нет, зависит от ситуации и причины, по которой вы хотите скрыть значки приложений, работающих в других рабочих пространствах; решение за вами.
Решение; что это такое и как это работает на практике
Скрипт, доступный под сочетанием клавиш, по-видимому, заставляет полностью исчезать все окна в текущем рабочем пространстве (и, следовательно, приложения). Это означает, что значок приложения в панели запуска Unity не показывает активности приложения:
При повторном нажатии комбинации клавиш снова появятся окна и их приложения.
- Поскольку комбинация клавиш будет скрывать только окна и приложения изтекущего рабочего пространства, вы можете впоследствии переключиться на другое рабочее пространство без признаков того, что находится (скрыто) в текущем рабочем пространстве.
- Крометого, в текущем рабочем пространстве выполняется (только) отображение, поэтому, в общем, процесс скрытия и отображения полностью независим для каждого рабочего пространства.
Сценарий
#!/usr/bin/env python3
import subprocess
import os
import time
datadir = os.environ["HOME"]+"/.config/maptoggle"
if not os.path.exists(datadir):
os.makedirs(datadir)
workspace_data = datadir+"/wspacedata_"
def get_wlist(res):
res = get_res()
try:
wlist = [l.split() for l in subprocess.check_output(["wmctrl", "-lG"]).decode("utf-8").splitlines()]
return [w for w in wlist if all([
0 < int(w[2]) < res[0],
0 < int(w[3]) < res[1],
"_NET_WM_WINDOW_TYPE_NORMAL" in subprocess.check_output(["xprop", "-id", w[0]]).decode("utf-8"),
])]
except subprocess.CalledProcessError:
pass
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current(res):
# get the current viewport
vp_data = subprocess.check_output(
["wmctrl", "-d"]
).decode("utf-8").split()
dt = [int(n) for n in vp_data[3].split("x")]
cols = int(dt[0]/res[0])
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
curr_col = int(curr_vpdata[0]/res[0])+1
curr_row = int(curr_vpdata[1]/res[1])
return str(curr_col+curr_row*cols)
res = get_res()
try:
f = workspace_data+current(res)
wlist = eval(open(f).read().strip())
for w in wlist:
subprocess.Popen(["xdotool", "windowmap", w[0]])
os.remove(f)
except FileNotFoundError:
current_windows = get_wlist(res)
open(f, "wt").write(str(current_windows))
for w in current_windows:
subprocess.Popen(["xdotool", "windowunmap", w[0]])
Как пользоваться
Скрипт нуждается в обоих
wmctrl
а такжеxdotool
:sudo apt-get install wmctrl xdotool
- Скопируйте скрипт в пустой файл, сохраните его как
toggle_visibility.py
Тест - запустите скрипт: в окне терминала выполните команду:
python3 /path/to/toggle_visibility.py
Теперь откройте новое окно терминала (так как первое, казалось, исчезло с лица земли) и снова выполните ту же команду. Все окна должны появиться снова.
NB: убедитесь, что у вас не открыты "ценные" окна во время тестирования
Если все работает нормально, добавьте команду к комбинации клавиш быстрого доступа: выберите: "Системные настройки" > "Клавиатура" > "Ярлыки" > "Пользовательские сочетания клавиш". Нажмите "+" и добавьте команду:
python3 /path/to/toggle_visibility.py
объяснение
Как сказано, скрипт использует xdotool
"s windowunmap
, чтобы (полностью) скрыть окна и приложения, к которым они принадлежат. Сценарий:
- читает текущее рабочее пространство
- читает окна, которые существуют в текущем рабочем пространстве (только)
- записывает список окон в файл, названный в честь текущего рабочего пространства
- прячет окна
При следующем запуске скрипт:
- проверяет, существует ли файл, соответствующий текущему рабочему пространству
- если это так, читает список окон и раскрывает окна.
таким образом переключая видимость окон и приложений в текущей рабочей области.
К сожалению это невозможно.
Unity всегда показывает все приложения отовсюду, и изменить это невозможно. Есть сообщение об ошибке - https://bugs.launchpad.net/ayatana-design/+bug/683170 Но, похоже, разработчики не собираются ничего делать. Возможно, если вы отметите в верхней части страницы, что эта ошибка влияет на вас, это поможет разработчикам понять важность такой опции.
Скрыть приложение / окно от переключателя alt-tab
- установите dconf-editor, используя следующую команду
sudo apt-get install dconf-editor
- запустите dconf-editor из меню или терминала, используя следующую команду
dconf-editor
- в dconf посетите место
- для использования app-swicther следующие
/org/gnome/shell/app-switcher/current-workspace-only
- для оконного переключателя используйте следующие
/org/gnome/shell/window-switcher/current-workspace-only
- примечание: вы также можете редактировать оба
- для использования app-swicther следующие
- выключить кнопку / переключатель с надписью Использовать значение по умолчанию
- переопределить пользовательское значение из
false
кtrue
- сохраните изменения, нажав кнопку Применить в правом нижнем углу dconf