Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:16.0:Staging:C
xscreensaver
xscreensaver-desktops-generate.sh
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xscreensaver-desktops-generate.sh of Package xscreensaver
#!/bin/bash # Provided an xml files as arguments, generates a desktop file. # 2008-2012 Tormod Volden # 2015 Sorokin Alexei # Poor man's xml parser "can i haz xml purrser". get_xml_option () { file="$1" tag="$2" option="$3" < "$file" sed -n '/\<'$tag' /s@.* '$option'="\([^"]*\)".*@\1@p' } get_xml_entity () { file="$1" tag="$2" < "$file" sed -e ':a; /<'$tag'/N;s/\n/ /; ta' | sed -ne 's/.*<'$tag'> *\(.*\)<\/'$tag'>.*/\1/p' } extract_entries () { export XML="$1" export XMLNAME="$(get_xml_option "$XML" 'screensaver' 'name')" export XMLARG="$(get_xml_option "$XML" 'command' 'arg' | sed -e ':a; N; s/\n/ /; ta')" export XMLEXE="$XMLNAME $XMLARG" export XMLLABEL="$(get_xml_option "$XML" 'screensaver' '_label')" export XMLGL="$(get_xml_option "$XML" 'screensaver' 'gl')" # Delete trailing spaces and years. export XMLDES="$(get_xml_entity "$XML" '_description' | sed -e 's/ */ /g; s/[;,.] [0-9;,. ]*$/./')" # Only get first part of first paragraph. export SHORTDES="$(echo "$XMLDES" | sed -e 's/[.:!(].*/./')" } OPTIND=1 while getopts "hv" opt; do case "$opt" in h) echo -e "Usage:\n $(basename $0) [-hvV] XML-DIR DESKTOPS-DIR" exit 0 ;; v) echo "$(basename $0) 0.1" ;; esac done shift $((OPTIND-1)) if [[ "$1" == "--" ]]; then shift 1 fi if [[ -z "$1" ]]; then echo "$(basename $0): xscreensaver hack XML files directory is not specified." >&2 exit 1 fi if [ -z "$1" ] || [ ! -d "$1" ] || [ ! -r "$1" ]; then echo "$(basename $0): \`$1' is not a readable directory." >&2 exit 1 elif [ -z "$2" ] || [ ! -d "$2" ]; then echo "$(basename $0): \`$2' is not a directory." >&2 exit 1 fi ls "$1" | grep '\.xml$' | while read file; do extract_entries "$1/$file" cat > "$2/$(basename "$1/$file" .xml).desktop" <<- EOF [Desktop Entry] Name=$XMLLABEL Comment=$XMLDES Exec=$XMLEXE TryExec=$XMLNAME StartupNotify=false Terminal=false Type=Application Categories=Screensaver; OnlyShowIn=MATE; EOF done
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor