【 以下文字转载自 Programming 讨论区 】
发信人: uju (动物园饲养员), 信区: Programming
标 题: 分享putty半透明窗口的patch, 以及编译方法
发信站: 水木社区 (Fri Jun 23 09:05:41 2023), 站内
transparent putty window patch
原理很简单,加两行代码就行,数值 220 表示不透明的程度,0 完全透明,255 完全不透明。
======================================
diff --git a/windows/window.c b/windows/window.c
index 69cc3d3..c717bb5 100644
--- a/windows/window.c
+++ b/windows/window.c
@@ -668,6 +668,11 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
CreateCaret(wgs->term_hwnd, wgs->caretbm,
wgs->font_width, wgs->font_height);
+ {
+ SetWindowLongPtr(wgs->term_hwnd, GWL_EXSTYLE, GetWindowLongPtr(wgs->term_hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
+ SetLayeredWindowAttributes(wgs->term_hwnd, 0, 220, LWA_ALPHA);
+ }
+
/*
* Initialise the scroll bar.
*/
======================================
附件中还有一个更完善的补丁 transparent_window2.patch :
可以通过参数 -winalpha 设置透明度
可以在配置界面设置透明度 Window -> Transparency alpha(9~255),点 Apply 后即时生效。
选项位于 Control the scrollback in the window 框里面,是因为这里恰巧有空间。
alpha 值下限是9,再小就看不到窗口了。
和其它自带的配置项一样可以存入注册表或从注册表载入。
在 Session 那里选中 Default Settings 再点 Save,就能存入注册表了。
======================================
最近上游代码做了修改,对应的patch为transparent_window3.patch
对应的注册表键值改成了win_alpha
======================================
可用 mingw-w64 和 cmake,加上 msys2 的 tar patch make 来编译。
mingw-w64 和 cmake 可单独下载的加入PATH环境变量,也可用 msys2 的 pacman 安装。
用 git 获取源码
git clone --depth=1
https://git.tartarus.org/simon/putty.git进入目录打上附件中的补丁
patch -Np1 -i transparent_window2.patch
执行如下两个命令即可编译出成品
cmake -G 'MSYS Makefiles' .
make -j4
======================================
另外那个几十 KB 的 webd 网盘更新了
增加了文件夹上传 拖拽上传等功能
详见
https://m.newsmth.net/article/NewSoftware/229709======================================
※ 修改:·uju 于 Sep 26 13:05:32 2023 修改本文·[FROM: 107.189.10.*]
※ 来源:·水木社区
http://m.mysmth.net·[FROM: 194.195.112.*]
修改:uju FROM 107.189.10.*
FROM 194.195.112.*
附件(565B) transparent_window.patch附件(3.8KB) transparent_window2.patch附件(2.9KB) transparent_window3.patch