Russian Qt Forum
Ноябрь 24, 2024, 08:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Автозагрузка в Linux  (Прочитано 5139 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« : Январь 31, 2011, 17:53 »

Вопрос в том кто и как ее реализовывает? я знаю что зачастую это зависит от графической среды (GNOME/KDE), но тогда вопрос как это отследить, можно ли сделать автозапуск под линуксом для всех пользователей в системе. Вообщем как проще это реализовать?
Записан
maint
Гость
« Ответ #1 : Январь 31, 2011, 18:17 »

смотря что надо запустить. Если это GUI тогда или для каждого пользователя в .xinitrc или анализировать среду (гуй, консоль) и рисовать в /etc/profile(/etc/profile.d в зависомости от выбранного профайла). Если просто программа, то ли сервисом, либо в /etc/rc.d/rc.local. Автозапуск понятие виндовое, поскольку она изначально однопользовательская
Записан
Vitto74
Гость
« Ответ #2 : Январь 31, 2011, 21:31 »

Я в своей проге так делаю.
Для определения есть прога в автозапуске или нет:
Код:
bool autoRunStat;
#ifdef Q_WS_X11

    autoRunStat = QFile::exists(QFileInfo(QDir::homePath()+"/.config/autostart/<иям проги>.desktop").absoluteFilePath());

#endif

#ifdef Q_WS_WIN

    QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
    autoRunStat = (reg.value("<имя проги>") == QString("\"%1\"").arg(QDir::toNativeSeparators(qApp->applicationFilePath())));

#endif

Для включения автозапуска
Код:
#ifdef Q_WS_WIN

    QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
    reg.setValue("<имя проги>", QString("\"%1\"").arg(QDir::toNativeSeparators(qApp->applicationFilePath())));

#endif

#ifdef Q_WS_X11
    QFile autoRun(QFileInfo(QDir::homePath()+"/.config/autostart/<имя проги>.desktop").absoluteFilePath());
    if (!autoRun.open(QIODevice::WriteOnly))
return;
    autoRun.write("[Desktop Entry]\n");
    autoRun.write("Type=Application\n");
    autoRun.write(QString("Exec='%1'\n").arg(qApp->applicationFilePath()).toAscii());
    autoRun.write("Hidden=falsen\n");
    autoRun.write("NoDisplay=false\n");
    autoRun.write("Name=<Имя>t\n");

    autoRun.close();

#endif

Для выключения
Код:
#ifdef Q_WS_WIN

    QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
    reg.remove("<имя проги>");

#endif

#ifdef Q_WS_X11

    if (!QFile::remove(QFileInfo(QDir::homePath()+"/.config/autostart/<имя проги>.desktop").absoluteFilePath()))
return;

#endif
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраль 01, 2011, 10:05 »

Вот тут еще почитай: http://standards.freedesktop.org/autostart-spec/autostart-spec-0.5.html
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #4 : Февраль 02, 2011, 10:10 »

Всем спасибо, для автозагрузки решил использовать пример Vitto74, если в софте используется авто запуск для всех пользователей, то беру список директорий в home и для каждой создаю "/.config/autostart/<имя проги>.desktop" вариант конечно не лучший, на мой взгляд под линуксом автозапуск нужно вообще на пользователя оставить.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.102 секунд. Запросов: 23.