From 98feb898faf2c8d417d805739b042a35f09dd46a Mon Sep 17 00:00:00 2001 From: asmeron Date: Mon, 18 May 2026 21:32:33 +0600 Subject: [PATCH] Fix Makefile and .desktop and .policy --- Makefile | 105 +++++++++--------- com.ublinux.ubl-settings-diskquota.policy | 5 +- ...ubl-settings-diskquota.funnel-symbolic.svg | 0 ...x.ubl-settings-diskquota.zoom-symbolic.svg | 0 .../com.ublinux.ubl-settings-diskquota.svg | 0 ...ublinux.ubl-settings-diskquota.checked.svg | 0 ...ublinux.ubl-settings-diskquota.warning.svg | 0 .../ubl-settings-diskquota.pot | 0 .../ubl-settings-diskquota_ru.po | 0 ubl-settings-diskquota.desktop | 68 +++++++++++- 10 files changed, 125 insertions(+), 53 deletions(-) rename com.ublinux.ubl-settings-diskquota.funnel-symbolic.svg => icons/actions/com.ublinux.ubl-settings-diskquota.funnel-symbolic.svg (100%) rename com.ublinux.ubl-settings-diskquota.zoom-symbolic.svg => icons/actions/com.ublinux.ubl-settings-diskquota.zoom-symbolic.svg (100%) rename com.ublinux.ubl-settings-diskquota.svg => icons/apps/com.ublinux.ubl-settings-diskquota.svg (100%) rename com.ublinux.ubl-settings-diskquota.checked.svg => icons/status/com.ublinux.ubl-settings-diskquota.checked.svg (100%) rename com.ublinux.ubl-settings-diskquota.warning.svg => icons/status/com.ublinux.ubl-settings-diskquota.warning.svg (100%) rename ubl-settings-diskquota.pot => locale/ubl-settings-diskquota.pot (100%) rename ubl-settings-diskquota_ru.po => locale/ubl-settings-diskquota_ru.po (100%) mode change 100755 => 100644 ubl-settings-diskquota.desktop diff --git a/Makefile b/Makefile index 2d1e944..4773082 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,6 @@ DEPENDS = /bin/cmake PREFIX ?= /usr/local PKGNAME = $(MAKEFILE_DIR) FILE_VER = source/${PKGNAME}.h -PKGIDENT = $(subst /,-,$(subst /usr,,${PREFIX})) default_target: all @@ -22,21 +21,23 @@ all: init build init: @echo "Initialize ..."; \ - if [ -d ".git" ]; then \ + if [[ -d ".git" ]]; then \ LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ - if [ -z "$${LATEST_TAG}" ]; then \ - LATEST_TAG="0.0"; \ + if [[ -z "$${LATEST_TAG}" ]]; \ + then \ + LATEST_TAG=$$"0.0"; \ + echo "$${LATEST_TAG} is empty"; \ fi; \ else \ LATEST_TAG="Development"; \ fi; \ - sed -r "s/^(static string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ + sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: @echo "Check depends ..." @for FILE_DEPEND in $(DEPENDS); do \ - if [ ! -f $${FILE_DEPEND} ]; then \ + if [[ ! -f "$${FILE_DEPEND}" ]]; then \ echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \ exit 1; \ fi; \ @@ -46,21 +47,21 @@ depend: debug: @echo "Debug ..." - if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ + if [[ ! -d "${CMAKE_BUILD_DIR}" ]]; then \ $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ fi; \ echo "Debug: OK" prepare: @echo "Prepare ..."; \ - if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ + if [[ ! -d "${CMAKE_BUILD_DIR}" ]]; then \ $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ fi; \ echo "Prepare: OK" check: @echo "Check ..."; \ - if [ -f ${CMAKE_BUILD_DIR}/${PKGNAME} ]; then \ + if [[ -f "${CMAKE_BUILD_DIR}/${PKGNAME}" ]]; then \ echo "Check: OK"; \ else \ echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not found !"; \ @@ -70,78 +71,82 @@ check: build: depend prepare @echo "Build ..."; \ $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ - sed -r "s/^(static string version_application).*/\1;/" -i ${FILE_VER}; \ + sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ echo "Build: OK" uninstall: @echo "Uninstall ..." - @for FILE_PO in $(wildcard *.po); do \ - LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + @for LANG in $$(find ./locale -iname "*.po" -print | sed -En "s/.+_([[:alpha:]]+)\.po/\1/p" | sort -u); do \ + PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \ $(RM) "$${PATH_FILE_MO}"; \ done @for SIZE in 16x16 32x32 48x48 scalable; do \ - $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ - $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \ + $(RM) "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ + $(RM) "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \ done @for FILE_SVG in $(wildcard *.svg); do \ for SIZE in 16x16 32x32 48x48 scalable; do \ - $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \ + $(RM) "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \ done; \ done - @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" + @for FILE_ICON in $(wildcard icons/*/*.svg); do \ + SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \ + $(RM) "${DESTDIR}/usr/share/icons/hicolor/scalable/$${SUB_NAME}/$${FILE_ICON##*/}"; \ + done + @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" "${DESTDIR}${PREFIX}/bin/${PKGNAME}-root" "${DESTDIR}${PREFIX}/bin/${PKGNAME}-user" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" - @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" @if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \ - install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"; \ + $(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"; \ else \ -# install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ - install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ -# sed -e "s+/usr/bin+${PREFIX}/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ - sed -e "s+/usr/bin+/usr/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ + $(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ fi - @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ + @if [[ -z "${DESTDIR}" ]]; then \ + [[ -d "${DESTDIR}/usr/share/icons/hicolor/" ]] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ + [[ -d "${DESTDIR}/usr/share/applications" ]] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \ fi @echo "Uninstall: OK" install: check uninstall @echo "Install ..." - @for FILE_PO in $(wildcard *.po); do \ - LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - install -dm755 "${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES"; \ - FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - echo "$${FILE_PO}"; \ - msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ + @for LANG in $$(find ./locale -iname "*.po" -print | sed -En "s/.+_([[:alpha:]]+)\.po/\1/p" | sort -u); do \ + install -dm755 "${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES"; \ + PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \ + PKGNAME_PO="./locale/${PKGNAME}_$${LANG}.po"; [[ -f "$${PKGNAME_PO}" ]] || PKGNAME_PO= ; \ + msgfmt --verbose --use-fuzzy --output-file "$${PATH_FILE_MO}" - < <(msgcat --use-first --no-wrap $${PKGNAME_PO} ./locale/*_$${LANG}.po); \ done @for SIZE in 16 32 48; do \ - install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ - rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ + install -dm755 "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ + rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ + done + @for FILE_ICON in $(wildcard icons/*/*.svg); do \ + SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \ + install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/$${SUB_NAME}" $${FILE_ICON}; \ done - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg" - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg" - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.funnel-symbolic.svg" - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.zoom-symbolic.svg" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy" - @sed -e '\|annotate key=|s|/usr/bin|${PREFIX}/bin|' -e '/action id=/s/\.run/${PKGIDENT}\.run/' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy - @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ + @ln -s "/usr/bin/ubl-exec-app" "${DESTDIR}${PREFIX}/bin/${PKGNAME}-root" + @ln -s "/usr/bin/ubl-exec-app" "${DESTDIR}${PREFIX}/bin/${PKGNAME}-user" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" + @if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \ + install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"; \ + else \ + install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}-local.policy"; \ + install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ + sed -e "s+/usr/bin+/usr/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \ + sed -e '\|annotate key=|s|/usr/bin|${PREFIX}/bin|' -e '/action id=/s/\.run/${PKGIDENT}\.run/' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}-local.policy;\ + fi + @if [[ -z "${DESTDIR}" ]]; then \ + ldconfig -n ${DESTDIR}/usr/lib; \ + [[ -d "${DESTDIR}/usr/share/icons/hicolor/" ]] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ + [[ -d "${DESTDIR}/usr/share/applications" ]] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \ fi @echo "Install: OK" clean: @echo "Clean ..." - @$(RM) -rd ${CMAKE_BUILD_DIR} - @if [ -d ${CMAKE_BUILD_DIR} ]; then \ + @$(RM) -rd "${CMAKE_BUILD_DIR}" + @if [[ -d "${CMAKE_BUILD_DIR}" ]]; then \ echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \ else \ echo "Clean: OK"; \ @@ -153,7 +158,7 @@ help: echo "... init"; \ echo "... debug"; \ echo "... prepare"; \ - echo "... build"; \ + echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ echo "... clean" \ No newline at end of file diff --git a/com.ublinux.ubl-settings-diskquota.policy b/com.ublinux.ubl-settings-diskquota.policy index f1583e5..06096da 100644 --- a/com.ublinux.ubl-settings-diskquota.policy +++ b/com.ublinux.ubl-settings-diskquota.policy @@ -5,6 +5,7 @@ UBLinux https://ublinux.com + com.ublinux.ubl-settings-diskquota Run disk quotas settings as root 以 root 身份運行磁碟配額設定 @@ -127,7 +128,7 @@ auth_admin auth_admin - /usr/bin/ubl-settings-diskquota + /usr/bin/ubl-settings-diskquota-root true - + \ No newline at end of file diff --git a/com.ublinux.ubl-settings-diskquota.funnel-symbolic.svg b/icons/actions/com.ublinux.ubl-settings-diskquota.funnel-symbolic.svg similarity index 100% rename from com.ublinux.ubl-settings-diskquota.funnel-symbolic.svg rename to icons/actions/com.ublinux.ubl-settings-diskquota.funnel-symbolic.svg diff --git a/com.ublinux.ubl-settings-diskquota.zoom-symbolic.svg b/icons/actions/com.ublinux.ubl-settings-diskquota.zoom-symbolic.svg similarity index 100% rename from com.ublinux.ubl-settings-diskquota.zoom-symbolic.svg rename to icons/actions/com.ublinux.ubl-settings-diskquota.zoom-symbolic.svg diff --git a/com.ublinux.ubl-settings-diskquota.svg b/icons/apps/com.ublinux.ubl-settings-diskquota.svg similarity index 100% rename from com.ublinux.ubl-settings-diskquota.svg rename to icons/apps/com.ublinux.ubl-settings-diskquota.svg diff --git a/com.ublinux.ubl-settings-diskquota.checked.svg b/icons/status/com.ublinux.ubl-settings-diskquota.checked.svg similarity index 100% rename from com.ublinux.ubl-settings-diskquota.checked.svg rename to icons/status/com.ublinux.ubl-settings-diskquota.checked.svg diff --git a/com.ublinux.ubl-settings-diskquota.warning.svg b/icons/status/com.ublinux.ubl-settings-diskquota.warning.svg similarity index 100% rename from com.ublinux.ubl-settings-diskquota.warning.svg rename to icons/status/com.ublinux.ubl-settings-diskquota.warning.svg diff --git a/ubl-settings-diskquota.pot b/locale/ubl-settings-diskquota.pot similarity index 100% rename from ubl-settings-diskquota.pot rename to locale/ubl-settings-diskquota.pot diff --git a/ubl-settings-diskquota_ru.po b/locale/ubl-settings-diskquota_ru.po similarity index 100% rename from ubl-settings-diskquota_ru.po rename to locale/ubl-settings-diskquota_ru.po diff --git a/ubl-settings-diskquota.desktop b/ubl-settings-diskquota.desktop old mode 100755 new mode 100644 index 4c59e6c..3ed67d1 --- a/ubl-settings-diskquota.desktop +++ b/ubl-settings-diskquota.desktop @@ -234,9 +234,75 @@ Keywords[as]=ছেটিংছ;ডিচ্ক কোটা;ডিচ্ক; Keywords[ar]=الإعدادات;حصة القرص;القرص; Keywords[af]=instellings;skyfkwota;skyf; Type=Application -Exec=pkexec ubl-settings-diskquota +Exec=ubl-settings-diskquota-root Icon=com.ublinux.ubl-settings-diskquota Terminal=false StartupNotify=true StartupWMClass=ubl-settings-diskquota +X-XfcePluggable=true +X-UBLPluggable=true Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;X-UBL-SettingsManager;X-UBL-SystemSettings; + +Actions=RunAsRoot; + +[Desktop Action RunAsRoot] +Exec=ubl-settings-datetime-root +Icon=com.ublinux.ubl-settings-datetime +Name=Run as root +Name[zh_TW]=以 root 身分執行 +Name[zh_CN]=以 root 身份运行 +Name[te]=రూట్గా అమలు చేయి +Name[uk]=Запустити від root +Name[tr]=Root olarak çalıştır +Name[ta]=ரூட்டாக இயக்கு +Name[sv]=Kör som root +Name[sr@latin]=Pokreni kao root +Name[sr]=Покрени као root +Name[sl]=Zaženi kot root +Name[sk]=Spustiť ako root +Name[ru]=Запустить от root +Name[ro]=Rulează ca root +Name[pt_BR]=Executar como root +Name[pt]=Executar como root +Name[pl]=Uruchom jako root +Name[pa]=ਰੂਟ ਵਜੋਂ ਚਲਾਓ +Name[or]=ରୁଟ୍ ଭାବରେ ଚଲାନ୍ତୁ +Name[oc]=Executar coma root +Name[nn]=Køyr som root +Name[nl]=Uitvoeren als root +Name[mr]=रूट म्हणून चालवा +Name[ml]=റൂട്ടായി പ്രവർത്തിപ്പിക്കുക +Name[lv]=Palaist kā root +Name[lt]=Vykdyti kaip root +Name[ko]=root 권한으로 실행 +Name[kn]=ರೂಟ್ ಆಗಿ ಚಲಾಯಿಸಿ +Name[kk]=root ретінде іске қосу +Name[ka]=root-ად გაშვება +Name[ja]=root として実行 +Name[it]=Esegui come root +Name[id]=Jalankan sebagai root +Name[ia]=Executar como root +Name[hu]=Futtatás rootként +Name[hr]=Pokreni kao root +Name[hi]=रूट के रूप में चलाएँ +Name[he]=הרץ כ-root +Name[gu]=રૂટ તરીકે ચલાવો +Name[gl]=Executar como root +Name[fur]=Eseguî come root +Name[fr]=Exécuter en tant que root +Name[fi]=Suorita root-käyttäjänä +Name[eu]=Exekutatu root gisa +Name[es]=Ejecutar como root +Name[eo]=Ruli kiel root +ame[en_GB]=Run as root +Name[el]=Εκτέλεση ως root +Name[de]=Als root ausführen +Name[da]=Kør som root +Name[cs]=Spustit jako root +Name[ca]=Executa com a root +Name[bn_IN]=রুট হিসেবে চালান +Name[bg]=Изпълни като root +Name[ast]=Executar como root +Name[as]=ৰুট হিচাপে চলাওক +Name[ar]=تشغيل كـ root +Name[af]=Voer uit as root \ No newline at end of file