Как изменить тему указателя мыши из командной строки?

Вышеприведенный ответ является хорошим решением. Чтобы облегчить процесс, можно было бы привести его в практический сценарий. Например:

echo autospawn = no > $HOME/.config/pulse/client.conf
pulseaudio --kill
read -p "Press enter to enable pulseaudio again."
rm $HOME/.config/pulse/client.conf
pulseaudio --start

Я не думал об этом, просто адаптировал его. Этот скрипт работает для меня в Ubuntu 16.04.

3
задан 8 July 2017 в 03:04

3 ответа

Как настройки работают под капотом

Профиль каждого пользователя управляется базой данных DConf. Вы можете узнать больше об этом, отвечая на этот вопрос: приложение на основе графического интерфейса выполняет команды оболочки в фоновом режиме? Каждый конкретный параметр имеет схему - своего рода URL-адрес и ключ - имя определенного параметра, связанного с ним.

Давайте выясним, какая настройка изменит Unity Tweak Tool при изменении темы курсора,

Инструмент gsettings - друг твикера

]

К счастью для нас существует утилита командной строки под названием gsettings, которую мы можем использовать для изменения необходимых нам параметров. Этот инструмент часто используется в сценариях оболочки. Для других типов языков, таких как Python или C, существуют библиотеки GSettings, которые позволяют нам делать то же самое. Здесь мы специально хотим использовать gsettings, потому что его можно использовать в командной строке.

Различие заключается в том, что в отличие от dconf, схемы разделены точками, а не разделены на части. Таким образом, gsettings понимает схему org.gnome.desktop.interface.

Таким образом, мы можем это сделать:

$ gsettings set  org.gnome.desktop.interface cursor-theme 'redglass'

Обратите внимание, что в этом примере я использую Redglass в качестве одной из тех тем, которые у меня были установлены, поэтому вы можете использовать некоторые из значений, которые вы указали в UTT.

Поиск значений схемы

Как правило, что может быть сделано, чтобы найти все возможные варианты схемы gsettings, чтобы использовать опцию range:

$ gsettings range com.canonical.Unity.Launcher launcher-position                                                                                                                        
enum
'Left'
'Bottom'

К сожалению, для схемы, которую мы должны использовать для изменения темы курсора, нет enum:

$ gsettings range  org.gnome.desktop.interface cursor-theme                                                                                                                             
type s

Таким образом, как вы можете сделать (и что, по-видимому, UTT), нужно перечислить все каталоги в папке /usr/share/icons, в которой есть папка cursors: [!d13 ]

$ ls -d /usr/share/icons/*/cursors                                                                                                                                                      
/usr/share/icons/crystalblue_classic/cursors/      /usr/share/icons/crystalgray_nonanim/cursors/       /usr/share/icons/crystalwhiteleft_nonanim/cursors/

... more output here

И затем просто выберите имя папки каждой темы в качестве нового значения.

Принимая это дальше - создание сценария оболочки

Конечно, мы не хотим иметь дело с несколькими командами снова и снова. Скорее, давайте упростим с помощью сценария оболочки, в данном конкретном случае - сценарий bash (потому что мы хотим использовать расширенные функции, такие как массивы, и потому, что мы не стремимся к переносимости в другие системы, кроме Ubuntu), которые будут перечислены доступные темы и позволят нам выбрать тот, который мы хотим.

#!/usr/bin/env bash

fifo="/tmp/themes_script.fifo"
mkfifo "$fifo"

declare -a themes
find /usr/share/icons -maxdepth 2 -type d  -name "cursors" -printf "%P\n" > "$fifo" &

while IFS= read -r line
do
        themes+=("${line%/*}")
done < "$fifo"
rm "$fifo"

echo ">>> Please enter the number of new theme for cursor"
select opt in "${themes[@]}"
do
     if [ $REPLY -le ${#themes} ]
     then
          gsettings set org.gnome.desktop.interface cursor-theme  \'$opt\' &&
          exit 0
     else
          echo "Improper argument" > /dev/stderr
          exit 1
     fi
done

Тестирование:

bash-4.3$ ./change_cursor_theme.sh 
>>> Please enter the number of new theme for cursor
 1) crystalblueleft_nonanim   14) crystalgray_nonanim
 2) crystalgreenleft_classic  15) DMZ-Black
 3) crystalwhite_nonanim      16) crystalgrayleft
 4) handhelds             17) crystalblueleft_classic
 5) crystalgreen          18) Deepin-sapphire
 6) whiteglass            19) crystalwhiteleft
 7) crystalgray           20) crystalgreenleft_nonanim
 8) crystalwhiteleft_nonanim  21) crystalgrayleft_nonanim
 9) redglass              22) DMZ-White
10) crystalblue           23) crystalblueleft
11) crystalwhite          24) crystalblue_nonanim
12) crystalblue_classic       25) crystalgreenleft
13) crystalgreen_nonanim      26) crystalgreen_classic
#? 9
bash-4.3$ 
2
ответ дан 22 May 2018 в 20:45

Как настройки работают под капотом

Профиль каждого пользователя управляется базой данных DConf. Вы можете узнать больше об этом, отвечая на этот вопрос: приложение на основе графического интерфейса выполняет команды оболочки в фоновом режиме? Каждый конкретный параметр имеет схему - своего рода URL-адрес и ключ - имя определенного параметра, связанного с ним.

Давайте выясним, какая настройка изменит Unity Tweak Tool при изменении темы курсора,

Инструмент gsettings - друг твикера

]

К счастью для нас существует утилита командной строки под названием gsettings, которую мы можем использовать для изменения необходимых нам параметров. Этот инструмент часто используется в сценариях оболочки. Для других типов языков, таких как Python или C, существуют библиотеки GSettings, которые позволяют нам делать то же самое. Здесь мы специально хотим использовать gsettings, потому что его можно использовать в командной строке.

Различие заключается в том, что в отличие от dconf, схемы разделены точками, а не разделены на части. Таким образом, gsettings понимает схему org.gnome.desktop.interface.

Таким образом, мы можем это сделать:

$ gsettings set org.gnome.desktop.interface cursor-theme 'redglass'

Обратите внимание, что в этом примере я использую Redglass в качестве одной из тех тем, которые у меня были установлены, поэтому вы можете использовать некоторые из значений, которые вы указали в UTT.

Поиск значений схемы

Как правило, что может быть сделано, чтобы найти все возможные варианты схемы gsettings, чтобы использовать опцию range:

$ gsettings range com.canonical.Unity.Launcher launcher-position enum 'Left' 'Bottom'

К сожалению, для схемы, которую мы должны использовать для изменения темы курсора, нет enum:

$ gsettings range org.gnome.desktop.interface cursor-theme type s

Таким образом, как вы можете сделать (и что, по-видимому, UTT), нужно перечислить все каталоги в папке /usr/share/icons, в которой есть папка cursors:

$ ls -d /usr/share/icons/*/cursors /usr/share/icons/crystalblue_classic/cursors/ /usr/share/icons/crystalgray_nonanim/cursors/ /usr/share/icons/crystalwhiteleft_nonanim/cursors/ ... more output here

И затем просто выберите имя папки каждой темы в качестве нового значения.

Принимая это дальше - создание сценария оболочки

Конечно, мы не хотим иметь дело с несколькими командами снова и снова. Скорее, давайте упростим с помощью сценария оболочки, в данном конкретном случае - сценарий bash (потому что мы хотим использовать расширенные функции, такие как массивы, и потому, что мы не стремимся к переносимости в другие системы, кроме Ubuntu), которые будут перечислены доступные темы и позволят нам выбрать тот, который мы хотим.

#!/usr/bin/env bash fifo="/tmp/themes_script.fifo" mkfifo "$fifo" declare -a themes find /usr/share/icons -maxdepth 2 -type d -name "cursors" -printf "%P\n" > "$fifo" & while IFS= read -r line do themes+=("${line%/*}") done < "$fifo" rm "$fifo" echo ">>> Please enter the number of new theme for cursor" select opt in "${themes[@]}" do if [ $REPLY -le ${#themes} ] then gsettings set org.gnome.desktop.interface cursor-theme \'$opt\' && exit 0 else echo "Improper argument" > /dev/stderr exit 1 fi done

Тестирование:

bash-4.3$ ./change_cursor_theme.sh >>> Please enter the number of new theme for cursor 1) crystalblueleft_nonanim 14) crystalgray_nonanim 2) crystalgreenleft_classic 15) DMZ-Black 3) crystalwhite_nonanim 16) crystalgrayleft 4) handhelds 17) crystalblueleft_classic 5) crystalgreen 18) Deepin-sapphire 6) whiteglass 19) crystalwhiteleft 7) crystalgray 20) crystalgreenleft_nonanim 8) crystalwhiteleft_nonanim 21) crystalgrayleft_nonanim 9) redglass 22) DMZ-White 10) crystalblue 23) crystalblueleft 11) crystalwhite 24) crystalblue_nonanim 12) crystalblue_classic 25) crystalgreenleft 13) crystalgreen_nonanim 26) crystalgreen_classic #? 9 bash-4.3$
2
ответ дан 18 July 2018 в 10:35

Как настройки работают под капотом

Профиль каждого пользователя управляется базой данных DConf. Вы можете узнать больше об этом, отвечая на этот вопрос: приложение на основе графического интерфейса выполняет команды оболочки в фоновом режиме? Каждый конкретный параметр имеет схему - своего рода URL-адрес и ключ - имя определенного параметра, связанного с ним.

Давайте выясним, какая настройка изменит Unity Tweak Tool при изменении темы курсора,

Инструмент gsettings - друг твикера

]

К счастью для нас существует утилита командной строки под названием gsettings, которую мы можем использовать для изменения необходимых нам параметров. Этот инструмент часто используется в сценариях оболочки. Для других типов языков, таких как Python или C, существуют библиотеки GSettings, которые позволяют нам делать то же самое. Здесь мы специально хотим использовать gsettings, потому что его можно использовать в командной строке.

Различие заключается в том, что в отличие от dconf, схемы разделены точками, а не разделены на части. Таким образом, gsettings понимает схему org.gnome.desktop.interface.

Таким образом, мы можем это сделать:

$ gsettings set org.gnome.desktop.interface cursor-theme 'redglass'

Обратите внимание, что в этом примере я использую Redglass в качестве одной из тех тем, которые у меня были установлены, поэтому вы можете использовать некоторые из значений, которые вы указали в UTT.

Поиск значений схемы

Как правило, что может быть сделано, чтобы найти все возможные варианты схемы gsettings, чтобы использовать опцию range:

$ gsettings range com.canonical.Unity.Launcher launcher-position enum 'Left' 'Bottom'

К сожалению, для схемы, которую мы должны использовать для изменения темы курсора, нет enum:

$ gsettings range org.gnome.desktop.interface cursor-theme type s

Таким образом, как вы можете сделать (и что, по-видимому, UTT), нужно перечислить все каталоги в папке /usr/share/icons, в которой есть папка cursors:

$ ls -d /usr/share/icons/*/cursors /usr/share/icons/crystalblue_classic/cursors/ /usr/share/icons/crystalgray_nonanim/cursors/ /usr/share/icons/crystalwhiteleft_nonanim/cursors/ ... more output here

И затем просто выберите имя папки каждой темы в качестве нового значения.

Принимая это дальше - создание сценария оболочки

Конечно, мы не хотим иметь дело с несколькими командами снова и снова. Скорее, давайте упростим с помощью сценария оболочки, в данном конкретном случае - сценарий bash (потому что мы хотим использовать расширенные функции, такие как массивы, и потому, что мы не стремимся к переносимости в другие системы, кроме Ubuntu), которые будут перечислены доступные темы и позволят нам выбрать тот, который мы хотим.

#!/usr/bin/env bash fifo="/tmp/themes_script.fifo" mkfifo "$fifo" declare -a themes find /usr/share/icons -maxdepth 2 -type d -name "cursors" -printf "%P\n" > "$fifo" & while IFS= read -r line do themes+=("${line%/*}") done < "$fifo" rm "$fifo" echo ">>> Please enter the number of new theme for cursor" select opt in "${themes[@]}" do if [ $REPLY -le ${#themes} ] then gsettings set org.gnome.desktop.interface cursor-theme \'$opt\' && exit 0 else echo "Improper argument" > /dev/stderr exit 1 fi done

Тестирование:

bash-4.3$ ./change_cursor_theme.sh >>> Please enter the number of new theme for cursor 1) crystalblueleft_nonanim 14) crystalgray_nonanim 2) crystalgreenleft_classic 15) DMZ-Black 3) crystalwhite_nonanim 16) crystalgrayleft 4) handhelds 17) crystalblueleft_classic 5) crystalgreen 18) Deepin-sapphire 6) whiteglass 19) crystalwhiteleft 7) crystalgray 20) crystalgreenleft_nonanim 8) crystalwhiteleft_nonanim 21) crystalgrayleft_nonanim 9) redglass 22) DMZ-White 10) crystalblue 23) crystalblueleft 11) crystalwhite 24) crystalblue_nonanim 12) crystalblue_classic 25) crystalgreenleft 13) crystalgreen_nonanim 26) crystalgreen_classic #? 9 bash-4.3$
2
ответ дан 24 July 2018 в 19:36

Другие вопросы по тегам:

Похожие вопросы: