KRun
#include <KRun>

Public Types | |
enum | RunFlag { DeleteTemporaryFiles = 0x1, RunExecutables = 0x2 } |
typedef QFlags< RunFlag > | RunFlags |
Signals | |
void | error () |
void | finished () |
Public Member Functions | |
KRun (const QUrl &url, QWidget *window, bool showProgressInfo=true, const QByteArray &asn=QByteArray()) | |
~KRun () override | |
void | abort () |
bool | autoDelete () const |
bool | hasError () const |
bool | hasFinished () const |
void | setAutoDelete (bool b) |
void | setEnableExternalBrowser (bool b) |
void | setFollowRedirections (bool b) |
void | setPreferredService (const QString &desktopEntryName) |
void | setRunExecutables (bool b) |
void | setShowScriptExecutionPrompt (bool showPrompt) |
void | setSuggestedFileName (const QString &fileName) |
QString | suggestedFileName () const |
QWidget * | window () const |
![]() | |
QObject (QObject *parent) | |
bool | blockSignals (bool block) |
const QObjectList & | children () const const |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const |
void | deleteLater () |
void | destroyed (QObject *obj) |
bool | disconnect (const char *signal, const QObject *receiver, const char *method) const const |
bool | disconnect (const QObject *receiver, const char *method) const const |
void | dumpObjectInfo () |
void | dumpObjectInfo () const const |
void | dumpObjectTree () |
void | dumpObjectTree () const const |
QList< QByteArray > | dynamicPropertyNames () const const |
virtual bool | event (QEvent *e) |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
T | findChild (const QString &name, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QRegExp ®Exp, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QString &name, Qt::FindChildOptions options) const const |
bool | inherits (const char *className) const const |
void | installEventFilter (QObject *filterObj) |
bool | isWidgetType () const const |
bool | isWindowType () const const |
void | killTimer (int id) |
virtual const QMetaObject * | metaObject () const const |
void | moveToThread (QThread *targetThread) |
QString | objectName () const const |
void | objectNameChanged (const QString &objectName) |
QObject * | parent () const const |
QVariant | property (const char *name) const const |
Q_CLASSINFO (Name, Value) | |
Q_DISABLE_COPY (Class) | |
Q_DISABLE_COPY_MOVE (Class) | |
Q_DISABLE_MOVE (Class) | |
Q_EMIT Q_EMIT | |
Q_ENUM (...) | |
Q_ENUM_NS (...) | |
Q_ENUMS (...) | |
Q_FLAG (...) | |
Q_FLAG_NS (...) | |
Q_FLAGS (...) | |
Q_GADGET Q_GADGET | |
Q_INTERFACES (...) | |
Q_INVOKABLE Q_INVOKABLE | |
Q_NAMESPACE Q_NAMESPACE | |
Q_NAMESPACE_EXPORT (EXPORT_MACRO) | |
Q_OBJECT Q_OBJECT | |
Q_PROPERTY (...) | |
Q_REVISION Q_REVISION | |
Q_SET_OBJECT_NAME (Object) | |
Q_SIGNAL Q_SIGNAL | |
Q_SIGNALS Q_SIGNALS | |
Q_SLOT Q_SLOT | |
Q_SLOTS Q_SLOTS | |
T | qFindChild (const QObject *obj, const QString &name) |
QList< T > | qFindChildren (const QObject *obj, const QRegExp ®Exp) |
QList< T > | qFindChildren (const QObject *obj, const QString &name) |
T | qobject_cast (const QObject *object) |
T | qobject_cast (QObject *object) |
QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT | |
void | removeEventFilter (QObject *obj) |
void | setObjectName (const QString &name) |
void | setParent (QObject *parent) |
bool | setProperty (const char *name, const QVariant &value) |
bool | signalsBlocked () const const |
int | startTimer (int interval, Qt::TimerType timerType) |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType) |
QThread * | thread () const const |
Static Public Member Functions | |
static QString | binaryName (const QString &execLine, bool removePath) |
static bool | checkStartupNotify (const QString &binName, const KService *service, bool *silent_arg, QByteArray *wmclass_arg) |
static bool | displayOpenWithDialog (const QList< QUrl > &lst, QWidget *window, bool tempFiles=false, const QString &suggestedFileName=QString(), const QByteArray &asn=QByteArray()) |
static bool | isExecutable (const QString &mimeType) |
static bool | isExecutableFile (const QUrl &url, const QString &mimetype) |
static QStringList | processDesktopExec (const KService &_service, const QList< QUrl > &_urls, bool tempFiles=false, const QString &suggestedFileName=QString()) |
static bool | run (const KService &service, const QList< QUrl > &urls, QWidget *window, bool tempFiles=false, const QString &suggestedFileName=QString(), const QByteArray &asn=QByteArray()) |
static bool | run (const QString &exec, const QList< QUrl > &urls, QWidget *window, const QString &name=QString(), const QString &icon=QString(), const QByteArray &asn=QByteArray()) |
static qint64 | runApplication (const KService &service, const QList< QUrl > &urls, QWidget *window, RunFlags flags=RunFlags(), const QString &suggestedFileName=QString(), const QByteArray &asn=QByteArray()) |
static bool | runCommand (const QString &cmd, const QString &execName, const QString &icon, QWidget *window, const QByteArray &asn, const QString &workingDirectory) |
static bool | runCommand (const QString &cmd, const QString &execName, const QString &icon, QWidget *window, const QByteArray &asn=QByteArray()) |
static bool | runCommand (const QString &cmd, QWidget *window, const QString &workingDirectory=QString()) |
static qint64 | runService (const KService &service, const QList< QUrl > &urls, QWidget *window, bool tempFiles=false, const QString &suggestedFileName=QString(), const QByteArray &asn=QByteArray()) |
static bool | runUrl (const QUrl &url, const QString &mimetype, QWidget *window, bool tempFile=false, bool runExecutables=true, const QString &suggestedFileName=QString(), const QByteArray &asn=QByteArray()) |
static bool | runUrl (const QUrl &url, const QString &mimetype, QWidget *window, RunFlags flags, const QString &suggestedFileName=QString(), const QByteArray &asn=QByteArray()) |
static void | shellQuote (QString &str) |
![]() | |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, Functor functor) |
bool | disconnect (const QMetaObject::Connection &connection) |
bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method) |
bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method) |
bool | disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method) |
QString | tr (const char *sourceText, const char *disambiguation, int n) |
QString | trUtf8 (const char *sourceText, const char *disambiguation, int n) |
Protected Slots | |
void | mimeTypeDetermined (const QString &mimeType) |
void | slotScanFinished (KJob *) |
void | slotScanMimeType (KIO::Job *, const QString &type) |
virtual void | slotStatResult (KJob *) |
void | slotTimeout () |
Protected Member Functions | |
bool | doScanFile () const |
virtual void | foundMimeType (const QString &type) |
virtual void | handleError (KJob *job) |
virtual void | handleInitError (int kioErrorCode, const QString &errorMsg) |
virtual void | init () |
bool | initializeNextAction () const |
bool | isDirectory () const |
bool | isLocalFile () const |
KIO::Job * | job () |
virtual void | killJob () |
bool | progressInfo () const |
virtual void | scanFile () |
void | setDoScanFile (bool scanFile) |
void | setError (bool error) |
void | setFinished (bool finished) |
void | setInitializeNextAction (bool initialize) |
void | setIsDirecory (bool isDirectory) |
void | setJob (KIO::Job *job) |
void | setProgressInfo (bool progressInfo) |
void | setUrl (const QUrl &url) |
QTimer & | timer () |
QUrl | url () const |
![]() | |
virtual void | childEvent (QChildEvent *event) |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | customEvent (QEvent *event) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
bool | isSignalConnected (const QMetaMethod &signal) const const |
int | receivers (const char *signal) const const |
QObject * | sender () const const |
int | senderSignalIndex () const const |
virtual void | timerEvent (QTimerEvent *event) |
Additional Inherited Members | |
![]() | |
objectName | |
![]() | |
typedef | QObjectList |
Detailed Description
Opens files with their associated applications in KDE.
To open files with their associated applications in KDE, use KRun.
It can execute any desktop entry, as well as any file, using the default application or another application "bound" to the file type (or URL protocol).
In that example, the MIME type of the file is not known by the application, so a KRun instance must be created. It will determine the MIME type by itself. If the MIME type is known, or if you even know the service (application) to use for this file, use one of the static methods.
By default KRun uses auto deletion. It causes the KRun instance to delete itself when the it finished its task. If you allocate the KRun object on the stack you must disable auto deletion, otherwise it will crash.
This respects the "shell_access", "openwith" and "run_desktop_files" Kiosk action restrictions (see KAuthorized::authorize()).
Member Typedef Documentation
◆ RunFlags
typedef QFlags< RunFlag > KRun::RunFlags |
Stores a combination of RunFlag values.
- Deprecated:
- since 5.71, see porting instructions in the respective methods
Member Enumeration Documentation
◆ RunFlag
enum KRun::RunFlag |
- See also
- RunFlags
Enumerator | |
---|---|
DeleteTemporaryFiles | the URLs passed to the service will be deleted when it exits (if the URLs are local files) |
RunExecutables | Whether to run URLs that are executable scripts or binaries.
|
Constructor & Destructor Documentation
◆ KRun()
KRun::KRun | ( | const QUrl & | url, |
QWidget * | window, | ||
bool | showProgressInfo = true , |
||
const QByteArray & | asn = QByteArray() |
||
) |
- Parameters
-
url the URL of the file or directory to 'run' window The top-level widget of the app that invoked this object. It is used to make sure private information like passwords are properly handled per application. showProgressInfo Whether to show progress information when determining the type of the file (i.e. when using KIO::stat and KIO::mimetype) Before you set this to false to avoid a dialog box, think about a very slow FTP server... It is always better to provide progress info in such cases. asn Application startup notification id, if available (otherwise "").
- Deprecated:
- since 5.71, use KIO::OpenUrlJob(url) (except for KRun subclasses, for now)
◆ ~KRun()
|
override |
Member Function Documentation
◆ abort()
void KRun::abort | ( | ) |
◆ autoDelete()
bool KRun::autoDelete | ( | ) | const |
◆ binaryName()
Given a full command line (e.g. the Exec= line from a .desktop file), extract the name of the binary being run.
- Parameters
-
execLine the full command line removePath if true, remove a (relative or absolute) path. E.g. /usr/bin/ls becomes ls.
- Returns
- the name of the executable to run
- Deprecated:
- since 5.0, use KIO::DesktopExecParser::executableName if removePath was true, or KIO::DesktopExecParser::executablePath if removePath was false.
◆ checkStartupNotify()
|
static |
◆ displayOpenWithDialog()
|
static |
Display the Open-With dialog for those URLs, and run the chosen application.
- Parameters
-
lst the list of URLs to open window The top-level widget of the app that invoked this object. tempFiles if true and lst are local files, they will be deleted when the application exits. suggestedFileName see setSuggestedFileName asn Application startup notification id, if any (otherwise "").
- Returns
- false if the dialog was canceled
- Deprecated:
- since 5.71, use KIO::ApplicationLauncherJob with no service argument (or a null service)
◆ doScanFile()
|
protected |
Returns whether the file shall be scanned.
- Deprecated:
- Since 4.1. Not useful in public API
◆ error
|
signal |
Emitted when the operation had an error.
- See also
- hasError()
◆ finished
|
signal |
Emitted when the operation finished.
This signal is emitted in all cases of completion, whether successful or with error.
- See also
- hasFinished()
◆ foundMimeType()
|
protectedvirtual |
Called if the MIME type has been detected.
The function runs the application associated with this MIME type. Reimplement this method to implement a different behavior, like opening the component for displaying the URL embedded.
Important: call setFinished(true) once you are done! Usually at the end of the foundMimeType reimplementation, but if the reimplementation is asynchronous (e.g. uses KIO jobs) then it can be called later instead.
Note: if that service failed, we'll go to runUrl below to maybe find another service, even though an error dialog box was already displayed. That's good if runUrl tries another service, but it's not good if it tries the same one :}
◆ handleError()
|
protectedvirtual |
Called when a KIO job started by KRun gives an error.
The default implementation shows a message box.
Reimplemented in KParts::BrowserRun.
◆ handleInitError()
|
protectedvirtual |
◆ hasError()
bool KRun::hasError | ( | ) | const |
◆ hasFinished()
bool KRun::hasFinished | ( | ) | const |
Returns true if the KRun instance has finished.
- Returns
- true if the KRun instance has finished
- See also
- finished()
◆ init()
|
protectedvirtual |
All following protected methods are used by subclasses of KRun!
Initializes the krun object.
Reimplemented in KParts::BrowserRun.
◆ initializeNextAction()
|
protected |
◆ isDirectory()
|
protected |
◆ isExecutable()
|
static |
◆ isExecutableFile()
Returns whether the url
of mimetype
is executable.
To be executable the file must pass the following rules:
- Must reside on the local filesystem.
- Must be marked as executable for the user by the filesystem.
- The MIME type must inherit application/x-executable, application/x-executable-script or application/x-sharedlib. To allow a script to run when the above rules are satisfied add the entry to the MIME type's desktop file.X-KDE-IsAlso=application/x-executable-script
◆ isLocalFile()
|
protected |
◆ job()
◆ killJob()
|
protectedvirtual |
◆ mimeTypeDetermined
|
protectedslot |
◆ processDesktopExec()
|
static |
Processes a Exec= line as found in .desktop files.
- Parameters
-
_service the service to extract information from. _urls The urls the service should open. tempFiles if true and urls are local files, they will be deleted when the application exits. suggestedFileName see setSuggestedFileName
- Returns
- a list of arguments suitable for QProcess.
- Deprecated:
- since 5.0, use KIO::DesktopExecParser
◆ progressInfo()
|
protected |
◆ run() [1/2]
|
static |
Open a list of URLs with a certain service (application).
- Parameters
-
service the service to run urls the list of URLs, can be empty (app launched without argument) window The top-level widget of the app that invoked this object. tempFiles if true and urls are local files, they will be deleted when the application exits. suggestedFileName see setSuggestedFileName asn Application startup notification id, if any (otherwise "").
- Returns
true
on success,false
on error
- Deprecated:
- since 5.6. Since 5.71 use ApplicationLauncherJob, otherwise runApplication instead.
◆ run() [2/2]
|
static |
Open a list of URLs with an executable.
- Parameters
-
exec the name of the executable, for example "/usr/bin/netscape %u". Don't forget to include the u if you know that the applications supports URLs. Otherwise, non-local urls will first be downloaded to a temp file (using kioexec). urls the list of URLs to open, can be empty (app launched without argument) window The top-level widget of the app that invoked this object. name the logical name of the application, for example "Netscape 4.06". icon the icon which should be used by the application. asn Application startup notification id, if any (otherwise "").
- Returns
true
on success,false
on error
- Deprecated:
- since 5.71, use KIO::ApplicationLauncherJob with a temporary KService
◆ runApplication()
|
static |
Run an application (known from its .desktop file, i.e. as a KService).
If you need to wait for the application to register to D-Bus, use D-Bus activation instead.
If you don't need the prompt for asking the user whether to add the executable bit for desktop files or binaries that don't have it, you can use KIO::ApplicationLauncherJob from KIOGui directly.
- Parameters
-
service the service to run urls the list of URLs, can be empty (app launched without argument) window The top-level widget of the app that invoked this object. flags various flags suggestedFileName see setSuggestedFileName asn Application startup notification id, if any (otherwise "").
- Returns
- 0 on error, the process ID on success
- Since
- 5.24
- Deprecated:
- since 5.71, use ApplicationLauncherJob instead.
◆ runCommand() [1/3]
|
static |
Overload that also takes a working directory, so that a command like "kwrite file.txt" finds file.txt from the right place.
- Parameters
-
workingDirectory the working directory for the started process. The default (if passing an empty string) is the user's document path.
- Since
- 4.4
- Deprecated:
- since 5.71, use KIO::CommandLauncherJob instead
◆ runCommand() [2/3]
|
static |
Same as the other runCommand(), but it also takes the name of the binary, to display an error message in case it couldn't find it.
- Parameters
-
cmd must be a shell command. You must not append "&" to it, since the function will do that for you. execName the name of the executable icon icon for app starting notification window The top-level widget of the app that invoked this object. asn Application startup notification id, if any (otherwise "").
- Returns
true
on success,false
on error
- Deprecated:
- since 5.71, use KIO::CommandLauncherJob
◆ runCommand() [3/3]
|
static |
Run the given shell command and notifies KDE of the starting of the application.
If the program to be called doesn't exist, an error box will be displayed.
Use only when you know the full command line. Otherwise use the other static methods, or KRun's constructor.
- Parameters
-
cmd must be a shell command. You must not append "&" to it, since the function will do that for you. window The top-level widget of the app that invoked this object. workingDirectory directory to use for relative paths, so that a command like "kwrite file.txt" finds file.txt from the right place
- Returns
true
on success,false
on error
- Deprecated:
- since 5.71, use KIO::CommandLauncherJob
◆ runService()
|
static |
Open a list of URLs with a certain service (application).
Prefer runApplication(), unless you need to wait for the application to register to D-Bus before this method returns (but that should rather be done with D-Bus activation).
- Parameters
-
service the service to run urls the list of URLs, can be empty (app launched without argument) window The top-level widget of the app that invoked this object. tempFiles if true and urls are local files, they will be deleted when the application exits. suggestedFileName see setSuggestedFileName asn Application startup notification id, if any (otherwise "").
- Returns
- 0 on error, the process ID on success
- Since
- 5.6
- Deprecated:
- since 5.71, use ApplicationLauncherJob instead.
◆ runUrl() [1/2]
|
static |
Open the given URL.
This function is used after the MIME type is found out. It will search for all services which can handle the MIME type and call run() afterwards.
- Parameters
-
url the URL to open mimetype the MIME type of the resource window The top-level widget of the app that invoked this object. tempFile if true and url is a local file, it will be deleted when the launched application exits. runExecutables if false then local .desktop files, executables and shell scripts will not be run. See also isExecutable(). suggestedFileName see setSuggestedFileName asn Application startup notification id, if any (otherwise "").
- Returns
true
on success,false
on error
- Deprecated:
- since 5.31. Since 5.71 use OpenUrlJob, otherwise runUrl() with RunFlags.
◆ runUrl() [2/2]
|
static |
Open the given URL.
This function can be used after the MIME type has been found out. It will search for all services which can handle the MIME type and call run() afterwards.
- Parameters
-
url The URL to open. mimetype the MIME type of the resource window The top-level widget of the app that invoked this object. flags Various run flags. suggestedFileName See setSuggestedFileName() asn Application startup notification id, if any (otherwise "").
- Returns
true
on success,false
on error
- Since
- 5.31
- Deprecated:
- since 5.71, use KIO::OpenUrlJob:
◆ scanFile()
|
protectedvirtual |
Start scanning a file.
Reimplemented in KParts::BrowserRun.
◆ setAutoDelete()
void KRun::setAutoDelete | ( | bool | b | ) |
◆ setDoScanFile()
|
protected |
Indicate that the next action is to scan the file.
- Deprecated:
- Since 4.1. Not useful in public API
◆ setEnableExternalBrowser()
void KRun::setEnableExternalBrowser | ( | bool | b | ) |
◆ setError()
|
protected |
◆ setFinished()
|
protected |
◆ setFollowRedirections()
void KRun::setFollowRedirections | ( | bool | b | ) |
◆ setInitializeNextAction()
|
protected |
◆ setIsDirecory()
|
protected |
Sets whether it is a directory.
- Deprecated:
- Since 4.1. Typo in the name, and not useful as a public method
◆ setJob()
|
protected |
◆ setPreferredService()
void KRun::setPreferredService | ( | const QString & | desktopEntryName | ) |
Set the preferred service for opening this URL, after its MIME type will have been found by KRun.
IMPORTANT: the service is only used if its configuration says it can handle this MIME type. This is used for instance for the X-KDE-LastOpenedWith key in the recent documents list, or for the app selection in KParts::BrowserOpenOrSaveQuestion.
- Parameters
-
desktopEntryName the desktopEntryName of the service, e.g. "kate".
◆ setProgressInfo()
|
protected |
◆ setRunExecutables()
void KRun::setRunExecutables | ( | bool | b | ) |
Sets whether executables, .desktop files or shell scripts should be run by KRun.
This is enabled by default.
- Parameters
-
b whether to run executable files or not.
- See also
- isExecutable()
◆ setShowScriptExecutionPrompt()
void KRun::setShowScriptExecutionPrompt | ( | bool | showPrompt | ) |
◆ setSuggestedFileName()
void KRun::setSuggestedFileName | ( | const QString & | fileName | ) |
Sets the file name to use in the case of downloading the file to a tempfile in order to give to a non-url-aware application.
Some apps rely on the extension to determine the MIME type of the file. Usually the file name comes from the URL, but in the case of the HTTP Content-Disposition header, we need to override the file name.
◆ setUrl()
|
protected |
◆ shellQuote()
|
static |
Quotes a string for the shell.
An empty string will not be quoted.
- Parameters
-
str the string to quote. The quoted string will be written here
- Deprecated:
- Since 4.0, use KShell::quoteArg() instead. Note that this function behaves differently for empty arguments and returns the result differently.
◆ slotScanFinished
|
protectedslot |
◆ slotScanMimeType
◆ slotStatResult
|
protectedvirtualslot |
◆ slotTimeout
|
protectedslot |
◆ suggestedFileName()
QString KRun::suggestedFileName | ( | ) | const |
◆ timer()
|
protected |
Returns the timer object.
- Deprecated:
- Since 4.4. setFinished(true) now takes care of the timer().start(0), so this can be removed.
◆ url()
◆ window()
QWidget * KRun::window | ( | ) | const |
The documentation for this class was generated from the following files:
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Nov 28 2023 03:55:15 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.