Hello community, here is the log from the commit of package dex for openSUSE:Factory checked in at 2020-09-01 20:09:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dex (Old) and /work/SRC/openSUSE:Factory/.dex.new.3399 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dex" Tue Sep 1 20:09:15 2020 rev:2 rq:830875 version:0.9.0 Changes: -------- --- /work/SRC/openSUSE:Factory/dex/dex.changes 2017-01-24 10:33:05.285063223 +0100 +++ /work/SRC/openSUSE:Factory/.dex.new.3399/dex.changes 2020-09-01 20:09:54.140663521 +0200 @@ -1,0 +2,17 @@ +Mon Aug 31 13:22:44 UTC 2020 - Dirk Mueller <[email protected]> + +- update to 0.9.0: + - Pass environment to sub processes + - Add -s switch to specify the search paths (thanks to Johannes Löthberg) + - Add support for KDE's proprietary Service type (#7 and #28, thanks to + Sébastien Luttringer and Konfekt) + - Mark clean target PHONY + - Switch to RST for the README and manpaeg + - Ignore backslash in comments (#8, thanks to nanouck) + - Ignore missing name for Type=Service entries (#28, thanks to Konfekt) + - add force to clean target (#25, thanks to Johannes Löthberg) + - Turn utf-8 string into Unicode string literal (#23, thanks to Johannes + - Fix error converting man page + - Print nice error message when target directory doesn't exist (#31, thanks to + +------------------------------------------------------------------- Old: ---- dex-0.7.tar.gz New: ---- dex-0.9.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dex.spec ++++++ --- /var/tmp/diff_new_pack.SeSCth/_old 2020-09-01 20:09:54.796663828 +0200 +++ /var/tmp/diff_new_pack.SeSCth/_new 2020-09-01 20:09:54.800663830 +0200 @@ -1,7 +1,7 @@ # # spec file for package dex # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,17 +12,17 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: dex -Version: 0.7 +Version: 0.9.0 Release: 0 Summary: DesktopEntry Execution -License: GPL-3.0+ +License: GPL-3.0-or-later Group: System/X11/Utilities -Url: https://github.com/jceb/dex +URL: https://github.com/jceb/dex Source: https://github.com/jceb/dex/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz BuildRequires: python3-Sphinx Requires: python3 ++++++ dex-0.7.tar.gz -> dex-0.9.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dex-0.7/CHANGELOG.md new/dex-0.9.0/CHANGELOG.md --- old/dex-0.7/CHANGELOG.md 1970-01-01 01:00:00.000000000 +0100 +++ new/dex-0.9.0/CHANGELOG.md 2020-06-13 20:53:27.000000000 +0200 @@ -0,0 +1,23 @@ +# Change Log +All notable changes to this project will be documented in this file. + +## [0.8.0] - 2017-06-18 +### Added +- Pass environment to sub processes +- Add -s switch to specify the search paths (thanks to Johannes Löthberg) +- Add support for KDE's proprietary Service type (#7 and #28, thanks to + Sébastien Luttringer and Konfekt) + +### Changed +- Mark clean target PHONY +- Switch to RST for the README and manpaeg +- Ignore backslash in comments (#8, thanks to nanouck) +- Ignore missing name for Type=Service entries (#28, thanks to Konfekt) + +### Fixed +- add force to clean target (#25, thanks to Johannes Löthberg) +- Turn utf-8 string into Unicode string literal (#23, thanks to Johannes + Löthberg) +- Fix error converting man page +- Print nice error message when target directory doesn't exist (#31, thanks to + @lasers) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dex-0.7/Makefile new/dex-0.9.0/Makefile --- old/dex-0.7/Makefile 2013-11-13 22:43:01.000000000 +0100 +++ new/dex-0.9.0/Makefile 2020-06-13 20:53:27.000000000 +0200 @@ -3,25 +3,28 @@ DOCPREFIX = $(PREFIX)/share/doc/$(NAME) MANPREFIX = $(PREFIX)/man VERSION = $(shell git tag | tail -n 1) -TAG = dex-$(VERSION) +TAG = $(NAME)-$(VERSION) -build: +build: dex.1 -install: dex dex.1 README LICENSE +dex.1: man/dex.rst + @echo building the manpage in man/ + @sphinx-build -b man -D version=$(TAG) -E man . $+ + +install: dex dex.1 README.rst LICENSE @echo installing executable file to $(DESTDIR)$(PREFIX)/bin @mkdir -p $(DESTDIR)$(PREFIX)/bin - @install -m 0755 $< $(DESTDIR)$(PREFIX)/bin/ + @install -m 0755 $< $(DESTDIR)$(PREFIX)/bin/$(NAME) @echo installing docs to $(DESTDIR)$(DOCPREFIX) @mkdir -p $(DESTDIR)$(DOCPREFIX) - @install -m 0644 -t $(DESTDIR)$(DOCPREFIX)/ README LICENSE + @install -m 0644 -t $(DESTDIR)$(DOCPREFIX)/ README.rst LICENSE @echo installing manual page to $(DESTDIR)$(MANPREFIX)/man1 @mkdir -p $(DESTDIR)$(MANPREFIX)/man1 - @install -m 0644 -t $(DESTDIR)$(MANPREFIX)/man1 dex.1 - @sed -i -e "s/VERSION/$(VERSION)/g" $(DESTDIR)$(MANPREFIX)/man1/dex.1 + @install -m 0644 dex.1 $(DESTDIR)$(MANPREFIX)/man1/$(NAME).1 tgz: source -source: dex dex.1 README LICENSE Makefile +source: dex dex.1 README.rst LICENSE Makefile CHANGELOG.md @echo "Creating source package: $(TAG).tar.gz" @mkdir $(TAG) @cp -t $(TAG) $+ @@ -29,6 +32,7 @@ @rm -rf $(TAG) clean: - @rm $(TAG).tar.gz + @rm -f $(TAG).tar.gz + @rm -f dex.1 -.PHONY: build install tgz source +.PHONY: build install tgz source clean diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dex-0.7/README new/dex-0.9.0/README --- old/dex-0.7/README 2013-11-13 22:43:01.000000000 +0100 +++ new/dex-0.9.0/README 1970-01-01 01:00:00.000000000 +0100 @@ -1,51 +0,0 @@ -usage: dex [options] [DesktopEntryFile [DesktopEntryFile ...]] - -dex, DesktopEntry Execution, is a program to generate and execute DesktopEntry -files of the type Application - -positional arguments: - files DesktopEntry files - -optional arguments: - -h, --help show this help message and exit - --test perform a self-test - -v, --verbose verbose output - -V, --version display version information - -run: - -a, --autostart autostart programs - -d, --dry-run dry run, don't execute any command - -e ENVIRONMENT, --environment ENVIRONMENT - specify the Desktop Environment an autostart should be - performed for; works only in combination with - --autostart - -create: - -c CREATE [CREATE ...], --create CREATE [CREATE ...] - create a DesktopEntry file for the given program. If a - second argument is provided it's taken as output - filename or written to stdout (filname: -). By default - a new file with the postfix .desktop is created - -t TARGETDIR, --target-directory TARGETDIR - create files in target directory - -Example usage: list autostart programs: dex -ad - -Examples: -Perform an autostart/execute all programs in the autostart folders. - dex -a - -Preview the programs would be executed in a regular autostart. - dex -ad - -Preview the programs would be executed in a GNOME specific autostart. - dex -ad -e GNOME - -Create a DesktopEntry for a program in the current directory. - dex -c /usr/bin/skype - -Create a DesktopEntry for a programs in autostart directroy. - dex -t ~/.config/autostart -c /usr/bin/skype /usr/bin/nm-applet - -Execute a single program from command line and enable verbose output. - dex -v skype.desktop diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dex-0.7/README.rst new/dex-0.9.0/README.rst --- old/dex-0.7/README.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/dex-0.9.0/README.rst 2020-06-13 20:53:27.000000000 +0200 @@ -0,0 +1,164 @@ +dex +=== + +Synopsis +-------- + +**dex** [*options*] [*DesktopEntryFile*]... + +Description +----------- + +``dex``, DesktopEntry Execution, is a program to generate and execute DesktopEntry files of the Application type. + +Options +------- + ++------------------------------------+------------------------------------------------------------+ +| Option | Description | ++====================================+============================================================+ +| -h, --help | Show a help message and exit | ++------------------------------------+------------------------------------------------------------+ +| -a, --autostart | Autostart programs | ++------------------------------------+------------------------------------------------------------+ +| -c, --create PATH | Create a DesktopEntry file for the program at the given | +| | path. An optional second argument is used to specify the | +| | filename of the created DesktopEntry file,or specify the | +| | filename - to print the file to stdout. By default a new | +| | file is createdwith the .desktop file extension. | ++------------------------------------+------------------------------------------------------------+ +| -d, --dry-run | Dry run, don't execute any command | ++------------------------------------+------------------------------------------------------------+ +| -e, --environment ENVIRONMENT | Specify the Desktop Environment an autostart should be | +| | performed for; works only in combination with -a | ++------------------------------------+------------------------------------------------------------+ +| -s, --search-paths SEARCHPATHS | Colon separated list of paths to search for desktop files, | +| | overriding the default search list | ++------------------------------------+------------------------------------------------------------+ +| -t, --target-directory ENVIRONMENT | Create files in target directory | ++------------------------------------+------------------------------------------------------------+ +| --term TERM | The terminal emulator that will be used to run the program | +| | if Terminal=true is set in the desktop file, defaults to | +| | x-terminal-emulator. | ++------------------------------------+------------------------------------------------------------+ +| -w, --wait | Block until the program exits. | ++------------------------------------+------------------------------------------------------------+ +| --test | Perform a self-test | ++------------------------------------+------------------------------------------------------------+ +| -v, --verbose | Verbose output | ++------------------------------------+------------------------------------------------------------+ +| -V, --version | Display version information | ++------------------------------------+------------------------------------------------------------+ + +Examples +-------- + +Perform an autostart/execute all programs in the autostart folders. + + ``dex -a`` + +Perform an autostart/execute all programs in the specified folders. + + ``dex -a -s /etc/xdg/autostart/:~/.config/autostart/`` + +Preview the programs would be executed in a regular autostart. + + ``dex -ad`` + +Preview the programs would be executed in a GNOME specific autostart. + + ``dex -ad -e GNOME`` + +Create a DesktopEntry for a program in the current directory. + + ``dex -c /usr/bin/skype`` + +Create a DesktopEntry for a programs in autostart directroy. + + ``dex -t ~/.config/autostart -c /usr/bin/skype /usr/bin/nm-applet`` + +Execute a single program from command line and enable verbose output. + + ``dex -v skype.desktop`` + +Execute a single program (with Terminal=true in the desktop file) in gnome-terminal. + + ``dex --term gnome-terminal nvim.desktop`` + +Execute a single program and block until it exits. + + ``dex --wait nvim.desktop`` + +Autostart Alternative +--------------------- + +I consider ``systemd/user`` as a good alternative for ``dex``'s autostart +functionality and switched to it recently. In particular, systemd solves the +issue of ``dex`` losing control over the started processes which causes +processes to live longer than the X session which could cause additional +annoyances like reboots taking a lot of time because the system is waiting for +the processes to terminate. + +The following steps will help you to get to a working ``systemd/user`` +configuration: + +- Create the systemd user directory: ``mkdir -p ~/.config/systemd/user`` +- Create an autostart target at ``~/.config/systemd/user/autostart.target`` + with the following content:: + + [Unit] + Description=Current graphical user session + Documentation=man:systemd.special(7) + RefuseManualStart=no + StopWhenUnneeded=no + +- Create service files at ``~/.config/systemd/user/<service name>.service`` that + service the same purpose as the ``<service>.desktop`` files created by + ``dex``. The service file should have at least the following content:: + + [Unit] + Description=<service description> + + [Service] + ExecStart=<path to the executable> [<parameters>] + + - Attention: for the service to work properly it mustn't fork. Systemd will + take care of the service management but it can only do this when the service + doesn't fork! If the services forks and terminates the main process, systemd + will kill all the processes related to the service. The service will + therefore not run at all! The man page of the service should list the + required parameters that need to be provided to the service to avoid + forking. + +- Register a service with systemd: + + ``systemctl --user add-wants autostart.target <service name>.service`` + + - Unregister a service: + + ``systemctl --user disable <service name>.service`` + + - List currently active services: + + ``systemctl --user list-units`` + +- Finally, start all services in the autostart target during startup by + replacing the ``dex -a`` command with: + + ``systemctl --user start autostart.target`` + + - Reload all service configurations after making changes to a service file: + + ``systemctl --user daemon-reload`` + + - Start a service: + + ``systemctl --user start <service name>.service`` + + - Check the status of a service: + + ``systemctl --user status <service name>.service`` + + - Stop a service: + + ``systemctl --user stop <service name>.service`` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dex-0.7/dex new/dex-0.9.0/dex --- old/dex-0.7/dex 2013-11-13 22:43:01.000000000 +0100 +++ new/dex-0.9.0/dex 2020-06-13 20:53:27.000000000 +0200 @@ -35,7 +35,7 @@ import subprocess import sys -__version__ = "0.7" +__version__ = "0.8.0" # DesktopEntry exceptions @@ -171,9 +171,11 @@ if grp_desktopentry not in self.groups: raise DesktopEntryTypeException("'%s' is not a valid Desktop Entry group is missing." % (self.filename, )) if not (self.Type and self.Name): - raise DesktopEntryTypeException("'%s' is not a valid Desktop Entry because Type or Name keys are missing." % (self.filename, )) + if self.Type != 'Service': + # allow files with type Service and no Name + raise DesktopEntryTypeException("'%s' is not a valid Desktop Entry because Type or Name keys are missing." % (self.filename, )) _type = self.Type - if _type == 'Application': + if _type in ('Application', 'Service'): if not self.Exec: raise DesktopEntryTypeException("'%s' is not a valid Desktop Entry of type '%s' because Exec is missing." % (self.filename, _type)) elif _type == 'Link': @@ -182,7 +184,7 @@ elif _type == 'Directory': pass else: - raise DesktopEntryTypeException("'%s' is not a valid Desktop Entry because Type '%s' is unkown." % (self.filename, self.Type)) + raise DesktopEntryTypeException("'%s' is not a valid Desktop Entry because Type '%s' is unknown." % (self.filename, self.Type)) # another name for load reload = load @@ -342,7 +344,7 @@ filename = os.path.join(os.getcwd(), filename) super(Application, self).__init__(filename) self._basename = os.path.basename(filename) - if self.Type != 'Application': + if self.Type not in ('Application', 'Service'): raise DesktopEntryTypeException("'%s' is not of type 'Application'." % self.filename) def __cmp__(self, y): @@ -369,7 +371,7 @@ return self._basename @classmethod - def _build_cmd(cls, exec_string, needs_terminal=False): + def _build_cmd(cls, exec_string, needs_terminal=False, term='x-terminal-emulator'): """ # test single and multi argument commands >>> Application._build_cmd('gvim') @@ -435,7 +437,7 @@ """ cmd = [] if needs_terminal: - cmd += ['x-terminal-emulator', '-e'] + cmd += [term, '-e'] _tmp = exec_string.replace('\\\\', '\\') _arg = '' in_esc = False @@ -477,8 +479,9 @@ continue elif c == '\\': - in_esc = True - continue + if not in_quote: + in_esc = True + continue elif c == '%' and not (in_quote or in_singlequote): in_fieldcode = True @@ -499,7 +502,7 @@ return cmd - def execute(self, dryrun=False, verbose=False): + def execute(self, term=None, wait=False, dryrun=False, verbose=False): """ Execute application @return Return subprocess.Popen object @@ -511,7 +514,7 @@ if _exec: path = self.Path - cmd = self._build_cmd(self.Exec) + cmd = self._build_cmd(exec_string=self.Exec, needs_terminal=self.Terminal, term=term) if not cmd: raise ApplicationExecException('Failed to build command string.') if dryrun or verbose: @@ -522,9 +525,12 @@ print('Executing command: ' + ' '.join(cmd)) if dryrun: return None + _execute_fn = subprocess.Popen + if wait: + _execute_fn = subprocess.run if path: - return subprocess.Popen(cmd, cwd=path) - return subprocess.Popen(cmd) + return _execute_fn(cmd, cwd=path, env=os.environ) + return _execute_fn(cmd, env=os.environ) class AutostartFile(Application): @@ -571,22 +577,27 @@ """ autostart_directories = [] # autostart directories, ordered by preference - # generate list of autostart directories - if os.environ.get('XDG_CONFIG_HOME', None): - autostart_directories.append(os.path.join(os.environ.get('XDG_CONFIG_HOME'), 'autostart')) - else: - autostart_directories.append(os.path.join(os.environ['HOME'], '.config', 'autostart')) - - if os.environ.get('XDG_CONFIG_DIRS', None): - for d in os.environ['XDG_CONFIG_DIRS'].split(os.pathsep): - if not d: - continue - autostart_dir = os.path.join(d, 'autostart') - if autostart_dir not in autostart_directories: - autostart_directories.append(autostart_dir) + if args.searchpaths: + for p in args.searchpaths[0].split(os.pathsep): + path = os.path.expanduser(p) + path = os.path.expandvars(path) + autostart_directories += [path] else: - autostart_directories.append(os.path.sep + os.path.join('etc', 'xdg', 'autostart')) + # generate list of autostart directories + if os.environ.get('XDG_CONFIG_HOME', None): + autostart_directories.append(os.path.join(os.environ.get('XDG_CONFIG_HOME'), 'autostart')) + else: + autostart_directories.append(os.path.join(os.environ['HOME'], '.config', 'autostart')) + if os.environ.get('XDG_CONFIG_DIRS', None): + for d in os.environ['XDG_CONFIG_DIRS'].split(os.pathsep): + if not d: + continue + autostart_dir = os.path.join(d, 'autostart') + if autostart_dir not in autostart_directories: + autostart_directories.append(autostart_dir) + else: + autostart_directories.append(os.path.sep + os.path.join('etc', 'xdg', 'autostart')) return autostart_directories @@ -699,7 +710,7 @@ for f in args.files: try: app = Application(f) - app.execute(dryrun=args.dryrun, verbose=args.verbose) + app.execute(term=args.term, wait=args.wait, dryrun=args.dryrun, verbose=args.verbose) except ValueError as ex: print(ex, file=sys.stderr) except IOError as ex: @@ -732,7 +743,12 @@ if args.verbose: print('Output: %s' % output) - targetfile = sys.stdout if output == '-' else open(output, 'w') + + try: + targetfile = sys.stdout if output == '-' else open(output, 'w') + except FileNotFoundError: + print('Target directory does not exist: %s' % os.path.dirname(output)) + return 1 de.write(targetfile) if args.targetdir and len(args.create) > 1: @@ -755,12 +771,15 @@ run.add_argument("-a", "--autostart", action="store_true", dest="autostart", help="autostart programs") run.add_argument("-d", "--dry-run", action="store_true", dest="dryrun", help="dry run, don't execute any command") run.add_argument("-e", "--environment", nargs=1, dest="environment", help="specify the Desktop Environment an autostart should be performed for; works only in combination with --autostart") + run.add_argument("-s", "--search-paths", nargs=1, dest="searchpaths", help="colon separated list of paths to search for desktop files, overriding the default search list") + run.add_argument("--term", dest="term", help="the terminal emulator that will be used to run the program if Terminal=true is set in the desktop file, defaults to x-terminal-emulator") + run.add_argument("-w", "--wait", action="store_true", dest="wait", help="block until the program exits") create = parser.add_argument_group('create') - create.add_argument("-c", "--create", nargs='+', dest="create", help="create a DesktopEntry file for the given program. If a second argument is provided it's taken as output filename or written to stdout (filname: -). By default a new file with the postfix .desktop is created") + create.add_argument("-c", "--create", nargs='+', dest="create", help="create a DesktopEntry file for the given program. If a second argument is provided it's taken as output filename or written to stdout (filename: -). By default a new file with the postfix .desktop is created") create.add_argument("-t", "--target-directory", nargs=1, dest="targetdir", help="create files in target directory") - parser.set_defaults(func=_run, dryrun=False, test=False, autostart=False, verbose=False) + parser.set_defaults(func=_run, term="x-terminal-emulator", wait=False, dryrun=False, test=False, autostart=False, verbose=False) args = parser.parse_args() if args.autostart: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dex-0.7/dex.1 new/dex-0.9.0/dex.1 --- old/dex-0.7/dex.1 2013-11-13 22:43:01.000000000 +0100 +++ new/dex-0.9.0/dex.1 1970-01-01 01:00:00.000000000 +0100 @@ -1,59 +0,0 @@ -.TH DEX 1 dex\-VERSION -.SH NAME -dex \- DesktopEntry Execution -.SH SYNOPSIS -.B dex -.RB [options]\ [DesktopEntryFile\ [DesktopEntryFile ...]] -.SH DESCRIPTION -dex, DesktopEntry Execution, is a program to generate and execute -DesktopEntry files of the type Application. -.SH OPTIONS -.TP -.B \-h, \-\-help -show this help message and exit -.TP -.B \-a, \-\-autostart -autostart programs -.TP -.B \-c CREATE [CREATE ...], \-\-create CREATE [CREATE ...] -create a DesktopEntry file for the given program. If a second argument -is provided it's taken as output filename or written to stdout (filname: -\-). By default a new file with the postfix .desktop is created -.TP -.B \-d, \-\-dry\-run -dry run, don't execute any command -.TP -.B \-e ENVIRONMENT, \-\-environment ENVIRONMENT -specify the Desktop Environment an autostart should be performed for; -works only in combination with \-\-autostart -.TP -.B \-t, \-\-target-directroy DIRECTORY -create files in target directory -.TP -.B \-\-test -perform a self\-test -.TP -.B \-v, \-\-verbose -verbose output -.TP -.B \-V, \-\-version -display version information -.SH EXAMPLES -.TP -Perform an autostart/execute all programs in the autostart folders. -.B dex -a -.TP -Preview the programs would be executed in a regular autostart. -.B dex -ad -.TP -Preview the programs would be executed in a GNOME specific autostart. -.B dex -ad -e GNOME -.TP -Create a DesktopEntry for a program in the current directory. -.B dex -c /usr/bin/skype -.TP -Create a DesktopEntry for a programs in autostart directroy. -.B dex -t ~/.config/autostart -c /usr/bin/skype /usr/bin/nm-applet -.TP -Execute a single program from command line and enable verbose output. -.B dex -v skype.desktop diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dex-0.7/man/conf.py new/dex-0.9.0/man/conf.py --- old/dex-0.7/man/conf.py 1970-01-01 01:00:00.000000000 +0100 +++ new/dex-0.9.0/man/conf.py 2020-06-13 20:53:27.000000000 +0200 @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys +import os + +project = 'dex' +master_doc = 'dex' +source_suffix = '.rst' + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('dex', 'dex', 'DesktopEntry Execution', + ['Jan Christoph Ebersbach', u'Johannes Löthberg'], 1) +] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dex-0.7/man/dex.rst new/dex-0.9.0/man/dex.rst --- old/dex-0.7/man/dex.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/dex-0.9.0/man/dex.rst 2020-06-13 20:53:27.000000000 +0200 @@ -0,0 +1,90 @@ +dex +=== + +Synopsis +-------- + +**dex** [*options*] [*DesktopEntryFile*]... + +Description +----------- + +:program:`dex`, DesktopEntry Execution, is a program to generate and execute DesktopEntry files of the Application type. + +Options +------- + +-h, --help + Show this help message and exit + +-a, --autostart + Autostart programs + +-c PATH, --create PATH + Create a DesktopEntry file for the program at the given path. An optional second argument is used to specify the filename of the created DesktopEntry file, or specify the filename - to print the file to stdout. By default a new file is created with the .desktop file extension. + +-d, --dry-run + Dry run, don't execute any command + +-e ENVIRONMENT, --environment ENVIRONMENT + Specify the Desktop Environment an autostart should be performed for; works only in combination with --autostart + +-s SEARCHPATHS, --search-paths SEARCHPATHS + Colon separated list of paths to search for desktop files, overriding the default search list + +-t DIRECTORY, --target-directory DIRECTORY + Create files in target directory + +--term TERM + The terminal emulator that will be used to run the program if Terminal=true is set in the desktop file, defaults to x-terminal-emulator + +-w, --wait + Block until the program exits + +--test + Perform a self-test + +-v, --verbose + Verbose output + +-V, --version + Display version information + +Examples +-------- + +Perform an autostart/execute all programs in the autostart folders. + + :program:`dex -a` + +Perform an autostart/execute all programs in the specified folders. + + :program:`dex -a -s /etc/xdg/autostart/:~/.config/autostart/` + +Preview the programs would be executed in a regular autostart. + + :program:`dex -ad` + +Preview the programs would be executed in a GNOME specific autostart. + + :program:`dex -ad -e GNOME` + +Create a DesktopEntry for a program in the current directory. + + :program:`dex -c /usr/bin/skype` + +Create a DesktopEntry for a programs in autostart directory. + + :program:`dex -t ~/.config/autostart -c /usr/bin/skype /usr/bin/nm-applet` + +Execute a single program from command line and enable verbose output. + + :program:`dex -v skype.desktop` + +Execute a single program (with Terminal=true in the desktop file) in gnome-terminal. + + :program:`dex --term gnome-terminal nvim.desktop` + +Execute a single program and block until it exits. + + :program:`dex --wait nvim.desktop`
