Настройка показывать только приложения текущего рабочего пространства в панели запуска?

Возможно ли иметь открытые приложения текущей рабочей области в панели запуска, но не приложения из других рабочих областей?

45
задан 9 June 2013 в 21:50

4 ответа

Для Ubuntu Dock, поставляемого с Ubuntu 17.10 и новее (с GNOME)

Что ж, другие ответы довольно старые, поэтому я думаю, что стоит добавить обновленный ответ. Это можно сделать прямо сейчас и не слишком сложно (с Ubuntu 17.10 и Gnome).

Просто используйте dconf-editor :

sudo apt install dconf-editor

Перейдите в org> gnome> shell> extensions> dash-to-dock и проверьте изолировать-рабочие области enter image description here

50
ответ дан 9 June 2013 в 21:50

К сожалению, это невозможно.

Unity всегда показывает все приложения отовсюду, и изменить это невозможно. Есть отчет об ошибке - https://bugs.launchpad.net/ayatana-design/+bug/683170 Но вроде разработчики ничего делать не собираются.Возможно, если вы отметите вверху страницы, что эта ошибка затрагивает вас, это поможет разработчикам понять важность такой опции.

5
ответ дан 9 June 2013 в 21:50

Как сделать приложения неотслеживаемыми на (других) рабочих пространствах

Используя xdotool windowunmap, можно полностью скрыть окно. Окно, равно как и его применение, больше не отображается в иконке пусковой установки, и даже больше не отображается в выводе wmctrl. Теоретически, этот может быть подключен к "двигателю рабочего пространства", который использовался в ответе настоящего и настоящего . Это было бы самым элегантным решением. Однако процесс только прячет окна на других рабочих местах и автоматически поднимает окна на нынешнем рабочем пространстве слишком требователен для использования в текущем сценарии фона (на данный момент), и не маловероятно, что он также "простудится". Так как окна навсегда теряются в случае ошибок, я решил не предлагать эту процедуру в качестве автоматического (фонового) процесса.

Если этот ответ тем не менее полезен для вас или нет, зависит от ситуации, а также от причины, по которой вы хотите скрыть иконки приложений, работающих на других рабочих местах; решение за вами.

Решение; что это такое и как оно работает на практике

  • Скрипт, доступный под горячей клавишей, по-видимому, заставляет все окна на текущей рабочей области (а значит, и приложения) полностью исчезнуть. Это означает, что иконка приложения в пусковом устройстве Unity не показывает никакой активности приложения:

    Три запущенных приложения: enter image description here После нажатия клавиши быстрого доступа: enter image description here

  • Снова нажав комбинацию клавиш schortcut, окна и их приложения снова появятся.

  • Поскольку комбинация клавиш скрывает окна и приложения только из текущей рабочей области , вы можете впоследствии переключиться на другую рабочую область без знака того, что находится (скрыто) на текущей рабочей области.
  • Также Скрытие выполняется (только) на текущей рабочей области, поэтому, короче говоря, процесс скрытия и деактивации выполняется полностью независимо от рабочей области .

Сценарий

#!/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]])

Как использовать

  1. Сценарий нуждается как в wmctrl, так и xdotool:

    sudo apt-get install wmctrl xdotool
    
  2. Скопируйте скрипт в пустой файл, сохраните его как toggle_visibility.py
  3. Тестировать запустите скрипт: в окне терминала, выполните команду:

    python3 /path/to/toggle_visibility.py.
    

    Теперь откройте новое терминальное окно (так как первое, казалось бы, исчезло с лица земли) и снова выполните ту же самую команду. Все окна должны появиться заново.

    NB: убедитесь, что "ценные" окна не открылись при тестировании

  4. Если все работает нормально, добавьте команду в комбинацию клавиш быстрого вызова: select: Системные настройки > "Клавиатура" > "Ярлыки" > "Пользовательские ярлыки". Нажмите "+" и добавьте команду:

    python3 /path/to/toggle_visibility.py.
    

Объяснение

Как уже говорилось, скрипт использует xdotool's windowunmap, чтобы (полностью) скрыть окна и приложения, к которым они принадлежат. Сценарий:

  • читает то, что является текущей рабочей областью
  • читает окна, которые существуют на текущей рабочей области (только)
  • записывает список окон в файл, названный в честь текущей рабочей области
  • скрывает окна

При следующем запуске, скрипт:

  • проверяет, существует ли файл, соответствующий текущей рабочей области
  • , если да, читает список окон и un- скрывает окна. Таким образом, переключая видимость окон и приложений на текущей рабочей области.

7
ответ дан 9 June 2013 в 21:50

Скрыть приложение / окно из переключателя alt-tab

  1. установить dconf-editor с помощью следующей команды
    • sudo apt-get install dconf-editor
  2. запускает dconf-editor из меню или терминала, используя следующую команду
    • dconf-editor
  3. в dconf перейдите по адресу
    • для быстрого использования приложений:
      • / org / gnome / shell / app-Switcher / current-workspace-only
    • для использования переключателя окон, следуя
      • / org / gnome / shell / window-Switcher / current-workspace-only
    • примечание: вы также можете отредактировать оба
  4. выключателя / кнопки выключения с надписью Использовать значение по умолчанию
  5. переопределить Пользовательское значение от false до true
  6. сохраните изменения, нажав кнопку Применить в правом нижнем углу dconf
0
ответ дан 5 January 2021 в 23:23

Другие вопросы по тегам:

Похожие вопросы: