<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Kde on 老刘博客</title>
    <link>https://www.iliu.org/tags/kde/</link>
    <description>Recent content in Kde on 老刘博客</description>
    <image>
      <title>老刘博客</title>
      <url>https://www.iliu.org/img/liujinsuiyue.jpg</url>
      <link>https://www.iliu.org/img/liujinsuiyue.jpg</link>
    </image>
    <generator>Hugo -- 0.147.5</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 18 Jan 2026 16:42:36 +0800</lastBuildDate>
    <atom:link href="https://www.iliu.org/tags/kde/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>linux下使用kde桌面，自动亮度失效解决办法</title>
      <link>https://www.iliu.org/posts/use-linux-kde-autolight/</link>
      <pubDate>Sun, 18 Jan 2026 16:42:36 +0800</pubDate>
      <guid>https://www.iliu.org/posts/use-linux-kde-autolight/</guid>
      <description>&lt;p&gt;之前一直用的桌面是gnome,也用的挺习惯，gnome很简洁，通过插件系统可以实现很多功能。前几天博客群里有聊到KDE桌面的问题，我安装后，体验了一下，也非常不错，特别是日历系统，相当的惊艳。 原生支持农历，还有中国的节假日，也是非常准确的。目前最新版的linux系统，不知道怎么回事，我的屏幕自动亮度失效了，在早些时候的版本里是可以的。在gnome下，有个插件可以解决这个问题，但是kde下没有类似的插件。我问了一下AI，它给我给出了一个方案，我使用了以后，发现非常完美的解决了我的问题。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>之前一直用的桌面是gnome,也用的挺习惯，gnome很简洁，通过插件系统可以实现很多功能。前几天博客群里有聊到KDE桌面的问题，我安装后，体验了一下，也非常不错，特别是日历系统，相当的惊艳。 原生支持农历，还有中国的节假日，也是非常准确的。目前最新版的linux系统，不知道怎么回事，我的屏幕自动亮度失效了，在早些时候的版本里是可以的。在gnome下，有个插件可以解决这个问题，但是kde下没有类似的插件。我问了一下AI，它给我给出了一个方案，我使用了以后，发现非常完美的解决了我的问题。</p>
<h4 id="核心痛点">核心痛点</h4>
<ul>
<li>硬件环境：Fedora 43 / KDE Plasma 6 (Wayland)</li>
<li>问题：系统内核可以识别环境光传感器（ALS），但 KDE 系统设置中没有自动亮度选项。</li>
<li>诉求：保留 KDE 完美的日历体验，同时实现亮度的平滑、自动调节。</li>
</ul>
<h4 id="第一步确认硬件传感器是否工作">第一步：确认硬件传感器是否工作</h4>
<p>在折腾软件前，首先要确认 Linux 内核是否能读取到传感器数值。安装 iio-sensor-proxy 并运行测试：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo dnf install iio-sensor-proxy
</span></span><span class="line"><span class="cl">monitor-sensor
</span></span></code></pre></td></tr></table>
</div>
</div><p>如果看到 Light changed: XX.XXXXXX (lux) 的输出，说明硬件层已经打通，剩下的只是逻辑控制问题。</p>
<h4 id="第二步安装底层控制工具">第二步：安装底层控制工具</h4>
<p>为了绕过不稳定的 D-Bus 接口，我们选择直接与系统底层驱动对话的工具：brightnessctl。它在 Fedora 下非常稳定，且支持 Wayland。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo dnf install brightnessctl
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="第三步编写平滑过渡自动亮度脚本">第三步：编写“平滑过渡”自动亮度脚本</h4>
<p>这个脚本会潜伏在后台，实时监控 monitor-sensor 的输出，并根据你设定的光照阶梯，平滑地（以 1% 为步长） 调节屏幕亮度。
脚本路径： ~/bin/auto_brightness.sh</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl"><span class="c1"># 1. 初始化当前亮度</span>
</span></span><span class="line"><span class="cl"><span class="nv">current_brightness</span><span class="o">=</span><span class="k">$(</span>brightnessctl -d intel_backlight -m <span class="p">|</span> cut -d, -f4 <span class="p">|</span> tr -d <span class="s1">&#39;%&#39;</span><span class="k">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 2. 持续监控传感器输出</span>
</span></span><span class="line"><span class="cl">monitor-sensor <span class="p">|</span> <span class="k">while</span> <span class="nb">read</span> -r line<span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="o">[[</span> <span class="s2">&#34;</span><span class="nv">$line</span><span class="s2">&#34;</span> <span class="o">==</span> *<span class="s2">&#34;Light changed:&#34;</span>* <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">        <span class="c1"># 提取 Lux 数值并转为整数</span>
</span></span><span class="line"><span class="cl">        <span class="nv">lux_float</span><span class="o">=</span><span class="k">$(</span><span class="nb">echo</span> <span class="s2">&#34;</span><span class="nv">$line</span><span class="s2">&#34;</span> <span class="p">|</span> awk <span class="s1">&#39;{print $3}&#39;</span><span class="k">)</span>
</span></span><span class="line"><span class="cl">        <span class="nv">lux</span><span class="o">=</span><span class="k">$(</span><span class="nb">printf</span> <span class="s2">&#34;%.0f&#34;</span> <span class="s2">&#34;</span><span class="nv">$lux_float</span><span class="s2">&#34;</span> 2&gt;/dev/null<span class="k">)</span>
</span></span><span class="line"><span class="cl">        <span class="o">[</span> -z <span class="s2">&#34;</span><span class="nv">$lux</span><span class="s2">&#34;</span> <span class="o">]</span> <span class="o">&amp;&amp;</span> <span class="k">continue</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        <span class="c1"># 3. 设定你的个性化亮度阶梯 (Lux vs 亮度百分比)</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="o">[</span> <span class="s2">&#34;</span><span class="nv">$lux</span><span class="s2">&#34;</span> -gt <span class="m">200</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> <span class="nv">target</span><span class="o">=</span><span class="m">100</span>
</span></span><span class="line"><span class="cl">        <span class="k">elif</span> <span class="o">[</span> <span class="s2">&#34;</span><span class="nv">$lux</span><span class="s2">&#34;</span> -gt <span class="m">100</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> <span class="nv">target</span><span class="o">=</span><span class="m">85</span>
</span></span><span class="line"><span class="cl">        <span class="k">elif</span> <span class="o">[</span> <span class="s2">&#34;</span><span class="nv">$lux</span><span class="s2">&#34;</span> -gt <span class="m">50</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> <span class="nv">target</span><span class="o">=</span><span class="m">70</span>
</span></span><span class="line"><span class="cl">        <span class="k">elif</span> <span class="o">[</span> <span class="s2">&#34;</span><span class="nv">$lux</span><span class="s2">&#34;</span> -gt <span class="m">25</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> <span class="nv">target</span><span class="o">=</span><span class="m">55</span>
</span></span><span class="line"><span class="cl">        <span class="k">elif</span> <span class="o">[</span> <span class="s2">&#34;</span><span class="nv">$lux</span><span class="s2">&#34;</span> -gt <span class="m">12</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> <span class="nv">target</span><span class="o">=</span><span class="m">35</span>  <span class="c1"># 针对室内办公优化</span>
</span></span><span class="line"><span class="cl">        <span class="k">elif</span> <span class="o">[</span> <span class="s2">&#34;</span><span class="nv">$lux</span><span class="s2">&#34;</span> -gt <span class="m">5</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> <span class="nv">target</span><span class="o">=</span><span class="m">20</span>
</span></span><span class="line"><span class="cl">        <span class="k">else</span> <span class="nv">target</span><span class="o">=</span>10<span class="p">;</span> <span class="k">fi</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        <span class="c1"># 4. 平滑过渡逻辑：让亮度“滑”到目标值</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="o">[</span> <span class="s2">&#34;</span><span class="nv">$target</span><span class="s2">&#34;</span> -ne <span class="s2">&#34;</span><span class="nv">$current_brightness</span><span class="s2">&#34;</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">            <span class="nv">step</span><span class="o">=</span><span class="k">$((</span> target &gt; current_brightness ? <span class="m">1</span> : <span class="o">-</span><span class="m">1</span> <span class="k">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">            <span class="k">while</span> <span class="o">[</span> <span class="s2">&#34;</span><span class="nv">$current_brightness</span><span class="s2">&#34;</span> -ne <span class="s2">&#34;</span><span class="nv">$target</span><span class="s2">&#34;</span> <span class="o">]</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">                <span class="nv">current_brightness</span><span class="o">=</span><span class="k">$((</span>current_brightness <span class="o">+</span> step<span class="k">))</span>
</span></span><span class="line"><span class="cl">                brightnessctl -d intel_backlight <span class="nb">set</span> <span class="si">${</span><span class="nv">current_brightness</span><span class="si">}</span>% &gt; /dev/null 2&gt;<span class="p">&amp;</span><span class="m">1</span>
</span></span><span class="line"><span class="cl">                sleep 0.02 <span class="c1"># 调节此数值改变过渡速度</span>
</span></span><span class="line"><span class="cl">            <span class="k">done</span>
</span></span><span class="line"><span class="cl">        <span class="k">fi</span>
</span></span><span class="line"><span class="cl">    <span class="k">fi</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="第四步实现开机静默自启">第四步：实现开机静默自启</h4>
<p>为了让它像原生功能一样工作，我们需要在 KDE “系统设置” -&gt; “启动和关闭” -&gt; “自动启动” 中添加该脚本。
为了保证后台运行且不弹窗、不留日志，启动命令建议设置为：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">/home/你的用户名/bin/auto_brightness.sh &gt; /dev/null 2&gt;&amp;1
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="结语">结语</h4>
<p>通过这段脚本，我不仅找回了遗失的“自动亮度”，还获得了比 GNOME 插件更高的自由度：我可以精确控制在多少 Lux 下显示多少亮度，甚至可以控制亮度变化的速度。
这就是 Linux 的魅力：如果你不喜欢现有的规则，你可以自己写一个。 现在的我，可以一边看着 KDE 任务栏优雅的农历日期，一边感受着屏幕随光线柔和变化的舒适感。</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
