Merge pull request 'master' (#8) from YanTheKaller/ubl-settings-services:master into master

Reviewed-on: #8
pull/128/head^2 v1.2
Dmitry Razumov 2 years ago
commit ba5a9d6522

4
.gitignore vendored

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

@ -24,6 +24,11 @@ init:
@echo "Initialize ..."; \
if [ -d ".git" ]; then \
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 \
LATEST_TAG="Development"; \
fi; \
@ -113,16 +118,28 @@ install: check uninstall
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"; \
done
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@cp ./com.ublinux.${PKGNAME}.policy ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy
@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 -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@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
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.checked.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/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.important-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.lookup-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/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; \
[ -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"

@ -7,6 +7,10 @@ In order to build ubl-settings-services you will need:
- C compiler
- GTK+ 3 & dependencies
- 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:
```sh

@ -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,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
id="svg2"
version="1.1"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
sodipodi:docname="com.ublinux.libublsettingsui-gtk3.important.svg"
width="24"
height="24"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<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>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1023"
id="namedview8"
showgrid="false"
inkscape:zoom="18.96875"
inkscape:cx="5.4827018"
inkscape:cy="9.3311367"
inkscape:current-layer="svg2"
inkscape:pagecheckerboard="0"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<path
id="path4136-2"
style="opacity:1;fill:#4d4d4d;fill-opacity:1"
d="M 11.292969,22.976562 A 11.000002,11 3.688344 0 1 1.0234375,11.292969 11.000002,11 3.688344 0 1 12.707031,1.0234375 11.000002,11 3.688344 0 1 22.976562,12.707031 11.000002,11 3.688344 0 1 11.292969,22.976562 Z M 11.996094,18 h 0.0078 C 12.556173,18 13,17.5561 13,17.003906 V 9.9960935 c 0,-0.552419 -0.443827,-0.996094 -0.996094,-0.996094 h -0.0078 C 11.443827,8.9999995 11,9.4436745 11,9.9960935 V 17.003906 C 11,17.5561 11.443827,18 11.996094,18 Z M 12,6.9999995 c 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 -0.554,0 -1,0.446 -1,1 0,0.554 0.446,1 1,1 z" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 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,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16px"
viewBox="0 0 16 16"
width="16px"
version="1.1"
id="svg8"
sodipodi:docname="com.ublinux.ubl-settings-services.lookup-symbolic.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
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">
<defs
id="defs12" />
<sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.359375"
inkscape:cx="-8.8913342"
inkscape:cy="-1.0563961"
inkscape:window-width="1920"
inkscape:window-height="1023"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<g
fill="#2e3436"
id="g6">
<path
d="M 2,0 C 1.449219,0 1,0.449219 1,1 v 14 c 0,0.550781 0.449219,1 1,1 h 8.437942 c 0.550781,0 1,-0.449219 1,-1 0,-0.550781 -0.449219,-1 -1,-1 H 3 V 2 h 7.585938 L 13,4.414062 V 12 c 0,0.550781 0.449219,1 1,1 0.550781,0 1,-0.449219 1,-1 V 4 C 15,3.734375 14.894531,3.480469 14.707031,3.292969 l -3,-3 C 11.519531,0.105469 11.265625,0 11,0 Z"
fill-rule="evenodd"
id="path4"
sodipodi:nodetypes="sssssssccccssssssss" />
</g>
<g
fill="#2e3436"
id="g6-7"
transform="matrix(0.55886012,0,0,0.55886012,5.204732,6.5543801)">
<path
d="M 10.600418,9.6980908 C 9.7879179,9.8426218 8.8328458,10.316309 9.556877,11.037281 l 4.95693,5.29613 c 1.144435,1.201619 2.826056,-0.640864 1.68162,-1.842483 l -4.95693,-5.29613 C 10.953555,8.8843791 10.928542,9.6316848 10.600418,9.6980908 Z"
id="path2"
sodipodi:nodetypes="cccccc" />
<path
d="M 6.5,0 C 2.921875,0 0,2.921875 0,6.5 0,10.078125 2.921875,12.996094 6.5,12.996094 10.078125,12.996094 13,10.078125 13,6.5 13,2.921875 10.078125,0 6.5,0 Z m 0,2 C 8.996094,2 11,4.003906 11,6.5 11,8.996094 8.996094,10.996094 6.5,10.996094 4.003906,10.996094 2,8.996094 2,6.5 2,4.003906 4.003906,2 6.5,2 Z m 0,0"
id="path4-5" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -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)
option(WEBKIT_FOUND "No" OFF)
if(WEBKIT_LIBRARIES_FOUND)
option(WEBKIT_FOUND "Yes" ON)
PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
include_directories(${WEBKIT_INCLUDE_DIRS})
link_directories(${WEBKIT_LIBRARY_DIRS})
add_definitions(${WEBKIT_CFLAGS_OTHER})
add_definitions(-DWEBKIT_FOUND)
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_XML gresource.xml)
@ -62,9 +57,9 @@ add_custom_target(
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_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 \
add_definitions(-DVTE_INCLUDE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
-O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection")
@ -74,16 +69,17 @@ set(SOURCE_FILES
ubl-settings-services.c
ubl-settings-services.h
ubl-strings.h
ubl-utils.h
ubl-utils.c
${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h
)
set(LIBRARIES
${GTK_LIBRARIES}
${WEBKIT_LIBRARIES}
${VTE291_LIBRARIES}
pthread)
${UTILS_LIBRARIES}
${VTE291_LIBRARIES}
pthread
ublsettings
ublsettings-gtk3
ublsettingsui-gtk3)
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,52 @@
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include "ubl-utils.h"
#include <locale.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include <locale.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <libintl.h>
#include <getopt.h>
#include <libintl.h>
#include <getopt.h>
#include <libintl.h>
#include "../compile/ubl-cmake.h"
#include <vte-2.91/vte/vte.h>
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
#include "ubl-strings.h"
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-services"
#define _(String) gettext(String)
#include <vte/vte.h>
#include <libublsettings.h>
#include <libublsettings-gtk3.h>
#include <libublsettingsui-gtk3.h>
#include <time.h>
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
#include "ubl-strings.h"
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-services"
#define _(String) gettext(String)
#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 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 terminal_window_path "/com/ublinux/ui/ubl-settings-services-terminal.glade"
#define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-services"
#define load_config_local_command "ubconfig --source system get config SERVICESSTART SERVICESNOSTART SERVICESMASK"
#define CssPath "/com/ublinux/css/ubl-settings-services.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
#define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-services"
#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_sockets_command "systemctl list-sockets -all |grep -vE \"LISTEN|sockets listed\"| sed -e 's/ */:/g'"
#define status_command "systemctl status --no-pager "
typedef char* string;
#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_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 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)
#define service_disable_command(target) yon_char_append("systemctl disable --no-pager ",target)
#define service_info_command(target) yon_char_append("systemctl status -l --no-pager ",target)
typedef char* string;
string version_application;
char *local;
typedef struct {
int always_open_documentation;
int win_pos_x;
int win_pos_y;
int win_width;
int win_height;
char *local;
typedef struct {
// Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT {
int socket_id;
int load_socket_id;
int save_socket_id;
@ -57,10 +56,19 @@ typedef struct {
int lock_save_global;
int lock_load_global;
config_str loaded_config;
GtkListStore *list;
gboolean rmb_clicked;
} config;
int load_mode;
int always_open_documentation;
// } 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 {
GtkWidget *Menu;
@ -72,10 +80,11 @@ typedef struct {
GtkWidget *MenuReloadConfig;
GtkWidget *MenuStatus;
} menu_obj;
typedef struct {
typedef struct {
// Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT {
GtkWidget *Window;
GtkWidget *HatLabel;
GtkWidget *HeadLabel;
GtkWidget *PlugBox;
GtkWidget *HeadOverlay;
@ -88,52 +97,147 @@ typedef struct {
GtkWidget *StatusIcon;
GtkWidget *StatusLabel;
GtkWidget *SaveLabel;
GtkWidget *SaveMenuItem;
GtkWidget *SaveGlobalMenuItem;
GtkWidget *SaveLocalMenuItem;
GtkWidget *RightBox;
GtkWidget *LoadLabel;
GtkWidget *LoadGlobalMenuItem;
GtkWidget *LoadLocalMenuItem;
GtkWidget *LeftBox;
GtkWidget *ChosenNameLabel;
GtkWidget *ChosenDescriptionLabel;
GtkWidget *DocumentationMenuItem;
GtkWidget *AboutMenuItem;
GtkWidget *ActionsPopover;
GtkWidget *FirstRowNamesTree;
GtkWidget *MainTree;
GtkTreeViewColumn *ServiceTreeColumn;
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 {
char *name;
int loaded;
int active;
char *description;
} service_info;
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 {
GtkWidget *Window;
GtkWidget *UpdateButton;
GtkWidget *SystemTerminal;
GtkWidget *webHeaderNameLabel;
char *target;
} terminal_window;
void on_config_local_load(GtkWidget *self,main_window *widgets);
void on_config_global_load(GtkWidget *self,main_window *widgets);
void on_config_global_local_save();
void on_config_local_save();
void on_config_global_save();
void yon_interface_update(main_window *widgets);
GtkWidget *yon_menu_button_create(char *icon_name, char *text);
void on_column_resize(GtkTreeViewColumn *self,GParamSpec *pspec,main_window *widgets);
gboolean on_context_menu_open(GtkWidget *self,GdkEventButton *event, main_window *widgets);
GtkWidget *yon_menu_separator_create();
void on_config_autostart_clicked();
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 *yon_unthreaded_config_load(void *widgets);
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;
GtkWidget *HeaderText;
GtkWidget *InfoText;
GtkWidget *AlwaysOpenCheck;
gboolean on_stopped_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
GtkWidget *CloseButton;
GtkWidget *AcceptButton;
} documentation_confirmation_window;
gboolean on_blocked_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
terminal_window *yon_terminal_window_new();
void yon_config_main_clean();
main_window *setup_window();
void on_service_update(GtkWidget *self, terminal_window* window);

@ -1,60 +1,49 @@
#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",TITLE_LABEL,"\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_INFO_LABEL _("System services and processes configuration")
#define SERVICE_INFO_TITLE_LABEL _("Services and processes - service information")
#define SUCCESS_LABEL _("Operation succeeded")
#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 CONFIG_CONFIGURATION_LABEL _("Configure in configuration")
#define AUTOSTART_LABEL _("Autostart")
#define AUTOSTOP_LABEL _("Autostop")
#define BLOCK_LABEL _("Block")
#define SYSTEM_CONFIGURATION_LABEL _("Configure in system")
#define LAUNCHED_LABEL _("Launched")
#define SERVICE_RELOAD_LABEL _("Reload")
#define SHOW_STATUS_LABEL _("Show status")
#define UPDATE_LABEL _("Update")
#define CANCEL_LABEL _("Cancel")
#define ALL_SERIVCES_LABEL _("All services")
#define SYSTEM_SERVICES_LABEL _("System services only")
#define USER_SERVICES_LABEL _("User services only")
#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 ALL_LABEL _("All")
#define SERVICES_LABEL _("Services")
#define SOCKETS_LABEL _("Sockets")
#define AUTOLAUNCH_CONFIG_LABEL _("Autolaunch in configuration")
#define STOPPED_CONFIG_LABEL _("Stopped in configuration")
#define BLOCKED_CONFIG_LABEL _("Blocked in configuration")
#define AUTOSTART_TOGGLE_LABEL _("Toggle autostart at configuration")
#define AUTOSTOP_TOGGLE_LABEL _("Toggle autostop at configuration")
#define BLOCK_TOGGLE_LABEL _("Toggle service blocking at configuration")
#define SYSTEM_AUTOSTART_TOGGLE_LABEL _("Toggle autostart at system")
#define SYSTEM_LAUNCH_TOGGLE_LABEL _("Launch service")
#define CHECKSTATUS_LABEL _("Check service status")
#define LOG_LABEL _("Check service log")
#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 SERVICE_LABEL _("Service:")
#define DESCRIPTION_LABEL _("Description:")
#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 CONFIGURE_CONFIGURATION_LABEL _("Configure in configuration")
#define CONFIGURE_SYSTEM_LABEL _("Configure in system")
#define SERVICE_NAME_LABEL _("Service")
#define AUTOSTART_LABEL _("Autostart")
#define AUTOSTOP_LABEL _("Autostop")
#define BLOCK_LABEL _("Block")
#define AUTOSTART_LABEL _("Autostart")
#define LAUNCHED_LABEL _("Launched")
#define SERVICE_LABEL _("Service")
#define CONFIG_CONFIGURATION_LABEL _("Configuration in config file")
#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 LIST_LOAD_LABEL _("Service list is loading")
#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,92 @@
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-services">
<requires lib="gtk+" version="3.24"/>
<requires lib="vte-2.91" version="0.68"/>
<!-- interface-css-provider-path ubl-settings-services.css -->
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-synchronizing-symbolic</property>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkImage" id="image9">
<object class="GtkImage" id="image1">
<property name="visible">True</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 class="GtkApplicationWindow" id="TerminalWindow">
<property name="width-request">500</property>
<property name="height-request">350</property>
<object class="GtkWindow" id="MonitorWindow">
<property name="width-request">800</property>
<property name="height-request">600</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="default-width">450</property>
<property name="default-height">-1</property>
<property name="icon-name">dialog-question-symbolic</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups</property>
<child>
<object class="GtkBox" id="TerminalHolder">
<object class="GtkBox">
<property name="visible">True</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-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<child>
<placeholder/>
</child>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">30</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="UpdateButton">
<property name="label" translatable="yes">Update service status</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image8</property>
<property name="tooltip-text" translatable="yes">Update</property>
<property name="image">image1</property>
<style>
<class name="button"/>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</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>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Close</property>
<object class="VteTerminal" id="SystemTerminal">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image9</property>
<style>
<class name="button"/>
</style>
<property name="hscroll-policy">natural</property>
<property name="vadjustment">adjustment1</property>
<property name="vscroll-policy">natural</property>
<property name="encoding">UTF-8</property>
<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>
<packing>
<property name="expand">False</property>
@ -77,16 +97,15 @@
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
@ -94,7 +113,7 @@
<object class="GtkLabel" id="webHeaderNameLabel">
<property name="visible">True</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>
<attribute name="weight" value="bold"/>
</attributes>

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

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

File diff suppressed because it is too large Load Diff

@ -25,10 +25,6 @@ msgstr ""
msgid "ubl-settings-services version:"
msgstr ""
#: source/ubl-strings.h:2 source/ubl-strings.h:4
msgid "Services and processes systemd"
msgstr ""
#: source/ubl-strings.h:2
msgid "Usage:"
msgstr ""
@ -69,178 +65,138 @@ msgstr ""
msgid "Lock global configration loading"
msgstr ""
#: source/ubl-strings.h:2
msgid "Reset application settings"
msgstr ""
#: source/ubl-strings.h:4
msgid "Services and processes systemd"
msgstr ""
#: source/ubl-strings.h:5
msgid "System services and processes configuration"
msgstr ""
#: source/ubl-strings.h:7
msgid "Operation succeeded"
#: source/ubl-strings.h:6
msgid "Services and processes - service information"
msgstr ""
#: source/ubl-strings.h:8
msgid ""
"Warning! Application was launched without root - root-dependent actions are "
"locked"
#: source/ubl-strings.h:8 source/ubl-strings.h:40
msgid "Configure in configuration"
msgstr ""
#: source/ubl-strings.h:10
msgid "About"
#: source/ubl-strings.h:9 source/ubl-strings.h:44
msgid "Autostart"
msgstr ""
#: source/ubl-strings.h:11
msgid "Documentation"
#: source/ubl-strings.h:10 source/ubl-strings.h:45
msgid "Autostop"
msgstr ""
#: source/ubl-strings.h:11 source/ubl-strings.h:46
msgid "Block"
msgstr ""
#: source/ubl-strings.h:13
msgid "Save to local configuration"
#: source/ubl-strings.h:12 source/ubl-strings.h:41
msgid "Configure in system"
msgstr ""
#: source/ubl-strings.h:13 source/ubl-strings.h:47
msgid "Launched"
msgstr ""
#: source/ubl-strings.h:14
msgid "Save to global configuration"
msgid "Reload"
msgstr ""
#: source/ubl-strings.h:15
msgid "Save configuration"
msgid "Show status"
msgstr ""
#: source/ubl-strings.h:16
msgid "Save"
msgid "Update"
msgstr ""
#: source/ubl-strings.h:18
msgid "Load local configuration"
msgid "All services"
msgstr ""
#: source/ubl-strings.h:19
msgid "Load global configuration"
msgid "System services only"
msgstr ""
#: source/ubl-strings.h:20
msgid "Load"
msgid "User services only"
msgstr ""
#: source/ubl-strings.h:22
msgid "Cancel"
msgid "All"
msgstr ""
#: source/ubl-strings.h:23
msgid "Services"
msgstr ""
#: source/ubl-strings.h:24
msgid "Would you like to read documentation in the Web?"
msgid "Sockets"
msgstr ""
#: source/ubl-strings.h:25
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
msgid "Autolaunch in configuration"
msgstr ""
#: source/ubl-strings.h:26
msgid "Always redirect to online documentation"
msgid "Stopped in configuration"
msgstr ""
#: source/ubl-strings.h:27
msgid "Open documentation"
msgid "Blocked in configuration"
msgstr ""
#: source/ubl-strings.h:28
msgid "Project Home Page"
#: source/ubl-strings.h:29
msgid "Toggle autostart at configuration"
msgstr ""
#: source/ubl-strings.h:29
msgid "Nothing were chosen"
#: source/ubl-strings.h:30
msgid "Toggle autostop at configuration"
msgstr ""
#: source/ubl-strings.h:31
msgid "Toggle service blocking at configuration"
msgstr ""
#: source/ubl-strings.h:32
msgid "Global configuration loading succseeded."
msgid "Toggle autostart at system"
msgstr ""
#: source/ubl-strings.h:33
msgid "Local configuration loading succseeded."
msgid "Launch service"
msgstr ""
#: source/ubl-strings.h:34
msgid "Config loading failed"
msgid "Check service status"
msgstr ""
#: source/ubl-strings.h:36
msgid "Local and global configuration saving succseeded."
#: source/ubl-strings.h:35
msgid "Check service log"
msgstr ""
#: source/ubl-strings.h:37
msgid "Global configuration saving succseeded."
msgid "Service:"
msgstr ""
#: source/ubl-strings.h:38
msgid "Local configuration saving succseeded."
msgstr ""
#: source/ubl-strings.h:40 source/ubl-strings.h:43
msgid "Autostart"
msgstr ""
#: source/ubl-strings.h:41
msgid "Autostop"
msgid "Description:"
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"
#: source/ubl-strings.h:48
msgid "Service list is loading"
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
msgid "Status"
msgstr ""

@ -25,10 +25,6 @@ msgstr "Версия:"
msgid "ubl-settings-services version:"
msgstr "Версия ubl-settings-services: "
#: source/ubl-strings.h:2 source/ubl-strings.h:4
msgid "Services and processes systemd"
msgstr "Службы и процессы systemd"
#: source/ubl-strings.h:2
msgid "Usage:"
msgstr "Использование:"
@ -69,182 +65,139 @@ msgstr "Блокировка сохранения глобальной конф
msgid "Lock global configration loading"
msgstr "Блокировка загрузки глобальной конфигурации"
#: source/ubl-strings.h:2
msgid "Reset application settings"
msgstr "Сбросить настройки утилиты"
#: source/ubl-strings.h:4
msgid "Services and processes systemd"
msgstr "Сервисы и процессы systemd"
#: source/ubl-strings.h:5
msgid "System services and processes configuration"
msgstr "Настройка работы служб и процессов системы"
#: source/ubl-strings.h:7
msgid "Operation succeeded"
msgstr "Операция завершена"
#: source/ubl-strings.h:6
msgid "Services and processes - service information"
msgstr "Сервисы и процессы - статус"
#: source/ubl-strings.h:8
msgid ""
"Warning! Application was launched without root - root-dependent actions are "
"locked"
msgstr ""
"Внимание! Приложение было запущено без прав суперпользователя - действия, "
"требующие их наличия заблокированы"
#: source/ubl-strings.h:8 source/ubl-strings.h:40
msgid "Configure in configuration"
msgstr "Настройка в конфигурации"
#: source/ubl-strings.h:10
msgid "About"
msgstr "О программе"
#: source/ubl-strings.h:9 source/ubl-strings.h:44
msgid "Autostart"
msgstr "Автостарт"
#: source/ubl-strings.h:11
msgid "Documentation"
msgstr "Справка"
#: source/ubl-strings.h:10 source/ubl-strings.h:45
msgid "Autostop"
msgstr "Автостоп"
#: source/ubl-strings.h:11 source/ubl-strings.h:46
msgid "Block"
msgstr "Блокировать"
#: source/ubl-strings.h:13
msgid "Save to local configuration"
msgstr "Сохранить в локальную конфигурацию"
#: source/ubl-strings.h:12 source/ubl-strings.h:41
msgid "Configure in system"
msgstr "Настройка в системе"
#: source/ubl-strings.h:13 source/ubl-strings.h:47
msgid "Launched"
msgstr "Запущено"
#: source/ubl-strings.h:14
msgid "Save to global configuration"
msgstr "Сохранить в глобальную конфигурацию"
msgid "Reload"
msgstr "Перезагрузить"
#: source/ubl-strings.h:15
msgid "Save configuration"
msgstr "Сохранить конфигурацию"
msgid "Show status"
msgstr "Показать статус"
#: source/ubl-strings.h:16
msgid "Save"
msgstr "Сохранить"
msgid "Update"
msgstr "Обновить"
#: source/ubl-strings.h:18
msgid "Load local configuration"
msgstr "Загрузить локальную конфигуруцию"
msgid "All services"
msgstr "Все сервисы"
#: source/ubl-strings.h:19
msgid "Load global configuration"
msgstr "Загрузить глобальную конфигурацию"
msgid "System services only"
msgstr "Только системные сервисы"
#: source/ubl-strings.h:20
msgid "Load"
msgstr "Загрузить"
msgid "User services only"
msgstr "Только сервисы пользователя"
#: source/ubl-strings.h:22
msgid "Cancel"
msgstr "Отмена"
msgid "All"
msgstr "Все"
#: source/ubl-strings.h:23
msgid "Services"
msgstr "Сервисы"
#: source/ubl-strings.h:24
msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?"
msgid "Sockets"
msgstr "Сокеты"
#: source/ubl-strings.h:25
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
msgstr ""
"Вы будете перенаправлены на сайт с документацией где страницы помощи\n"
"переводятся и поддерживаются сообществом."
msgid "Autolaunch in configuration"
msgstr "Автозапуск в конфигурации"
#: source/ubl-strings.h:26
msgid "Always redirect to online documentation"
msgstr "Всегда перенаправлять"
msgid "Stopped in configuration"
msgstr "Остановлено в конфигурации"
#: source/ubl-strings.h:27
msgid "Open documentation"
msgstr "Прочитать справку"
#: source/ubl-strings.h:28
msgid "Project Home Page"
msgstr "Домашняя страница проекта"
msgid "Blocked in configuration"
msgstr "Заблокированные в конфигурации"
#: source/ubl-strings.h:29
msgid "Nothing were chosen"
msgstr "Ничего не было выбрано"
msgid "Toggle autostart at configuration"
msgstr "Переключить автозапуск в конфигурации"
#: source/ubl-strings.h:30
msgid "Toggle autostop at configuration"
msgstr "Переключить автостоп в конфигурации"
#: source/ubl-strings.h:31
msgid "Toggle service blocking at configuration"
msgstr "Переключить блокирование в конфигурации"
#: source/ubl-strings.h:32
msgid "Global configuration loading succseeded."
msgstr "Успешно загружена глобальная конфигурация"
msgid "Toggle autostart at system"
msgstr "Переключить автозапуск в системе"
#: source/ubl-strings.h:33
msgid "Local configuration loading succseeded."
msgstr "Успешно загружена локальная конфигурация"
msgid "Launch service"
msgstr "Запустить сервис"
#: source/ubl-strings.h:34
msgid "Config loading failed"
msgstr ""
msgid "Check service status"
msgstr "Проверить статус сервиса"
#: source/ubl-strings.h:36
msgid "Local and global configuration saving succseeded."
msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/ubl-strings.h:35
msgid "Check service log"
msgstr "Открыть лог сервиса"
#: source/ubl-strings.h:37
msgid "Global configuration saving succseeded."
msgstr "Успешно записана глобальная конфигурация"
msgid "Service:"
msgstr "Сервис:"
#: source/ubl-strings.h:38
msgid "Local configuration saving succseeded."
msgstr "Успешно записана локальная конфигурация"
#: source/ubl-strings.h:40 source/ubl-strings.h:43
msgid "Autostart"
msgstr "Автостарт"
#: source/ubl-strings.h:41
msgid "Autostop"
msgstr "Автостоп"
#, fuzzy
msgid "Description:"
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:48
msgid "Service list is loading"
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
msgid "Status"
msgstr "Статус"

Loading…
Cancel
Save