gnome-terminal - problema de suporte a fábrica desativável

1
gnome-terminal  --tab  --title="700"  --disable-factory  -e

Failed to parse arguments: Option "--disable-factory" is no longer supported in this version of gnome-terminal.

eu tenho gnome3 Qualquer solução, por favor, exceto desinstalar gnome?

    
por Ahmed Zain El Dein 03.02.2016 / 04:51

2 respostas

1

Se você realmente precisar de várias instâncias do processo do gnome-terminal em execução (mas por que deveria?), siga as etapas em link exceto pela parte do gdb.

    
por egmont 03.02.2016 / 08:58
0

Para o benefício do leitor.

O problema

A opção --disable-factory obteve removido na V3.8 de gnome-terminal e há de jeito nenhum arquivar este comportamento do jeito fácil. Pelo menos não uma maneira, que pode ser explicada às pessoas, que não são fluentes na sintaxe da shell.

Daí a linha de comando

gnome-terminal  --tab  --title="700" --disable-factory -e ...

falha com o erro apresentado na pergunta.

% bl0ck_qu0te%

BTW: Ubuntu 16.04 restaurado --disable-factory usando um wrapper que emula esse recurso . (Se você olha a complexidade deste wrapper , meu discurso ainda se aplica mais do que antes.)

Variante 0

Eu chamo isso de 0 , porque ambos não são soluções realmente adequadas. Uma solução adequada é mostrada na Variante 1.

Varriant 0a

Uma primeira coisa, você pode tentar, é remover a opção --disable-server :

gnome-terminal --tab --title="700" -e ...

No entanto, isso tem a seguinte desvantagem:

Isso não espera mais até que gnome-terminal termine . Se houver outro gnome-terminal em execução, o comando retornará imediatamente. Normalmente, isso não é o que você quer, porque é por isso que a opção --disable-factory estava presente em primeiro lugar.

Variante 0b

Portanto, remover essa opção só é viável no caso em que você pode ter certeza de que, em todos os casos, nenhum outro gnome-terminal está sendo executado.

Se esse não for o caso, mas você estiver em um caso em que outra execução gnome-terminal não deve ser suportada, tente seguir variante de fallback desesperado :

killall -9 gnome-terminal
gnome-terminal  --tab  --title="700" -e ...

Mas cuidado! Isso elimina incondicionalmente todos os gnome-terminal s que ainda estão abertos. Em um ambiente de produção, isso geralmente causará mais dano do que ajuda. Você foi avisado!

Variante 1

Se você não precisa executá-lo em gnome-terminal e pode executá-lo em algum outro emulador de terminal. @muru comentou um bom substituto.

xfce4-terminal entende quase o mesmo conjunto de opções que gnome-terminal (e adiciona algumas outras opções muito úteis que estão faltando em gnome-terminal por anos). Ele também tem uma opção documentada, que faz o que --disable-factory fez para gnome-terminal . A opção --tab funciona de forma diferente para gnome-terminal e, portanto, deve ser removida também para que algo funcione. A substituição é:

xfce4-terminal --title="700" --disable-server -e ...

Você também pode adicionar uma opção --hold , se quiser ver a saída completa do comando antes que a janela seja fechada:

xfce4-terminal --hold --title="700" --disable-server -e ...

Por favor, note que xfce4-terminal tem uma pequena condição de corrida, que infelizmente trunca a saída, então --hold não é totalmente efetivo. Corrigindo isto corretamente (de tal forma que você pode usar copy'n'paste) está além do escopo da resposta, porém geralmente adicionando um pouco de echo $? && read -t.1 ao script que é executado com (atrás) -e pode resolvê-lo 99% do tempo.

Caso você receba a mensagem, que xfce4-terminal está faltando, você deverá instalá-la primeiro. Ele pode ser instalado em paralelo a gnome , mesmo que ele pertença a outra variante de área de trabalho (Xfce):

sudo apt-get install xfce4-terminal

A única desvantagem é que xfce4-terminal tem outra aparência do que gnome-terminal e segue algumas outras

Variante 2..∞

Existem inúmeras outras variantes possíveis para corrigir esse problema. A maioria deles é realmente complicada. Muito complicado para pessoas normais, aquelas que não estão realmente interessadas em shells.

Então eu os deixo longe. Minha recomendação é:

Como observado por @muru, tente usar xfce4-terminal em vez de gnome-terminal .

Nota para aqueles que criam shells

Todas as soluções simples não são realmente perfeitas, pois não retornam o valor de retorno do comando ( gnome-terminal também não retorna). Infelizmente. Para consertar isso, esta é uma história completamente diferente.

    
por Tino 17.06.2017 / 12:26