Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
tb.new_row("Server Display", label(self.client.server_display))
if "hostname" in scaps:
tb.new_row("Server Hostname", label(scaps.get("hostname")))
if self.client.server_platform:
tb.new_row("Server Platform", label(self.client.server_platform))
self.server_load_label = label()
tb.new_row("Server Load", self.server_load_label, label_tooltip="Average over 1, 5 and 15 minutes")
self.session_started_label = label()
tb.new_row("Session Started", self.session_started_label)
self.session_connected_label = label()
tb.new_row("Session Connected", self.session_connected_label)
self.input_packets_label = label()
tb.new_row("Packets Received", self.input_packets_label)
self.input_bytes_label = label()
tb.new_row("Bytes Received", self.input_bytes_label)
self.output_packets_label = label()
tb.new_row("Packets Sent", self.output_packets_label)
self.output_bytes_label = label()
tb.new_row("Bytes Sent", self.output_bytes_label)
self.compression_label = label()
tb.new_row("Compression Level", self.compression_label)
self.connection_type_label = label()
tb.new_row("Connection Type", self.connection_type_label)
self.input_encryption_label = label()
tb.new_row("Input Encryption", self.input_encryption_label)
self.output_encryption_label = label()
tb.new_row("Output Encryption", self.output_encryption_label)
# Details:
tb = self.table_tab("browse.png", "Statistics", self.populate_statistics)
tb.widget_xalign = 1.0
tb.attach(title_box(""), 0, xoptions=gtk.EXPAND|gtk.FILL, xpadding=0)
tb.new_row("Session Started", self.session_started_label)
self.session_connected_label = label()
tb.new_row("Session Connected", self.session_connected_label)
self.input_packets_label = label()
tb.new_row("Packets Received", self.input_packets_label)
self.input_bytes_label = label()
tb.new_row("Bytes Received", self.input_bytes_label)
self.output_packets_label = label()
tb.new_row("Packets Sent", self.output_packets_label)
self.output_bytes_label = label()
tb.new_row("Bytes Sent", self.output_bytes_label)
self.compression_label = label()
tb.new_row("Compression Level", self.compression_label)
self.connection_type_label = label()
tb.new_row("Connection Type", self.connection_type_label)
self.input_encryption_label = label()
tb.new_row("Input Encryption", self.input_encryption_label)
self.output_encryption_label = label()
tb.new_row("Output Encryption", self.output_encryption_label)
# Details:
tb = self.table_tab("browse.png", "Statistics", self.populate_statistics)
tb.widget_xalign = 1.0
tb.attach(title_box(""), 0, xoptions=gtk.EXPAND|gtk.FILL, xpadding=0)
tb.attach(title_box("Latest"), 1, xoptions=gtk.EXPAND|gtk.FILL, xpadding=0)
tb.attach(title_box("Minimum"), 2, xoptions=gtk.EXPAND|gtk.FILL, xpadding=0)
tb.attach(title_box("Average"), 3, xoptions=gtk.EXPAND|gtk.FILL, xpadding=0)
tb.attach(title_box("90 percentile"), 4, xoptions=gtk.EXPAND|gtk.FILL, xpadding=0)
tb.attach(title_box("Maximum"), 5, xoptions=gtk.EXPAND|gtk.FILL, xpadding=0)
tb.inc()
def maths_labels():
microphone_box.add(self.microphone_codec_label)
tb.new_row("Microphone Forwarding", microphone_box)
self.server_microphone_codecs_label = label()
tb.new_row("Server Codecs", self.server_microphone_codecs_label)
self.client_microphone_codecs_label = label()
tb.new_row("Client Codecs", self.client_microphone_codecs_label)
# Connection Table:
tb = self.table_tab("connect.png", "Connection", self.populate_connection)
tb.new_row("Server Endpoint", label(self.connection.target))
if self.client.server_display:
tb.new_row("Server Display", label(self.client.server_display))
if "hostname" in scaps:
tb.new_row("Server Hostname", label(scaps.get("hostname")))
if self.client.server_platform:
tb.new_row("Server Platform", label(self.client.server_platform))
self.server_load_label = label()
tb.new_row("Server Load", self.server_load_label, label_tooltip="Average over 1, 5 and 15 minutes")
self.session_started_label = label()
tb.new_row("Session Started", self.session_started_label)
self.session_connected_label = label()
tb.new_row("Session Connected", self.session_connected_label)
self.input_packets_label = label()
tb.new_row("Packets Received", self.input_packets_label)
self.input_bytes_label = label()
tb.new_row("Bytes Received", self.input_bytes_label)
self.output_packets_label = label()
tb.new_row("Packets Sent", self.output_packets_label)
self.output_bytes_label = label()
tb.new_row("Bytes Sent", self.output_bytes_label)
self.compression_label = label()
tb.new_row("Compression Level", self.compression_label)
tb.add_row(label("Server Latency (ms)"), *self.server_latency_labels)
self.client_latency_labels = maths_labels()
tb.add_row(label("Client Latency (ms)"), *self.client_latency_labels)
if self.client.windows_enabled:
if self.client.server_info_request:
self.batch_labels = maths_labels()
tb.add_row(label("Batch Delay (ms)"), *self.batch_labels)
self.damage_labels = maths_labels()
tb.add_row(label("Damage Latency (ms)"), *self.damage_labels)
self.decoding_labels = maths_labels()
tb.add_row(label("Decoding Latency (ms)"), *self.decoding_labels)
self.regions_per_second_labels = maths_labels()
tb.add_row(label("Regions/s"), *self.regions_per_second_labels)
self.regions_sizes_labels = maths_labels()
tb.add_row(label("Pixels/region"), *self.regions_sizes_labels)
self.pixels_per_second_labels = maths_labels()
tb.add_row(label("Pixels/s"), *self.pixels_per_second_labels)
self.windows_managed_label = label()
tb.new_row("Regular Windows", self.windows_managed_label),
self.transient_managed_label = label()
tb.new_row("Transient Windows", self.transient_managed_label),
self.trays_managed_label = label()
tb.new_row("Trays Managed", self.trays_managed_label),
if self.client.opengl_enabled:
self.opengl_label = label()
tb.new_row("OpenGL Windows", self.opengl_label),
self.graph_box = gtk.VBox(False, 10)
self.add_tab("statistics.png", "Graphs", self.populate_graphs, self.graph_box)
bandwidth_label = "Number of bytes measured by the networks sockets"
tb.new_row("GTK", label(gtk._version), label(server_version_info("gtk_version", "server.gtk.version")))
else:
tb.new_row("PyGTK", label(client_version_info("pygtk_version")), label(server_version_info("pygtk_version", "server.pygtk.version")))
tb.new_row("GTK", label(client_version_info("gtk_version")), label(server_version_info("gtk_version", "server.gtk.version")))
tb.new_row("Python", label(platform.python_version()), label(server_version_info("python_version")))
cl_gst_v, cl_pygst_v = "", ""
if HAS_SOUND:
try:
from xpra.sound.gstreamer_util import gst_version as cl_gst_v, pygst_version as cl_pygst_v
except:
pass
tb.new_row("GStreamer", label(make_version_str(cl_gst_v)), label(server_version_info("gst_version")))
tb.new_row("pygst", label(make_version_str(cl_pygst_v)), label(server_version_info("pygst_version")))
tb.new_row("OpenGL", label(make_version_str(self.client.opengl_props.get("opengl", "n/a"))), label("n/a"))
tb.new_row("OpenGL Vendor", label(make_version_str(self.client.opengl_props.get("vendor", ""))), label("n/a"))
tb.new_row("PyOpenGL", label(make_version_str(self.client.opengl_props.get("pyopengl", "n/a"))), label("n/a"))
# Features Table:
tb = self.table_tab("features.png", "Features", self.populate_features)
randr_box = gtk.HBox(False, 20)
self.server_randr_label = label()
self.server_randr_icon = gtk.Image()
randr_box.add(self.server_randr_icon)
randr_box.add(self.server_randr_label)
tb.new_row("RandR Support", randr_box)
opengl_box = gtk.HBox(False, 20)
self.server_opengl_label = label()
self.server_opengl_icon = gtk.Image()
opengl_box.add(self.server_opengl_icon)
opengl_box.add(self.server_opengl_label)
tb.new_row("Client OpenGL", opengl_box)
self.server_encodings_label = label()
# Connection Table:
tb = self.table_tab("connect.png", "Connection", self.populate_connection)
tb.new_row("Server Endpoint", label(self.connection.target))
if self.client.server_display:
tb.new_row("Server Display", label(self.client.server_display))
if "hostname" in scaps:
tb.new_row("Server Hostname", label(scaps.get("hostname")))
if self.client.server_platform:
tb.new_row("Server Platform", label(self.client.server_platform))
self.server_load_label = label()
tb.new_row("Server Load", self.server_load_label, label_tooltip="Average over 1, 5 and 15 minutes")
self.session_started_label = label()
tb.new_row("Session Started", self.session_started_label)
self.session_connected_label = label()
tb.new_row("Session Connected", self.session_connected_label)
self.input_packets_label = label()
tb.new_row("Packets Received", self.input_packets_label)
self.input_bytes_label = label()
tb.new_row("Bytes Received", self.input_bytes_label)
self.output_packets_label = label()
tb.new_row("Packets Sent", self.output_packets_label)
self.output_bytes_label = label()
tb.new_row("Bytes Sent", self.output_bytes_label)
self.compression_label = label()
tb.new_row("Compression Level", self.compression_label)
self.connection_type_label = label()
tb.new_row("Connection Type", self.connection_type_label)
self.input_encryption_label = label()
tb.new_row("Input Encryption", self.input_encryption_label)
self.output_encryption_label = label()
tb.new_row("Output Encryption", self.output_encryption_label)
tb.add_row(label("Decoding Latency (ms)"), *self.decoding_labels)
self.regions_per_second_labels = maths_labels()
tb.add_row(label("Regions/s"), *self.regions_per_second_labels)
self.regions_sizes_labels = maths_labels()
tb.add_row(label("Pixels/region"), *self.regions_sizes_labels)
self.pixels_per_second_labels = maths_labels()
tb.add_row(label("Pixels/s"), *self.pixels_per_second_labels)
self.windows_managed_label = label()
tb.new_row("Regular Windows", self.windows_managed_label),
self.transient_managed_label = label()
tb.new_row("Transient Windows", self.transient_managed_label),
self.trays_managed_label = label()
tb.new_row("Trays Managed", self.trays_managed_label),
if self.client.opengl_enabled:
self.opengl_label = label()
tb.new_row("OpenGL Windows", self.opengl_label),
self.graph_box = gtk.VBox(False, 10)
self.add_tab("statistics.png", "Graphs", self.populate_graphs, self.graph_box)
bandwidth_label = "Number of bytes measured by the networks sockets"
if SHOW_PIXEL_STATS:
bandwidth_label += ",\nand number of pixels rendered"
self.bandwidth_graph = self.add_graph_button(bandwidth_label, self.save_graphs)
self.latency_graph = self.add_graph_button("The time it takes to send an echo packet and get the reply", self.save_graphs)
self.pixel_in_data = maxdeque(N_SAMPLES+4)
self.net_in_bytecount = maxdeque(N_SAMPLES+4)
self.net_out_bytecount = maxdeque(N_SAMPLES+4)
self.set_border_width(15)
self.add(self.tab_box)
if not is_gtk3():
scaps = self.client.server_capabilities
from xpra.__init__ import __version__
tb.new_row("Xpra", label(__version__), label(self.client._remote_version or "unknown"))
cl_rev, cl_ch, cl_date = "unknown", "", ""
try:
from xpra.build_info import BUILD_DATE as cl_date, REVISION as cl_rev, LOCAL_MODIFICATIONS as cl_ch
except:
pass
def getcap(*names):
for x in names:
v = scaps.get(x)
if v:
return v
return "unknown"
tb.new_row("Revision", label(cl_rev), label(self.client._remote_revision or "unknown"))
tb.new_row("Local Changes", label(cl_ch), label(getcap("local_modifications", "build.local_modifications")))
tb.new_row("Build date", label(cl_date), label(getcap("build_date", "build.date")))
def make_version_str(version):
if version and type(version) in (tuple, list):
version = ".".join([str(x) for x in version])
return version or "unknown"
def server_version_info(*names):
return make_version_str(getcap(*names))
def client_version_info(prop_name):
info = "unknown"
if hasattr(gtk, prop_name):
info = make_version_str(getattr(gtk, prop_name))
return info
if is_gtk3():
tb.new_row("PyGobject", label(gobject._version))
tb.new_row("Client GDK", label(gdk._version))
tb.new_row("GTK", label(gtk._version), label(server_version_info("gtk_version", "server.gtk.version")))