Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Запуск приложения при старте системы с таймаутом запуска  (Прочитано 7015 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Можно сделать запуск именно когда время изменится на правильное. Покажите
grep -i '^exec' /usr/share/applications/variety.desktop

Оффлайн darwetra

  • Автор темы
  • Участник
  • *
  • Сообщений: 131
    • Просмотр профиля
Вот так:
arh@arh-P35-S3:~$ grep -i '^exec' /usr/share/applications/variety.desktop
Exec=variety %U
Exec=variety --next
Exec=variety --previous
Exec=variety --toggle-pause
Exec=variety --history
Exec=variety --preferences
arh@arh-P35-S3:~$

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6834
    • Просмотр профиля
 Во времена Gnome2 для получения задержки в десктор-файл можно было добавить строку "X-GNOME-Autostart-Delay=60".
Сейчас похоже этот вариант не работает.
Попробуй сделать такой десктоп-файл. "gedit" замени на имя своей программы.
Число после "sleep" - величина задержки в секундах.
(Нажмите, чтобы показать/скрыть)
Проверил, у меня сработало. Подобным образом запускается "gis-weather".

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
darwetra,
Выполни:
echo -e '[Desktop Entry]\nName=variety\nType=Application\nExec=sh -c \x27echo dCgpeyBkYXRlICIrJXMiOyB9OyB0Mj0kKHQpOyB3aGlsZSBzbGVlcCAxOyBkbyB0MT0kKHQpOyBbICR0MSAtbHQgJHQyIC1vICQoKHQxLXQyKSkgLWd0IDIgXSAmJiBicmVhazsgdDI9JHQxOyBkb25lOyB2YXJpZXR5ICYK | base64 -d | bash -s\x27' > ~/.config/autostart/variety.desktopи проверь автозапуск

Оффлайн darwetra

  • Автор темы
  • Участник
  • *
  • Сообщений: 131
    • Просмотр профиля
darwetra,
Выполни:
Код: [Выделить]

echo -e '[Desktop Entry]\nName=variety\nType=Application\nExec=sh -c \x27echo dCgpeyBkYXRlICIrJXMiOyB9OyB0Mj0kKHQpOyB3aGlsZSBzbGVlcCAxOyBkbyB0MT0kKHQpOyBbICR0MSAtbHQgJHQyIC1vICQoKHQxLXQyKSkgLWd0IDIgXSAmJiBicmVhazsgdDI9JHQxOyBkb25lOyB2YXJpZXR5ICYK | base64 -d | bash -s\x27' > ~/.config/autostart/variety.desktop

и проверь автозапуск
Спасибо, это сработало. Теперь Variety загружается после установки в трее правильного времени. В автозапуске в окне "команда" сейчас находится запись dCgpeyBkYXRlICIrJXMiOyB9OyB0Mj0kKHQpOyB3aGlsZSBzbGVlcCAxOyBkbyB0MT0kKHQpOyBbICR0MSAtbHQgJHQyIC1vICQoKHQxLXQyKSkgLWd0IDIgXSAmJiBicmVhazsgdDI9JHQxOyBkb25lOyB2YXJpZXR5ICYKЕще раз спасибо. И, если не затруднит, можете ли кратко объяснить как это работает?

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Этот код декодируется в код баш:
Код: (bash) [Выделить]
t(){ date "+%s"; }; t2=$(t); while sleep 1; do t1=$(t); [ $t1 -lt $t2 -o $((t1-t2)) -gt 2 ] && break; t2=$t1; done; variety &который запускает variety только после изменения локального времени.

Оффлайн gurfunkel

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Спасибо топикстартеру, кстати, за наводку на прикольную программу, установил себе. Теперь обои точно не будут "скучными". 8)

Оффлайн darwetra

  • Автор темы
  • Участник
  • *
  • Сообщений: 131
    • Просмотр профиля
Да, в данном случае это логичнее простого таймаута.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
renzrv, интересно откуда такая страсть к «перекручиванию» кода?
Код: (bash) [Выделить]
while [ $[diff] -ge 0 ] && [ $[diff] -le 2 ]; do
    sleep 1
    t2=$t1
    t1=$(date "+%s")
    diff=$((t1-t2))
done
variety &
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Azure,
Ваши придирки честно говоря уже поднадоели... И к тому-же ваш вариант хоть и короче, но неработает.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Ваши придирки
Вам показывают как писать нормальный код, но если Вы воспринимаете это как придирки — откланиваюсь. Что касается
неработает.
условия использованы Ваши. Или Вы намекаете на ошибки в коде?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Или Вы намекаете на ошибки в коде?
Код: (bash) [Выделить]
while [ $[diff] -ge 0 ] && [ $[diff] -le 2 ]; do
    sleep 1
    t2=$t1
    t1=$(date "+%s")
    diff=$((t1-t2))
done
echo START_PROGRAMM

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Ubuntu определит местоположение и установит правильное время.
Тут еще проблема в том, что время в нашем регионе решением местных властей сдвинуто на час назад, а на серверах времени это местное решение, видимо, не учитывается. Ручная установка времени почему-то не помогает, после загрузки Windows с часами чехорда начинается.
Это какая-то ерунда. Надо настроить правильно время и все. Покажитеtimedatectl status
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
renzrv, я понимаю что Вы великий программист и Вам все понятно, но я, например, не понял что Вы имели ввиду: у меня код работает. Может быть Вам стоит поменять $[diff] на $((diff)) т.к. не во всех шеллах принимаются квадратные скобки
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Azure,
В вашем варианте цикл завершается после первой итерации

 

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