Application rework

pull/8/head
parent baa73d6cf1
commit 075617d495

4
.gitignore vendored

@ -1,6 +1,6 @@
.vscode/ .vscode/
ubl-settings-services ubl-settings-services
ubl-settings-TEMPLATE ubl-settings-generator
*~ *~
build/ build/
compile/ compile/
@ -8,4 +8,6 @@ compile/
terminal-commands/ terminal-commands/
source/ubl-cmake.h source/ubl-cmake.h
vgcore* vgcore*
.BUILD.md
.updatebuild.sh
.install.sh .install.sh

@ -24,6 +24,11 @@ init:
@echo "Initialize ..."; \ @echo "Initialize ..."; \
if [ -d ".git" ]; then \ if [ -d ".git" ]; then \
LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \
if [ -z "$${LATEST_TAG}" ]; \
then \
LATEST_TAG=$$"0.0"; \
echo "$${LATEST_TAG} is empty"; \
fi; \
else \ else \
LATEST_TAG="Development"; \ LATEST_TAG="Development"; \
fi; \ fi; \
@ -117,13 +122,22 @@ install: check uninstall
@sed -e 's+/usr/bin+${PREFIX}/bin+' -e 's+.run+${PKGIDENT}.run+g' ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy -i @sed -e 's+/usr/bin+${PREFIX}/bin+' -e 's+.run+${PKGIDENT}.run+g' ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy -i
@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.warning.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.sync-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.zoom-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.cancel-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.cancel-uncolored-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.check-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.play-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.stop-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.uncheck-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.launch-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@if [ -z ${DESTDIR} ]; then \ @if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ [ -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; \ 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 fi
@echo "Install: OK" @echo "Install: OK"

@ -7,6 +7,10 @@ In order to build ubl-settings-services you will need:
- C compiler - C compiler
- GTK+ 3 & dependencies - GTK+ 3 & dependencies
- webkit2gtk (optional) - webkit2gtk (optional)
- vte-2.91
- [libublsettings](https://gitea.ublinux.ru/Applications/libublsettings)
- [libublsettings-gtk3](https://gitea.ublinux.ru/Applications/libublsettings-gtk3)
- [libublsettingsui-gtk3](https://gitea.ublinux.ru/Applications/libublsettingsui-gtk3)
Once you have all the necessary dependencies, you can use: Once you have all the necessary dependencies, you can use:
```sh ```sh

@ -7,17 +7,17 @@
<vendor>UBLinux</vendor> <vendor>UBLinux</vendor>
<vendor_url>https://ublinux.ru</vendor_url> <vendor_url>https://ublinux.ru</vendor_url>
<action id="com.ublinux.ubl-settings-services.run"> <action id="com.ublinux.ubl-settings-TEMPLATE.run">
<description>Run ubl-settings-services as root</description> <description>Run ubl-settings-TEMPLATE as root</description>
<description xml:lang="ru">Запуск утилиты ubl-settings-services с правами root</description> <description xml:lang="ru">Запуск утилиты ubl-settings-TEMPLATE с правами root</description>
<message>Authentication is required to run ubl-settings-services</message> <message>Authentication is required to run ubl-settings-TEMPLATE</message>
<message xml:lang="ru">Требуется авторизация для запуска утилиты ubl-settings-services с правами root</message> <message xml:lang="ru">Требуется авторизация для запуска утилиты ubl-settings-TEMPLATE с правами root</message>
<defaults> <defaults>
<allow_any>auth_admin</allow_any> <allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive> <allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active> <allow_active>auth_admin</allow_active>
</defaults> </defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/ubl-settings-services</annotate> <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/ubl-settings-TEMPLATE</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
</action> </action>

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="3.175mm"
height="3.175mm"
viewBox="0 0 3.175 3.175"
version="1.1"
id="svg36"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
sodipodi:docname="com.ublinux.ubl-settings-usergroups.cancel-symbolic.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview38"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="29.309298"
inkscape:cx="17.74181"
inkscape:cy="7.3867343"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs33" />
<g
inkscape:label="Слой 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-75.62433,-104.22131)">
<path
style="fill:#d40000;fill-opacity:1;stroke:none;stroke-width:0.264583"
d="m 77.21183,104.22131 c -0.8763,0 -1.5875,0.7112 -1.5875,1.5875 0,0.8763 0.7112,1.5875 1.5875,1.5875 0.8763,0 1.5875,-0.7112 1.5875,-1.5875 0,-0.8763 -0.7112,-1.5875 -1.5875,-1.5875 z m 0,0.56696 c 0.563335,0 1.020535,0.4572 1.020535,1.02054 0,0.15224 -0.03405,0.2963 -0.0939,0.42611 l -1.353627,-1.35275 c 0.129997,-0.0601 0.274468,-0.0939 0.426995,-0.0939 z m -0.91423,0.56874 1.366915,1.36603 c -0.136513,0.0678 -0.290022,0.1063 -0.452685,0.1063 -0.563336,0 -1.020536,-0.4572 -1.020536,-1.02053 0,-0.16238 0.03874,-0.31547 0.106306,-0.4518 z"
id="Symbol"
inkscape:label="#path2424"
class="error"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="3.175mm"
height="3.175mm"
viewBox="0 0 3.175 3.175"
version="1.1"
id="svg36"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
sodipodi:docname="com.ublinux.ubl-settings-usergroups.cancel-symbolic.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview38"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="29.309298"
inkscape:cx="17.74181"
inkscape:cy="7.3867343"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs33" />
<g
inkscape:label="Слой 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-75.62433,-104.22131)">
<path
style="fill:#d40000;fill-opacity:1;stroke:none;stroke-width:0.264583"
d="m 77.21183,104.22131 c -0.8763,0 -1.5875,0.7112 -1.5875,1.5875 0,0.8763 0.7112,1.5875 1.5875,1.5875 0.8763,0 1.5875,-0.7112 1.5875,-1.5875 0,-0.8763 -0.7112,-1.5875 -1.5875,-1.5875 z m 0,0.56696 c 0.563335,0 1.020535,0.4572 1.020535,1.02054 0,0.15224 -0.03405,0.2963 -0.0939,0.42611 l -1.353627,-1.35275 c 0.129997,-0.0601 0.274468,-0.0939 0.426995,-0.0939 z m -0.91423,0.56874 1.366915,1.36603 c -0.136513,0.0678 -0.290022,0.1063 -0.452685,0.1063 -0.563336,0 -1.020536,-0.4572 -1.020536,-1.02053 0,-0.16238 0.03874,-0.31547 0.106306,-0.4518 z"
id="Symbol"
inkscape:label="#path2424"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z"/></svg>

After

Width:  |  Height:  |  Size: 591 B

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 2 1 v 13.992188 h 1.398438 c 0.246093 0.003906 0.488281 -0.050782 0.699218 -0.171876 l 9.796875 -5.597656 c 0.433594 -0.242187 0.65625 -0.734375 0.65625 -1.226562 c 0 -0.492188 -0.222656 -0.984375 -0.65625 -1.222656 l -9.796875 -5.597657 c -0.210937 -0.121093 -0.453125 -0.175781 -0.699218 -0.175781 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 475 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c7.6-4.2 16.8-4.1 24.3 .5l144 88c7.1 4.4 11.5 12.1 11.5 20.5s-4.4 16.1-11.5 20.5l-144 88c-7.4 4.5-16.7 4.7-24.3 .5s-12.3-12.2-12.3-20.9V168c0-8.7 4.7-16.7 12.3-20.9z"/></svg>

After

Width:  |  Height:  |  Size: 565 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z"/></svg>

After

Width:  |  Height:  |  Size: 497 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M448 48V384c-63.1 22.5-82.3 32-119.5 32c-62.8 0-86.6-32-149.3-32c-20.6 0-36.6 3.6-51.2 8.2v-64c14.6-4.6 30.6-8.2 51.2-8.2c62.7 0 86.5 32 149.3 32c20.4 0 35.6-3 55.5-9.3v-208c-19.9 6.3-35.1 9.3-55.5 9.3c-62.8 0-86.6-32-149.3-32c-50.8 0-74.9 20.6-115.2 28.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32s32 14.3 32 32V76.7c40.3-8 64.4-28.7 115.2-28.7c62.7 0 86.5 32 149.3 32c37.1 0 56.4-9.5 119.5-32z"/></svg>

After

Width:  |  Height:  |  Size: 707 B

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.1 r9760"
version="1.0"
sodipodi:docname="zoom-fit.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 8 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="16 : 8 : 1"
inkscape:persp3d-origin="8 : 5.3333333 : 1"
id="perspective18" />
<linearGradient
id="StandardGradient"
gradientTransform="matrix(1.0022346,0,0,1.0022346,-2.7263793e-3,-3.4274669e-3)"
x1="8.3667202"
y1="1.0011907"
x2="8.3667202"
y2="14.839209"
gradientUnits="userSpaceOnUse">
<stop
style="stop-color:#000000;stop-opacity:0.86274511;"
offset="0"
id="stop3292" />
<stop
style="stop-color:#000000;stop-opacity:0.47058824;"
offset="1"
id="stop3294" />
</linearGradient>
<inkscape:perspective
id="perspective3648"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient3626"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0022346,0,0,1.0022346,-20.002726,-0.00342747)"
x1="8.3667202"
y1="1.0011907"
x2="8.3667202"
y2="14.839209" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3633">
<path
style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
d="m -20,0 0,16 16,0 0,-16 -16,0 z m 6.03125,1 c 1.284136,0 2.583434,0.518602 3.5625,1.5 1.550185,1.5538805 1.873026,3.8766945 0.96875,5.75 -0.02944,0.062991 -0.492783,1.0685426 0,1.5625 0.298906,0.299618 0.66775,0.19791 1.125,0.65625 l 3.03125,3.0625 c 0.00872,0.01101 0.600029,0.617291 0,1.21875 -0.59772,0.599143 -1.18433,-0.0032 -1.1875,0 l -3.0625,-3.0625 c -0.45725,-0.45834 -0.357345,-0.856632 -0.65625,-1.15625 -0.402987,-0.403942 -1.16538,-0.182596 -1.46875,-0.0625 -0.04854,0.02556 -0.10707,0.0699 -0.15625,0.09375 -1.868852,0.90643 -4.168562,0.585131 -5.71875,-0.96875 -1.958131,-1.9627964 -1.95813,-5.1309536 0,-7.09375 0.979065,-0.9813981 2.278363,-1.5 3.5625,-1.5 z m 0,1.28125 c -2.076912,0 -3.749999,1.6993902 -3.75,3.78125 0,2.0818599 1.673088,3.7500002 3.75,3.75 2.076911,0 3.75,-1.6681403 3.75,-3.75 0,-2.0818599 -1.673089,-3.7812501 -3.75,-3.78125 z"
id="path3635" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient5450"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0022346,0,0,1.0022346,-0.00272638,-0.00342747)"
x1="8.3667202"
y1="1.0011907"
x2="8.3667202"
y2="14.839209" />
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient5454"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0022346,0,0,1.0022346,-0.00272638,-0.00342747)"
x1="8.3667202"
y1="1.0011907"
x2="8.3667202"
y2="14.839209" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#9a9a9a"
borderopacity="1"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="24.785766"
inkscape:cx="1.7734833"
inkscape:cy="9.6679286"
inkscape:document-units="px"
inkscape:current-layer="layer3"
showgrid="true"
inkscape:showpageshadow="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1">
<sodipodi:guide
orientation="1,0"
position="0,112"
id="guide2383" />
<sodipodi:guide
orientation="0,1"
position="26.278146,128"
id="guide2385" />
<sodipodi:guide
orientation="1,0"
position="128,54.082119"
id="guide2387" />
<sodipodi:guide
orientation="0,1"
position="78.156291,0"
id="guide2389" />
<inkscape:grid
type="xygrid"
id="grid3672"
visible="true"
enabled="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Cross"
style="display:inline">
<path
style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline"
d="m 6.0346439,0.456963 c -1.4236033,0 -2.8640143,0.5749259 -3.9494135,1.662911 -2.17079758,2.1759704 -2.17079809,5.6882127 0,7.8641827 1.7185494,1.7226453 4.2680247,2.0788393 6.3398481,1.0739643 0.054521,-0.02644 0.1194082,-0.07559 0.1732199,-0.103932 0.3363183,-0.133139 1.1815124,-0.378525 1.6282666,0.06929 0.331369,0.33216 0.220613,0.773709 0.727524,1.281828 l 3.395109,3.395109 c 0.0035,-0.0035 0.653835,0.664216 1.316472,0 0.665196,-0.666781 0.0097,-1.338905 0,-1.351115 l -3.360466,-3.395109 c -0.506911,-0.50812 -0.915814,-0.395365 -1.247183,-0.727524 -0.546303,-0.5476049 -0.03264,-1.6623665 0,-1.732199 C 12.060508,6.4176092 11.702604,3.8425172 9.9840571,2.119874 8.8986578,1.031889 7.4582474,0.456963 6.0346439,0.456963 z m 0,1.4204031 c 2.3024792,-10e-8 4.1572781,1.8839564 4.1572781,4.1919215 0,2.3079648 -1.8547987,4.1572774 -4.1572781,4.1572774 -2.3024792,0 -4.1572774,-1.8493124 -4.1572774,-4.1572774 7e-7,-2.307965 1.8547983,-4.1919215 4.1572774,-4.1919215 z"
id="path3007"
inkscape:connector-curvature="0"
inkscape:transform-center-x="-2.2103061"
inkscape:transform-center-y="2.2258551" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

@ -15,19 +15,14 @@ add_definitions(${VTE291_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
option(WEBKIT_FOUND "No" OFF)
if(WEBKIT_LIBRARIES_FOUND) if(WEBKIT_LIBRARIES_FOUND)
option(WEBKIT_FOUND "Yes" ON)
PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0) PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
include_directories(${WEBKIT_INCLUDE_DIRS}) include_directories(${WEBKIT_INCLUDE_DIRS})
link_directories(${WEBKIT_LIBRARY_DIRS}) link_directories(${WEBKIT_LIBRARY_DIRS})
add_definitions(${WEBKIT_CFLAGS_OTHER}) add_definitions(${WEBKIT_CFLAGS_OTHER})
add_definitions(-DWEBKIT_FOUND)
endif() endif()
configure_file(ubl-cmake.in ubl-cmake.h)
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./)
set(GRESOURCE_C resources.c) set(GRESOURCE_C resources.c)
set(GRESOURCE_XML gresource.xml) set(GRESOURCE_XML gresource.xml)
@ -62,9 +57,7 @@ add_custom_target(
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
) )
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
-O2 -pipe -fno-plt -fexceptions \ -O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection") -fstack-clash-protection -fcf-protection")
@ -74,16 +67,17 @@ set(SOURCE_FILES
ubl-settings-services.c ubl-settings-services.c
ubl-settings-services.h ubl-settings-services.h
ubl-strings.h ubl-strings.h
ubl-utils.h
ubl-utils.c
${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h
) )
set(LIBRARIES set(LIBRARIES
${GTK_LIBRARIES} ${GTK_LIBRARIES}
${WEBKIT_LIBRARIES} ${WEBKIT_LIBRARIES}
${VTE291_LIBRARIES} ${UTILS_LIBRARIES}
pthread) ${VTE291_LIBRARIES}
pthread
ublsettings
ublsettings-gtk3
ublsettingsui-gtk3)
add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C})

@ -1 +0,0 @@
#cmakedefine WEBKIT_FOUND

File diff suppressed because it is too large Load Diff

@ -1,53 +1,51 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gtk/gtkx.h> #include <gtk/gtkx.h>
#include "ubl-utils.h" #include <locale.h>
#include <locale.h> #include <stdio.h>
#include <stdio.h> #include <unistd.h>
#include <unistd.h> #include <stdlib.h>
#include <stdlib.h> #include <libintl.h>
#include <getopt.h>
#include <libintl.h> #include <libintl.h>
#include <getopt.h> #include <libublsettings.h>
#include <libintl.h> #include <libublsettings-gtk3.h>
#include "../compile/ubl-cmake.h" #include <libublsettingsui-gtk3.h>
#include <vte-2.91/vte/vte.h> #include <time.h>
#ifdef WEBKIT_FOUND #ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h> #include <webkit2/webkit2.h>
#endif #endif
#include "ubl-strings.h" #include "ubl-strings.h"
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-services" #define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-services"
#define _(String) gettext(String) #define _(String) gettext(String)
#define glade_path "/com/ublinux/ui/ubl-settings-services.glade" #define glade_path "/com/ublinux/ui/ubl-settings-services.glade"
#define glade_path_terminal "/com/ublinux/ui/ubl-settings-services-terminal.glade"
#define banner_path "/com/ublinux/images/ubl-settings-services-banner.png" #define banner_path "/com/ublinux/images/ubl-settings-services-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-services.css" #define CssPath "/com/ublinux/css/ubl-settings-services.css"
#define config_path yon_char_unite("/home/",yon_ubl_root_user_get(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
#define terminal_window_path "/com/ublinux/ui/ubl-settings-services-terminal.glade"
#define LocalePath "/usr/share/locale"
#define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-services"
#define LocaleName "ubl-settings-services"
#define load_config_local_command "ubconfig --source system get config SERVICESSTART SERVICESNOSTART SERVICESMASK"
#define load_services_command "systemctl list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' -e 's/running /running;/g' -e 's/inactive /inactive;/g'" #define load_services_command "systemctl list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' -e 's/running /running;/g' -e 's/inactive /inactive;/g'"
#define load_enabled_command "systemctl list-unit-files --type=service --type=socket --no-pager --state=enabled --all |sed -e 's/ */:/g' -e 's/ *: */:/g'|cut -f1 -d:"
#define load_sockets_command "systemctl list-sockets -all |grep -vE \"LISTEN|sockets listed\"| sed -e 's/ */:/g'" #define load_launched_command "systemctl list-units --type=service --type=socket --no-pager --state=active --all --no-legend|sed -e 's/^ //g' -e 's/ */:/g' |cut -f1 -d:"
#define service_start_command(target) yon_char_append("systemctl start --no-pager ",target)
#define status_command "systemctl status --no-pager " #define service_stop_command(target) yon_char_append("systemctl stop --no-pager ",target)
#define service_enable_command(target) yon_char_append("systemctl enable --no-pager ",target)
typedef char* string; #define service_disable_command(target) yon_char_append("systemctl disable --no-pager ",target)
#define service_info_command(target) yon_char_append("systemctl status --no-pager ",target)
typedef char* string;
string version_application; string version_application;
char *local; char *local;
typedef struct { typedef struct {
int always_open_documentation; // Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT {
int win_pos_x;
int win_pos_y;
int win_width;
int win_height;
int socket_id; int socket_id;
int load_socket_id; int load_socket_id;
int save_socket_id; int save_socket_id;
@ -57,10 +55,19 @@ typedef struct {
int lock_save_global; int lock_save_global;
int lock_load_global; int lock_load_global;
config_str loaded_config; int load_mode;
GtkListStore *list;
gboolean rmb_clicked; int always_open_documentation;
} config; // } Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT
// Type custom parameters below:
int rmb_clicked;
GtkTreeModel *ServiceFilter;
GtkTreeModel *SocketFilter;
GtkTreeModel *AutolaunchFilter;
GtkTreeModel *StoppedFilter;
GtkTreeModel *BlockedFilter;
} config;
typedef struct { typedef struct {
GtkWidget *Menu; GtkWidget *Menu;
@ -72,68 +79,161 @@ typedef struct {
GtkWidget *MenuReloadConfig; GtkWidget *MenuReloadConfig;
GtkWidget *MenuStatus; GtkWidget *MenuStatus;
} menu_obj; } menu_obj;
typedef struct {
// Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT {
GtkWidget *Window;
GtkWidget *HeadLabel;
GtkWidget *PlugBox;
GtkWidget *HeadOverlay;
GtkWidget *HeadImage;
GtkWidget *HeadBox;
GtkWidget *HeadTitleLabel;
GtkWidget *HeadInfoLabel;
GtkWidget *StatusBox;
GtkWidget *StatusIcon;
GtkWidget *StatusLabel;
GtkWidget *SaveMenuItem;
GtkWidget *SaveGlobalMenuItem;
GtkWidget *SaveLocalMenuItem;
GtkWidget *RightBox;
GtkWidget *LoadGlobalMenuItem;
GtkWidget *LoadLocalMenuItem;
GtkWidget *LeftBox;
GtkWidget *DocumentationMenuItem;
GtkWidget *AboutMenuItem;
GtkWidget *InterfaceBox;
// } Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT
// Type custom parameters below:
GtkListStore *liststore1;
GtkListStore *liststore2;
GtkWidget *BoxMain;
GtkWidget *ServiceSourceCombo;
GtkWidget *ServiceTypeCombo;
GtkWidget *SearchEntry;
GtkWidget *UpdateButton;
GtkWidget *ConfigAutostartButton;
GtkWidget *ConfigAutostopButton;
GtkWidget *ConfigBlockButton;
GtkWidget *SystemAutostartButton;
GtkWidget *SystemLaunchButton;
GtkWidget *InfoButton;
GtkWidget *LogButton;
GtkWidget *MainUpperTree;
GtkWidget *MainTree;
GtkWidget *RMBMenu;
menu_obj *menu;
GtkWidget *ServiceLabel;
GtkWidget *DescriptionLabel;
} main_window;
typedef struct {
GtkWidget *Window;
GtkWidget *AlwaysOpenCheck;
GtkWidget *CloseButton;
GtkWidget *AcceptButton;
} documentation_confirmation_window;
typedef struct{
GtkListStore *liststore1;
GtkListStore *liststore2;
GtkWidget *BoxMain;
GtkWidget *ServiceSourceCombo;
GtkWidget *ServiceTypeCombo;
GtkWidget *SearchEntry;
GtkWidget *UpdateButton;
GtkWidget *ConfigAutostartButton;
GtkWidget *ConfigAutostopButton;
GtkWidget *ConfigBlockButton;
GtkWidget *SystemAutostartButton;
GtkWidget *SystemLaunchButton;
GtkWidget *InfoButton;
GtkWidget *LogButton;
GtkWidget *MainUpperTree;
GtkWidget *MainTree;
} bl_settings_services_window;
typedef struct { typedef struct {
GtkWidget *Window; GtkWidget *Window;
GtkWidget *HatLabel; GtkWidget *UpdateButton;
GtkWidget *PlugBox; GtkWidget *SystemTerminal;
char *target;
} terminal_window;
GtkWidget *HeadOverlay; void on_config_local_load();
GtkWidget *HeadImage;
GtkWidget *HeadBox;
GtkWidget *HeadTitleLabel;
GtkWidget *HeadInfoLabel;
GtkWidget *StatusBox; void on_config_global_load();
GtkWidget *StatusIcon;
GtkWidget *StatusLabel;
GtkWidget *SaveLabel; void on_config_global_local_save();
GtkWidget *SaveMenuItem;
GtkWidget *SaveGlobalMenuItem;
GtkWidget *SaveLocalMenuItem;
GtkWidget *RightBox;
GtkWidget *LoadLabel; void on_config_local_save();
GtkWidget *LoadGlobalMenuItem;
GtkWidget *LoadLocalMenuItem;
GtkWidget *LeftBox;
GtkWidget *ChosenNameLabel; void on_config_global_save();
GtkWidget *ChosenDescriptionLabel;
GtkWidget *DocumentationMenuItem; void yon_interface_update(main_window *widgets);
GtkWidget *AboutMenuItem;
GtkWidget *ActionsPopover; GtkWidget *yon_menu_button_create(char *icon_name, char *text);
GtkWidget *FirstRowNamesTree; void on_column_resize(GtkTreeViewColumn *self,GParamSpec *pspec,main_window *widgets);
GtkWidget *MainTree;
GtkTreeViewColumn *ServiceTreeColumn; gboolean on_context_menu_open(GtkWidget *self,GdkEventButton *event, main_window *widgets);
GtkWidget *RMBMenu;
menu_obj *menu;
} main_window;
typedef struct { GtkWidget *yon_menu_separator_create();
char *name;
int loaded;
int active;
char *description;
} service_info;
typedef struct { void on_config_autostart_clicked();
GtkWidget *Window;
void on_activate(GtkTreeView *self, main_window *widgets);
void on_config_autostop_clicked();
void on_config_block_clicked();
void on_system_autostart_clicked();
void on_system_launch_clicked();
gboolean yon_service_source_check(GtkTreeModel *model, GtkTreeIter *iter, void *data);
void on_source_changed(GtkWidget *self, main_window *widgets);
gboolean yon_service_type_check(GtkTreeModel *model, GtkTreeIter *iter,void *data);
void on_type_changed(GtkWidget *self, main_window *widgets);
void on_search();
void on_info_clicked();
void on_update();
void on_status_show();
void yon_load_proceed(YON_CONFIG_TYPE type);
void config_init();
void yon_main_window_complete(main_window *widgets);
gboolean on_service_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
gboolean on_socket_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
gboolean on_autostart_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
GtkWidget *HatText; gboolean on_stopped_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
GtkWidget *HeaderText;
GtkWidget *InfoText;
GtkWidget *AlwaysOpenCheck;
GtkWidget *CloseButton; gboolean on_blocked_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
GtkWidget *AcceptButton;
} documentation_confirmation_window;
terminal_window *yon_terminal_window_new();
void yon_config_main_clean(); void on_service_update(GtkWidget *self, terminal_window* window);
main_window *setup_window();

@ -1,60 +1,15 @@
#define VERSION_LABEL yon_char_unite(_("Version:")," ",version_application,"\n",NULL) #define VERSION_LABEL yon_char_unite(_("Version:")," ",version_application,"\n",NULL)
#define HELP_LABEL yon_char_unite(_("ubl-settings-services version:")," ", version_application,"\n",_("Services and processes systemd"),"\n",_("Usage:"), " ubl-settings-services ",_("[OPTIONS]"),"\n",_("Options:"),"\n\t--help, -h\t\t\t",_("Show this help"),"\n\t--version, -V\t\t\t",_("Show package version"),"\n\t--lock-help\t\t\t",_("Lock this help menu"),"\n\t--lock-save\t\t\t",_("Lock configuration saving"),"\n\t--lock-save-local\t\t",_("Lock local configration saving"),"\n\t--lock-save-global\t\t",_("Lock global configration saving"),"\n\t--lock-load-global\t\t",_("Lock global configration loading"),"\n",NULL) #define HELP_LABEL yon_char_unite(_("ubl-settings-services version:")," ", version_application,"\n",_("ubl-settings-services"),"\n",_("Usage:"), " ubl-settings-services ",_("[OPTIONS]"),"\n",_("Options:"),"\n\t--help, -h\t\t\t",_("Show this help"),"\n\t--version, -V\t\t\t",_("Show package version"),"\n\t--lock-help\t\t\t",_("Lock this help menu"),"\n\t--lock-save\t\t\t",_("Lock configuration saving"),"\n\t--lock-save-local\t\t",_("Lock local configration saving"),"\n\t--lock-save-global\t\t",_("Lock global configration saving"),"\n\t--lock-load-global\t\t",_("Lock global configration loading"),"\n\t--clear-config\t\t\t",_("Reset application settings"),"\n",NULL)
#define TITLE_LABEL _("Services and processes systemd") #define TITLE_LABEL _("Services and processes systemd")
#define TITLE_INFO_LABEL _("System services and processes configuration") #define TITLE_INFO_LABEL _("System services and processes configuration")
#define SERVICE_INFO_TITLE_LABEL _("Services and processes - service information")
#define SUCCESS_LABEL _("Operation succeeded") #define CONFIG_CONFIGURATION_LABEL _("Configure in configuration")
#define ROOT_WARNING_LABEL _("Warning! Application was launched without root - root-dependent actions are locked")
#define ABOUT_LABEL _("About")
#define DOCUMENTATION_LABEL _("Documentation")
#define SAVE_LOCAL_LABEL _("Save to local configuration")
#define SAVE_GLOBAL_LABEL _("Save to global configuration")
#define SAVE_CONFIGURATION_LABEL _("Save configuration")
#define SAVE_LABEL _("Save")
#define LOAD_LOCAL_LABEL _("Load local configuration")
#define LOAD_GLOBAL_LABEL _("Load global configuration")
#define LOAD_LABEL _("Load")
#define CANCEL_LABEL _("Cancel")
#define HELP_TITLE_LABEL _("Would you like to read documentation in the Web?")
#define HELP_INFO_LABEL _("You will be redirected to documentation website where documentation is\ntranslated and supported by community.")
#define HELP_ALWAYS_OPEN_LABEL _("Always redirect to online documentation")
#define OPEN_HELP_LABEL _("Open documentation")
#define PROJECT_HOME_LABEL _("Project Home Page")
#define NOTHING_CHOSEN_LABEL _("Nothing were chosen")
#define GLOBAL_LOAD_SUCCESS_LABEL _("Global configuration loading succseeded.")
#define LOCAL_LOAD_SUCCESS_LABEL _("Local configuration loading succseeded.")
#define LOAD_FAILED_LABEL _("Config loading failed")
#define GLOBAL_LOCAL_SAVE_SUCCESS_LABEL _("Local and global configuration saving succseeded.")
#define GLOBAL_SAVE_SUCCESS_LABEL _("Global configuration saving succseeded.")
#define LOCAL_SAVE_SUCCESS_LABEL _("Local configuration saving succseeded.")
#define AUTOSTART_LABEL _("Autostart") #define AUTOSTART_LABEL _("Autostart")
#define AUTOSTOP_LABEL _("Autostop") #define AUTOSTOP_LABEL _("Autostop")
#define BLOCK_LABEL _("Block") #define BLOCK_LABEL _("Block")
#define AUTOSTART_LABEL _("Autostart") #define SYSTEM_CONFIGURATION_LABEL _("Configure in system")
#define LAUNCHED_LABEL _("Launched") #define LAUNCHED_LABEL _("Launched")
#define SERVICE_LABEL _("Service") #define SERVICE_RELOAD_LABEL _("Reload")
#define CONFIG_CONFIGURATION_LABEL _("Configuration in config file") #define STATUS_LABEL _("Show status")
#define SYSTEM_CONFIGURATION_LABEL _("Configuration in system")
#define ALL_LABEL _("All")
#define SERVICES_LABEL _("Services")
#define SOCKETS_LABEL _("Sockets")
#define AUTOMATIC_LAUNCH_LABEL _("Automatic launch")
#define STOPPED_LABEL _("Stopped in configuration")
#define BLOCKED_LABEL _("Blocked in configuration")
#define ALL_SERVICES_LABEL _("All services")
#define SYSTEM_ONLLY_LABEL _("System services only")
#define USER_ONLY_LABEL _("User services only")
#define SERVICE_RELOAD_LABEL _("Service configuration reload")
#define STATUS_LABEL _("Status")

File diff suppressed because it is too large Load Diff

@ -1,343 +0,0 @@
#ifndef UBL_UTILS
#define UBL_UTILS
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <pthread.h>
#include <string.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
#include <locale.h>
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include <vte-2.91/vte/vte.h>
#include "../compile/ubl-cmake.h"
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
#define DesktopPath "/usr/share/applications/"
#define for_dictionaries(obj, obj1) for (obj = obj1->first; obj != NULL; obj = obj->next)
#define new(type) malloc(sizeof(type))
#define new_arr(type,size) malloc(sizeof(type)*size)
typedef enum
{
#ifdef __GTK_H__
DICTIONARY_GTK_WIDGETS_TYPE,
#endif
DICTIONARY_OTHER_TYPE=0,
DICTIONARY_CHAR_TYPE,
DICTIONARY_INT_TYPE,
DICTIONARY_BOOL_TYPE,
} DICT_TYPE;
typedef struct dictionary
{
char *key;
void *data;
struct dictionary *next;
struct dictionary *prev;
struct dictionary *first;
DICT_TYPE data_type;
int flag1;
} dictionary;
typedef struct apps
{
char *Name;
int Type;
char *Categories;
char *Exec;
char *Icon;
int Pluggable;
int DualPluggable;
} apps;
typedef char** config_str;
static dictionary *__yon__config__strings = NULL;
#define check_config if(__yon__config__strings&&__yon__config__strings->data_type==DICTIONARY_CHAR_TYPE)
#define config(key) yon_config_get_by_key(key)
#define for_config dictionary temp = NULL; for_dictionary(temp,__yon__config__strings)
#define yon_remalloc(pointer, size) (!pointer) ? malloc(size) : realloc(pointer, size)
// dictionary functions
/**yon_dictionary_get_data(dictionary, type)
* [EN]
* Gets data from dictionary.
* [dictionary] is dictionary, from which data should be extracted;
* [type] is type of data, [dictionary] contains.
* [RU]
* Возвращает данные из словаря.
* [dictionary] - словарь из которого достаются данные.
* [type] - тип данных, хранящихся в словаре [dictionary].
*/
#define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data)
/**yon_dictionary_add_or_create_if_exists_with_data(dict,key,data)
* [EN]
*
* [RU]
* Добавляет элемент словаря в конец словаря [dict] c ключом [key] и данными [data].
* Если словарь не существует, создаёт его
*/
#define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) {if (!dict) dict=yon_dictionary_new_with_data(key,data); \
else dict=yon_dictionary_append_with_data(dict,key,data);}
dictionary *yon_dictionary_new();
dictionary *yon_dictionary_append(dictionary *targetdict);
dictionary *yon_dictionary_get_last(dictionary *dict);
dictionary *yon_dictionary_swap(dictionary *dict, int aim);
void yon_dictionary_make_first(dictionary *dict);
void yon_dictionary_make_nth(dictionary *dict, int nth);
dictionary *yon_dictionary_new_with_data(char *key, void *data);
dictionary *yon_dictionary_append_with_data(dictionary *dict, char *key, void *data);
dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect);
dictionary *yon_dictionary_get(dictionary **dict, char *key);
dictionary *yon_dictionary_rip(dictionary *dict);
dictionary *yon_dictionary_get_nth(dictionary *dict, int place);
void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(void*));
// char functions
char *yon_char_append(char *source, char *append);
char *yon_char_new(char *chr);
char *yon_char_unite(char *source, ...);
char *yon_cut(char *source, int size, int startpos);
char *yon_char_divide(char *source, int dividepos);
char *yon_char_divide_search(char *source, char *dividepos, int delete_divider);
char *yon_char_from_int(int int_to_convert);
char *yon_char_replace(char *source, char *find, char*replace);
char **yon_char_parse(char *parameters, int *size, char *divider);
char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete);
int yon_char_parsed_check_exist(char **parameters, int size, char *param);
int yon_char_find_count(char *source, char *find);
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size);
config_str yon_char_parsed_new (int *size, ...);
void yon_char_parsed_copy(config_str *source, config_str *to_copy);
config_str yon_char_parsed_append(config_str parsed, int *size, char *string);
int yon_ubl_check_root();
char *yon_ubl_root_user_get();
// parsing functions
config_str philos_list_user(int* size);
apps *yon_apps_scan_and_parse_desktops(int *sizef);
void yon_apps_sort(apps *applist, int size);
apps *yon_apps_get_by_name(apps *applist, char *name, int size);
config_str yon_config_load(char *command, int *str_len);
int yon_config_save_registered(char *command);
char *yon_config_get_parameter(config_str parameters, int size, char *param);
int yon_config_load_register(char *command);
int yon_config_remove_by_key(char *key);
int yon_config_remove_by_data(void *data);
int yon_config_remove_element(char *key, char *deleted);
void *yon_config_get_by_key(char *key);
char *yon_config_get_key_by_data(char *data);
int yon_config_set(char *key, void *data);
int yon_config_clean();
void yon_config_register(char *key, void *data);
config_str yon_config_get_all();
// terminal-using functions
int yon_launch_app_with_arguments(char *name, char *args);
void yon_launch(char *command);
// Gtk functions
#ifdef __GTK_H__
#ifdef VTE_TERMINAL
void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument);
void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument);
#endif
GtkWidget *yon_ubl_menu_item_about_new(char *buttonname);
GtkWidget *yon_ubl_menu_item_documentation_new(char *buttonname);
/**yon_gtk_builder_get_widget(builder, widget_name)
* [EN]
* Returns GtkWidget from GtkBuilder *[builder].
* [builder] is GtkBuilder*;
* [widget_name] is id of widget;
*/
#define yon_gtk_builder_get_widget(builder, widget_name) GTK_WIDGET(gtk_builder_get_object(builder, widget_name))
typedef struct
{
GtkWidget *Icon;
GtkWidget *Label;
GtkWidget *IconView;
GtkListStore *List;
} expander_icon_view;
void yon_window_config_setup(GtkWindow *window);
int yon_window_config_load(char *path);
int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size);
int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find);
int yon_gtk_icon_view_hide_empty(dictionary *icon_view_segment);
int yon_dictionary_gtk_pack_start_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...);
int yon_dictionary_gtk_pack_end_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...);
typedef enum
{
BACKGROUND_IMAGE_SUCCESS_TYPE,
BACKGROUND_IMAGE_FAIL_TYPE
} BACKGROUND_IMAGE_TYPE;
typedef struct {
BACKGROUND_IMAGE_TYPE type;
GtkWidget *icon;
GtkWidget *box;
GtkWidget *label;
char* text_to_render;
} render_data;
/**yon_ubl_status_box_setup(render,icon,box,label)
* [EN]
* Sets up [render] structure of type render_data.
* [icon] is GtkImage widget of status box for showing status icons;
* [box] is GtkBox widget of status box for showing status color;
* [label] is GtkLabel widget of status box for showing status text;
* [RU]
* Настраивает структуру [render] типа render_data.
* [icon] - виджет типа GtkIcon в котором будут отображаться статусные иконки;
* [box] - виджет типа GtkBox в котором будет отображаться цвет статуса;
* [label] - виджет типа GtkLabel в котором будет отображаться текст статусного сообщения;
*/
int yon_ubl_status_box_setup(GtkWidget *icon, GtkWidget *box, GtkWidget *label);
/**yon_ubl_status_box_render(render,text,type)
* [EN]
* Renders message in status box;
* [render] is render_data structure of status box;
* [text] is text to be shown in status box;
* [type] if type of message. Can be BACKGROUND_IMAGE_FAIL_TYPE or BACKGROUND_IMAGE_SUCCESS_TYPE
* [RU]
* Отображает сообщение в статусном окне.
* [render] - структура типа render_data для нужного статусного окна;
* [text] - текст, отображаемый в статусном окне;
* [type] - тип сообщения. Может быть:
* BACKGROUND_IMAGE_FAIL_TYPE (красный фон,иконка - восклицательный знак)
* или
* BACKGROUND_IMAGE_SUCCESS_TYPE (Жёлтный фон, иконка - галка)
*/
void yon_ubl_status_box_render(char *text, BACKGROUND_IMAGE_TYPE type);
#ifdef __cplusplus
/**yon_ubl_header_setup(overlay, head, image, imag_path)
* [EN]
* Sets up header of app.
* [overlay] is overlay for app header;
* [head] is box of header, which connects to [overlay]
* [image] is header background image;
* [imag_path] is path of image, shown in [image]
* [RU]
* Настраивает заголовок приложения.
* [overlay] - оверлей заголовка приложения;
* [head] - шапка заголовка, присоединяемая к [overlay]
* [image] - виджет картинки для заднего фона;
* [imag_path] - путь до картинки, загружаемой в [image]
*/
#define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay.gobj()), GTK_WIDGET(head.gobj()), GTK_WIDGET(image.gobj()), (char *)imag_path)
#else
/**yon_ubl_header_setup(overlay, head, image, imag_path)
* [EN]
* Sets up header of app.
* [overlay] is overlay for app header;
* [head] is box of header, which connects to [overlay]
* [image] is header background image;
* [imag_path] is path of image, shown in [image]
* [RU]
* Настраивает заголовок приложения.
* [overlay] - оверлей заголовка приложения;
* [head] - шапка заголовка, присоединяемая к [overlay]
* [image] - виджет картинки для заднего фона;
* [imag_path] - путь до картинки, загружаемой в [image]
*/
#define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay), GTK_WIDGET(head), GTK_WIDGET(image), (char *)imag_path)
#define yon_ubl_header_setup_resource(overlay, head, image, imag_path) _yon_ubl_header_setup_resource(GTK_WIDGET(overlay), GTK_WIDGET(head), GTK_WIDGET(image), (char *)imag_path)
#endif
void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path);
void _yon_ubl_header_setup_resource(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path);
void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWidget *right_window, int socket_main_id, int socket_left_id, int socket_right_id);
#ifdef WEBKIT_FOUND
void yon_ubl_browser_window_open(char *link, char *browser_window_name);
#else
void yon_ubl_browser_window_open(char *link, char *browser_window_name);
#endif
#endif
#endif

@ -2,72 +2,91 @@
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-services"> <interface domain="ubl-settings-services">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<requires lib="vte-2.91" version="0.68"/>
<!-- interface-css-provider-path ubl-settings-services.css --> <!-- interface-css-provider-path ubl-settings-services.css -->
<object class="GtkImage" id="image8"> <object class="GtkAdjustment" id="adjustment1">
<property name="visible">True</property> <property name="upper">100</property>
<property name="can-focus">False</property> <property name="step-increment">1</property>
<property name="icon-name">emblem-synchronizing-symbolic</property> <property name="page-increment">10</property>
</object> </object>
<object class="GtkImage" id="image9"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property> <property name="icon-name">com.ublinux.ubl-settings-services.sync-symbolic</property>
</object> </object>
<object class="GtkApplicationWindow" id="TerminalWindow"> <object class="GtkWindow" id="MonitorWindow">
<property name="width-request">500</property> <property name="width-request">800</property>
<property name="height-request">350</property> <property name="height-request">600</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="modal">True</property> <property name="modal">True</property>
<property name="default-width">450</property> <property name="icon-name">com.ublinux.ubl-settings-usergroups</property>
<property name="default-height">-1</property>
<property name="icon-name">dialog-question-symbolic</property>
<child> <child>
<object class="GtkBox" id="TerminalHolder"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property> <property name="margin-start">5</property>
<property name="margin-end">5</property> <property name="margin-end">5</property>
<property name="margin-top">5</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="spacing">5</property>
<property name="spacing">10</property>
<child>
<placeholder/>
</child>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">30</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkButton" id="UpdateButton"> <object class="GtkButton" id="UpdateButton">
<property name="label" translatable="yes">Update service status</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image8</property> <property name="image">image1</property>
<style> <style>
<class name="button"/> <class name="thin"/>
</style> </style>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkButton" id="CancelButton"> <object class="VteTerminal" id="SystemTerminal">
<property name="label" translatable="yes">Close</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="hscroll-policy">natural</property>
<property name="image">image9</property> <property name="vadjustment">adjustment1</property>
<style> <property name="vscroll-policy">natural</property>
<class name="button"/> <property name="encoding">UTF-8</property>
</style> <property name="scrollback-lines">0</property>
<property name="scroll-on-keystroke">True</property>
<property name="scroll-on-output">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrollbar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="adjustment">adjustment1</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -77,16 +96,15 @@
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object> </object>
</child> </child>
<child type="titlebar"> <child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar"> <object class="GtkHeaderBar">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="show-close-button">True</property> <property name="show-close-button">True</property>
@ -94,7 +112,7 @@
<object class="GtkLabel" id="webHeaderNameLabel"> <object class="GtkLabel" id="webHeaderNameLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Services and processes systemd</property> <property name="label" translatable="yes">Services and processes - service information</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
</attributes> </attributes>

@ -46,24 +46,21 @@ background:transparent;
border-left-width:inherit; border-left-width:inherit;
border-right-width:inherit; border-right-width:inherit;
} }
.menuitemtop *{ .menuitemtop>*{
margin:2px 2px 0 2px; margin:2px 2px 0 2px;
padding-top:2px; padding: 3px 10px 3px 5px;
padding-bottom:2px;
/* padding: 5px 0px 3px 5px; */ /* padding: 5px 0px 3px 5px; */
border:transparent; border:transparent;
} }
.menuitemmiddle *{ .menuitemmiddle>*{
margin:0 2px 0 2px; margin:0 2px 0 2px;
padding-top:2px; padding: 3px 10px 3px 5px;
padding-bottom:2px;
/* padding: 3px 0px 3px 5px; */ /* padding: 3px 0px 3px 5px; */
border:transparent; border:transparent;
} }
.menuitembottom *{ .menuitembottom>*{
margin:0 2px 2px 2px; margin:0 2px 2px 2px;
padding-top:2px; padding: 3px 10px 3px 5px;
padding-bottom:2px;
/* padding: 3px 0px 5px 5px; */ /* padding: 3px 0px 5px 5px; */
} }
.menuitemtop:hover { .menuitemtop:hover {
@ -87,26 +84,23 @@ background:transparent;
border-right-width:inherit; border-right-width:inherit;
} }
.menuitemtop:hover* { .menuitemtop:hover>* {
margin:2px 2px 0 2px; margin:2px 2px 0 2px;
padding-top:2px; padding: 3px 10px 3px 5px;
padding-bottom:2px;
/* padding: 5px 0 3px 5px; */ /* padding: 5px 0 3px 5px; */
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;
} }
.menuitemmiddle:hover* { .menuitemmiddle:hover>* {
margin:0 2px 0px 2px; margin:0 2px 0px 2px;
padding-top:2px; padding: 3px 10px 3px 5px;
padding-bottom:2px;
/* padding: 3px 0px 3px 5px; */ /* padding: 3px 0px 3px 5px; */
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;
} }
.menuitembottom:hover* { .menuitembottom:hover>* {
margin:0 2px 2px 2px; margin:0 2px 2px 2px;
padding-top:2px; padding: 3px 10px 3px 5px;
padding-bottom:2px;
/* padding: 3px 0px 5px 5px; */ /* padding: 3px 0px 5px 5px; */
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;

@ -1,14 +1,14 @@
[Desktop Entry] [Desktop Entry]
Encoding=UTF-8 Encoding=UTF-8
Name=ubl-settings-services Name=Services and processes systemd
Name[ru]=Службы и процессы systemd Name[ru]=TEMPLATE
GenericName=ubl-settings-services GenericName=ubl-settings-TEMPLATE
GenericName[ru]=Службы и процессы systemd GenericName[ru]=TEMPLATE
Comment=ubl-settings-services Comment=System vervices and processes configuration
Comment[ru]=Настройка работы служб и процессов системы Comment[ru]=Приложение для TEMPLATE
Type=Application Type=Application
Exec=pkexec ubl-settings-services Exec=pkexec ubl-settings-TEMPLATE
Icon=com.ublinux.ubl-settings-services Icon=com.ublinux.ubl-settings-TEMPLATE
Terminal=false Terminal=false
X-XfcePluggable=true X-XfcePluggable=true
X-UBLPluggable=true X-UBLPluggable=true

File diff suppressed because it is too large Load Diff

@ -1,12 +1,12 @@
# Language translations for ubl-settings-services package. # Language translations for ubl-settings-TEMPLATE package.
# Copyright (C) 2022, UBTech LLC # Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-services package. # This file is distributed under the same license as the ubl-settings-TEMPLATE package.
# UBLinux Team <info@ublinux.com>, 2022 # UBLinux Team <info@ublinux.com>, 2022
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ubl-settings-services 1.0\n" "Project-Id-Version: ubl-settings-TEMPLATE 1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-22 16:12+0600\n" "POT-Creation-Date: 2023-05-22 16:12+0600\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
@ -22,11 +22,7 @@ msgid "Version:"
msgstr "" msgstr ""
#: source/ubl-strings.h:2 #: source/ubl-strings.h:2
msgid "ubl-settings-services version:" msgid "ubl-settings-TEMPLATE version:"
msgstr ""
#: source/ubl-strings.h:2 source/ubl-strings.h:4
msgid "Services and processes systemd"
msgstr "" msgstr ""
#: source/ubl-strings.h:2 #: source/ubl-strings.h:2
@ -69,8 +65,16 @@ msgstr ""
msgid "Lock global configration loading" msgid "Lock global configration loading"
msgstr "" msgstr ""
#: source/ubl-strings.h:2
msgid "Clear application configuration"
msgstr ""
#: source/ubl-strings.h:4
msgid "ubl-settings-TEMPLATE"
msgstr ""
#: source/ubl-strings.h:5 #: source/ubl-strings.h:5
msgid "System services and processes configuration" msgid "TEMPLATE configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:7 #: source/ubl-strings.h:7
@ -78,169 +82,105 @@ msgid "Operation succeeded"
msgstr "" msgstr ""
#: source/ubl-strings.h:8 #: source/ubl-strings.h:8
msgid "Nothing were chosen"
msgstr ""
#: source/ubl-strings.h:9
msgid "" msgid ""
"Warning! Application was launched without root - root-dependent actions are " "Warning! Application was launched without root - root-dependent actions are "
"locked" "locked"
msgstr "" msgstr ""
#: source/ubl-strings.h:10 #: source/ubl-strings.h:11
msgid "About" msgid "About"
msgstr "" msgstr ""
#: source/ubl-strings.h:11 #: source/ubl-strings.h:12
msgid "Documentation" msgid "Documentation"
msgstr "" msgstr ""
#: source/ubl-strings.h:13 #: source/ubl-strings.h:14
msgid "Save to local configuration" msgid "Save to local configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:14 #: source/ubl-strings.h:15
msgid "Save to global configuration" msgid "Save to global configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:15 #: source/ubl-strings.h:16
msgid "Save configuration" msgid "Save to global and local configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:16 #: source/ubl-strings.h:17
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: source/ubl-strings.h:18 #: source/ubl-strings.h:19
msgid "Load local configuration" msgid "Load local configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:19 #: source/ubl-strings.h:20
msgid "Load global configuration" msgid "Load global configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:20 #: source/ubl-strings.h:21
msgid "Load" msgid "Load"
msgstr "" msgstr ""
#: source/ubl-strings.h:22 #: source/ubl-strings.h:23
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: source/ubl-strings.h:24 #: source/ubl-strings.h:24
msgid "Would you like to read documentation in the Web?" msgid "Close"
msgstr "" msgstr ""
#: source/ubl-strings.h:25 #: source/ubl-strings.h:25
msgid "" msgid "Apply"
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
msgstr ""
#: source/ubl-strings.h:26
msgid "Always redirect to online documentation"
msgstr "" msgstr ""
#: source/ubl-strings.h:27 #: source/ubl-strings.h:27
msgid "Open documentation" msgid "Would you like to read documentation in the Web?"
msgstr "" msgstr ""
#: source/ubl-strings.h:28 #: source/ubl-strings.h:28
msgid "Project Home Page" msgid ""
"You will be redirected to documentation website, where documentation is\n"
"translated and supported by community."
msgstr "" msgstr ""
#: source/ubl-strings.h:29 #: source/ubl-strings.h:29
msgid "Nothing were chosen" msgid "Always redirect to online documentation"
msgstr "" msgstr ""
#: source/ubl-strings.h:32 #: source/ubl-strings.h:30
msgid "Global configuration loading succseeded." msgid "Open documentation"
msgstr ""
#: source/ubl-strings.h:31
msgid "Project Home Page"
msgstr "" msgstr ""
#: source/ubl-strings.h:33 #: source/ubl-strings.h:33
msgid "Local configuration loading succseeded." msgid "Global configuration loading succeeded."
msgstr "" msgstr ""
#: source/ubl-strings.h:34 #: source/ubl-strings.h:34
msgid "Config loading failed" msgid "Local configuration loading succeeded."
msgstr "" msgstr ""
#: source/ubl-strings.h:36 #: source/ubl-strings.h:35
msgid "Local and global configuration saving succseeded." msgid "Config loading failed"
msgstr "" msgstr ""
#: source/ubl-strings.h:37 #: source/ubl-strings.h:37
msgid "Global configuration saving succseeded." msgid "Local and global configuration saving succeeded."
msgstr "" msgstr ""
#: source/ubl-strings.h:38 #: source/ubl-strings.h:38
msgid "Local configuration saving succseeded." msgid "Global configuration saving succeeded."
msgstr ""
#: source/ubl-strings.h:40 source/ubl-strings.h:43
msgid "Autostart"
msgstr ""
#: source/ubl-strings.h:41
msgid "Autostop"
msgstr ""
#: source/ubl-strings.h:42
msgid "Block"
msgstr ""
#: source/ubl-strings.h:44
msgid "Launched"
msgstr ""
#: source/ubl-strings.h:45
msgid "Service"
msgstr ""
#: source/ubl-strings.h:46
msgid "Configuration in config file"
msgstr ""
#: source/ubl-strings.h:47
msgid "Configuration in system"
msgstr ""
#: source/ubl-strings.h:49
msgid "All"
msgstr ""
#: source/ubl-strings.h:50
msgid "Services"
msgstr ""
#: source/ubl-strings.h:51
msgid "Sockets"
msgstr ""
#: source/ubl-strings.h:52
msgid "Automatic launch"
msgstr ""
#: source/ubl-strings.h:53
msgid "Stopped in configuration"
msgstr ""
#: source/ubl-strings.h:54
msgid "Blocked in configuration"
msgstr ""
#: source/ubl-strings.h:55
msgid "All services"
msgstr ""
#: source/ubl-strings.h:56
msgid "System services only"
msgstr ""
#: source/ubl-strings.h:57
msgid "User services only"
msgstr ""
#: source/ubl-strings.h:59
msgid "Service configuration reload"
msgstr "" msgstr ""
#: source/ubl-strings.h:60 #: source/ubl-strings.h:39
msgid "Status" msgid "Local configuration saving succeeded."
msgstr "" msgstr ""

@ -1,12 +1,12 @@
# Russian translations for ubl-settings-services package. # Russian translations for ubl-settings-TEMPLATE package.
# Copyright (C) 2022, UBTech LLC # Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-services package. # This file is distributed under the same license as the ubl-settings-TEMPLATE package.
# UBLinux Team <info@ublinux.com>, 2022 # UBLinux Team <info@ublinux.com>, 2022
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ubl-settings-services 1.0\n" "Project-Id-Version: ubl-settings-TEMPLATE 1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-22 16:12+0600\n" "POT-Creation-Date: 2023-05-22 16:12+0600\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n" "PO-Revision-Date: 2023-01-01 00:00+0600\n"
@ -22,12 +22,8 @@ msgid "Version:"
msgstr "Версия:" msgstr "Версия:"
#: source/ubl-strings.h:2 #: source/ubl-strings.h:2
msgid "ubl-settings-services version:" msgid "ubl-settings-TEMPLATE version:"
msgstr "Версия ubl-settings-services: " msgstr "Версия ubl-settings-TEMPLATE: "
#: source/ubl-strings.h:2 source/ubl-strings.h:4
msgid "Services and processes systemd"
msgstr "Службы и процессы systemd"
#: source/ubl-strings.h:2 #: source/ubl-strings.h:2
msgid "Usage:" msgid "Usage:"
@ -69,15 +65,27 @@ msgstr "Блокировка сохранения глобальной конф
msgid "Lock global configration loading" msgid "Lock global configration loading"
msgstr "Блокировка загрузки глобальной конфигурации" msgstr "Блокировка загрузки глобальной конфигурации"
#: source/ubl-strings.h:2
msgid "Clear application configuration"
msgstr "Удалить конфигурацию приложения"
#: source/ubl-strings.h:4
msgid "ubl-settings-TEMPLATE"
msgstr "Настройки TEMPLATE"
#: source/ubl-strings.h:5 #: source/ubl-strings.h:5
msgid "System services and processes configuration" msgid "TEMPLATE configuration"
msgstr "Настройка работы служб и процессов системы" msgstr "Настройки TEMPLATE"
#: source/ubl-strings.h:7 #: source/ubl-strings.h:7
msgid "Operation succeeded" msgid "Operation succeeded"
msgstr "Операция завершена" msgstr "Операция завершена"
#: source/ubl-strings.h:8 #: source/ubl-strings.h:8
msgid "Nothing were chosen"
msgstr "Ничего не было выбрано"
#: source/ubl-strings.h:9
msgid "" msgid ""
"Warning! Application was launched without root - root-dependent actions are " "Warning! Application was launched without root - root-dependent actions are "
"locked" "locked"
@ -85,166 +93,98 @@ msgstr ""
"Внимание! Приложение было запущено без прав суперпользователя - действия, " "Внимание! Приложение было запущено без прав суперпользователя - действия, "
"требующие их наличия заблокированы" "требующие их наличия заблокированы"
#: source/ubl-strings.h:10 #: source/ubl-strings.h:11
msgid "About" msgid "About"
msgstr "О программе" msgstr "О программе"
#: source/ubl-strings.h:11 #: source/ubl-strings.h:12
msgid "Documentation" msgid "Documentation"
msgstr "Справка" msgstr "Справка"
#: source/ubl-strings.h:13 #: source/ubl-strings.h:14
msgid "Save to local configuration" msgid "Save to local configuration"
msgstr "Сохранить в локальную конфигурацию" msgstr "Сохранить в локальную конфигурацию"
#: source/ubl-strings.h:14 #: source/ubl-strings.h:15
msgid "Save to global configuration" msgid "Save to global configuration"
msgstr "Сохранить в глобальную конфигурацию" msgstr "Сохранить в глобальную конфигурацию"
#: source/ubl-strings.h:15
msgid "Save configuration"
msgstr "Сохранить конфигурацию"
#: source/ubl-strings.h:16 #: source/ubl-strings.h:16
msgid "Save to global and local configuration"
msgstr "Сохранить в глобальную и локальную конфигурацию"
#: source/ubl-strings.h:17
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
#: source/ubl-strings.h:18 #: source/ubl-strings.h:19
msgid "Load local configuration" msgid "Load local configuration"
msgstr "Загрузить локальную конфигуруцию" msgstr "Загрузить локальную конфигурацию"
#: source/ubl-strings.h:19 #: source/ubl-strings.h:20
msgid "Load global configuration" msgid "Load global configuration"
msgstr "Загрузить глобальную конфигурацию" msgstr "Загрузить глобальную конфигурацию"
#: source/ubl-strings.h:20 #: source/ubl-strings.h:21
msgid "Load" msgid "Load"
msgstr "Загрузить" msgstr "Загрузить"
#: source/ubl-strings.h:22 #: source/ubl-strings.h:23
msgid "Cancel" msgid "Cancel"
msgstr "Отмена" msgstr "Отмена"
#: source/ubl-strings.h:24 #: source/ubl-strings.h:24
msgid "Close"
msgstr "Закрыть"
#: source/ubl-strings.h:25
msgid "Apply"
msgstr "Применить"
#: source/ubl-strings.h:27
msgid "Would you like to read documentation in the Web?" msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?" msgstr "Вы хотите прочитать справку в Сети?"
#: source/ubl-strings.h:25 #: source/ubl-strings.h:28
msgid "" msgid ""
"You will be redirected to documentation website where documentation is\n" "You will be redirected to documentation website, where documentation is\n"
"translated and supported by community." "translated and supported by community."
msgstr "" msgstr ""
"Вы будете перенаправлены на сайт с документацией где страницы помощи\n" "Вы будете перенаправлены на сайт с документацией, где страницы помощи\n"
"переводятся и поддерживаются сообществом." "переводятся и поддерживаются сообществом."
#: source/ubl-strings.h:26 #: source/ubl-strings.h:29
msgid "Always redirect to online documentation" msgid "Always redirect to online documentation"
msgstr "Всегда перенаправлять" msgstr "Всегда перенаправлять"
#: source/ubl-strings.h:27 #: source/ubl-strings.h:30
msgid "Open documentation" msgid "Open documentation"
msgstr "Прочитать справку" msgstr "Прочитать справку"
#: source/ubl-strings.h:28 #: source/ubl-strings.h:31
msgid "Project Home Page" msgid "Project Home Page"
msgstr "Домашняя страница проекта" msgstr "Домашняя страница проекта"
#: source/ubl-strings.h:29 #: source/ubl-strings.h:33
msgid "Nothing were chosen" msgid "Global configuration loading succeeded."
msgstr "Ничего не было выбрано"
#: source/ubl-strings.h:32
msgid "Global configuration loading succseeded."
msgstr "Успешно загружена глобальная конфигурация" msgstr "Успешно загружена глобальная конфигурация"
#: source/ubl-strings.h:33 #: source/ubl-strings.h:34
msgid "Local configuration loading succseeded." msgid "Local configuration loading succeeded."
msgstr "Успешно загружена локальная конфигурация" msgstr "Успешно загружена локальная конфигурация"
#: source/ubl-strings.h:34 #: source/ubl-strings.h:35
msgid "Config loading failed" msgid "Config loading failed"
msgstr "" msgstr "Ошибка загрузки конфигурации"
#: source/ubl-strings.h:36
msgid "Local and global configuration saving succseeded."
msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/ubl-strings.h:37 #: source/ubl-strings.h:37
msgid "Global configuration saving succseeded." msgid "Local and global configuration saving succeeded."
msgstr "Успешно записана глобальная конфигурация" msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/ubl-strings.h:38 #: source/ubl-strings.h:38
msgid "Local configuration saving succseeded." msgid "Global configuration saving succeeded."
msgstr "Успешно записана локальная конфигурация" msgstr "Успешно записана глобальная конфигурация"
#: source/ubl-strings.h:40 source/ubl-strings.h:43
msgid "Autostart"
msgstr "Автостарт"
#: source/ubl-strings.h:41
msgid "Autostop"
msgstr "Автостоп"
#: source/ubl-strings.h:42
msgid "Block"
msgstr "Блокировать"
#: source/ubl-strings.h:44
msgid "Launched"
msgstr "Запущена"
#: source/ubl-strings.h:45
msgid "Service"
msgstr "Сервис"
#: source/ubl-strings.h:46
msgid "Configuration in config file"
msgstr "Настройка в конфигурации"
#: source/ubl-strings.h:47
msgid "Configuration in system"
msgstr "Настройка в системе"
#: source/ubl-strings.h:49
msgid "All"
msgstr "Все"
#: source/ubl-strings.h:50
msgid "Services"
msgstr "Сервисы"
#: source/ubl-strings.h:51
msgid "Sockets"
msgstr "Сокеты"
#: source/ubl-strings.h:52
msgid "Automatic launch"
msgstr "Автозапуск в конфигурации"
#: source/ubl-strings.h:53
msgid "Stopped in configuration"
msgstr "Остановленные в конфигурации"
#: source/ubl-strings.h:54
msgid "Blocked in configuration"
msgstr "Заблокированые в конфигурации"
#: source/ubl-strings.h:55
msgid "All services"
msgstr "Все сервисы"
#: source/ubl-strings.h:56
msgid "System services only"
msgstr "Только системные сервисы"
#: source/ubl-strings.h:57
msgid "User services only"
msgstr "Только сервисы пользователя"
#: source/ubl-strings.h:59
msgid "Service configuration reload"
msgstr "Перезагрузка конфигурации сервиса"
#: source/ubl-strings.h:60 #: source/ubl-strings.h:39
msgid "Status" msgid "Local configuration saving succeeded."
msgstr "Статус" msgstr "Успешно записана локальная конфигурация"
Loading…
Cancel
Save