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

2024-02-12 21:12

本文主要是介绍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 选项传递给容器,这样在容器内运行的应用程序就可以识别并应用这些缩放设置。
在这里插入图片描述

这篇关于Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/703625

相关文章

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

Python中局部变量和全局变量举例详解

《Python中局部变量和全局变量举例详解》:本文主要介绍如何通过一个简单的Python代码示例来解释命名空间和作用域的概念,它详细说明了内置名称、全局名称、局部名称以及它们之间的查找顺序,文中通... 目录引入例子拆解源码运行结果如下图代码解析 python3命名空间和作用域命名空间命名空间查找顺序命名空

SpringRetry重试机制之@Retryable注解与重试策略详解

《SpringRetry重试机制之@Retryable注解与重试策略详解》本文将详细介绍SpringRetry的重试机制,特别是@Retryable注解的使用及各种重试策略的配置,帮助开发者构建更加健... 目录引言一、SpringRetry基础知识二、启用SpringRetry三、@Retryable注解

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Python中的魔术方法__new__详解

《Python中的魔术方法__new__详解》:本文主要介绍Python中的魔术方法__new__的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、核心意义与机制1.1 构造过程原理1.2 与 __init__ 对比二、核心功能解析2.1 核心能力2.2