Как сказать, работает ли полноэкранное приложение?

Вы, вероятно, пытаетесь выполнить 32-разрядный двоичный файл в 64-разрядной системе, которой не установили 32-разрядную поддержку.

существует три случая, где можно получить сообщение “No такой файл или directory”:

  • файл не существует. Я предполагаю, что Вы проверили, что файл действительно существует (возможно, потому что оболочка завершает его).
  • существует файл тем именем, но это - повисшая символьная ссылка.
  • файл существует, и можно даже считать его (например, команда file shank-linux-120720110-1-bin отображает что-то как 32-разрядный исполняемый файл LSB “ELF †¦ ”), и все же когда Вы пытаетесь выполнить его, Вам говорят, что файл не существует.

сообщение об ошибке в этом последнем случае по общему признанию сбивает с толку. То, что это говорит Вам, - то, что ключевой компонент среды выполнения, необходимой для запущения программы, отсутствует. К сожалению, канал, через который об ошибке сообщают только, имеет пространство для кода ошибки а не для этой дополнительной информации, что это - действительно среда выполнения, это виновато. Если Вы хотите техническую версию этого объяснения, читайте Получение сообщения “Not found” при выполнении 32-разрядного двоичного файла в 64-разрядной системе .

Эти file команда скажет Вам, каков этот двоичный файл. За немногим исключением можно только выполнить двоичный файл для архитектуры процессора, для которой релиз Ubuntu. Основное исключение - то, что можно работать 32-разрядный (x86, иначе IA32) двоичные файлы на 64-разрядном (amd64, иначе x86_64) системы.

В Ubuntu до 11,04, для выполнения 32-разрядного двоичного файла на 64-разрядной установке Вы должны к [1 122] установить ia32-libs пакет Install ia32-libs. Вы, возможно, должны установить дополнительные библиотеки (Вы получите явное сообщение об ошибке, если Вы сделаете).

Начиная с 11,10 (сновещательных) представленных мультидуга поддержка, можно все еще установить ia32-libs, но можно выбрать подход с более прекрасными зернами, достаточно добраться libc6-i386 Install libc6-i386 (плюс любая другая необходимая библиотека).

6
задан Alvin Row 30 August 2009 в 23:52
поделиться

2 ответа

Нашел решение:

import Xlib.display

screen = Xlib.display.Display().screen()
root_win = screen.root

num_of_fs = 0
for window in root_win.query_tree()._data['children']:
    window_name = window.get_wm_name()
    width = window.get_geometry()._data["width"]
    height = window.get_geometry()._data["height"]

    if width == screen.width_in_pixels and height == screen.height_in_pixels:
        num_of_fs += 1

print num_of_fs

Это распечатывает количество полноэкранных окон, которое для меня обычно равно одному. В полноэкранной игре его 2.

3
ответ дан 11 December 2019 в 00:41
поделиться

Если все диспетчеры окон, в которых вы заинтересованы, работают при поддержке EWMH , стандарта подсказок расширенного диспетчера окон, есть элегантные способы сделать это (общение с Xlib через ctypes , например). Свойство _NET_ACTIVE_WINDOW корневого окна (см. здесь ) сообщает вам, какое окно активно (если есть); тогда свойство _NET_WM_STATE активного окна представляет собой список атомов, описывающих его состояние, который будет включать _NET_WM_STATE_FULLSCREEN , если это окно полноэкранное. (Если у вас есть несколько мониторов, конечно, окно может быть полноэкранным на одном из них, не будучи активным; я считаю, что могут существовать другие случаи, когда окно может быть полноэкранным, не будучи активным - я не думаю, что это так »

4
ответ дан 11 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: