суббота, 15 июля 2017 г.

Nemo в Linux Mint 18. Пункты "Копировать в" и "Переместить в"

Интересно было бы полюбопытствовать у разработчиков: чем они руководствовались, когда из правого контекстного меню мыши Nemo были убраны пункты "Копировать в" и "Переместить в". Надеюсь, что многие склонны были бы согласиться с тем, что данные пункты являются для пользователя одними из самых необходимых. Тем более, что в Linux Mint 17.2 они ещё имелись, но в 17.3 уже пропали. Мой интерес к данному вопросу подогревался также и тем обстоятельством, что в Live-режиме данные пункты имеются, но после установки системы чудесным образом исчезают.

Как показало "следствие", эти пункты, всё-таки, имеются, но доступны только через меню "Правка", например:




Ну-с, а теперь приступим к "лечению". Установите редактор dconf командой в терминале:  sudo apt install dconf-editor

В том же терминале запустите команду  sudo dconf-editor  или перейдите в "Меню – Администрирование – Редактор dconf".

А теперь поставьте галочку в поле "context-menu-show-all-actions" в секции preferences подраздела nemo раздела org:



После внесения изменений:



пятница, 14 июля 2017 г.

Runtu – gtk-update-icon-cache: команда не найдена


На один из своих не самых мощных компьютеров 2 раза устанавливался дистрибутив Runtu XFCE. Не буду распространяться о его достоинствах, при желании в Интернет легко найдутся материалы на эту тему.

Всё было неплохо, всё было понятно, мелкие переделки в плане замены одних программ на другие, а также установка нужных не вызывали трудностей.

Однако существовала проблема, которую никак не удавалось решить.

В настройках тем оформления Runtu имеется ряд предустановленных тем. Но значки этих тем не имеют кэш-файла, о чём можно узнать, подведя курсор мыши к информационному значку жёлтого цвета.



Ну мы же все умные! Выбираем тему и в терминале вводим:

sudo gtk-update-icon-cache /usr/share/icons/каталог_темы

И вдруг наступает большой "облом": терминал уведомляет, что такая команда не найдена.


Не буду долго описывать тернистый путь поисков ответов в Интернет. Предложений по решению проблемы было много, но намёк содержался только в одном материале, из которого следовало, что gtk-update-icon-cache является файлом и располагается в каталоге usr/bin

Сначала мной было испытано потрясение, так как именно такого файла в системе не было найдено. Но ... был найден файл gtk-update-icon-cache-3.0


Уже и не надеясь ни на что выполняю в терминале команду:

sudo gtk-update-icon-cache-3.0 /usr/share/icons/каталог_темы

Сюрприз! Кэш-файл успешно создан.

Проверяю в настройках тем и вижу, что исчез и значок уведомления об отсутствии для темы кэш-файла.


Воистину, век живи, век учись, а дураком помрёшь.

Кстати, в Linux Mint присутствуют оба упоминаемых файла.


Post scriptum. После заданного на эту тему вопроса на форуме Runtu в ответ было получено 2 комментария.

1. Я пользуюсь такой командой sudo update-icon-caches /usr/share/icons/*

Пробую. Действительно, кэш-файлы создаются сразу для всех значков, но без вывода сообщения о создании таких файлов.


2. Файл gtk-update-icon-cache в каталоге /usr/bin является частью пакета libgtk2.0-bin, который я не устанавливаю по-умолчанию в дистрибутивы LITE и XFCE, т.к. они тянут с собой по зависимостям libgtk2.0-0 и прочую обвязку GTK+.

Это уже, очевидно, ответ от автора сборки. Я, конечно, понимаю, что дарёному коню в зубы не смотрят, а автору – большой респект за его работу. Но, хотелось бы отметить, что человеческая логика не монотонна: что очевидно для одного, то не очевидно для другого. Что мне оставалось подумать, когда, следуя подсказкам в интерфейсе программы,


в ответ получаю


Ну ладно у меня всё ещё имеется природная любознательность. Но обычный пользователь пойдёт спрашивать на форум? Тем более, что в настоящее время поиск ответа на свой вопрос практически на каждом форуме превращается в поиск иголки в стоге сена. А если ещё учесть разгромные предупреждения движка форума типа "Прежде чем задать свой вопрос ....", то желание спрашивать как-то сразу убавляется. Но если нарвёшься на своеобразного гуру, то формирование комплекса собственной неполноценности (хотя бы даже на некоторое время) гарантировано.


среда, 12 июля 2017 г.

Сведения о расходе дискового пространства в Linux Mint xfce


К сожалению, в Linux Mint xfce не имеется графического отображения заполненности жёсткого диска как это реализовано, например в системном мониторе Cinnamon. Анализатор использования дисков лично мне мало приглянулся. Нет, сведения о свободном объёме, конечно, отображаются в том же Thunar


но мне всегда было привычнее получать информацию о расходе дискового пространства в процентах.

Поэтому возникла идея написать простой скрипт sh, который бы эту информацию и отображал. При этом было желательно, чтобы после запуска скрипта не требовалось нажимать на кнопки мыши или клавиатуры. Последнее обусловлено тем, что найденный на просторах Интернет скрипт требовал нажатия клавиши Enter после каждого вывода строки сообщения.

#!/bin/bash
# init
function pause(){
   read -p "$*"
}
# ...
# call it
pause 'Подсчёт свободного пространства всего диска'
df -h /dev/sda1
pause 'Выйти из подсчёта'
exit

На рисунке ниже приводится то, что получилось после реализации указанных выше требований:


Создаём файл с текстом  #!/bin/bash , сохраняем его с расширением sh, например mesto.sh

Делаем его исполняемым через команду в терминале:

chmod +x /home/Ваш_каталог/mesto.sh

Далее открываем файл mesto.sh в текстовом редакторе и приводим к виду:

#!/bin/bash
echo ""
echo ""
echo -e "\E[33m\tПодсчёт свободного и занятого места на диске\n"
sleep 1
echo  -e "\E[36m\tОзнакомьтесь с результатами подсчёта:\n\n"
echo -en "\E[0m"
sleep 3; df -h /dev/sda1
echo ""
echo ""
sleep 5
echo -e "\E[32m\tПродолжайте работать.\n"
sleep 1
echo -e "\tАвтозакрытие окна произойдёт через 30 секунд.\n\n"
sleep 30; exit

Теперь пояснения.

echo "" – это вывод пустой строки. Несколько пустых строк обусловлены лучшим визуальным восприятием.

Конструкция
echo -e "\E[33m\tПодсчёт свободного и занятого места на диске\n"
означает вывод текста, покрашенного в жёлтый цвет, который начинается знаком табуляции (\t) и завершается переводом строки (\n).

sleep 1 – это команда "заснуть на 1 секунду".

Конструкция
echo -e "\E[36m\tОзнакомьтесь с результатами подсчёта:\n\n"
аналогична предыдущей. Цвет текста здесь указан голубой, а вывод текста завершается двойным переводом строки.

echo -en "\E[0m"  – команда возврата цветовой схемы терминала к установленной мной по умолчанию. Так как предустановленная цветовая схема терминала меня устроила, то после установки системы она изменению не подвергалась.

sleep 3; df -h /dev/sda1 – означает "спать 3 секунды", а затем выполнить команду df -h /dev/sda1.

Так как при установке системы мной было определено, что система и пользовательский домашний каталог будут размещена на одном разделе с точкой монтирования / , то просто считаю раздел sda1. 

Если Ваши винчестеры имеют несколько разделов (напр, sda1, sda2, sda3, sdb1, sdb2 ...), то осуществляйте подсчёт свободного и занятого места командой df для каждого раздела. Подробности

Дальнейшие команды аналогичны предыдущим, за исключением того, что текст выводится зелёным цветом.

sleep 30; exit – является последовательностью 2 команд: "заснуть на 30 секунд" и выйти из программы.

Теперь просто создадим значок запуска на рабочем столе или на панели. Посмотрите примеры создания значков запуска в xfce.

В свойствах значка, на всякий случай, проверьте на вкладке "права" галочку в поле "Разрешить запуск этого файла в качестве программы"


На вкладке "Запуск" установите галочку в поле "Выполнить в терминале".


Возвращаясь к конструкции echo -e "\E[?m ...какой-то текст"

Знаком вопроса (?) обозначена управляющая последовательность, которая указывается либо одной цифрой, либо несколькими цифрами через точку с запятой (;). Соответствия цифр командам приводятся ниже.

Форматирование текста:
0 – возврат к стандартному виду командной строки
1 – полужирный шрифт
3 – курсив
4 – подчёркивание
5 – мигание текста
8 – цветовая инверсия

Например, полужирный шрифт – echo -e "\E[1m" , 
полужирный курсив –echo -e "\E[1;3m"

Цвет текста:
30 – чёрный
31 – красный
32 – зелёный
33 – жёлтый
34 – синий
35 – фиолетовый
36 – голубой
37 – белый

Цвет фона:
40 – чёрный
41 – красный
42 – зелёный
43 – жёлтый
44 – синий
45 – фиолетовый
46 – голубой
47 – белый

Теперь, если у Вас имеется заинтересованность, то можете вполне самостоятельно написать подобный скрипт под свои нужды.


суббота, 1 июля 2017 г.

Индикатор Диск.Яндекс с несколькими учётными записями в Linux Mint и Ubuntu. Независимый запуск индикаторов Дисков.Яндекс

Если у Вас имеется несколько учётных записей служб Яндекса, а также Вы пользуетесь на своей системе Linux индикатором Диск.Яндекс, то можете настроить индикатор таким образом, чтобы у Вас был доступ к нескольким учётным записям.


Если Вы из простой любознательности пробовали обратиться в меню индикатора к разделу "Помощь – Индикатор Яндекс.Диск", то после перехода на ресурс разработчиков могли заинтересоваться разделом "Часто задаваемые вопросы". Вот в нём-то и имеется ответ на вопрос "Может ли индикатор работать с несколькими учетными записями Yandex.disk-а?"

  Цит.:    Да, индикатор может работать с несколькими демонами синхронизации (они отображаются как отдельные иконки в панели инструментов).

Ключ запуска --config позволяет добавить нового демона синхронизации через указания пути к конфигурационнму файлу демона. Вы может настроить нового демона (с новыми учетной записью пользователя, синхронизируемым каталогом и конфигурацией) в терминале через команду yandex-disk token, или вы можете указать путь к новому конфигурационному файлу (файл может отсутствовать или быть пустым) и следуя предложениям индикатора при запуске настроить нового демона в графическом интерфейсе (вам понадобится указать логин/пароль и путь к файлу auth).

Не могу возразить против того, что такая возможность меня заинтересовала.


Но как это реализовать на практике по принципу "делай как я" из ответа на вопрос мне было не совсем понятно. Поэтому, вооружившись терпением, мной с решимостью была предпринята попытка реализовать такую возможность, надеясь при этом, что высказывание знаменитого Козьмы Пруткова "Усердие всё превозмогает, но бывает, что усердие превозмогает и рассудок" ко мне относиться не будет.

После нескольких мучительных попыток было выяснено, что запускать индикатор необходимо не просто командой yandex-disk-indicator , а командой с указанием параметра yandex-disk-indicator -с <путь к файлу настроек индикатора>.

Смотрим настройки индикатора. Они расположены в Вашем домашнем каталоге

  /home/Ваш_дом.каталог/.config/yd-tools/yandex-disk-indicator.conf  

Чтобы его увидеть в менеджере файлов поставьте галочку в "Вид – Скрытые файлы".

У меня есть ещё одна учётная запись Яндекса, которую условно назовём Guava. Создадим файл yandex-disk-indicator-guava.conf, скопируем в него содержимое файла yandex-disk-indicator.conf и внесём в него изменения, например:

proxy="no"
dir="/home/manager/Clouds/Yandex-Guava"
auth="/home/manager/.config/yandex-disk-guava/passwd"
startonstartofindicator="no"
stoponexitfromindicator="yes"

dir – указывает путь к каталогу синхронизации второй учётной записи. Так как такого каталога не имеется, то создаём его. Т.е. теперь в каталоге Clouds будет 2 каталога Yandex и Yandex-Guava. Каждый из них отвечает за свою учётную запись.

auth – указывает на каталог с настройками демона Диска Яндекс. Так как каждой учётке должен быть сопоставлен свой демон (каталог синхронизации, пользователь и пароль), то дополнительно к уже имеющемуся каталогу yandex-disk создаю yandex-disk-guava.

Запускаем индикатор.


Не пугайтесь, ничего страшного не произошло. Просто индикатор ещё не знает логина и пароля и вторую учётку. Жмём OK.


Так как работа с Диском.Яндекс осуществляется не через прокси-сервер, то оставляю по умолчанию и жму "Далее".


Вторая учётная запись должна синхронизироваться с другим каталогом, поэтому выбираю "Выбрать существующую папку" (Yandex-Guava мной уже создана, см. упоминание выше).


После нажатия на кнопку "Далее" в открывшемся окне файлового менеджера необходимо будет указать каталог для синхронизации второй учётной записи Диска.Яндекс.


Индикатор должен прописать настройки для второго демона Диска.Яндекс. Так как он не понимает, что первый демон уже имеется, то предлагает настройки по умолчанию. Необходимо вместо yandex-disk указать каталог с настройками второго демона (логин, пароль, каталог для синхронизации). Поэтому вместо yandex-disk указываю yandex-disk-guava.


В следующем окне указывается логин и пароль для второго демона Диска.Яндекс.


Далее индикатор уведомляет о сохранении настроек для второго демона.


Жму OK. И что в итоге? Как интересно: запущено 2 независимых синхронизации.


В настройках индикатора можно увидеть 2 сервиса: Яндекс.Диск №0 и Яндекс.Диск №1. Чтобы одновременно не запускалось сразу 2 синхронизации можно отключить старт демонов при запуске индикатора для Яндекс.Диск №0 и Яндекс.Диск №1.


Тогда при старте индикатора синхронизация запущена не будет.


Если, например, щёлкнуть по правому значку левой кнопкой мыши и выбрать "Запустить сервис Яндекс.Диск", то будет запущена синхронизация Яндекс.Диск №1 (который соответствует имени Guava), а созданный ранее Диск.Яндекс синхронизироваться не будет.


При этом диспетчер задач покажет, что запущен только 1 экземпляр Диска.Яндекс:


Если также сделать и в отношении левого индикатора, то диспетчер задач покажет 2 экземпляра Диска.Яндекс:


Диски.Яндекс можно запускать и останавливать. Например, запустив синхронизацию в левом и остановив в её правом индикаторе


в диспетчере задач снова увидим только 1 процесс Диска.Яндекс.

Независимый запуск индикаторов Дисков.Яндекс


Всё работает, да? Но всё равно как-то "не комильфо". Меня, например, не устраивает ситуация со множественными значками индикатора, если всегда буду синхронизировать только 1 диск. По описанной выше реализации, если настрою ещё 3-й и 4-й свои аккаунты, то у меня индикатор превратится в 3-4 значка Яндекса, каждый из которых мне придётся запускать и останавливать вручную. Лишняя работа, так сказать.


Поэтому родилась идея сделать так, чтобы можно было запускать все эти учётные записи независимо друг от друга. В этом случае у меня всегда будет отображаться 1 индикатор, соответствующей выбранной конфигурации.

Что ж, приступим к реализации. Мне необходимо создать несколько конфигураций, записанных в файл  yandex-disk-indicator.conf , который автоматически будет изменяться при запуске выбранного мной Диска.Яндекс. А автоматическое его изменение будет заключаться в удалении имеющегося yandex-disk-indicator.conf и записи нового yandex-disk-indicator.conf

Для рассматриваемого примера с 2-мя учётными записями Диска.Яндекс в каталоге настроек индикатора  .config/yd-tools  (это скрытый каталог и для его отображения включите показ скрытых файлов) создаю 2 каталога, каждый из которых содержит свой yandex-disk-indicator.conf  Пусть это будут каталоги Сonf1 и Conf2.


В каталог Conf1 помещён файл yandex-disk-indicator.conf с содержанием:

theme="yes"
fmextensions="yes"
autostart="yes"
daemons="/home/manager/.config/yandex-disk/config.cfg"
notifications="yes"
stoponexitfromindicator="yes"

В каталог Conf2 помещён файл yandex-disk-indicator.conf с содержанием:

theme="yes"
fmextensions="yes"
autostart="yes"
daemons="/home/manager/.config/yandex-disk-guava/config.cfg"
notifications="yes"
stoponexitfromindicator="yes"

Эти файлы практически идентичны, за исключением указания пути к настройкам демона Яндекс. Диска, так как каждый файл запускает своей экземпляр демона. Естественно, что в настройках демонов  config.cfg  указано, что он не стартует при запуске компьютера автоматически, а запускается при вызове команды запуска индикатора.

Отмечу, что в приводимых ниже путях к файлам настроек под /.config следует понимать путь /home/Ваш_дом.каталог/.config

config.cfg в /.config/yandex-disk/ для настроек индикатора каталога Conf1: 

proxy="no"
dir="/home/manager/Clouds/Yandex"
auth="/home/manager/.config/yandex-disk/passwd"
stoponexitfromindicator="yes"
startonstartofindicator="yes"

config.cfg в /.config/yandex-disk-guava/ для настроек индикатора каталога Conf2: 

proxy="no"
dir="/home/manager/Clouds/Yandex-Guava"
auth="/home/manager/.config/yandex-disk-guava/passwd"
stoponexitfromindicator="yes"
startonstartofindicator="yes"

Демоны Дисков.Яндекс будут запускаться при запуске индикатора и останавливаться при выходе из индикатора. За это отвечают команды 
startonstartofindicator="yes" и stoponexitfromindicator="yes".

При запуске выбранного экземпляра Диска.Яндекс требуется выполнить действия:
– удалить существующий файл настроек индикатора yandex-disk-indicator.conf ;
– из каталога Conf1 или Conf2 скопировать в каталог  /.config/yd-tools/ файл настроек индикатора yandex-disk-indicator.conf;
– запустить индикатор.

Создаю 2 скрипта sh. Открываю текстовый редактор и создаю 2 файла  yandex1.sh  и  yandex2.sh 

Текст yandex1.sh (команда cp в одну строку, всего 3 строчки):

#!/bin/bash
#
rm /home/manager/.config/yd-tools/yandex-disk-indicator.conf
cp /home/manager/.config/yd-tools/Conf1/yandex-disk-indicator.conf /home/manager/.config/yd-tools/
yandex-disk-indicator

Текст yandex2.sh (команда cp в одну строку, всего 3 строчки):

#!/bin/bash
#
rm /home/manager/.config/yd-tools/yandex-disk-indicator.conf
cp /home/manager/.config/yd-tools/Conf2/yandex-disk-indicator.conf /home/manager/.config/yd-tools/
yandex-disk-indicator

rm – удаление существующего файла;
cp – копирование файла из каталога в каталог;
yandex-disk-indicator – запуск индикатора.

Сохраняю оба файла и через терминал помечаю эти файлы как исполняемые:

chmod +x /home/manager/yandex1.sh

chmod +x /home/manager/yandex2.sh

Если создать кнопки (значки) запуска индикаторов, соответствующие выполнению yandex1.sh и yandex2.sh (см. примеры создания в Cinnamon и XFCE), то практически всё уже будет работать. Но если Вы запустите sh в терминале, то увидите, что при остановке Диска.Яндекс терминал выведет сообщение

Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.

Чтобы долго не "толочь воду в ступе", сразу привожу "рецепт избавления". В конец файла sh добавить строку, например:

zenity --info --text "Yandex disk Guava stoped" 2>/dev/null

А чтобы не нажимать на кнопку OK информационного сообщения при остановке индикатора


Текст zenity --info --text латинскими буквами


Русский текст тоже отображается

добавить ещё и параметр тайм-аута, например --timeout=3

Тогда весь текст (к примеру) скрипта yandex2.sh приобретёт вид:

#!/bin/bash
#
rm /home/manager/.config/yd-tools/yandex-disk-indicator.conf
cp /home/manager/.config/yd-tools/Conf2/yandex-disk-indicator.conf /home/manager/.config/yd-tools/
yandex-disk-indicator
zenity --info --text "Yandex disk Guava stoped" 2>/dev/null --timeout=3

Вот теперь всё хорошо. Как говаривал один из моих вузовских преподавателей: "всё физично, всё прозрачно, сплошная корреляция".
 
Конечно, процесс sh немного "съест" ресурсов, но, полагаю, что 2,9 Мб оперативной памяти не слишком большая плата за достигнутое удобство.


Спасибо всем тем, у кого хватило терпения прочитать до конца сей опус.


P.S. Имеется ещё один способ реализации, который основан на запуске демона Яндекс.Диска с логином и паролем, соответствующими желаемой учётной записи Яндекс. Эти данные "подкладываются" при запуске индикатора. При этом настройки индикатора не изменяются. Подробности читать здесь.