Разработки проекта PuppyRus > Программирование и компиляция
Лаунчер приложений с dmenu.
(1/1)
totiks2012:
Месяца два назад пришла блютуз мини-клавиатура, я возрадовался что не придётся поднимать теперь филейную часть с дивана, а оказалось всё не так уж и удобно, оказалось далеко и мелко. И потому изучив вопрос, понял что нужно принять комплекс мер чтоб улучшить использование компа с дивана, первое это лаунчер приложений,с укрупнёным текстом, чтоб было видно из далека, второе чтоб ускорить запуск нужно организовать избранное, третье это расширение для браузера которое позволит по горячей клавише менять масштаб страницы.
Знаю что dmenu это древность и это не открытие Америк (нашёл на форуме сообщение от sfs про dmenu , 10-летней давности) но почему нет, в конце концов повторение мать ученья привожу код двух скриптов.
Оба скрипта используют dmenu , не забываем его установить.
Первый скрипт лаунчер приложений который кроме запуска приложений , еще способен смотреть какие приложения чаще всего запущены и создавать из них список избраного. они будут запускатся вторым скриптом.
--- Код ---
#!/bin/bash
# Объединяем содержимое $HOME/.local/share/applications и /usr/share/applications в один пункт меню "Приложения"
app_list=( "$HOME/.local/share/applications" "/usr/share/applications" "/usr/local/share/applications" )
app_files=()
# Перебираем все папки в списке app_list и добавляем все файлы .desktop в массив app_files
for dir in "${app_list[@]}"; do
for file in "$dir"/*.desktop; do
app_files+=("$file")
done
done
# Запрос пользователя выбрать приложение из объединенного списка файлов .desktop
selected_file=$(printf '%s\n' "${app_files[@]}" | while read -r file; do basename "$file"; done | dmenu -fn "JetBrains Mono:size=26" -l 20 -p "Выберите приложение:")
# Если был выбран файл .desktop, запускаем его в качестве приложения
if [ -n "$selected_file" ]; then
full_path=""
for file in "${app_files[@]}"; do
if [ "$(basename "$file")" == "$selected_file" ]; then
full_path="$file"
break
fi
done
if [ -n "$full_path" ]; then
xdg-open "$full_path"
# Обновляем список часто используемых приложений
if [ -f "$HOME/.config/frequently_used_apps.txt" ]; then
freq_apps=($(<"$HOME/.config/frequently_used_apps.txt"))
if [ "${#freq_apps[@]}" -lt 10 ]; then
# Проверяем, есть ли выбранное приложение уже в списке часто используемых
if ! echo "${freq_apps[@]}" | grep -q "$full_path"; then
freq_apps+=("$full_path")
fi
elif [ "$full_path" != "${freq_apps[0]}" ]; then
# Проверяем, есть ли выбранное приложение уже в списке часто используемых
if ! echo "${freq_apps[@]}" | grep -q "$full_path"; then
freq_apps=("$full_path" "${freq_apps[@]:1}")
fi
fi
echo "${freq_apps[@]}" > "$HOME/.config/frequently_used_apps.txt"
else
echo "$full_path" > "$HOME/.config/frequently_used_apps.txt"
fi
fi
fi
# Удаляем временный файл "favorites.txt"
rm favorites.txt
--- Конец кода ---
Хочу также добавить что первый скрипт создаёт файл frequently_used_apps.txt с избранным в ~/.config, если нужно убрать приложение какое из избраного редактируем его.
второй скрипт как и говорил служит для запуска избраных приложений
--- Код ---
#!/bin/bash
# Generate the "Favorites" menu using the frequently used applications list
if [ -f "$HOME/.config/frequently_used_apps.txt" ]; then
freq_apps=($(<"$HOME/.config/frequently_used_apps.txt"))
app_names=()
for app in "${freq_apps[@]}"; do
app_names+=("$(basename "$app")")
done
# Prompt the user to choose an application from the favorites list
selected_app=$(printf '%s\n' "${app_names[@]}" | dmenu -fn "JetBrains Mono:size=26" -l 20 -p "Choose application:")
# If a desktop file was selected, find its full path
if [ -n "$selected_app" ]; then
selected_file=""
for app in "${freq_apps[@]}"; do
if [ "$(basename "$app")" == "$selected_app" ]; then
selected_file="$app"
break
fi
done
# If the full path is found, launch the application
if [ -n "$selected_file" ]; then
xdg-open "$selected_file"
fi
fi
fi
--- Конец кода ---
скрипты позволяют регулировать размер шрифта, необходимо подобрать оптимальный.
Далее следующим сообщением опишу дополнение для браузера которое позволит регулировать масштаб для каждого сайта(сайты с фильмамы , ютуб, и т д) но это я еще не опробовал. Так что кому интересно предлагаю отслеживать тему, может кто еще что по теме добавит.
Навигация
Перейти к полной версии