Czy chcesz ustawić wyświetlanie tylko aplikacji bieżącego obszaru roboczego w programie uruchamiającym?

30

Czy w programie uruchamiającym można otworzyć otwarte aplikacje bieżącego obszaru roboczego, ale nie te z innych obszarów roboczych?

użytkownik165749
źródło
Myślę, że ctrl + (1,2,3,4) służy do przełączania obszarów roboczych. Ale sprawdź skróty w ustawieniach systemu ...
Alvar
Przytrzymaj klawisz SUPER (klawisz Windows), aby wyświetlić przegląd wszystkich dostępnych skrótów Unity. Sprawdź także te pytania i odpowiedzi .
Glutanimate,
Zredagowałem twoje drugie pytanie dotyczące skrótów w swoim poście, ponieważ jest to duplikat i na które już wcześniej udzielono odpowiedzi. Widzę, że to twoje pierwsze pytanie (Witamy w Askubuntu!): Łatwiej jest nam pomóc, jeśli zadajesz tylko jedno pytanie na post. Pamiętaj o tym w przyszłości podczas korzystania z AU.
Glutanimate,
To samo pytanie jak tutaj . Jednak ten nie ma odpowiedzi.
RPiAwesomeness
Prawdopodobnie nie jest to odpowiedź, której szukasz, ale brak jedności możliwości dostosowania. Jeśli masz szczególne potrzeby lub chcesz mieć większą kontrolę nad pulpitem, powinieneś rozważyć przejście na bardziej elastyczne środowisko pulpitu, takie jak KDE.
Conchylicultor,

Odpowiedzi:

30

Dla Ubuntu Dock dostarczany z Ubuntu 17.10 i nowszymi (z GNOME)

Cóż, inne odpowiedzi są dość stare, więc myślę, że warto dodać aktualną odpowiedź. Można to zrobić teraz i niezbyt trudne tbh (z Ubuntu 17.10 i posiadającym Gnome).

Wystarczy użyć edytora dconf :

sudo apt install dconf-editor

Przejdź do org> gnome> shell> extensions> dash-to-dock i zaznacz isolate-workspace wprowadź opis zdjęcia tutaj

Jakub Kopyś
źródło
1
pytanie nie ma absolutnie nic wspólnego z rozszerzeniem Dash To Dock Gnome. pytanie dotyczy Unity Launcher, którego Dash To Dock nie jest nawet kompatybilny z Unity.
crookedleaf
2
@crookedleaf Ubuntu przełączył się na GNOME z ponownie uruchomionym dash-to-dock domyślnie w wersji 17.10.
Seth
1
@Seth Ale OP używa Unity, a nie Gnome. Więc albo OP po prostu przypadkowo użył znacznika „Unity”, albo używa wersji Ubuntu z Unity.
crookedleaf,
3
@crookedleaf Lub po prostu musimy aktualizować pytania, aby miały także najnowsze odpowiedzi :)
Seth
1
Działa świetnie w 18.04 / w gnome. Dzięki! Uwaga: rozszerzenie można również łatwo zainstalować ze strony internetowej: extensions.gnome.org/extension/307/dash-to-dock
Jeff Ward
8

Jak uniemożliwić śledzenie aplikacji w (innych) obszarach roboczych

Korzystanie xdotool„s windowunmap, możliwe jest ukrycie okna całkowicie. Okno, ani jego aplikacja, nie pojawia się już w ikonie programu uruchamiającego i nie jest nawet wymienione na liście wyników wmctrl.

Teoretycznie można to połączyć z „silnikiem obszaru roboczego”, który został użyty w tej i tej odpowiedzi. To byłoby najbardziej eleganckie rozwiązanie.

Jednak proces ukrywania okien tylko w innych obszarach roboczych i automatycznego podnoszenia okien w bieżącym obszarze roboczym jest zbyt wymagający do użycia w trwającym skrypcie w tle (na razie) i nie jest mało prawdopodobne, aby „złapał przeziębienie”. Ponieważ okna są tracone na zawsze w przypadku błędów, postanowiłem nie oferować procedury jako procesu automatycznego (w tle).

Jeśli ta odpowiedź jest jednak dla Ciebie przydatna lub nie, zależy od sytuacji, a powód, dla którego chcesz ukryć ikony aplikacji działających w innych obszarach roboczych; decyzja jest twoja.

Rozwiązanie; co to jest i jak to działa w praktyce

  • Skrypt dostępny pod klawiszem skrótu, pozornie powodujący całkowite zniknięcie wszystkich okien w bieżącym obszarze roboczym (a więc i aplikacjach). Oznacza to, że ikona aplikacji w programie uruchamiającym Unity pokazuje brak aktywności aplikacji:

    Trzy uruchomione aplikacje: wprowadź opis zdjęcia tutajPo naciśnięciu klawisza skrótu:wprowadź opis zdjęcia tutaj

  • Ponowne naciśnięcie kombinacji klawiszy Schortcut spowoduje ponowne pojawienie się okien i ich aplikacji.

  • Ponieważ kombinacja klawiszy ukryje tylko okna i aplikacje przed bieżącym obszarem roboczym , możesz następnie przejść do innego obszaru roboczego bez znaku tego, co jest (ukryte) w bieżącym obszarze roboczym.
  • Również ukrywanie jest wykonywane (tylko) w bieżącym obszarze roboczym, więc w skrócie, proces ukrywania i odkrywania jest całkowicie niezależny dla każdego obszaru roboczego .

Scenariusz

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

Jak używać

  1. Skrypt potrzebuje zarówno wmctrla xdotool:

    sudo apt-get install wmctrl xdotool
    
  2. Skopiuj skrypt do pustego pliku i zapisz go jako toggle_visibility.py
  3. Testuj - uruchom skrypt: w oknie terminala uruchom polecenie:

    python3 /path/to/toggle_visibility.py
    

    Teraz otwórz nowe okno terminala (ponieważ pierwsze pozornie zniknęło z powierzchni ziemi) i ponownie uruchom to samo polecenie. Wszystkie okna powinny pojawić się ponownie.

    Uwaga : upewnij się, że nie masz otwartych „cennych” okien podczas testowania

  4. Jeśli wszystko działa poprawnie, dodaj polecenie do kombinacji klawiszy skrótu: wybierz: Ustawienia systemu> „Klawiatura”> „Skróty”> „Skróty niestandardowe”. Kliknij „+” i dodaj polecenie:

    python3 /path/to/toggle_visibility.py
    

Wyjaśnienie

Jak już powiedziano, skrypt używa xdotool' windowunmap, aby (całkowicie) ukryć okna i aplikacje, do których należą. Scenariusz:

  • odczytuje bieżący obszar roboczy
  • odczytuje okna istniejące w bieżącym obszarze roboczym (tylko)
  • zapisuje listę okien do pliku nazwanego na podstawie bieżącego obszaru roboczego
  • ukrywa okna

Przy następnym uruchomieniu skrypt:

  • sprawdza, czy istnieje plik odpowiadający bieżącemu obszarowi roboczemu
  • jeśli tak, czyta listę okien i odsłania okna.

w ten sposób przełącza się widoczność okien i aplikacji w bieżącym obszarze roboczym.

Jacob Vlijm
źródło
Świetny. Teraz tylko wtedy, gdy znajdę sposób na automatyczne wykonanie skryptu, gdy przejdę do innego obszaru roboczego, aby po prostu magicznie zniknęły, a następnie pojawią się ponownie, gdy się cofnę. Może mógłbym napisać skrypt Pythona, aby zastąpić klawisz skrótu dla ctrl+ shift+arrow key
Thu Yein Tun
1
17.10 jest to teraz możliwe. Zobacz inne odpowiedzi.
Martin Melka
6

Niestety jest to niemożliwe.

Unity zawsze pokazuje wszystkie aplikacje z dowolnego miejsca i nie ma sposobu, aby to zmienić. Jest raport o błędzie - https://bugs.launchpad.net/ayatana-design/+bug/683170 Ale wydaje się, że programiści nic nie zrobią. Prawdopodobnie, jeśli zaznaczysz na górze strony, że ten błąd dotyczy ciebie, pomoże to programistom zrozumieć znaczenie takiej opcji.

dofeoct
źródło
1
Nie komentuj raportu o błędach, zaznacz go jako mający wpływ na Ciebie na górze strony.
Flimm,
@Flimm, czy wiesz, jaki menedżer pulpitu ma taką funkcjonalność?
Cesar
2
jedność wygląda świetnie, ale brak możliwości dostosowania jest naprawdę frustrujący.
Programster