LINUX.ORG.RU

переключение консоли из кода


0

0

Кто-нибудь знает как это можно сделать:

Есть прога на java, запущенная на /dev/tty1, а затем переключающаяся на tty7
Как из кода переключить консоль?

Это надо вот для чего:
В процессе работы она запускает X, и затем должна вывести окно, но происходит вылет:

Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:134)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.ja va:62)
at java.awt.Font.initializeFont(Font.java:308)
at java.awt.Font.<init>(Font.java:344)

Вылет происходит, когда X-сервер уже запущен. Как я предполагаю, переключение консоли должно помочь?


Странные желания. Я бы за такое побил :-)

З.Ы. смотри исходник утилиты chvt

sdio ★★★★★
()
Ответ на: комментарий от sdio

За жабу? :)

Благодарю, сейчас гляну!

KUser
() автор топика
Ответ на: комментарий от execve

Проверил: В X-ах:

set | grep DISPLAY

DISPLAY=:0

В tty1 - tty6 переменная не определена

Попробую определить её до вызова окна...

KUser
() автор топика
Ответ на: комментарий от krum

> чтоб взломали?

Во-1, во многих случаях X слушает только localhost.

Во-2, чтобы заработало. Потом можно будет сделать нормально.

execve
()
Ответ на: комментарий от execve

Сделал так: запускаю прогу, она запускает X-ы, в X-ах я набираю xhost +,
прога ждёт, потом пытается вывести окно

Какой-то эффект есть, ошибка поменялась:

Exception in thread "main" java.lang.NoClassDefFoundError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.ja va:62)
at java.awt.Font.initializeFont(Font.java:308)
at java.awt.Font.<init>(Font.java:344)

Проверю CLASSPATH, может поможет

KUser
() автор топика
Ответ на: комментарий от execve

а если шелл не понимает синтаксис VAR="value" program ?

лечше уж сперва устанавливай переменную окружения DISPLAY и запускай прогу

или запускай прогу как <prog> -display <id> если он такой синтаксис поддерживает

anonymous
()
Ответ на: комментарий от execve

Я имел в виду немного другое: прога должна управлять запуском X-ов, поэтому должна быть запущена раньше X

После их пуска должна вывести окно на экран - отсюда и проблема.
Из-под X-ов окно запускается нормально, тут нет проблем

KUser
() автор топика
Ответ на: комментарий от KUser

Главное, чтобы программа не пыталась работать с X до окончания их загрузки.

Хотя, на мой взгляд, ты хочешь странного. Что мешает запускать X всегда и независимо от программы?

execve
()
Ответ на: комментарий от execve

Шеф хочет странного :)

Программа и не пытается работать с X-ами до их запуска - я это предусмотрел sleep-ом: после вызова startx она даёт X-ам 2 мин. на старт, потом я ручками ввожу xhost +, потом прога пытается вывести окно - и вываливается с ошибкой.

>Что мешает запускать X всегда и независимо от программы?

Задание!

Юзер не должен иметь возможность перехода в X, пока прога не отработала.
Была другая идея: запускать прогу как login-manager в X. Но прога вылетает с той же ошибкой

KUser
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.