Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解

Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解

——2024-02-11

code review!

文章目录

  • Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解
      • `xhost +` 的作用
      • `xhost` 与 Docker 的关系
    • -e GDK_SCALE 和 -e GDK_DPI_SCALE详解
      • `GDK_SCALE`
      • `GDK_DPI_SCALE`

xhost 是一个用来控制 X 服务器图形界面访问权限的工具。X 服务器是跑在类Unix操作系统上的软件,它管理和提供图形界面服务。 xhost 允许用户指定哪些用户和主机可以显示图形界面上的窗口。

xhost + 的作用

使用 xhost + 命令可以让任何用户从任何主机连接到 X 服务器。这个命令会关闭 X 服务器的访问控制,这意味着任何人都没有限制地访问你的 X 服务器。出于安全考虑,这通常不是推荐的操作,因为它会使你的 X 会话对任何人开放,并可能导致安全风险。

正确的用法通常是使用 xhost 加上特定的用户名或主机名来允许访问,例如:

xhost +SI:localuser:username

这条命令将允许本地用户 username 访问 X 服务器。

或者只允许特定的远程主机访问:

xhost +hostname

这条命令允许来自 hostname 的用户访问 X 服务器。

xhost 与 Docker 的关系

在使用 Docker 容器进行图形界面应用的开发时,有时需要将容器内运行的图形应用显示到宿主机的屏幕上。Docker 容器通常是隔离的,并没有直接访问宿主机的 X 服务器的权限。

要实现这一点,你需要在宿主机上允许容器访问 X 服务器。一个常见的做法是在宿主机上运行 xhost + 来禁用访问控制,然后在启动 Docker 容器时,将 X 服务器的 Unix 套接字共享给容器,这通常通过挂载一个卷来实现:

docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw my_docker_image

在这个命令中:

  • -e DISPLAY 设置环境变量 DISPLAY,让容器知道如何连接 X 服务器。
  • -v /tmp/.X11-unix:/tmp/.X11-unix:rw 将宿主机的 X 服务器 Unix 套接字目录挂载到容器中,这样容器就可以通过这个套接字与宿主机的 X 服务器通信。

为了安全起见,在完成图形界面应用的运行之后,应该通过运行 xhost - 命令来重新启用访问控制。

要注意的是,这种方法存在安全隐患,因为它允许任何应用接入你的 X 服务器。更安全的方法是只授权特定的 Docker 容器访问 X 服务器,而不是使用 xhost + 完全关闭访问控制。在 Docker 的场景下,可以通过设置特定的环境变量或者使用更细粒度的访问控制来实现这一点。

-e GDK_SCALE 和 -e GDK_DPI_SCALE详解

在使用 GTK+ (GIMP Toolkit) 应用程序时,环境变量 GDK_SCALEGDK_DPI_SCALE 可以用来调整应用程序界面的缩放级别,这在高分辨率显示屏(如 HiDPI 或 4K 显示器)上特别有用。这两个环境变量通常在启动 GTK+ 应用程序时设置,以确保应用程序的用户界面元素以合适的大小和清晰度显示。

GDK_SCALE

GDK_SCALE 环境变量用于整数缩放。它会按照指定的整数比例放大 GTK+ 程序的所有视觉元素(如窗口、按钮和文字)。例如,如果你在一个高 DPI 的显示器上发现应用程序的界面太小了,你可以通过设置 GDK_SCALE2 来使得所有的 UI 元素放大两倍。

GDK_SCALE=2 my-gtk-application

或者在使用 docker run 时:

docker run -e GDK_SCALE=2 my_docker_image

GDK_DPI_SCALE

GDK_DPI_SCALE 环境变量用于微调 DPI 缩放。不同于 GDK_SCALE 的整数缩放,GDK_DPI_SCALE 可以接受浮点数值,允许更细粒度的缩放控制。这对于那些整数缩放不够精细,或者用户想要稍微调整界面大小的情况非常有用。

比如,如果你想要让界面元素比正常大一点,但是又不想翻倍,你可以设置一个介于 1 到 2 之间的值:

GDK_DPI_SCALE=1.5 my-gtk-application

或者在使用 docker run 时:

docker run -e GDK_DPI_SCALE=1.5 my_docker_image

请注意,不是所有的 GTK+ 应用都会响应 GDK_SCALEGDK_DPI_SCALE 环境变量。应用程序需要使用相应的 GTK+ 版本并且开发者需要实现了适当的支持。此外,这两个变量可能会与其他缩放设置相互作用,例如 GNOME 的缩放设置,因此你可能需要进行一些尝试,以找到最适合你显示器和应用程序的设置。

在 Docker 环境中使用这些变量时,需要确保它们通过 -e 选项传递给容器,这样在容器内运行的应用程序就可以识别并应用这些缩放设置。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/464632.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用工具类-Collections

常用工具类-Collections 排序操作查找操作填充操作判断集合是否有交集不可变集合 java.util.Collections类是一个工具类,它包含了一些静态方法,用于操作集合(如列表和映射)。这个类主要用于创建不可修改的集合、填充集合、替换元素…

Redis篇之双写一致性

一、什么的双写一致性 1.定义 双写一致性:当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致。 2.正常情况 读操作:缓存命中,直接返回;缓存没命中查询数据库,写入缓存&#xff…

猫头虎分享已解决Bug || IndexError: index 3 is out of bounds for axis 0 with size 3

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

深入学习《大学计算机》系列之第1章 1.7节——图灵机的一个例子

一.欢迎来到我的酒馆 第1章 1.7节,图灵机的一个例子。 目录 一.欢迎来到我的酒馆二.图灵机2.1 艾伦-图灵简介2.2 图灵机简介 三.图灵机工作原理3.1 使用图灵机打印二进制数3.2 图灵机工作原理总结 四.总结 二.图灵机 本节内容主要介绍计算机科学之父——艾伦-图灵、…

java 执行方式和类加载过程

java默认属于混合执行: 编译和解释并存 java先进行解释执行,遇到多次重复的代码会把它编程成可执行文件,方便下次直接执行。 可以通过VM参数来修改执行方式。 类加载过程

前端JavaScript篇之ajax、axios、fetch的区别

目录 ajax、axios、fetch的区别AjaxAxiosFetch总结注意 ajax、axios、fetch的区别 在Web开发中,ajax、axios和fetch都是用于与服务器进行异步通信的技术,但它们在实现方式和功能上有所不同。 Ajax 定义与特点:Ajax是一种在无需重新加载整个…

记录Dynamo每个节点的运行时间

不知道小伙伴们在写Dynamo程序的时候,有没有遇到这种问题→程序运行很慢,但是却不知道该优化哪些节点,可以提高程序运行的速度。 今天呢,就给大家分享一个节点包→TuneUp,在节点包管理器里就可以下载,安装…

10个常考的前端手写题,你全都会吗?(上)

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

stm32Cubmax PWM实验

一、基本概念 PWM(脉冲宽度调制)是一种常用于控制电子设备的技术。它通过改变电信号的脉冲宽度来控制设备的输出功率或电流。在PWM中,所谓的脉冲宽度是指一个周期内脉冲的持续时间。周期是指脉冲重复的时间间隔。 在PWM中,一个周…

Hive窗口函数详解

一、 窗口函数知识点 1.1 窗户函数的定义 窗口函数可以拆分为【窗口函数】。窗口函数官网指路: LanguageManual WindowingAndAnalytics - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual%20Windowing…

机器学习2--逻辑回归(案列)

糖尿病数据线性回归预测 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_diabetes diabetesload_diabetes() datadiabetes[data] targetdiabetes[target] feature_namesdiabetes[feature_names] data.shape df …

提升MySQL访问性能

1. 读写分离 设置多个从数据库,从数据库可能在多个机器中。写操作在主数据库进行主数据库提供数据的主要依据 缓解了MySQL的读压力。 主从复制原理图如下 如果对于读操作有一致性要求,那么读操作去主数据库即可。 2. 连接池 因为一个请求必须要…