В Debian 9.5 (i386) без установленной оболочки не срабатывает метод fullscreen у объекта класса Gtk.Window:
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk, Gtk, GdkPixbuf
class LockScreen(Gtk.Window):
def __init__(self, app, config):
super().__init__(name='lock_screen')
self.app = app
cssProvider = Gtk.CssProvider()
cssProvider.load_from_path('./static/styles.css')
screen = Gdk.Screen.get_default()
styleContext = Gtk.StyleContext()
styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
self.box = Gtk.Box(halign=Gtk.Align.CENTER, orientation=Gtk.Orientation.VERTICAL, parent=self,
valign=Gtk.Align.CENTER, name='lock_screen_box')
self.tonb_label = Gtk.Label('Тюменская Областная Научная Библиотека', justify=Gtk.Justification.CENTER,
name='tonb_label', parent=self.box)
self.icons = {
name: GdkPixbuf.Pixbuf.new_from_file_at_scale('./static/icons/{0}.svg'.format(name), 96, 96, True)
for name in [
'app_started',
'network_connected',
'network_disconnected',
'workstation_locked',
'workstation_unlocked',
'workstation_shutdown',
'reader_binded',
'error',
]
}
self.status_icon = Gtk.Image(name='status_icon', parent=self.box)
self.status_label = Gtk.Label(justify=Gtk.Justification.CENTER, name='status_label', parent=self.box,
width_chars=56)
self.fullscreen()
self.connect("destroy", Gtk.main_quit)
self.show_all()
...
Окно приложения на Python Gtk3 получает минимальный размер:
Однако, вот freerdp запускается в полноэкранном режиме (ключ -f) как надо:
К тому же, в Linux Mint 18.3 Cinnamon всё работает как надо, приложение на Python Gtk3 запускается в полноэкранном режиме без проблем.
Пакеты установленные в Debian для работы Gtk3:
xorg python3-gi python3-click python3-gi-cairo python3-cairo gir1.2-gtk-3.0 libglib2.0-dev libcairo2-dev libgirepository1.0-dev
Запуск приложения осуществляется через lightdm.
/etc/lightdm/lightdm.conf
greeter-session=defender_greeter
/usr/share/xgreeters/defender_greeter.desktop
[Desktop Entry]
Name=TONB Thin Defender
Comment=No comments
Exec=/bin/bash /home/defender/thin-defender/thin_defender/run.sh
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
/home/defender/thin-defender/thin_defender/run.sh
cd /home/defender/thin-defender/thin_defender
/home/defender/thin-defender/.venv/bin/python3 /home/defender/thin-defender/thin_defender/manage.py run_app --config test
UPDATE
Ряд методов Gtk.Window для корректной работы нуждаются в оконном менеджере (window manager), в том числе и метод fullscreen.
Возможные пути решения проблемы: попробовать обойтись без данных методов или установить какой-нибудь оконный менеджер.