web-dev-qa-db-ja.com

Gnomeのワークスペースの名前を変更するショートカット

Gnomeワークスペーススイッチャーを右クリックして[設定]をクリックすると、ワークスペースの名前を変更できます。

現在アクティブなワークスペースの名前の変更をトリガーするキーボードショートカットを構成できるかどうか疑問に思っています。

4
ajwood

ターミナルからdconf-editorを使用し、gnome>desktop>wm>に移動してからworkspace-namesを設定します

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

私が知っているショートカットはありませんが、ワークスペースラベルを変更するスクリプトを作成できます。

#!/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"

このスクリプトは、zenityがインストールされており、~/.workspacenames/namesというローカルファイルがあり、新しい行に各ワークスペースの名前があることを前提としています。このスクリプトを名前と同じディレクトリに配置して、ショートカットを作成できます(私にとっては、 Super+W)それを実行します。

2
Baldersmash

よりクリーンなスクリプト(ただし、qdbusが必要)。おそらくbashでも動作します。

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

注:この回答は Baldersmashの回答 から分岐しています。必要なコマンドを検索した功績は、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"

下部のgnome-panelには、デフォルトエントリのあるワークスペーススイッチャーがあります。

次の設定で、上部のgnomeパネルにワークスペーススイッチャーを追加しました(中央揃え)。

  1. 現在のワークスペースのみを表示
  2. スイッチャーにワークスペース名を表示します。

そして、すぐ横に上記のスクリプトを指すカスタムアプリケーションランチャーを追加しました。

0
anishsane