Привести CSS к читаемому виду можно одним сценарием Nautilus: выбранные .css форматируются в новый файл сразу в той же папке. Рядом появляется .pretty.css — исходник не трогаю.
Куда положить
Можно просто скачать скрипт Nautilus ниже и положить по этому пути. Скрипты Nautilus живут здесь:
~/.local/share/nautilus/scripts/
Этот файл — ~/.local/share/nautilus/scripts/Форматировать CSS. В свойствах включаю «Исполняемый как приложение» — без этого пункта в меню не будет.
Или через командную строку
- Ставлю зависимости
Скрипт проверяет команду css-beautify (пакет node-js-beautify) и пользуется zenity для ошибок и отчёта.
sudo apt install -y zenity node-js-beautify - Создаю файл
Имя файла — то, что будет в меню: Форматировать CSS.
mkdir -p ~/.local/share/nautilus/scripts touch ~/.local/share/nautilus/scripts/"Форматировать CSS" - Даю права на исполнение
Без прав на исполнение Nautilus скрипт не покажет.
chmod +x ~/.local/share/nautilus/scripts/"Форматировать CSS" - Открываю в редакторе
xdg-open поднимает графический редактор, не nano.
xdg-open ~/.local/share/nautilus/scripts/"Форматировать CSS" - Вставляю код и пользуюсь
Вставляю код ниже и пользуюсь: выделил файлы → ПКМ → «Сценарии». Чтобы меню подхватило файл:
nautilus -q
Код
#!/bin/bash
readonly SCRIPT_TITLE="Форматировать CSS"
declare -i converted=0 skipped=0 failed=0
report_lines=()
require_css_beautify() {
if command -v css-beautify >/dev/null 2>&1; then
return 0
fi
zenity --error --no-wrap
--title="$SCRIPT_TITLE"
--text="Нужен css-beautify.nnУстановите:nsudo apt install node-js-beautify"
exit 1
}
gather_selection() {
local -n _out=$1
if [ -n "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS:-}" ]; then
IFS=$'n' read -d '' -r -a _out < <(printf '%sn' "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
return
fi
if [ "$#" -gt 0 ]; then
_out=("$@")
return
fi
zenity --error --no-wrap --title="$SCRIPT_TITLE" --text="Сначала выделите CSS-файлы."
exit 1
}
is_css_file() {
local path="$1"
local ext="${path##*.}"
local ext_lower="${ext,,}"
[ "$ext_lower" = "css" ]
}
format_css_file() {
local input="$1"
local output="$2"
css-beautify -f "$input" -o "$output"
}
process_file() {
local file="$1"
local base output
if [ ! -f "$file" ]; then
skipped=$((skipped + 1))
report_lines+=("⊘ не найден: $(basename "$file")")
return
fi
if ! is_css_file "$file"; then
skipped=$((skipped + 1))
report_lines+=("⊘ не CSS: $(basename "$file")")
return
fi
base="${file%.*}"
output="${base}.pretty.css"
if format_css_file "$file" "$output"; then
if [ -f "$output" ]; then
converted=$((converted + 1))
report_lines+=("✓ $(basename "$output")")
else
failed=$((failed + 1))
report_lines+=("✗ не создан: $(basename "$output")")
fi
else
failed=$((failed + 1))
report_lines+=("✗ ошибка: $(basename "$file")")
rm -f -- "$output"
fi
}
build_final_message() {
local message=""
message="Готово: ${converted} из $((${converted} + ${skipped} + ${failed}))"
message+="nПропущено: ${skipped}"
if [ "${failed}" -gt 0 ]; then
message+="nС ошибкой: ${failed}"
fi
if [ "${#report_lines[@]}" -gt 0 ]; then
message+="nn$(printf '%sn' "${report_lines[@]}")"
fi
printf '%s' "$message"
}
notify_result() {
local message="$1"
if [ "${failed}" -gt 0 ]; then
zenity --error --no-wrap --title="$SCRIPT_TITLE" --text="$message"
return
fi
if [ "${converted}" -eq 0 ]; then
zenity --warning --no-wrap --title="$SCRIPT_TITLE" --text="$message"
return
fi
zenity --info --no-wrap --title="$SCRIPT_TITLE" --text="$message"
}
selected=()
gather_selection selected "$@"
require_css_beautify
if [ ${#selected[@]} -eq 0 ]; then
zenity --error --no-wrap --title="$SCRIPT_TITLE" --text="Список файлов пуст."
exit 1
fi
for file in "${selected[@]}"; do
process_file "$file"
done
notify_result "$(build_final_message)"
Комментарии
Пока нет комментариев — можете написать первый.