web-dev-qa-db-fra.com

Raccourci pour renommer un espace de travail dans Gnome

Vous pouvez "cliquer avec le bouton droit de la souris => Préférences" sur le sélecteur d’espace de travail Gnome pour renommer les espaces de travail.

Je me demande s'il est possible de configurer un raccourci clavier pour déclencher le changement de nom de l'espace de travail actif actuel.

4
ajwood

Utilisez dconf-editor depuis le terminal, accédez à gnome>desktop>wm>, puis définissez workspace-names sur

 ["Internet", "Oracle", "Gimp", "PHP"]
4
Shaun

À ma connaissance, il n'y a pas de raccourci, mais vous pouvez écrire un script pour changer le libellé de l'espace de travail:

#!/bin/zsh

#get desktop number
n=$(xdotool get_desktop)
n=$[n+1]

#get current workspace label
et=$(cat ~/.workspacenames/names| sed -n "$n p")

#Prompt user for new workspace label
label=$(zenity --entry --entry-text="$et" --title="Workspace label" --text="New label")

if [ "$label" = "" ] ; then exit; fi

#replace the workspace label in our local file
sed "$n s/.*/$label/" -i ~/.workspacenames/names

#convert lines of the local file to an array gsettings can understand
magic=$(cat ~/.workspacenames/names | tr '\r\n' '|' | sed "s/.$/\"/;s/^/\"/;s/|/\",\"/g"|sed 's/\(.*\)/\[\1\]/')

#update settings
gsettings set org.gnome.desktop.wm.preferences workspace-names "$magic"

Ce script suppose que zenity est installé et que vous avez un fichier local appelé ~/.workspacenames/names, qui attribue un nom à chaque espace de travail sur une nouvelle ligne. Vous pouvez mettre ce script dans le même répertoire que les noms et vous pouvez avoir un raccourci (pour moi, Super+W) pour l'exécuter.

2
Baldersmash

Un script plus propre (mais nécessite qdbus). Fonctionne probablement pour Bash aussi.

#!/usr/bin/env zsh

# Capture output in evaljs properly
IFS=$'\n'

function evaljs() {
    eval_res=($(qdbus org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval "$1"))
    echo $eval_res[2]
}

if [[ -z $1 ]]; then
    name=$(zenity --entry --entry-text="" --title="Workspace label" --text="New label")
else
    name=$1
fi

evaljs "
    const Gio = imports.gi.Gio;
    let i = global.screen.get_active_workspace_index();

    let settings = new Gio.Settings({ schema_id:
                                      'org.gnome.desktop.wm.preferences'});
    let names = settings.get_strv('workspace-names');

    let oldName = names[i];
    names[i] = '$name';
    settings.set_strv('workspace-names', names);
    oldName;
"
0
olejorgenb

Remarque: cette réponse provient de réponse de Baldersmash . Le crédit pour la recherche des commandes requises va à la réponse de Baldersmash.

#!/bin/bash

# Get total count of workspaces.
count=$(gsettings get org.gnome.desktop.wm.preferences num-workspaces)

# Get current workspace number
current_num=$(xdotool get_desktop)

# Get existing workspace names
existing_names=$(gsettings get org.gnome.desktop.wm.preferences workspace-names | grep -oP '\[.*')

# Let python worry about the indexing to find the name of current workspace.
existing_name=$(python <<< "print $existing_names[$current_num]" 2>/dev/null)

# Get the new name from the user. Exit the script if the user presses cancel.
new_name=$(zenity --entry --entry-text="$existing_name" --title="Workspace $((current_num+1)) label" --text="New label:") || exit 0

# Again abuse python to fill the array correctly.
new_names=$(python << EOF
a = ($existing_names + [''] * $count)[:$count] # Create the array of sufficient size.
a[$current_num] = "$new_name" # Set the current workspace's name (Assumes that it does not contain special characters.)
print a # Print the array.
EOF
)

# Set new array in gsettings.
gsettings set org.gnome.desktop.wm.preferences workspace-names "$new_names"

Le panneau inférieur de gnome a un commutateur d’espace de travail avec des entrées par défaut.

J'ai ajouté un sélecteur d'espace de travail dans le panneau supérieur du gnome (aligné au centre), avec les paramètres suivants:

  1. Afficher uniquement l'espace de travail actuel
  2. Afficher le nom de l'espace de travail dans le commutateur.

Et j'ai ajouté un lanceur d'applications personnalisé juste à côté, qui pointe vers le script ci-dessus.

0
anishsane