Esse problema em particular seria fácil de resolver se você configurasse mapeamentos de teclado para que o mesmo keysym e modificador fosse atribuído à chave Meta em todos os lugares.
Você pode obter algumas informações sobre o servidor por meio do programa xrdb . O servidor define algumas propriedades que xrdb
disponibiliza através do pré-processamento. Você pode imprimi-los com xrdb -symbols
. Por exemplo,
xrdb -Dsymbols | sed -n 's/-DSERVERHOST=//p'
imprime o nome do host do servidor X. Você pode definir recursos específicos para um host de servidor específico com construções de pré-processamento de C:
#ifdef SRVR_darkstar
…
#endif
Aqui está um script de shell que transforma símbolos xrdb em variáveis de ambiente shell. Use-o com algo como eval "$(xrdb_sh_prefix=X_ xrdb-sh)"
.
#!/bin/sh
# Access xrdb #define's from the shell
# For each binding that xrdb(1) would give to the preprocessor, print
# NAME=VALUE for -DNAME=VALUE.
# If $xrdb_sh_export is not empty, also print "export NAME".
# If $xrdb_sh_prefix is not empty, prefix it to each NAME in output.
# Shell metacharacters are preceded by '\' in VALUEs. NAMEs are
# assumed to be admissible C identifiers.
# Example:
# xrdb_sh_export=y xrdb_sh_prefix=X_ xrdb-sh
# outputs somthing like
# X_SERVERHOST=drongo
# export X_SERVERHOST
# X_VENDOR=The\ XFree86\ Project\,\ Inc
# export X_VENDOR
# ...
# The output of this program is typically used in a Bourne shell thus:
# eval "'xrdb_sh_prefix=X_ xrdb-sh'"
if [ -n "$xrdb_sh_export" ]; then
awk_export='print "export " name'
fi
awk -v prefix="$xrdb_sh_prefix" '
/^-D/ {
$0 = substr($0, 3)
eq = match($0, /=/)
name = (prefix) (eq ? substr($0, 1, eq-1) : $0)
if (eq) {
$0 = substr($0, eq+1)
sub(/^\"/, ""); sub(/\"$/, "")
gsub(/[^0-9A-Z_a-z]/, "\\&")
} else {
$0 = ""
}
print name "=" $0
'"$awk_export"'
}
/^exit=[0-9]+$/ {sub(/^.*=/, ""); exit $0}
' <<EOF
'{ xrdb "$@" -symbols || echo exit=$?; } | $sort || echo exit=$?'
EOF
Outra abordagem seria definir propriedades personalizadas na janela raiz do lado do servidor, por exemplo, com xprop
. Consultar essas propriedades (novamente com xprop
) do lado do cliente.
xprop -set Server_arch "$(uname -m)"