Ubuntu 20.04.6 用wine 10安装Notepad++,第1文件缩小,第二文件双击打开,弹窗置顶不了
cd Notepad目录 wine npp.8.9.7.Installer.x64.exe 根据界面选择进行安装 # 解决notepad第1个文件打开后然后缩小之后再打开第2个文件不弹出置顶的问题 sudo apt install wmctrl xdotool mkdir -p ~/.local/bin cd ~/.local/bin # 创建wine-notepadpp-open这个文件 touch wine-notepadpp-open # 文件内容如下 #!/bin/bash # wine-notepadpp-open (融合版路由 路径转换 日志 强制置顶激活) # 用法: wine-notepadpp-open 文件路径 set -uo pipefail # 注意不用 -e因为下面用了 后台启动 轮询中途非0返回是正常情况 export WINEPREFIX$HOME/.wine LOG$HOME/wine-notepadpp-open.log NOTEPADPP_EXE$WINEPREFIX/drive_c/Program Files/Notepad/notepad.exe # ---- Windows路径(C:\...) - Unix路径Xftp传来的参数可能是Windows形式 ---- ARGS() for arg in $; do if [[ $arg ~ ^[A-Za-z]:\\ ]]; then ARGS($(winepath -u $arg)) else ARGS($arg) fi done { echo ---- $(date) ---- printf args: printf [%s] $ echo printf converted: printf [%s] ${ARGS[]} echo } $LOG FILE${ARGS[0]:-} if [ -z $FILE ]; then echo 未收到文件参数 $LOG exit 1 fi EXT${FILE##*.} EXT${EXT,,} # 转小写 # ---- 通用窗口激活函数按标题/类名正则匹配取面积最大的窗口多次重试激活 ---- # 用法: activate_window 用于wmctrl -lx匹配的正则忽略大小写 activate_window() { local pattern$1 local max_wait50 # 最多等 5 秒 local win_id find_main_window() { local best_id local best_area0 local wid class w h geo area while read -r wid _ class _; do [ -z $wid ] continue geo$(xdotool getwindowgeometry --shell $wid 2/dev/null || true) [ -z $geo ] continue w$(echo $geo | grep ^WIDTH | cut -d -f2) h$(echo $geo | grep ^HEIGHT | cut -d -f2) [ -z $w ] || [ -z $h ] continue area$((w * h)) if [ $area -gt $best_area ]; then best_area$area best_id$wid fi done (wmctrl -lx | awk -v pat$pattern tolower($0) ~ pat) echo $best_id } for ((i0; imax_wait; i)); do win_id$(find_main_window) [ -n $win_id ] break sleep 0.1 done if [ -z $win_id ]; then echo 未找到匹配窗口: $pattern $LOG return 1 fi wmctrl -ir $win_id -b remove,hidden 2/dev/null || true xdotool windowmap $win_id 2/dev/null || true xdotool windowstate --sync --remove HIDDEN $win_id 2/dev/null || true xdotool windowstate --sync --remove SHADED $win_id 2/dev/null || true for i in 1 2 3; do xdotool windowactivate --sync $win_id 2/dev/null || true wmctrl -ia $win_id 2/dev/null || true sleep 0.15 done xdotool windowraise $win_id 2/dev/null || true echo 已激活窗口: $win_id ($pattern) $LOG return 0 } # ---- 按扩展名路由到对应程序 ---- case $EXT in doc|docx|dot|dotx|wps|wpt) echo route - wps : $FILE $LOG wps ${ARGS[]} $LOG 21 activate_window wps ;; xls|xlsx|xlt|xltx|et|ett|csv) echo route - et : $FILE $LOG et ${ARGS[]} $LOG 21 activate_window et\b|spreadsheet ;; ppt|pptx|pot|potx|dps|dpt) echo route - wpp : $FILE $LOG wpp ${ARGS[]} $LOG 21 activate_window wpp|presentation ;; *) echo route - notepad : $FILE $LOG wine $NOTEPADPP_EXE ${ARGS[]} $LOG 21 activate_window notepad\\ ;; esac # 转一次换行符防止 nano 又引入 CRLF sed -i s/\r$// ~/.local/bin/wine-notepadpp-open chmod x ~/.local/bin/wine-notepadpp-open echo export PATH$HOME/.local/bin:$PATH ~/.bashrc source ~/.bashrc echo $PATH | grep -q $HOME/.local/bin echo 已在PATH中 || echo 需要添加 sudo apt install vim cd /etc sudo vim ./environment 在PATH的路径中最前面加一个 /home/user/.local/bin: linux系统变量是用冒号分隔的windows是分号分隔的 PATH/home/user/.local/bin:原有的不变的路径 # 例如 PATH/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin... reboot echo $PATH | grep -q $HOME/.local/bin echo 已在PATH中 || echo 需要添加 bash -x ~/.local/bin/wine-notepadpp-open /home/user/.bashrc 21 | tee /tmp/npp_debug.log 系统需要一个 .desktop 文件才能在 “打开方式” 列表中识别它 cd ~/.local/share/applications touch Notepad.desktop 把如下内容复制到这个文件中 注意如下内容不能有井号注释 [Desktop Entry] NameNotepad Exec/home/user/.local/bin/wine-notepadpp-open %f TypeApplication StartupNotifytrue Path/home/user/.wine/dosdevices/c:/Program Files/Notepad Icon7ABC_notepad.0 StartupWMClassnotepad.exe grep -l -ri Notepad ~/.local/share/applications/*.desktop 2/dev/null # 得到以下几个文件就是打开方式中的多个Notepad其实可以删除这几个多余的.desktop文件我这里没有删除如果没有就跳过这些文件 ~/.local/share/applications/wine-extension-inf.desktop ~/.local/share/applications/wine-extension-ini.desktop ~/.local/share/applications/wine-extension-log.desktop ~/.local/share/applications/wine-extension-txt.desktop . . . # 如果还有别的都算 # 把wine-extension-inf.desktop、wine-extension-ini.desktop、wine-extension-log.desktop、wine-extension-txt.desktop、...中的Exec...这行改成如下不能有注释其他行不动 Exec/home/user/.local/bin/wine-notepadpp-open %f # 将Notepad.desktop赋权限 chmod x ~/.local/share/applications/Notepad.desktop chmod x ~/.local/share/applications/wine-extension-inf.desktop chmod x ~/.local/share/applications/wine-extension-ini.desktop chmod x ~/.local/share/applications/wine-extension-log.desktop chmod x ~/.local/share/applications/wine-extension-txt.desktop . . . # 更新系统应用数据库 update-desktop-database ~/.local/share/applications/ # 做下面的检查 cat ~/.config/mimeapps.list | grep -i text 如果上面的结果中有 text/plainNotepad.desktop 就说明对的否则执行下面的 xdg-mime default Notepad.desktop text/plain # 强制把 text/plain 关联改成您的程序 gtk-launch Notepad /home/user/.bashrc # .bashrc 只是一个文件例子换一个别的路径的文件都行 xdg-mime query default text/plain # 之后随便找一个文本文件右键-属性-打开方式-选择Notepad就可以将文本文件默认使用Notepad打开

相关新闻

CTF逆向入门:从UPX脱壳到IDA静态分析与Python脚本解题

CTF逆向入门:从UPX脱壳到IDA静态分析与Python脚本解题

1. 项目概述:从一道MoeCTF题开始的逆向之旅 最近在带一些刚入门安全的朋友,发现很多新手对CTF逆向既向往又畏惧。向往的是那种破解谜题、找到Flag的成就感,畏惧的是面对一堆汇编指令和加密算法时的茫然。正好,MoeCTF Week1有一道典…

2026/8/6 17:16:25 阅读更多 →
前端程序员必看:收藏这份前端+Java+AI进阶成长路线图,突破职业瓶颈!

前端程序员必看:收藏这份前端+Java+AI进阶成长路线图,突破职业瓶颈!

本文是一位资深前端开发者的自省与成长计划。作者意识到单一前端技能的局限性,提出通过学习Java后端和AI应用能力,实现从前端到全栈的转型。文章强调了Java在上海职场的优势,以及将AI融入业务的重要性。 自我介绍 大家好,我是一名…

2026/8/6 17:16:25 阅读更多 →
Chromium/Gerrit 开发实战:合并后代码被还原?一份完整的故障排查与回退指南

Chromium/Gerrit 开发实战:合并后代码被还原?一份完整的故障排查与回退指南

问题的核心场景在 Chromium 这样的超大型开源项目开发中,我们经常需要将特性分支(A)的代码合并到主线分支(B)。理想情况下,一切顺利。但现实中,冲突解决是最大的风险点。你遇到的典型情况&#…

2026/8/6 17:15:24 阅读更多 →

最新新闻

Bolt设计系统在Thunderbird for iOS中的应用:UI组件开发实战

Bolt设计系统在Thunderbird for iOS中的应用:UI组件开发实战

Bolt设计系统在Thunderbird for iOS中的应用:UI组件开发实战 【免费下载链接】thunderbird-ios Thunderbird for iOS – Open Source Email App for iOS 项目地址: https://gitcode.com/gh_mirrors/th/thunderbird-ios Thunderbird for iOS作为一款开源邮件应…

2026/8/6 19:46:29 阅读更多 →
MLFeatureSelection验证方法全解析:K折交叉验证与时间序列验证最佳实践

MLFeatureSelection验证方法全解析:K折交叉验证与时间序列验证最佳实践

MLFeatureSelection验证方法全解析:K折交叉验证与时间序列验证最佳实践 【免费下载链接】Feature-Selection Features selector based on the self selected-algorithm, loss function and validation method 项目地址: https://gitcode.com/gh_mirrors/fe/Featur…

2026/8/6 19:46:29 阅读更多 →
lsp-java核心功能揭秘:代码补全、导航与重构的高效实践

lsp-java核心功能揭秘:代码补全、导航与重构的高效实践

lsp-java核心功能揭秘:代码补全、导航与重构的高效实践 【免费下载链接】lsp-java lsp-mode :heart: java 项目地址: https://gitcode.com/gh_mirrors/ls/lsp-java lsp-java是一款基于lsp-mode的Java开发工具,它为开发者提供了强大的代码补全、智…

2026/8/6 19:46:29 阅读更多 →
角色数据隔离 + 策略路由

角色数据隔离 + 策略路由

业务背景 这个系统管的是工地上的塔机/升降机,参与方有 8 种角色:角色枚举值roleId干什么的产权单位PROPERTY(1)1001塔机的"房东",设备归他安装单位INSTALL(2)1003负责把塔机装起来使用单位USE(4)1005工地上实际用塔机的监理单位SU…

2026/8/6 19:46:29 阅读更多 →
免费解锁NVIDIA显卡隐藏性能:Profile Inspector终极配置指南

免费解锁NVIDIA显卡隐藏性能:Profile Inspector终极配置指南

免费解锁NVIDIA显卡隐藏性能:Profile Inspector终极配置指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否知道你的NVIDIA显卡还隐藏着200多项官方控制面板无法访问的高级设置&…

2026/8/6 19:46:29 阅读更多 →
coalecing

coalecing

Memory Coalescing(内存合并访问) 是 GPU 编程中针对 Global Memory(全局内存) 最基础且最重要的访存性能优化机制。 它的核心思想是:当一个 Warp(32 个线程)同时发起全局内存读写时&#xff0c…

2026/8/6 19:45:29 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →