void NotifyByExecute::notify( int id, KNotifyConfig * config ) { QString command=config->readEntry( "Execute" ); kDebug() << command; if (!command.isEmpty()) { // kDebug() << "executing command '" << command << "'"; QHash<QChar,QString> subst; subst.insert( 'e', config->eventid ); subst.insert( 'a', config->appname ); subst.insert( 's', config->text ); subst.insert( 'w', QString::number( (quintptr)config->winId )); subst.insert( 'i', QString::number( id )); QString execLine = KMacroExpander::expandMacrosShellQuote( command, subst ); if ( execLine.isEmpty() ) execLine = command; // fallback KProcess proc; proc.setShellCommand(execLine.trimmed()); if(!proc.startDetached()) kDebug()<<"KNotify: Could not start process!"; } finish( id ); }
void KBlueTray::showManager() { // DeviceMan manager; kDebug() << "Starting Device Manager"; KProcess process; process.setProgram("kbluetooth-devicemanager"); process.startDetached(); // manager.exec(); }
void DBusAction::execute() { if( _application.isEmpty() || _object.isEmpty() || _function.isEmpty()) return; QStringList args_list; QString args_str = _arguments; while( !args_str.isEmpty()) { int pos = 0; while( args_str[ pos ] == ' ' ) ++pos; if( args_str[ pos ] == '\"' || args_str[ pos ] == '\'' ) { QString val = ""; QChar sep = args_str[ pos ]; bool skip = false; ++pos; for(; pos < args_str.length(); ++pos ) { if( args_str[ pos ] == '\\' ) { skip = true; continue; } if( !skip && args_str[ pos ] == sep ) break; skip = false; val += args_str[ pos ]; } if( pos >= args_str.length()) return; ++pos; args_str = args_str.mid( pos ); args_list.append( val ); } else { // one word if( pos != 0 ) args_str = args_str.mid( pos ); int nxt_pos = args_str.indexOf( ' ' ); args_list.append( args_str.left( nxt_pos )); // should be ok if nxt_pos is -1 args_str = nxt_pos >= 0 ? args_str.mid( nxt_pos ) : ""; } } kDebug() << "D-Bus call:" << _application << ":" << _object << ":" << _function << ":" << args_list; KProcess proc; proc << "qdbus" << _application << _object << _function << args_list; proc.startDetached(); }
void PanelBrowserMenu::slotOpenTerminal() { KConfigGroup config(KGlobal::config(), "General"); QString term = config.readPathEntry("TerminalApplication", "konsole"); KProcess proc; proc << term; if (term == "konsole") proc << "--workdir" << path(); else proc.setWorkingDirectory(path()); proc.startDetached(); }
void DiffDialog::callExternalDiff(const QString& extdiff, OrgKdeCervisia5CvsserviceCvsserviceInterface* service, const QString& fileName, const QString &revA, const QString &revB) { QString extcmdline = extdiff; extcmdline += ' '; // create suffix for temporary file (used QFileInfo to remove path from file name) const QString suffix = '-' + QFileInfo(fileName).fileName(); QDBusReply<QDBusObjectPath> job; if (!revA.isEmpty() && !revB.isEmpty()) { // We're comparing two revisions QString revAFilename = tempFileName(suffix+QString("-")+revA); QString revBFilename = tempFileName(suffix+QString("-")+revB); // download the files for revision A and B job = service->downloadRevision(fileName, revA, revAFilename, revB, revBFilename); if( !job.isValid() ) return; extcmdline += KShell::quoteArg(revAFilename); extcmdline += ' '; extcmdline += KShell::quoteArg(revBFilename); } else { // We're comparing to a file, and perhaps one revision QString revAFilename = tempFileName(suffix+QString("-")+revA); job = service->downloadRevision(fileName, revA, revAFilename); if( !job.isValid() ) return; extcmdline += KShell::quoteArg(revAFilename); extcmdline += ' '; extcmdline += KShell::quoteArg(QFileInfo(fileName).absoluteFilePath()); } ProgressDialog dlg(this, "Diff", service->service(),job, "diff"); if( dlg.execute() ) { // call external diff application KProcess proc; proc.setShellCommand(extcmdline); proc.startDetached(); } }
bool SynergyClient::start() { if (isRunning()) { return false; } KProcess *p = ProcessUtils::getNew(this, "synergyc", "-f", m_servername); int pid = p->startDetached(); if (pid == 0) { return false; } else { m_clientPid = pid; return true; } }