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

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

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]])

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

  1. Скрипт нуждается в обоих wmctrl а также xdotool:

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

    python3 /path/to/toggle_visibility.py
    

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

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

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

    python3 /path/to/toggle_visibility.py
    

объяснение

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

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

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

  • проверяет, существует ли файл, соответствующий текущему рабочему пространству
  • если это так, читает список окон и раскрывает окна.

таким образом переключая видимость окон и приложений в текущей рабочей области.

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

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

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

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