
副屏最常见的宿命是成为一块“高级壁纸显示器”——放着大图挂着时钟偶尔瞥一眼系统监控。但同样是这块屏如果换成个人信息终端的用法它就能同时承载时间、天气、待办、日历、系统状态、RSS 新闻、智能家居开关变成一块只读的看板而不是被动等待点击的普通窗口。这不是桌面美化而是一个很容易被低估的效率重构。这篇文章会完整讲清楚副屏改造成个人信息终端需要什么硬件、有哪些可落地的方案、数据从哪里来、怎么长期稳定跑以及最常见的坑在哪里。即使手上只有一台旧手机或者一块闲置显示器也可以在今天内跑起来。1. 副屏个人信息终端的核心能力速览先给一张速览表把“副屏变成信息终端”这件事拆开看能力项说明信息承载时间、天气、日历、待办、系统状态、RSS 新闻、股票、智能家居面板核心实现方式虚拟副屏/扩展屏、浏览器全屏仪表盘、桌面小组件、专用传感器面板最低硬件门槛普通 PC 旧手机或旧平板即可无需焊接改造最佳硬件组合闲置显示器 Windows 主机副屏输出或树莓派/迷你主机常亮显示数据来源本地系统命令、第三方开放 API、自建接口、RSS/JSON 订阅是否支持 API自建仪表盘完全支持成品软件则视具体版本而定刷新机制定时刷新、前端轮询、后端聚合推送均可批量任务多个接口数据合并刷新类似批量数据看板适合场景办公信息看板、直播监看、智能家居控制台、个人效率仪表盘从这张表能看到副屏信息终端的核心不是显示器本身而是“数据 展示层”。显示器只是信息出口数据源怎么接、展示层怎么设计才是能不能长期用起来的关键。2. 这个思路适合谁使用边界先把话说清楚不是所有人都需要把自己的副屏改成信息终端。2.1 适合谁长时间坐在电脑前工作的人副屏可以成为待办、日历、邮件的常驻提醒区。直播用户、音频创作者需要副屏显示音频表、CPU 负载、在线时长等状态。智能家居玩家需要一块常亮的控制面板显示设备状态。喜欢低成本折腾硬件的人旧手机和旧平板在吃灰之前还有价值可挖。数据开发者希望通过一个可视化页面快速观察本地接口、服务状态和日志。2.2 使用边界如果只有一块显示器不建议为了“信息终端”专门腾出主屏空间日常操作体验会严重下降。如果副屏主要用来玩 FPS、做视频剪辑这类高动态刷新场景不适合改成长时间静态看板两者目标冲突。如果对隐私要求极高不建议把个人日历、待办、账户信息长期暴露在摄像头或办公室公共视线里需要做遮挡或选择低敏感信息展示。如果使用第三方开放 API要遵守对方的服务条款和请求频率限制不要粗暴高频轮询导致接口被封。旧手机长时间通电时要注意电池鼓包和过热风险如果长期放在桌面当作信息屏更稳妥的做法是拆掉电池直接接电源或者选择不带电池的硬件方案。3. 副屏的硬件选型与前置条件这个项目对硬件的要求并不高但不同的硬件选型决定了后续的部署路径。3.1 常见硬件组合硬件方案优点风险点PC 普通闲置显示器低延迟、设置简单Windows 自带多显示器功能功耗相对较高占桌面空间旧手机/旧平板无需额外购买自带触控屏方便竖屏电池老化、长时间充电安全风险、无线连接偶尔不稳定树莓派/迷你主机 小屏幕功耗低可长期挂机适合做独立信息墙需要额外购买初始配置成本较高电视盒子 显示器网络播放能力好浏览器可用性需实测浏览器版本和 Web 兼容性不确定墨水屏平板长时间显示功耗极低护眼刷新率低不适合动态复杂页面如果只是临时体验优先选旧手机或旧平板加无线副屏方案如果要做长期信息墙建议单独准备一块闲置显示器挂在电脑第二输出口上稳定性最好。3.2 前置条件检查操作系统Windows 10/11 环境下做多屏扩展最省事macOS/Linux 也支持多屏只是部分虚拟副屏软件的支持程度需要验证。网络环境无线副屏方案依赖局域网要求路由器和设备在同一个局域网内。浏览器推荐系统自带 Edge/Chrome/Safari旧手机上的浏览器版本不能太旧否则本地仪表盘的fetch和 CSS 网格布局可能不支持。供电旧手机长时间挂着最好准备一个支持过充保护的充电头不要用劣质快充头长期供电。端口自建仪表盘服务默认会监听8000、8080这类端口如果被占用需要换端口。4. 方案 A把旧手机或平板变成扩展副屏如果你手边刚好有旧手机或旧平板最快速的方式是用虚拟副屏类软件把它变成电脑的第二显示器。这里说的不是厂商自带的投屏而是“把手机识别成一块真正的 Windows 扩展显示器”。安装完成后手机屏幕会出现在系统显示设置里可以像拖动普通显示器一样拖动窗口过去。大致流程如下在电脑上安装虚拟显示驱动和对应的服务端程序。在旧手机或平板上安装同一个客户端。确保两者在同一个局域网。打开客户端电脑上确认检测到新的显示设备。在操作系统显示设置里把手机设置为“扩展”模式。拖动浏览器窗口到副屏全屏显示仪表盘页面。使用时的几个关键观察点无线模式下延迟会存在静态信息看板完全能接受但不适合把鼠标高频拖动的窗口长时间放在副屏上操作。如果需要更好的稳定性和更低的延迟可以用 USB 数据线连接虚拟显示驱动一般也支持 USB 传输。手机屏幕默认偏小竖屏状态下适合显示时钟、待办、天气这类垂直信息流横屏则适合展示宽屏仪表盘。这种方案的优点是启动最快不需要任何额外硬件投入。缺点是长时间充电的电池隐患、无线依赖、以及手机屏幕素质不如专业显示器来得稳定。5. 方案 B浏览器全屏仪表盘这是我最推荐的核心方案也是副屏变个人的信息终端的通用底座。原理很简单在电脑本地跑一个轻量 Web 服务返回一个仪表盘页面和一批 JSON 接口。副屏浏览器全屏打开这个页面定时请求本地接口并渲染数据。这样做的优势非常明显跨平台手机、平板、任意浏览器都能打开。完全自定义不需要受制于第三方小组件的皮肤和格式。数据驱动所有接口都可以自由接入不怕平台锁死。资源占用低一个静态页面加少量请求长期挂机也问题不大。下面给出一套可以直接跑通的最小示例。5.1 新建仪表盘页面先新建一个dashboard.html文件内容是一个简单的信息看板包含时钟、天气、待办和系统状态四个卡片!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title个人仪表盘/title style body { margin: 0; font-family: system-ui, sans-serif; background: #111; color: #eee; } .dashboard { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; padding: 12px; box-sizing: border-box; min-height: 100vh; } .card { background: #1c1c1e; border-radius: 10px; padding: 16px; } .time { font-size: 48px; font-weight: bold; letter-spacing: 1px; } .date { font-size: 16px; color: #aaa; margin-top: 4px; } h2 { font-size: 14px; margin: 0 0 10px; color: #4caf50; text-transform: uppercase; } ul { list-style: none; margin: 0; padding: 0; } li { padding: 4px 0; border-bottom: 1px solid #26262a; } /style /head body div classdashboard div classcard div classtime idclock--:--:--/div div classdate iddate----/div /div div classcard h2天气/h2 div idweather加载中.../div /div div classcard h2待办/h2 ul idtodo/ul /div div classcard h2系统状态/h2 div idsystem加载中.../div /div /div script function updateClock() { const now new Date(); document.getElementById(clock).textContent now.toLocaleTimeString(zh-CN, { hour12: false }); document.getElementById(date).textContent now.toLocaleDateString(zh-CN, { weekday: long, month: long, day: numeric }); } function loadDashboard() { Promise.all([ fetch(/api/weather).then(res res.json()), fetch(/api/todo).then(res res.json()), fetch(/api/system).then(res res.json()) ]).then(([weather, todo, system]) { document.getElementById(weather).textContent weather.temperature °C weather.description; const todoList document.getElementById(todo); todoList.innerHTML ; todo.forEach(item { const li document.createElement(li); li.textContent (item.done ? [x] : [ ] ) item.text; todoList.appendChild(li); }); document.getElementById(system).textContent CPU system.cpu % 内存 system.memory %; }).catch(err { document.getElementById(weather).textContent 接口加载失败; console.error(err); }); } updateClock(); setInterval(updateClock, 1000); loadDashboard(); setInterval(loadDashboard, 30000); /script /body /html这个页面在保存后不要直接双击用file://打开因为浏览器对本地文件请求接口有跨域限制也会出现接口地址不对的问题。正确方式是用一个本地 HTTP 服务来承载页面和接口。5.2 本地接口服务再新建一个app.py用 Flask 提供页面静态文件和服务接口。执行前先安装依赖pip install flask psutil然后写入以下代码import datetime import psutil from flask import Flask, jsonify, send_from_directory app Flask(__name__, static_folder.) app.route(/) def index(): return send_from_directory(., dashboard.html) app.route(/api/system) def api_system(): return jsonify({ cpu: psutil.cpu_percent(interval1), memory: psutil.virtual_memory().percent, time: datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S) }) app.route(/api/todo) def api_todo(): # 实际使用时可以改成读取任务管理软件、数据库或者本地文件 todos [ {text: 整理本周计划, done: False}, {text: 回复项目邮件, done: True} ] return jsonify(todos) app.route(/api/weather) def api_weather(): # 这里应接入天气服务当前返回占位数据 weather { temperature: 26, description: 多云 } return jsonify(weather) if __name__ __main__: app.run(host0.0.0.0, port8000, debugFalse)启动后浏览器访问http://127.0.0.1:8000就能看到仪表盘页面。副屏浏览器全屏打开这个地址即可。5.3 一键启动脚本每次敲命令有点麻烦可以在项目目录下新建一个start_dashboard.batecho off chcp 65001 nul cd /d %~dp0 start http://127.0.0.1:8000 python app.py双击脚本会自动打开默认浏览器并启动本地服务。这样就把“启动看板”这个动作简化成一步。5.4 把仪表盘放到副屏浏览器打开页面后把窗口拖动到副屏按F11进入全屏即可。如果副屏是竖屏仪表盘的 CSS 需要单独做适配例如把网格改成单列让卡片从上到下排列。实际操作时也可以为竖屏单独写一个dashboard_portrait.html两种布局分别保存。6. 方案 C桌面小组件与专用信息面板不想写代码的话Windows 上还有两条现成的路线。6.1 桌面小组件方案以常见的桌面小组件工具为例这类工具可以加载社区皮肤显示系统状态、时钟、日历、网络速度等信息。很多皮肤自带时间、天气和硬件监控无需自己开发。操作流程一般是安装桌面小组件工具。下载或导入喜欢的皮肤。调整皮肤位置放在副屏区域。通过工具的配置文件修改数据源和刷新周期。需要注意不同皮肤的质量差别很大有些皮肤依赖第三方插件安装后可能无法正常显示。搭配副屏使用时优先选择自带时钟和系统监控的皮肤减少依赖。长时间显示时避免使用动态效果过多的皮肤否则副屏会显得很吵。6.2 传感器信息面板方案传感器信息面板类软件也可以输出为专门的仪表画面配合副屏就是一块硬件监控信息屏。常见的功能包括 CPU 温度、频率、风扇转速、网络上下行、内存占用等。这类方案适合追求硬件实时数据的用户。但界面布局、颜色、传感器列表通常需要按自己的主板和硬件去调整配置文件的结构也各不相同。实际使用时以当前版本的官方说明为准。7. API 数据源设计与批量刷新机制副屏仪表盘后期能不能真正用起来取决于数据源设计。信息终端本质是一个“把多个数据源聚合成一屏”的只读客户端。7.1 可以接入的数据源数据源类型常见接口形态更新频率建议系统状态本地 psutil/cpu/内存/磁盘5 到 30 秒天气第三方天气 API10 到 30 分钟日历/待办个人日历服务 API1 到 5 分钟RSS/新闻RSS 转 JSON 服务或自建爬虫5 到 15 分钟股票/行情行情开放接口按接口限制智能家居Home Assistant 等本地 API实时或 5 秒自定义数据自己服务的内部 API按业务决定7.2 批量刷新与接口聚合副屏不需要像爬虫一样疯狂刷新批量刷新也不是指并发请求越多越好。更合理的做法是前端每隔固定时间统一请求一次后端聚合接口。后端把多个数据源并行抓取后合并成一份 JSON 返回。前端只负责渲染不直接访问公网第三方 API避免跨域。例如在后端增加一个/api/dashboard聚合接口一次性返回所有卡片数据{ weather: { temperature: 26, description: 多云 }, todo: [ { text: 整理本周计划, done: false } ], system: { cpu: 12, memory: 34 }, rss: [ { title: 示例新闻标题, source: 示例来源 } ] }前端只需要一个fetch(/api/dashboard)然后用setInterval定时刷新这样请求次数可控代码也简单。7.3 做失败兜底第三方 API 随时可能超时或者限流。仪表盘页面在渲染接口数据时必须处理异常情况接口超时显示上次缓存的数据而不是空白。接口报错页面显示“数据更新失败”而不是报错弹窗。没有缓存时给每个卡片提供默认占位文案。这套兜底逻辑会直接影响长期运行的体验。因为副屏是“挂在那边一直看”的某个接口晚上挂掉后第二天早上你希望看到的是部分数据缺失而不是整屏白板。8. 副屏长期运行的资源占用与性能观察副屏信息终端属于轻负载应用但长期运行时还要重点关注以下几点。8.1 CPU 与内存占用静态信息看板的负载很低。以自建 Flask 浏览器全屏为例浏览器会占用主要内存后端服务通常只占很少的 CPU。更稳妥的方式是用系统自带的资源监视器观察确认长期驻留后的 CPU 占用是否稳定在较低区间。如果 CPU 占用异常高优先检查浏览器是否因为网页动画或频繁全屏重绘导致资源飙升。8.2 网络占用无线副屏方案主要传输屏幕画面对局域网带宽有一定要求。如果页面内容变化频繁网络流量会上升。自建仪表盘则只是传输很小的 JSON 数据流量基本可以忽略。主副屏的数据传输瓶颈一般在虚拟副屏软件上不要在路由器和电脑距离过远的情况下强上无线副屏延迟会明显增大。8.3 散热与屏幕寿命旧手机长时间显示同一张静态页面存在烧屏和电池老化的风险。降低亮度、缩短待机超时、开启防烧屏机制都是必要的。如果是一块 LCD 显示器烧屏风险相对较低但仍建议设置屏幕保护或者定时切换页面内容避免常亮同一画面。8.4 降低资源占用的建议关闭仪表盘页面的不必要动画和背景渐变。降低刷新频率时钟可以每秒更新其他数据 30 秒到 5 分钟一次即可。给浏览器开节能模式或使用专门的信息看板客户端。自建后端只返回必要字段不要返回整个日志。旧设备上不要开太多后台应用尽量只保留浏览器。9. 副屏改造常见问题与排查方法问题现象可能原因排查方式解决方案虚拟副屏连接后显示黑屏扩展模式未开启或显示驱动未识别打开系统显示设置查看检测到的显示器重新连接虚拟副屏或切换为复制模式副屏分辨率不对手机/平板默认物理分辨率与系统配置不一致在显示设置中查看分辨率列表按设备实际分辨率手动设置浏览器打开仪表盘白屏使用file://打开页面导致接口跨域或接口服务未启动检查浏览器控制台报错改用 HTTP 服务打开确认 Flask 服务运行中仪表盘数据一直不刷新接口超时、API Key 失效或 CORS 被拦截在浏览器控制台观察 Network 请求增加后端聚合接口避免前端直接请求第三方 API虚拟副屏延迟大无线网络弱、设备过热或软件编码压力大观察网络延迟和 CPU 占用改用 USB 有线连接或更换路由器位置旧手机长时间充电发热严重电池老化、劣质充电头测量充电温度和电池循环状态降低亮度、使用带过充保护的充电头长期使用建议拆电池端口被占用导致启动失败8000/8080 端口被其他程序占用运行命令检查端口占用在app.run中更换端口如 8081页面字体太小或布局错乱竖屏与横屏共用同一套 CSS检查设备是否为竖屏为竖屏单独编写一套 CSS 或使用响应式布局10. 把副屏做成个人终端的最佳实践最后整理一份工程化建议按这个顺序做可以少踩很多坑。10.1 先跑通最小方案不要一开始就接十个数据源。先用最简单的 dashboard.html Flask 示例跑通“浏览器打开页面、显示时间、刷新接口”这三个环节。最小方案稳定后再逐步添加天气、待办、RSS 等卡片。10.2 数据源做好分层把仪表盘页面、本地后端、第三方 API 拆成三层。前端只负责展示后端统一聚合数据第三方 API 只被本地后端调用。这样做能避免跨域也方便后续替换数据源。10.3 建立启动脚本和自启动正式用起来之后建议把服务做成开机自启动而不是每次手动双击脚本。Windows 下可以用计划任务程序Linux 下可以用 systemd。旧手机或平板也需要设置为充电状态下不休眠浏览器全屏显示仪表盘。10.4 所有接口都要有失败兜底副屏是“常亮信息墙”某个接口挂了不应该让整屏失效。给每个卡片准备一个默认状态或者缓存上次成功的数据网络恢复后自动重新请求。10.5 定期检查安全和隐私如果仪表盘接入了个人日历、待办、通信录注意不要让副屏长期面向公共空间。自建接口服务不要随意暴露到公网除非你做了鉴权和 HTTPS 保护。第三方 API 的使用也要遵守服务条款不要用高频请求冲击对方接口。11. 总结与下一步副屏变个人信息终端这件事最值得尝试的并不是某款软件而是“让副屏主动展示数据”的思路。把数据源接好后副屏就从装饰品变成了信息入口提醒、监控、订阅、状态甚至智能家居控制都可以聚合到一块屏上。第一次动手时建议先做两件事找一台能打开浏览器的旧手机或平板以及一台能跑 Python 的电脑。然后按照本文第 5 节的模板把本地仪表盘跑通。最容易踩的坑是直接双击 HTML 文件导致接口跨域记住一定要通过本地 HTTP 服务访问页面。跑通之后再逐步接入天气、待办、系统状态和 RSS 新闻。竖屏就设计成单列卡片横屏就做两列或三列布局字体要大一点刷新频率要克制一点。这个系统不会很复杂但它会变成你电脑桌前真正有用的东西。