From c7af898d30a623e3ca1f07f48407c29d1eaecb2a Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 3 Jun 2026 13:39:50 +0600 Subject: [PATCH] Added root button; Fixed starting in ubl-settings-manager with sockets --- Makefile | 105 +- com.ublinux.ubl-settings-diskquota.policy | 1 + .../com.ublinux.ubl-settings-diskquota.svg | 5903 +++++++++++++++++ locale/ubl-settings-diskquota.pot | 310 + locale/ubl-settings-diskquota_ru.po | 458 ++ source/controler.c | 90 + ubl-settings-diskquota.desktop | 68 +- ubl-settings-diskquota_ru.po | 4 - 8 files changed, 6882 insertions(+), 57 deletions(-) create mode 100644 icons/apps/com.ublinux.ubl-settings-diskquota.svg create mode 100644 locale/ubl-settings-diskquota.pot create mode 100644 locale/ubl-settings-diskquota_ru.po 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..47f1386 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 身份運行磁碟配額設定 diff --git a/icons/apps/com.ublinux.ubl-settings-diskquota.svg b/icons/apps/com.ublinux.ubl-settings-diskquota.svg new file mode 100644 index 0000000..708bd05 --- /dev/null +++ b/icons/apps/com.ublinux.ubl-settings-diskquota.svg @@ -0,0 +1,5903 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/locale/ubl-settings-diskquota.pot b/locale/ubl-settings-diskquota.pot new file mode 100644 index 0000000..0a16d36 --- /dev/null +++ b/locale/ubl-settings-diskquota.pot @@ -0,0 +1,310 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-09 11:01+0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: source/ubl-settings-diskquota.h:32 +msgid "Version:" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "ubl-settings-diskquota version:" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "Usage:" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "[OPTIONS]" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "Options:" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "Show this help" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "Show package version" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "Lock this help menu" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "Lock configuration saving" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "Lock local configration saving" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "Lock global configration saving" +msgstr "" + +#: source/ubl-strings.h:10 +msgid "Lock global configration loading" +msgstr "" + +#: source/ubl-strings.h:12 +msgid "Disk quotas" +msgstr "" + +#: source/ubl-strings.h:13 +msgid "Configuring disk quota settings for system groups and users" +msgstr "" + +#: source/ubl-strings.h:15 +msgid "Operation succeeded" +msgstr "" + +#: source/ubl-strings.h:16 +msgid "" +"Warning! Application was launched without root - root-dependent actions are " +"locked." +msgstr "" + +#: source/ubl-strings.h:18 +msgid "About" +msgstr "" + +#: source/ubl-strings.h:19 +msgid "Documentation" +msgstr "" + +#: source/ubl-strings.h:21 +msgid "Save to local configuration" +msgstr "" + +#: source/ubl-strings.h:22 +msgid "Save to global configuration" +msgstr "" + +#: source/ubl-strings.h:23 +msgid "Save configuration" +msgstr "" + +#: source/ubl-strings.h:24 +msgid "Save" +msgstr "" + +#: source/ubl-strings.h:26 +msgid "Load local configuration" +msgstr "" + +#: source/ubl-strings.h:27 +msgid "Load global configuration" +msgstr "" + +#: source/ubl-strings.h:28 +msgid "Load" +msgstr "" + +#: source/ubl-strings.h:30 source/ubl-strings.h:101 +msgid "Cancel" +msgstr "" + +#: source/ubl-strings.h:30 source/ubl-strings.h:102 +msgid "Save" +msgstr "" + +#: source/ubl-strings.h:32 +msgid "Would you like to read documentation in the Web?" +msgstr "" + +#: source/ubl-strings.h:33 +msgid "" +"You will be redirected to documentation website where documentation is\n" +"translated and supported by community." +msgstr "" + +#: source/ubl-strings.h:34 +msgid "Always redirect to online documentation" +msgstr "" + +#: source/ubl-strings.h:35 +msgid "Open documentation" +msgstr "" + +#: source/ubl-strings.h:36 +msgid "Project Home Page" +msgstr "" + +#: source/ubl-strings.h:37 +msgid "Nothing were chosen" +msgstr "" + +#: source/ubl-strings.h:40 +msgid "Global configuration loading succseeded." +msgstr "" + +#: source/ubl-strings.h:41 +msgid "Local configuration loading succseeded." +msgstr "" + +#: source/ubl-strings.h:42 +msgid "Config loading failed" +msgstr "" + +#: source/ubl-strings.h:44 +msgid "Local and global configuration saving succseeded." +msgstr "" + +#: source/ubl-strings.h:45 +msgid "Global configuration saving succseeded." +msgstr "" + +#: source/ubl-strings.h:46 +msgid "Local configuration saving succseeded." +msgstr "" + +#: source/ubl-strings.h:47 +msgid "Nothing to save!" +msgstr "" + +#: source/ubl-strings.h:49 +msgid "Kb" +msgstr "" + +#: source/ubl-strings.h:50 +msgid "Mb" +msgstr "" + +#: source/ubl-strings.h:51 +msgid "Gb" +msgstr "" + +#: source/ubl-strings.h:52 +msgid "Tb" +msgstr "" + +#: source/ubl-strings.h:65 +msgid "w " +msgstr "" + +#: source/ubl-strings.h:66 +msgid "d " +msgstr "" + +#: source/ubl-strings.h:67 +msgid "h " +msgstr "" + +#: source/ubl-strings.h:68 +msgid "m " +msgstr "" + +#: source/ubl-strings.h:70 +msgid "On" +msgstr "" + +#: source/ubl-strings.h:71 +msgid "Off" +msgstr "" + +#: source/ubl-strings.h:72 +msgid "Not set" +msgstr "" + +#: source/ubl-strings.h:73 +msgid "Settings quotas - Addition" +msgstr "" + +#: source/ubl-strings.h:74 +msgid "Settings quotas - Editing" +msgstr "" + +#: source/ubl-strings.h:78 +msgid "Please select folder" +msgstr "" + +#: source/ubl-strings.h:80 +msgid "User" +msgstr "" + +#: source/ubl-strings.h:81 +msgid "Group" +msgstr "" + +#: source/ubl-strings.h:82 +msgid "Project" +msgstr "" + +#: source/ubl-strings.h:83 +msgid "Users" +msgstr "" + +#: source/ubl-strings.h:84 +msgid "Groups" +msgstr "" + +#: source/ubl-strings.h:86 +msgid "Is not a directory" +msgstr "" + +#: source/ubl-strings.h:87 +msgid "Withdraw all users" +msgstr "" + +#: source/ubl-strings.h:88 +msgid "Withdraw all groups" +msgstr "" + +#: source/ubl-strings.h:90 +msgid "Project ID mandatory field" +msgstr "" + +#: source/ubl-strings.h:91 +msgid "The path does not match the specified disk" +msgstr "" + +#: source/ubl-strings.h:92 +msgid "Project name mandatory field" +msgstr "" + +#: source/ubl-strings.h:93 +msgid "Project name required field" +msgstr "" + +#: source/ubl-strings.h:94 +msgid "The list of users is empty" +msgstr "" + +#: source/ubl-strings.h:95 +msgid "To save, you need to select a disk" +msgstr "" + +#: source/ubl-strings.h:96 +msgid "Insert at least one value before saving" +msgstr "" + +#: source/ubl-strings.h:97 +msgid "The selected directory is not located on the target device" +msgstr "" + +#: source/ubl-strings.h:99 +msgid "Add" +msgstr "" + +#: source/ubl-strings.h:100 +msgid "Update" +msgstr "" \ No newline at end of file diff --git a/locale/ubl-settings-diskquota_ru.po b/locale/ubl-settings-diskquota_ru.po new file mode 100644 index 0000000..69bbf3e --- /dev/null +++ b/locale/ubl-settings-diskquota_ru.po @@ -0,0 +1,458 @@ +# Russian translations for ubl-settings-diskquota package. +# Copyright (C) 2022, UBTech LLC +# This file is distributed under the same license as the ubl-settings-diskquota package. +# UBLinux Team , 2022 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ubl-settings-diskquota 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-05-22 16:12+0600\n" +"PO-Revision-Date: 2023-01-01 00:00+0600\n" +"Last-Translator: UBLinux Team \n" +"Language-Team: Russian - UBLinux Team \n" +"Language: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: source/ubl-strings.h:1 +msgid "Version:" +msgstr "Версия:" + +#: source/ubl-strings.h:2 +msgid "ubl-settings-diskquota version:" +msgstr "Версия ubl-settings-diskquota: " + +#: source/ubl-strings.h:2 +msgid "TEMPLATE settings" +msgstr "Настройки TEMPLATE" + +#: source/ubl-strings.h:2 +msgid "Usage:" +msgstr "Использование:" + +#: source/ubl-strings.h:2 +msgid "[OPTIONS]" +msgstr "[АРГУМЕНТЫ]" + +#: source/ubl-strings.h:2 +msgid "Options:" +msgstr "Аргументы:" + +#: source/ubl-strings.h:2 +msgid "Show this help" +msgstr "Показать параметры справки" + +#: source/ubl-strings.h:2 +msgid "Show package version" +msgstr "Показать текущую версию" + +#: source/ubl-strings.h:2 +msgid "Lock this help menu" +msgstr "Блокировка вызова справки" + +#: source/ubl-strings.h:2 +#, fuzzy +msgid "Lock configuration saving" +msgstr "Блокировка сохранения локальной и глобальной конфигурации" + +#: source/ubl-strings.h:2 +msgid "Lock local configration saving" +msgstr "Блокировка сохранения локальной конфигурации" + +#: source/ubl-strings.h:2 +msgid "Lock global configration saving" +msgstr "Блокировка сохранения глобальной конфигурации" + +#: source/ubl-strings.h:2 +msgid "Lock global configration loading" +msgstr "Блокировка загрузки глобальной конфигурации" + +#: source/ubl-strings.h:5 +msgid "System TEMPLATE settings management" +msgstr "Настройки TEMPLATE" + +#: source/ubl-strings.h:7 +msgid "Operation succeeded" +msgstr "Операция завершена" + +#: source/ubl-strings.h:8 +msgid "" +"Warning! Application was launched without root - root-dependent actions are " +"locked." +msgstr "Внимание! Приложение было запущено без прав суперпользователя - действия, требующие их наличия заблокированы." + +#: source/ubl-strings.h:10 +msgid "About" +msgstr "О программе" + +#: source/ubl-strings.h:11 +msgid "Documentation" +msgstr "Справка" + +#: source/ubl-strings.h:12 +msgid "Save to local configuration" +msgstr "Сохранить в локальную конфигурацию" + +#: source/ubl-strings.h:13 +msgid "Save to global configuration" +msgstr "Сохранить в глобальную конфигурацию" + +#: source/ubl-strings.h:14 +msgid "Save configuration" +msgstr "Сохранить конфигурацию" + +#: source/ubl-strings.h:15 +msgid "Save" +msgstr "Сохранить" + +#: source/ubl-strings.h:16 +msgid "Load local configuration" +msgstr "Загрузить локальную конфигурацию" + +#: source/ubl-strings.h:17 +msgid "Load global configuration" +msgstr "Загрузить глобальную конфигурацию" + +#: source/ubl-strings.h:18 +msgid "Load" +msgstr "Загрузить" + +#: source/ubl-strings.h:20 +msgid "Cancel" +msgstr "Отмена" + +#: source/ubl-strings.h:22 +msgid "Would you like to read documentation in the Web?" +msgstr "Вы хотите прочитать справку в Сети?" + +#: source/ubl-strings.h:23 +msgid "" +"You will be redirected to documentation website where documentation is\n" +"translated and supported by community." +msgstr "" +"Вы будете перенаправлены на сайт с документацией, где страницы помощи\n" +"переводятся и поддерживаются сообществом." + +#: source/ubl-strings.h:24 +msgid "Always redirect to online documentation" +msgstr "Всегда перенаправлять" + +#: source/ubl-strings.h:25 +msgid "Open documentation" +msgstr "Прочитать справку" + +#: source/ubl-strings.h:26 +msgid "Project Home Page" +msgstr "Домашняя страница проекта" + +#: source/ubl-strings.h:27 +msgid "Nothing were chosen" +msgstr "Ничего не было выбрано" + +#: source/ubl-strings.h:30 +msgid "Global configuration loading succseeded." +msgstr "Успешно загружена глобальная конфигурация" + +#: source/ubl-strings.h:31 +msgid "Local configuration loading succseeded." +msgstr "Успешно загружена локальная конфигурация" + +#: source/ubl-strings.h:33 +msgid "Local and global configuration saving succseeded." +msgstr "Успешно записаны локальная и глобальная конфигурация" + +#: source/ubl-strings.h:34 +msgid "Global configuration saving succseeded." +msgstr "Успешно записана глобальная конфигурация" + +#: source/ubl-strings.h:35 +msgid "Local configuration saving succseeded." +msgstr "Успешно записана локальная конфигурация" + +msgid "Edit" +msgstr "Редактировать" + +msgid "Kb" +msgstr "Кб" + +msgid "Mb" +msgstr "Мб" + +msgid "Gb" +msgstr "Гб" + +msgid "Tb" +msgstr "Тб" + +msgid "Disk quotas" +msgstr "Дисковые квоты" + +msgid "Configuring disk quota settings for system groups and users" +msgstr "Настройка параметров дисковых квот для групп и пользователей системы" + +msgid "Device" +msgstr "Устройство" + +msgid "Device:" +msgstr "Устройство:" + +msgid "Catalog" +msgstr "Каталог" + +msgid "Catalog:" +msgstr "Каталог:" + +msgid "Project Name" +msgstr "Имя проекта" + +msgid "Project Name:" +msgstr "Имя проекта:" + +msgid "Auto" +msgstr "Авто" + +msgid "Review" +msgstr "Обзор" + +msgid "Generate" +msgstr "Сгенерировать" + +msgid "User" +msgstr "Пользователь" + +msgid "Group" +msgstr "Группа" + +msgid "User:" +msgstr "Пользователь:" + +msgid "Users:" +msgstr "Пользователи:" + +msgid "Users" +msgstr "Пользователи" + +msgid "Group:" +msgstr "Группа:" + +msgid "Groups:" +msgstr "Группы:" + +msgid "Groups" +msgstr "Группы" + +msgid "Projects:" +msgstr "Проект:" + +msgid "Quota type" +msgstr "Тип квот" + +msgid "Status" +msgstr "Статус" + +msgid "Projects" +msgstr "Проекты" + +msgid "Error saved local and global configuration" +msgstr "Сохранить глобальную и локальную конфигурацию" + +msgid "The delay period for exceeding files:" +msgstr "Период отсрочки по превышению файлов:" + +msgid "The postponement period for exceeding the volume:" +msgstr "Период отсрочки по превышению объема:" + +msgid "File system:" +msgstr "Файловая система:" + +msgid "Files" +msgstr "Файлы" + +msgid "Filters" +msgstr "Фильтры" + +msgid "minutes" +msgstr "минут" + +msgid "name" +msgstr "имя" + +msgid "days" +msgstr "дней" + +msgid "files" +msgstr "Файлы" + +msgid "hours" +msgstr "часов" + +msgid "w " +msgstr "н " + +msgid "d " +msgstr "д " + +msgid "h " +msgstr "ч " + +msgid "m " +msgstr "м " + +msgid "weeks" +msgstr "недель" + +msgid "General statistics" +msgstr "Общая статистика" + +msgid "https://wiki.ublinux.com" +msgstr "https://wiki.ublinux.ru" + +msgid "Off" +msgstr "Выключено" + +msgid "Not set" +msgstr "Не задано" + +msgid "Name" +msgstr "Имя" + +msgid "Nothing to save!" +msgstr "Нечего сохранять!" + +msgid "Project ID" +msgstr "ID проекта" + +msgid "Project ID:" +msgstr "ID проекта:" + +msgid "Settings disk quotas - Addition" +msgstr "Настройка дисковых квот - Добавление" + +msgid "Settings disk quotas - Editing" +msgstr "Настройка дисковых квот - Редактирование" + +msgid "Quota use status:" +msgstr "Статус использования квот:" + +msgid "Size" +msgstr "Объём" + +msgid "Quotas" +msgstr "Квоты" + +msgid "Mount\npoint" +msgstr "Точка монтирования" + +msgid "FS" +msgstr "ФС" + +msgid "The postponement period\nfor exceeding the volume" +msgstr "Период отсрочки\nпо превышению объема" + +msgid "The delay period\nfor exceeding files" +msgstr "Период отсрочки\nпо превышению файлов" + +msgid "Soft\nrestriction\n(volume)" +msgstr "Мягкое\nограничение\n(объём)" + +msgid "Hard\nlimit\n(volume)" +msgstr "Жёсткое\nограничение\n(объём)" + +msgid "Postponing\nthe\nhard\nlimit\n(volume)" +msgstr "Отсрочка\nжёсткого\nограничения\n(объём)" + +msgid "Soft\nrestriction\n(files)" +msgstr "Мягкое\nограничение\n(файлы)" + +msgid "Hard\nlimit\n(files)" +msgstr "Жёсткое\nограничение\n(файлы)" + +msgid "Postponing\nthe\nhard\nlimit\n(files)" +msgstr "Отсрочка\nжёсткого\nограничения\n(файлы)" + +msgid "Device/\nProject" +msgstr "Устройство/\nПроект" + +msgid "Soft limit" +msgstr "Мягкое ограничение" + +msgid "Hard limit" +msgstr "Жёсткое ограничение" + +msgid "Soft limit (volume)" +msgstr "Мягкое ограничение (объём)" + +msgid "Hard limit (volume)" +msgstr "Жёсткое ограничение (объём)" + +msgid "Postponing the hard limit (volume)" +msgstr "Отсрочка жёсткого ограничения (объём)" + +msgid "Soft limit (files)" +msgstr "Мягкое ограничение (файлы)" + +msgid "Hard limit (files)" +msgstr "Жёсткое ограничение (файлы)" + +msgid "Postponing the hard limit (files)" +msgstr "Отсрочка жёсткого ограничения (файлы)" + +msgid "On" +msgstr "Включено" + +msgid "Please select folder" +msgstr "Выберите каталог" + +msgid "Warning" +msgstr "Внимание" + +msgid "The selected directory is not located on the target device" +msgstr "Выбранный каталог не расположен на целевом устройстве" + +msgid "Withdraw all users" +msgstr "Вывести всех пользователей" + +msgid "Withdraw all groups" +msgstr "Вывести все группы" + +msgid "Settings quotas - Addition" +msgstr "Настройка квот - Добавление" + +msgid "Settings quotas - Editing" +msgstr "Настройка квот - Редактирование" + +msgid "The list of users is empty" +msgstr "Список пользователей пуст" + +msgid "Project name required field" +msgstr "Имя проекта обязательное поле" + +msgid "Project ID mandatory field" +msgstr "ID проекта обязательное поле" + +msgid "Insert at least one value before saving" +msgstr "Необходимо ввести хотя бы одно значение перед сохранением" + +msgid "The path does not match the specified disk" +msgstr "Путь не соответствует указанному диску" + +msgid "Project name mandatory field" +msgstr "Имя проекта обязательное поле" + +msgid "To save, you need to select a disk" +msgstr "Для сохранения нужно выбрать диск" + +msgid "Project" +msgstr "Проект" + +msgid "Is not a directory" +msgstr "Не является каталогом" + +msgid "Add" +msgstr "Добавить" + +msgid "Update" +msgstr "Обновить" diff --git a/source/controler.c b/source/controler.c index 1341c8b..f4388af 100644 --- a/source/controler.c +++ b/source/controler.c @@ -22,6 +22,93 @@ void update_time_table(vector* vec_temp) { } } } +#define yon_char_is_empty(string) !(string&&strcmp(string,"")) + +int arg_size; +config_str arg_target; + +gboolean __yon_app_check_helper(const char *app, config_str argv, int argc){ + char *helper_path = yon_char_unite("/usr/bin/",app,"-root",NULL); + if (!access(helper_path,F_OK)){ + for (int i=1;i-1){ + free(yon_char_divide(argline,last_pos)); + } + if (!__yon_app_check_helper(argline, arg_target, arg_size)){ + for (int i=1;iWindow)); + gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->DocumentationMenuItem)),root_button); filters_set_name("prjquota"); filters_init_flag(); control_event(widgets, &cfg_custom_gui); diff --git a/ubl-settings-diskquota.desktop b/ubl-settings-diskquota.desktop index 4c59e6c..1b1012a 100755 --- a/ubl-settings-diskquota.desktop +++ b/ubl-settings-diskquota.desktop @@ -234,9 +234,71 @@ Keywords[as]=ছেটিংছ;ডিচ্ক কোটা;ডিচ্ক; Keywords[ar]=الإعدادات;حصة القرص;القرص; Keywords[af]=instellings;skyfkwota;skyf; Type=Application -Exec=pkexec ubl-settings-diskquota +Exec=ubl-settings-diskquota-user 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; + +[Desktop Action RunAsRoot] +Exec=ubl-settings-diskquota-root +Icon=com.ublinux.ubl-settings-diskquota +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 diff --git a/ubl-settings-diskquota_ru.po b/ubl-settings-diskquota_ru.po index 69bbf3e..d324f2c 100644 --- a/ubl-settings-diskquota_ru.po +++ b/ubl-settings-diskquota_ru.po @@ -25,10 +25,6 @@ msgstr "Версия:" msgid "ubl-settings-diskquota version:" msgstr "Версия ubl-settings-diskquota: " -#: source/ubl-strings.h:2 -msgid "TEMPLATE settings" -msgstr "Настройки TEMPLATE" - #: source/ubl-strings.h:2 msgid "Usage:" msgstr "Использование:"