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

30

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

user165749
источник
Я думаю, что Ctrl + (1,2,3,4) используется для переключения рабочих пространств. Но проверьте ярлыки в настройках системы ...
Alvar
Удерживайте нажатой клавишу SUPER (клавиша Windows), чтобы отобразить обзор всех доступных ярлыков Unity. Кроме того, проверить этот Q & A .
Glutanimate
Я отредактировал твой второй вопрос о ярлыках из твоего поста, потому что это дубликат, и на него уже был дан ответ. Я вижу, что это ваш первый вопрос (Добро пожаловать в Askubuntu!): Нам будет проще помочь вам, если вы зададите только один вопрос на пост. Пожалуйста, помните об этом в будущем при использовании AU.
Glutanimate
Тот же вопрос, что и здесь . Однако на этот вопрос ответа нет.
RPiAwesomeness
Вероятно, не ответ, который вы ищете, а единственное отсутствие возможности настройки. Если у вас есть особые потребности или вы хотите лучше контролировать свой рабочий стол, вам следует рассмотреть возможность перехода к более гибкой среде рабочего стола, например, KDE.
Conchylicultor

Ответы:

30

Для Ubuntu Dock поставляется с Ubuntu 17.10 и более поздними версиями (с GNOME)

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

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

sudo apt install dconf-editor

Перейдите к org> gnome> shell> extensions> dash-to-dock и проверьте изолят-рабочие пространства введите описание изображения здесь

Якуб Копынь
источник
1
вопрос не имеет ничего общего с расширением Dash To Dock Gnome. вопрос касается Unity Launcher, который Dash To Dock даже не совместим с Unity.
crookedleaf
2
@crookedleaf Ubuntu перешел на GNOME с перезаписанной чертой в док по умолчанию с 17.10.
Сет
1
@Seth Но OP использует Unity, а не Gnome. Таким образом, либо OP просто использовал тег Unity случайно, либо они используют версию Ubuntu с Unity.
Crookedleaf
3
@crookedleaf Или нам просто нужно держать вопросы в курсе, чтобы у них тоже были последние ответы :)
Сет
1
Прекрасно работает в 18.04 / гноме. Благодарность! Обратите внимание, что расширение также может быть легко установлено с веб-сайта: extensions.gnome.org/extension/307/dash-to-dock
Джефф Уорд
8

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

Используя xdotools 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
    

объяснение

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

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

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

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

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

Якоб Влейм
источник
Отлично. Теперь, только если я смогу найти способ автоматически выполнить сценарий при переходе в другое рабочее пространство, чтобы они просто волшебным образом исчезали, а затем появлялись снова, когда я возвращался. Может быть, я мог бы написать скрипт на Python, чтобы заменить комбинацию клавиш для ctrl+ shift+arrow key
Чт Yein Tun
1
17.10 это теперь возможно. Смотрите другие ответы.
Мартин Мелка
6

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

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

dofeoct
источник
1
Не комментируйте отчет об ошибке, просто отметьте его как затрагивающий вас в верхней части страницы.
Flimm
@Flimm, вы случайно не знаете, у какого менеджера рабочего стола эта функциональность?
Сезар
2
единство выглядит великолепно, но отсутствие настраиваемости действительно расстраивает.
Программист