É possível ter os aplicativos abertos da área de trabalho atual no iniciador, mas não os de outras áreas de trabalho?
É possível ter os aplicativos abertos da área de trabalho atual no iniciador, mas não os de outras áreas de trabalho?
Respostas:
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
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.
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: Depois de pressionar a tecla de atalho:
Pressionando a combinação de teclas schortcut novamente, as janelas e seus aplicativos aparecerão novamente.
#!/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]])
O script precisa de ambos wmctrl
e xdotool
:
sudo apt-get install wmctrl xdotool
toggle_visibility.py
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
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
Como dito, o script usa xdotool
's windowunmap
, para (completamente) ocultar janelas e os aplicativos aos quais eles pertencem. O script:
Na próxima execução, o script:
alternando assim a visibilidade de janelas e aplicativos no espaço de trabalho atual.
ctrl
+ shift
+arrow key
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.