Definindo para mostrar apenas aplicativos do espaço de trabalho atual no iniciador?

30

É possível ter os aplicativos abertos da área de trabalho atual no iniciador, mas não os de outras áreas de trabalho?

user165749
fonte
Eu acho que ctrl + (1,2,3,4) é usado para alternar áreas de trabalho. Mas verifique atalhos nas configurações do sistema ...
Alvar
Mantenha pressionada a tecla SUPER (tecla Windows) para exibir uma visão geral de todos os atalhos disponíveis do Unity. Verifique também estas perguntas e respostas .
Glutanimate
Editei sua segunda pergunta sobre os atalhos da sua postagem porque ela é uma duplicata e já foi respondida antes. Vejo que esta é sua primeira pergunta (Bem-vindo ao Askubuntu!): É mais fácil para nós ajudá-lo se você fizer apenas uma pergunta por post. Lembre-se disso no futuro ao usar o AU.
Glutanimate
A mesma pergunta que aqui . No entanto, essa falta de resposta.
RPiAwesomeness 7/11
Provavelmente não é a resposta que você procura, mas a falta de personalização da unidade. Se você tem necessidades específicas ou deseja mais controle sobre a área de trabalho, considere mudar para um ambiente de área de trabalho mais flexível, como o KDE.
Conchylicultor

Respostas:

30

Para o Ubuntu Dock enviado com o Ubuntu 17.10 e posterior (com GNOME)

Bem, outras respostas são bem antigas, então acho que vale a pena adicionar uma resposta atualizada. É possível fazê-lo agora e não muito difícil tbh (com o Ubuntu 17.10 e com o Gnome).

Basta usar o dconf-editor :

sudo apt install dconf-editor

Navegue para org> gnome> shell> extensões> dash-to-dock e marque isolar-áreas de trabalho insira a descrição da imagem aqui

Jakub Kopyś
fonte
1
a questão não tem absolutamente nada a ver com a extensão Dash To Dock Gnome. a pergunta é sobre o Unity Launcher, que o Dash To Dock nem é compatível com o Unity.
crookedleaf
2
@crookedleaf O Ubuntu mudou para o GNOME com um dash-to-dock rebaked como padrão na 17.10.
Seth
1
@Seth Mas o OP está usando o Unity, não o Gnome. Portanto, o OP acabou de usar a tag "Unity" acidentalmente ou está usando uma versão do Ubuntu com o Unity.
crookedleaf
3
@crookedleaf Ou nós só precisa manter perguntas atualizados para que eles tenham as últimas respostas também :)
Seth
1
Funciona muito bem no 18.04 / w gnome. Obrigado! Observe que a extensão também pode ser facilmente instalada no site: extensions.gnome.org/extension/307/dash-to-dock
Jeff Ward
8

Como tornar os aplicativos não rastreáveis ​​em (outros) espaços de trabalho

Usando xdotool's windowunmap, é possível ocultar completamente uma janela. A janela, nem a sua aplicação, ocorre mais no ícone do iniciador e nem aparece mais na saída de wmctrl.

Teoricamente, isso poderia ser conectado ao "mecanismo de espaço de trabalho", usado nesta e nesta resposta. Essa teria sido a solução mais elegante.

No entanto, o processo de ocultar apenas janelas em outras áreas de trabalho e aumentar automaticamente as que estão na área de trabalho atual é muito exigente para ser usado em um script em segundo plano em andamento (por enquanto), e não é improvável "pegar um resfriado" também. Como as janelas são perdidas para sempre em caso de erros, decidi não oferecer o procedimento como um processo automático (em segundo plano).

Se, no entanto, essa resposta é útil para você ou não, depende da situação e o motivo pelo qual você deseja ocultar ícones de aplicativos em execução em outros espaços de trabalho; a decisão é sua.

A solução; o que é e como funciona na prática

  • Um script, disponível sob uma tecla de atalho, aparentemente fazendo com que todas as janelas do espaço de trabalho atual (e, portanto, aplicativos) desapareçam completamente. Isso significa que o ícone do aplicativo no iniciador do Unity não mostra nenhuma atividade do aplicativo:

    Três aplicativos em execução: insira a descrição da imagem aquiDepois de pressionar a tecla de atalho:insira a descrição da imagem aqui

  • Pressionando a combinação de teclas schortcut novamente, as janelas e seus aplicativos aparecerão novamente.

  • Como a combinação de teclas oculta apenas as janelas e os aplicativos do espaço de trabalho atual , você pode alternar posteriormente para outro espaço de trabalho sem um sinal do que está (oculto) no espaço de trabalho atual.
  • Também é possível mostrar (apenas) o espaço de trabalho atual, portanto, em resumo, o processo de ocultar e mostrar é completamente independente por espaço de trabalho .

O script

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

Como usar

  1. O script precisa de ambos wmctrle xdotool:

    sudo apt-get install wmctrl xdotool
    
  2. Copie o script em um arquivo vazio, salve-o como toggle_visibility.py
  3. Teste - execute o script: em uma janela do terminal, execute o comando:

    python3 /path/to/toggle_visibility.py
    

    Agora abra uma nova janela de terminal (já que a primeira aparentemente desapareceu da face da Terra) e execute o mesmo comando novamente. Todas as janelas devem aparecer novamente.

    NB : verifique se você não tem janelas "valiosas" abertas durante o teste

  4. Se tudo funcionar bem, adicione o comando a uma combinação de teclas de atalho: escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando:

    python3 /path/to/toggle_visibility.py
    

Explicação

Como dito, o script usa xdotool's windowunmap, para (completamente) ocultar janelas e os aplicativos aos quais eles pertencem. O script:

  • lê qual é o espaço de trabalho atual
  • lê as janelas existentes no espaço de trabalho atual (apenas)
  • grava a lista de janelas em um arquivo, nomeado após o espaço de trabalho atual
  • esconde as janelas

Na próxima execução, o script:

  • verifica se o arquivo, correspondente à área de trabalho atual, existe
  • nesse caso, lê a lista de janelas e as oculta.

alternando assim a visibilidade de janelas e aplicativos no espaço de trabalho atual.

Jacob Vlijm
fonte
Ótimo. Agora, apenas se eu puder encontrar uma maneira de executar automaticamente o script quando mudar para o outro espaço de trabalho, para que eles desapareçam magicamente e apareçam novamente quando eu voltar. Talvez eu pudesse escrever um script python para substituir a tecla de atalho para ctrl+ shift+arrow key
Thu Yein Tun
1
Em 17.10 isso agora é possível. Veja outras respostas.
Martin Melka
6

Infelizmente é impossível.

O Unity sempre mostra todos os aplicativos de qualquer lugar e não há como mudar isso. Há um relatório de erro - https://bugs.launchpad.net/ayatana-design/+bug/683170 Mas parece que os desenvolvedores não farão nada. Provavelmente, se você marcar na parte superior da página que esse bug o afeta, ajudará os desenvolvedores a entender a importância dessa opção.

dofeoct
fonte
1
Não comente o relatório de bug, apenas marque-o como afetando você na parte superior da página.
Flimm
@Flimm você sabe qual gerenciador de desktop tem essa funcionalidade?
Cesar
2
a unidade parece ótima, mas a falta de personalização é realmente frustrante.
Programster