Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Контекстное меню Thunar. Делимся своими конфигами  (Прочитано 63595 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн el guahiro

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Можно установить программу recoll
У программы recoll несколько недостатков:
1. Не всё индексирует. Баг исправимый, но всё же.
2. Грузит процессор.
3. Из-за тотальной индексации - износ SSD, если для кого-то это важно
4. Индексация - не есть хорошо с точки зрения ИБ.
PS. Кроме recoll есть ещё несколько искалок, основанных на индексации, но все они либо не всё ищут, либо грузят процессор. Что скрыто в их недрах - непонятно.

Оффлайн zg_nico

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 3441
  • Nil mortalibus arduum est
    • Просмотр профиля
el guahiro,
(Нажмите, чтобы показать/скрыть)
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн el guahiro

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
zg_nico, согласен, ИМХО в моём посте было бы кстати. Тороплюсь, как всегда , сорри.
Кстати, в дискуссии по допиливанию recoll тут Вы писали:
Было бы кошерно все эти плюшки в скрипт для того же nautilus засунуть, да только слабо себе пока представляю как этому скрипту GUI организовать: возможностей zenity для этого явно недостаточно (вывод надо организовывать в виде некоего списка, в котором обязательными полями стали бы имя файла и каталог, до кучи надо хоть сегмент найденного текста привести), а термнал пользователей пугает... Пока думаю, словом...
Я сделал именно то, что Вы планировали. Правда, засунул скрипт в Thunar. В Nautilus этот скипт впилить тоже можно с помощью тех же команд.


Пользователь добавил сообщение 09 Май 2020, 10:01:14:
ПКМ Thunar "Скачать с YouTube в этот каталог"
Команда:
youtube-dl --rm-cache-dir ; youtube-dl  $(xclip -o) ; ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././'Условия появления: галка на Каталоги.
Иконка - любая, я поставил лого Youtube dl GUI (есть такая программка на Linux)
Как работает: копируем URL видео с YouTube>Тыкаем мышкой в выбранный каталог>ПКМ  "Скачать с YouTube в этот каталог"> в каталоге появляется видео.
Здесь команда:
ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././'служит, чтобы удалить непонятный набор букв, который присутствует в именах файлов, скачанных с YouTube

Как работает этот ПКМ Thunar, да и многие другие, есть на моём канале на Youtube.
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 09 Май 2020, 11:01:16 от zg_nico »

Оффлайн demonlibra

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Было бы кошерно все эти плюшки в скрипт для того же nautilus засунуть, да только слабо себе пока представляю как этому скрипту GUI организовать
Зачем? У recoll свой GUI имеется.

Пользователь добавил сообщение 09 Май 2020, 10:04:13:
ПКМ Thunar "Скачать с YouTube в этот каталог"
Я отдельный сценарий повесил на горячие кнопки
(Нажмите, чтобы показать/скрыть)
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 09 Май 2020, 11:03:17 от zg_nico »

Оффлайн el guahiro

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Автовыравнивание криво отсканированных и многостраничных PDF в Linux.
Пригодится для фрилансеров на обработке сканов, студентам, инженерам, юристам и т.п. - всем, кто массово работает с документами в формате PDF.
Всплывающее окно выбора между двумя способами основано на скрипте (все скрипты у меня в ~./local/bin). Скрипт correct_screw_PDF_2_methods.sh такого содержания:
#!/bin/bash
IFS=$'\#'
OPTION1=$(zenity --list --radiolist  --width 700 --height 300\
       --title="Исправляем поворот страниц PDF" \
       --text="Выберите способ" \
       --column="Отметка выбора" --column="способ" \
       TRUE "Python" FALSE "Unpaper")
if [ "$OPTION1" = "Python"  ] ; then OPTION=correct_skew_pdf.sh ;
 else  OPTION=rovny_pdf2.sh ; fi
myArray=( "$@" )
for i in "$@"; do
 "$OPTION"  "$i" ; done
 exit
                 fi)
Автовыравнивание на базе утилиты Unpaper основано на скрипте rovny_pdf2.sh такого содержания:
#!/bin/bash
IFS=$'\#'
for a in "$@" ; do
cp  "$a" /tmp/"$a"
cd /tmp
pdftoppm -jpeg "$a"  1 | zenity --progress --width=400 --height=100 --title="Выравниваю PDF" --text "работаю." --auto-close --pulsate;
done
convert  1-*.jpg  %02d.pnm
rm 1-*.jpg
for i in *.pnm ; do unpaper -v --deskew-scan-deviation 3.0  -dd 1.0 --dpi 600 "$i"  "$i".pnm; mv -v "$i".pnm "$i"
done
img2pdf -o $OLDPWD/rovny.pdf  -S A4 --auto-orient *.pnm
mv $OLDPWD/rovny.pdf "$a"
rm  /tmp/*.pnm
Для работы этого скрипта надо установить утилиту pdftoppm, unpaper и zenity, которые есть в репозитории xUbuntu 18.04. Утилита Imagemagick (команда convert) в xUbuntu 18.04 предустановлена.
Можно использовать скрипт rovny_pdf.sh, т.к. он основан на более стандартных утилитах:
#!/bin/bash
IFS=$'\#'
for a in "$@" ; do
cp  "$a" /tmp/"$a"
cd /tmp
pdftoppm -jpeg "$a"  1 | zenity --progress --width=400 --height=100 --title="Выравниваю PDF" --text "работаю." --auto-close --pulsate;
done
convert  1-*.jpg  %02d.pnm
rm 1-*.jpg
for i in *.pnm ; do unpaper -v --deskew-scan-deviation 3.0  -dd 1.0 "$i"  "$i".pnm; mv -v "$i".pnm "$i"
done
convert  *.pnm $OLDPWD/rovny.pdf
mv $OLDPWD/rovny.pdf "$a"
rm  /tmp/*.pnm
-------------
Чтобы сделать автоповорот на Python (OpenCV) надо два скрипта.
Сводный correct_skew_pdf.sh имеет содержание:
#!/bin/bash
IFS=$'\#'
for f in $@; do  pdftoppm -png "$f" /tmp/1 ;
done
for i in /tmp/1*.png ; do python /home/user/.local/bin/correct_skew.py -i "$i" ; mv rotated.png "$i"
done
 convert  /tmp/1*.png  "$f"
 rm /tmp/1*.png
Скрипт correct_skew.py,  который я, подсмотрев здесь, чуть доработал, можно скачать или посмотреть по ссылке https://cloud.mail.ru/public/Hqrs/57KN599yT, имеет такое содержание:
# import the necessary packages
import numpy as np
import argparse
import cv2
# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
help="path to input image file")
args = vars(ap.parse_args())
# load the image from disk
image = cv2.imread(args["image"])
# convert the image to grayscale and flip the foreground
# and background to ensure foreground is now "white" and
# the background is "black"
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.bitwise_not(gray)
# threshold the image, setting all foreground pixels to
# 255 and all background pixels to 0
thresh = cv2.threshold(gray, 0, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
# grab the (x, y) coordinates of all pixel values that
# are greater than zero, then use these coordinates to
# compute a rotated bounding box that contains all
# coordinates
coords = np.column_stack(np.where(thresh > 0))
angle = cv2.minAreaRect(coords)[-1]
# the `cv2.minAreaRect` function returns values in the
# range [-90, 0); as the rectangle rotates clockwise the
# returned angle trends to 0 -- in this special case we
# need to add 90 degrees to the angle
if angle < -45:
angle = -(90 + angle)
# otherwise, just take the inverse of the angle to make
# it positive
else:
angle = -angle
# rotate the image to deskew it
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated = cv2.warpAffine(image, M, (w, h),
flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)
# show the output image
cv2.imwrite("rotated.png", rotated)
cv2.waitKey(0)
----------
Все скрипты, чтобы это работало, бросаем в $PATР, нп в ~./local/bin
Видео, как это работает:
https://youtu.be/0t0AYb6LlUI


Пользователь добавил сообщение 09 Май 2020, 10:34:38:
Сшить панораму в один клик за 10 секунд
Stitch a panorama in one click in 10 seconds
Действие ПКМ по склейке панорам.
Действие основано на программке OpenPano отюда, лицензированного опенсорсной MIT лицензией.
На сайте автора есть толковая инструкция, что делать. Качаю архив по ссылке с сайта автора, распаковываю, доустанавливаю Python-модули, компилирую программку, потом бросаю готовый архив в домашнюю директорию и делаю ПКМ Thunar на команду:
cp /$HOME/OpenPano-master/src/config.cfg "$PWD" ; image-stitching %F | zenity --progress --width=300 --height=100 --title="Сшиваю панораму" --text "...надо было ровней камеру держать!" --auto-close --pulsate; touch -r %f out.jpg ; mv out.jpg pano_%n && rm config.cfgУсловие появления: Изображения, каталоги
Иконка: Любая.
Перед этим надо отправить исполняеммый файл в директорию, где у вас находятся исполняемые файлы, командой:
ln -s  /home/ВАш_user/OpenPano-master/build/src/image-stitching $HOME/.local/binИ да, надо доставить из репов zenity. Можно обойтись и без zenity, но тогда будет чуть менее интерактивно, а команда будет выглядеть так:
cp /$HOME/OpenPano-master/src/config.cfg "$PWD" ; image-stitching %F ; touch -r %f out.jpg ; mv out.jpg pano_%n && rm config.cfgТеперь, при выделении группы картинок и нажатии ПКМ "Сшить панораму" через двадцать-тридцать секунд в  текущей директории появляется сшитая панорама со временем создания, как у группы исходных фото, что важно для организации коллекции фотографий например в Google Photo.
Ссылка на архив с уже скомпилированной под Xubuntu 18 программой: https://mega.nz/#!MBoURIyB!ccTQ8koTK73g062tDuLwlG1Gs80rpjArmJsrYL6V104
Вы скажете: "El guahiro, ведь есть же в камерах смартфонов встроенная функция съёмки панорамы!"
Отвечу: Да, есть. И неплохо снимает. Но попробуйте снять панораму ночью. Я в таких случаях включаю режим "Ночь" на смартфоне, а потом сшиваю снимки в панораму с помощью image-stitching.
Вот например, фото вечером (снимал "с руки": смартфон берёшь двумя руками, ставишь максимально близко к себе, локти прижимаеть в рёбрам, чтоб обзор "не болтался", поворачиваешься на пяточках, всем телом, делая  примерно 6 кадров на 180 градусов обзора, всегда делаешь 2 серии снимков для панорамы ):

А вот фото, снятое ночью, на жд станции, где и освещения нормального то нет:


P.S. Скрипт сшивки панорамы и все команды прекрасно работают и для других типов файлов: *.png, *.jpeg, даже *.webp.

Пользователь добавил сообщение 09 Май 2020, 12:09:12:
ПКМ Thunar для сжатия офисных файлов большого размера
Large office files 10x compression
Причина написания ПКМ - присылают по внешней почте файлы *.docx;*.doc;*.DOCX;*.DOC;*.ODT;*.odt весом 15+ mb. Файлы эти медленно открываются в Libreoffice и не пролазят через корпоративную почту, где установлено ограничение размера вложений. И если в операционной системе Windows в M$ Office имеется встроенный инструмент сжатия офисных файлов, то в Linux такого инструмента нет. Исправляем эту ошибку.
Делаем действие ПКМ Thunar под названием " Сжать офисный файл" на команду:
bash -c "source compressDocODT.sh %f"Условие появления: Другие,
Маска файлов: *.docx;*.doc;*.DOCX;*.DOC;*.ODT;*.odt
Иконка - любая, но лучше значок libreoffice, не ошибетесь.
Скрипт source compressDocODT.sh имеет содержание:
#!/bin/bash
# to convert doc 2 odt : libreoffice --headless --convert-to odt file.doc
IFS=$'\n'
for i in "$@";
do libreoffice --headless --convert-to odt "$i"
done
mv "${i%.*}.odt" "${i%.*}.zip"
unzip "${i%.*}.zip" -d "${i%.*}"
mogrify -resize 500x500 "${i%.*}"/Pictures/*
cd "${i%.*}"
zip -r "${i%.*}.zip" ./*
cd ../
mv "${i%.*}.zip" "${i%.*}.odt"
unoconv --format=doc "${i%.*}.odt"
rm -R "${i%.*}"
 if [ -f "${i%.*}.doc" ]; then
rm "${i%.*}.odt"
fi
 if [ -f "${i%.*}.DOC" ]; then
rm "${i%.*}.odt"
fi
 if [ -f "${i%.*}.docx" ]; then
rm "${i%.*}.odt"
fi
 if [ -f "${i%.*}.DOCX" ]; then
rm "${i%.*}.odt"
fi

Пользователь добавил сообщение 09 Май 2020, 12:22:09:
Использование расширенных атрибутов файлов в Xubuntu
(в том числе поиск файлов, содержащих расширенный пользовательский атрибут (метку, тэг) в каталоге по конкретному слову)
Чтобы пользоваться расширенными атрибутами файлов:  добавлять их к файлу или каталогу, просматривать метки, запускать программы по скрытой метке, удалять атрибут.
Для этой цели я создал три действия ПКМ Thunar. Но размер экрана моего ноутбука (по вертикали) не безграничен, поэтому создаю четыре (+1 финальный) скрипта, чтобы реализовать все функции в одном действии ПКМ Thunar. Все эти скрипты кидаем в директорию, где хранятся исполняемые файлы, например в ~/.local/bin.
1. скрипт add_hiddennote2file.sh:
#!/bin/bash
IFS=$'\n'
for i in "$@";
do attr=`zenity --entry --title="добавить скрытую заметку к файлу" --text="Введите текст заметки, например" --entry-text="от Иванова $(date +%x) "`
setfattr -n user.info -v $attr "$i"
notify-send "Описание добавлено"
done
2.  скрипт view_hiddennote.sh:
#!/bin/bash
IFS=$'\#'
for i in "$@"
do notify-send  -t 30000 ' ' "`getfattr --only-values "$i"`"
done
3.  скрипт delete_hiddennote.sh:
#!/bin/bash
IFS=$'\#'
for i in "$@"
do setfattr -x user.info "$i"; notify-send 'Описание удалено'
done
4.  скрипт execute_tag.sh:
IFS=$'\#'
for i in "$@"
do xdg-open  "`getfattr --only-values "$i"`"
done
Суммирующий скрипт multi_tag.sh объединяет все эти действия в одно:
#!/bin/bash
OPTION1=$(zenity --list --radiolist  --width 500 --height 300\
      --title="Операции с тэгами" \
      --text="Выберите способ" \
      --column="Отметка выбора" --column="действие" \
      TRUE "Добавить описание к файлу" FALSE "Удалить описание к файлу" FALSE "Показать описание к файлу"  FALSE "Выполнить тэг")
if [ "$OPTION1" = "Добавить описание к файлу"  ] ; then OPTION=add_hiddennote2file.sh;
 else  OPTION=delete_hiddennote.sh; fi
if [ "$OPTION1" = "Показать описание к файлу"  ] ; then OPTION=view_hiddennote.sh; fi
if [ "$OPTION1" = "Выполнить тэг"  ] ; then OPTION=execute_tag.sh; fi

myArray=( "$@" )
for i in "$@"; do
 "$OPTION"  "$i" ; done
 exit
                fi)
Потом создаю ПКМ Thunat под названием "Тэги".
Команда:
multi_tag.sh %fУсловия появления: ставим галки везде.
иконка - любая.
Как выглядит работа этого ПКМ - см. видео в конце этого поста.
Теперь вопрос - если мы наделали тегов системе, то как их потом искать?
Реализуется это достаточно легко. Пишем очередной скрип под названием где_скрытые_аттрибуты:
#!/bin/bash
echo -e "\n
Привет! Я найду для тебя расположение файлов со скрытыми атрибутами в этой папке. \n
Если понял, о чём я, напиши здесь - что ищешь \n"
read response
find . -iname "*" |
while read i; do getfattr --only-values "$i" |
grep --color=auto -iH --label="$i" "$response"
done
Создаю ПКМ Thunar под названием "Поиск скрытых атрибутов в папке".
Команда:
xfce4-terminal -H -e "bash -c  'где_скрытые_аттрибуты %f  ; exec bash'"Условия появления: ставим галку на Каталоги
Иконка: любая
Как выглядит работа со скрытыми аттрибутами по этим ПКМ Thunar - в этом видео:
https://youtu.be/V-p5541E6Iw
« Последнее редактирование: 10 Май 2020, 09:15:56 от el guahiro »

Оффлайн el guahiro

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
 Две команды синхронизации данных на HDD и с HDD защитой "от дурака"
Аналогичную команду можно запилить для бэкапа на внешний сервер, поменяв адрес назначчения.
1. Скинуть с внешнего HDD
bash -c 'if [[ $PWD/ = /media/* ]]; then rsync -avu --delete /media/user/*-*-*-*/%n  $HOME |zenity --progress --width=400 --height=100 --title="Идет синхронизация" --text "Не отключать внешний носитель!" --auto-close --pulsate; notify-send "Синхронизация закончена, можете оключить внешний носитель" ; mpv /home/user/Музыка/Звуки_уведомлений/alarm_clock_труба.mp3 ; else notify-send "Вы не на внешнем HDD" ; mpv /usr/share/sounds/sound-icons/cockchafer-gentleman-1.wav ; fi'2. Скинуть на внешний HDD
bash -c 'if [[ $PWD/ = /home/* ]]; then rsync -avu --delete /home/$USER/%n  /media/user/*-*-*-* |zenity --progress --width=400 --height=100 --title="Идет синхронизация" --text "Не отключать внешний носитель!" --auto-close --pulsate; notify-send "Синхронизация закончена, можете отключить внешний носитель" ; mpv /home/user/Музыка/Звуки_уведомлений/alarm_clock_труба.mp3 ; else notify-send "Вы не в той папке" ; mpv /usr/share/sounds/sound-icons/cockchafer-gentleman-1.wav ; fi'При попытке операции из нежелательной директории раздаётся звук неудачи, а самой сихронизации не происходит.
Звуки для ПКМ Thunar я закинул на Я.Диск.
и на Мегу  - для юзеров, где Яндекс диск не работает.
Вообще, конструкцией типа:
bash -c 'if [[ $PWD/ = /директория_для_выполнения_команды/* ]]; then команда_ПКМ_Tunar; fi'можно задать, где команда ПКМ Thunar может работать. Во остальных местах кроме /директория_для_выполнения_команды/ и её поддиректорий команда работать не будет.

Пользователь добавил сообщение 10 Май 2020, 17:43:23:
Для упорядочивания коллекции шрифтов и переименования непонятно как названных шрифтов в их родные имена служит команда:
exiftool -m -s '-filename<${PostScriptFontName}.%e' *.ttf
Можно использовать для быстрого просмотра шрифтов названий ПКМ Thunar на команду:
zenity  --width 400 --height 40 --info --title="Название шрифта" --text="$(exiftool %f| grep 'PostScript Font Name')"
с условием появдления: Другие и маской *.ttf;*.TTF;*.OTF;*.otf
Удобно - наводишь ПКМ на файл шрифта и получаешь название. Хотя можно посмотреть и в gnome-font-viewer, открыв вкладку Информация. Но это медленнее.
Это ПКМ пригодится дизайнерам и тем, кто пилит свою сборку операционки: окончательную и неповторимую.

Пользователь добавил сообщение 10 Май 2020, 17:56:57:
Утилита массового переименования файлов файлового менеджера Thunar bulk rename хороша, но работает не рекурсивно.
Когда стоит задача переименовать все файлы, находящиеся в поддиректориях, поможет скрипт быстрого перименования find_n_replace.sh такого содержания:
#!/bin/bash
IFS=$'\#'
shopt -s globstar
shopt -s nocasematch
a=$(zenity --entry --text "Какое слово заменить");
b=$(zenity --entry --text "На какое слово заменить");
rename "s/$a/$b/gi" ./**/*
ПКМ Thunar делаем на команду:
find_n_replace.sh %fУсловие появления: галка на Каталоги
Иконка любая
« Последнее редактирование: 10 Май 2020, 17:58:30 от el guahiro »

Оффлайн el guahiro

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Действие ПКМ для приведения неправильно отсканированных офисных документов к формату A4
Команда:
pdfjam  --outfile %f --paper a4paper %fУсловия появления: Другие
Маска файлов:
*.PDF; *.pdf
Скорость работы - доли секунды, качества картинки не портит.
Аналогичную команду можно написать для A0, A1, A2, A3, если речь идёт о чертежах
Команда:
format=`zenity --entry --title="Выставить формат PDF" --text="Введите формат a4,a3,a2,a1,a0, например a4paper" --entry-text="a4paper"`; pdfjam  --outfile %f --paper $format %fМаска файлов:
*.PDF; *.pdf
Данные команды необходимо применять к вертикально-ориентированным листам чертежей или документов, т.к. на выходе получаются листы формата A4-A0 книжной ориентации.

Пользователь добавил сообщение 11 Май 2020, 18:27:18:
Команда ПКМ Thunar "Отправить рингтон в смартфон", для смартфонов на Android
adb push %F '/sdcard/Ringtones' Условие появления: Аудио-файлы
Должно быть установлено adb:
sudo apt-get update
sudo apt-get install android-tools-adb
sudo apt-get install android-tools-fastboot
Можно скачать пакет ADB с официального сайта https://developer.android.com/studio/releases/platform-tools и потом установить.
Смартфон должен быть подключен по шнурку и настроен на передачу файлов (запрос вылезает при подключении USB-кабеля).
« Последнее редактирование: 11 Май 2020, 18:27:18 от el guahiro »

 

Страница сгенерирована за 0.105 секунд. Запросов: 25.