🔨 修改终端配置.

This commit is contained in:
lijiahangmax
2025-06-29 00:48:18 +08:00
parent fa389f611e
commit b55efe035d
30 changed files with 542 additions and 487 deletions

View File

@@ -51,9 +51,9 @@ public class TerminalPreferenceModel implements GenericsDataModel {
private String newConnectionType;
/**
* 终端主题
* ssh 主题
*/
private JSONObject theme;
private JSONObject sshTheme;
/**
* ssh 显示设置
@@ -61,40 +61,40 @@ public class TerminalPreferenceModel implements GenericsDataModel {
private JSONObject sshDisplaySetting;
/**
* rdp 图形化设置
* ssh 右键菜单设置
*/
private JSONObject rdpGraphSetting;
private List<String> sshRightMenuSetting;
/**
* ssh 操作栏设置
*/
private JSONObject sshActionBarSetting;
/**
* ssh 交互设置
*/
private JSONObject sshInteractSetting;
/**
* ssh 插件设置
*/
private JSONObject sshPluginsSetting;
/**
* rdp 会话设置
*/
private JSONObject rdpSessionSetting;
/**
* rdp 图形化设置
*/
private JSONObject rdpGraphSetting;
/**
* rdp 操作栏设置
*/
private JSONObject rdpActionBarSetting;
/**
* 右键菜单设置
*/
private List<String> rightMenuSetting;
/**
* 交互设置
*/
private JSONObject interactSetting;
/**
* 插件设置
*/
private JSONObject pluginsSetting;
/**
* 会话设置
*/
private JSONObject sessionSetting;
/**
* 快捷键设置
*/
@@ -148,94 +148,6 @@ public class TerminalPreferenceModel implements GenericsDataModel {
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class RdpGraphSettingModel implements IJsonObject {
/**
* 显示大小
*/
private String displaySize;
/**
* 显示宽度
*/
private Integer displayWidth;
/**
* 显示高度
*/
private Integer displayHeight;
/**
* 启用音频输入
*/
private Boolean enableAudioInput;
/**
* 启用音频输出
*/
private Boolean enableAudioOutput;
/**
* 颜色深度
*/
private Integer colorDepth;
/**
* 无损压缩
*/
private Boolean forceLossless;
/**
* 启用壁纸
*/
private Boolean enableWallpaper;
/**
* 启用主题
*/
private Boolean enableTheming;
/**
* 启动平滑字体
*/
private Boolean enableFontSmoothing;
/**
* 启用窗口拖动
*/
private Boolean enableFullWindowDrag;
/**
* 启用桌面合成
*/
private Boolean enableDesktopComposition;
/**
* 启用菜单动画
*/
private Boolean enableMenuAnimations;
/**
* 禁用位图缓存
*/
private Boolean disableBitmapCaching;
/**
* 禁用离屏缓存
*/
private Boolean disableOffscreenCaching;
/**
* 禁用字形缓存
*/
private Boolean disableGlyphCaching;
}
@Data
@Builder
@NoArgsConstructor
@@ -323,55 +235,7 @@ public class TerminalPreferenceModel implements GenericsDataModel {
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class RdpActionBarSettingModel implements IJsonObject {
/**
* 位置
*/
private String position;
/**
* 显示设置
*/
private Boolean display;
/**
* 组合键
*/
private Boolean combinationKey;
/**
* 剪切板
*/
private Boolean clipboard;
/**
* 上传
*/
private Boolean upload;
/**
* 保存为 rdp 文件
*/
private Boolean saveRdp;
/**
* 断开连接
*/
private Boolean disconnect;
/**
* 关闭
*/
private Boolean close;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class InteractSettingModel implements IJsonObject {
public static class SshInteractSettingModel implements IJsonObject {
/**
* 快速滚动
@@ -423,13 +287,23 @@ public class TerminalPreferenceModel implements GenericsDataModel {
*/
private String wordSeparator;
/**
* 伪终端类型
*/
private String terminalEmulationType;
/**
* 保存在缓冲区的行数
*/
private Integer scrollBackLine;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class PluginsSettingModel implements IJsonObject {
public static class SshPluginsSettingModel implements IJsonObject {
/**
* 超链接插件
@@ -457,17 +331,153 @@ public class TerminalPreferenceModel implements GenericsDataModel {
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class SessionSettingModel implements IJsonObject {
public static class RdpGraphSettingModel implements IJsonObject {
/**
* 伪终端类型
* 显示大小
*/
private String terminalEmulationType;
private String displaySize;
/**
* 保存在缓冲区的行数
* 显示宽度
*/
private Integer scrollBackLine;
private Integer displayWidth;
/**
* 显示高度
*/
private Integer displayHeight;
/**
* 颜色深度
*/
private Integer colorDepth;
/**
* 无损压缩
*/
private Boolean forceLossless;
/**
* 启用壁纸
*/
private Boolean enableWallpaper;
/**
* 启用主题
*/
private Boolean enableTheming;
/**
* 启动平滑字体
*/
private Boolean enableFontSmoothing;
/**
* 启用窗口拖动
*/
private Boolean enableFullWindowDrag;
/**
* 启用桌面合成
*/
private Boolean enableDesktopComposition;
/**
* 启用菜单动画
*/
private Boolean enableMenuAnimations;
/**
* 禁用位图缓存
*/
private Boolean disableBitmapCaching;
/**
* 禁用离屏缓存
*/
private Boolean disableOffscreenCaching;
/**
* 禁用字形缓存
*/
private Boolean disableGlyphCaching;
/**
* 禁用图形加速
*/
private Boolean disableGfx;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class RdpActionBarSettingModel implements IJsonObject {
/**
* 位置
*/
private String position;
/**
* 显示设置
*/
private Boolean display;
/**
* 组合键
*/
private Boolean combinationKey;
/**
* 剪切板
*/
private Boolean clipboard;
/**
* 上传
*/
private Boolean upload;
/**
* 保存为 rdp 文件
*/
private Boolean saveRdp;
/**
* 断开连接
*/
private Boolean disconnect;
/**
* 关闭
*/
private Boolean close;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class RdpSessionSettingModel implements IJsonObject {
/**
* 启用音频输入
*/
private Boolean enableAudioInput;
/**
* 启用音频输出
*/
private Boolean enableAudioOutput;
/**
* 驱动挂载模式
*/
private String driveMountMode;
}

View File

@@ -51,23 +51,23 @@ public class TerminalPreferenceStrategy extends AbstractGenericsDataStrategy<Ter
// 连接类型
.newConnectionType("group")
// ssh 主题
.theme(new JSONObject())
.sshTheme(new JSONObject())
// ssh 显示设置
.sshDisplaySetting(JSONObject.parseObject(this.getDefaultSshDisplaySetting()))
// rdp 图形化设置
.rdpGraphSetting(JSONObject.parseObject(this.getDefaultRdpGraphSetting()))
// ssh 操作栏设置
.sshActionBarSetting(JSONObject.parseObject(this.getDefaultSshActionBarSetting()))
// ssh 右键菜单设置
.sshRightMenuSetting(this.getDefaultSshRightMenuSetting())
// ssh 交互设置
.sshInteractSetting(JSONObject.parseObject(this.getDefaultSshInteractSetting()))
// ssh 插件设置
.sshPluginsSetting(JSONObject.parseObject(this.getDefaultSshPluginsSetting()))
// rdp 图形化设置
.rdpGraphSetting(JSONObject.parseObject(this.getDefaultRdpGraphSetting()))
// rdp 操作栏设置
.rdpActionBarSetting(JSONObject.parseObject(this.getDefaultRdpActionBarSetting()))
// ssh 右键菜单设置
.rightMenuSetting(this.getDefaultRightMenuSetting())
// 交互设置
.interactSetting(JSONObject.parseObject(this.getDefaultInteractSetting()))
// 插件设置
.pluginsSetting(JSONObject.parseObject(this.getDefaultPluginsSetting()))
// 会话设置
.sessionSetting(JSONObject.parseObject(this.getDefaultSessionSetting()))
// rdp 会话设置
.rdpSessionSetting(JSONObject.parseObject(this.getDefaultRdpSessionSetting()))
// 快捷键设置
.shortcutSetting(JSONObject.parseObject(this.getDefaultShortcutSetting()))
.build();
@@ -94,30 +94,12 @@ public class TerminalPreferenceStrategy extends AbstractGenericsDataStrategy<Ter
}
/**
* 获取 rdp 图形化默认设置
* 获取 ssh 右键菜单默认设置
*
* @return setting
*/
private String getDefaultRdpGraphSetting() {
return TerminalPreferenceModel.RdpGraphSettingModel.builder()
.displaySize("fit")
.displayWidth(0)
.displayHeight(0)
.colorDepth(24)
.enableAudioInput(false)
.enableAudioOutput(true)
.forceLossless(true)
.enableWallpaper(true)
.enableTheming(true)
.enableFontSmoothing(true)
.enableFullWindowDrag(true)
.enableDesktopComposition(true)
.enableMenuAnimations(false)
.disableBitmapCaching(false)
.disableOffscreenCaching(false)
.disableGlyphCaching(false)
.build()
.toJsonString();
private List<String> getDefaultSshRightMenuSetting() {
return Lists.of("selectAll", "copy", "paste", "search", "clear");
}
/**
@@ -147,6 +129,70 @@ public class TerminalPreferenceStrategy extends AbstractGenericsDataStrategy<Ter
.toJsonString();
}
/**
* 获取 ssh 默认交互设置
*
* @return setting
*/
private String getDefaultSshInteractSetting() {
return TerminalPreferenceModel.SshInteractSettingModel.builder()
.fastScrollModifier(true)
.altClickMovesCursor(true)
.rightClickSelectsWord(false)
.selectionChangeCopy(false)
.copyAutoTrim(false)
.pasteAutoTrim(false)
.rightClickPaste(false)
.enableRightClickMenu(true)
.enableBell(false)
.wordSeparator("/\\()\"'` -.,:;<>~!@#$%^&*|+=[]{}~?│")
.terminalEmulationType(TerminalType.XTERM.getType())
.scrollBackLine(1000)
.build()
.toJsonString();
}
/**
* 获取默认插件设置
*
* @return setting
*/
private String getDefaultSshPluginsSetting() {
return TerminalPreferenceModel.SshPluginsSettingModel.builder()
.enableWeblinkPlugin(true)
.enableWebglPlugin(true)
.enableUnicodePlugin(true)
.enableImagePlugin(false)
.build()
.toJsonString();
}
/**
* 获取 rdp 图形化默认设置
*
* @return setting
*/
private String getDefaultRdpGraphSetting() {
return TerminalPreferenceModel.RdpGraphSettingModel.builder()
.displaySize("fit")
.displayWidth(0)
.displayHeight(0)
.colorDepth(24)
.forceLossless(true)
.enableWallpaper(true)
.enableTheming(true)
.enableFontSmoothing(true)
.enableFullWindowDrag(true)
.enableDesktopComposition(true)
.enableMenuAnimations(false)
.disableBitmapCaching(false)
.disableOffscreenCaching(false)
.disableGlyphCaching(false)
.disableGfx(false)
.build()
.toJsonString();
}
/**
* 获取 rdp 操作栏默认设置
*
@@ -167,59 +213,15 @@ public class TerminalPreferenceStrategy extends AbstractGenericsDataStrategy<Ter
}
/**
* 获取 ssh 右键菜单默认设置
* 获取 rdp 默认会话设置
*
* @return setting
*/
private List<String> getDefaultRightMenuSetting() {
return Lists.of("selectAll", "copy", "paste", "search", "clear");
}
/**
* 获取默认交互设置
*
* @return setting
*/
private String getDefaultInteractSetting() {
return TerminalPreferenceModel.InteractSettingModel.builder()
.fastScrollModifier(true)
.altClickMovesCursor(true)
.rightClickSelectsWord(false)
.selectionChangeCopy(false)
.copyAutoTrim(false)
.pasteAutoTrim(false)
.rightClickPaste(false)
.enableRightClickMenu(true)
.enableBell(false)
.wordSeparator("/\\()\"'` -.,:;<>~!@#$%^&*|+=[]{}~?│")
.build()
.toJsonString();
}
/**
* 获取默认插件设置
*
* @return setting
*/
private String getDefaultPluginsSetting() {
return TerminalPreferenceModel.PluginsSettingModel.builder()
.enableWeblinkPlugin(true)
.enableWebglPlugin(true)
.enableUnicodePlugin(true)
.enableImagePlugin(false)
.build()
.toJsonString();
}
/**
* 获取默认会话设置
*
* @return setting
*/
private String getDefaultSessionSetting() {
return TerminalPreferenceModel.SessionSettingModel.builder()
.terminalEmulationType(TerminalType.XTERM.getType())
.scrollBackLine(1000)
private String getDefaultRdpSessionSetting() {
return TerminalPreferenceModel.RdpSessionSettingModel.builder()
.enableAudioInput(false)
.enableAudioOutput(true)
.driveMountMode("ASSET")
.build()
.toJsonString();
}

View File

@@ -306,10 +306,15 @@ public interface GuacdConst {
String DISABLE_OFFSCREEN_CACHING = "disable-offscreen-caching";
/**
* 禁用字形缓存 boolean 默认禁用
* 禁用字形缓存 boolean
*/
String DISABLE_GLYPH_CACHING = "disable-glyph-caching";
/**
* 禁用图形加速 boolean
*/
String DISABLE_GFX = "disable-gfx";
/**
* 远程应用名称
*/

View File

@@ -126,6 +126,16 @@ public class TerminalChannelExtra {
*/
private Boolean disableGlyphCaching;
/**
* 禁用图形加速
*/
private Boolean disableGfx;
/**
* 驱动挂载模式
*/
private String driveMountMode;
// -------------------- vnc --------------------
}

View File

@@ -101,9 +101,10 @@ public class RdpSession extends AbstractGuacdSession<TerminalSessionRdpConfig> i
tunnel.setParameter(GuacdConst.ENABLE_FULL_WINDOW_DRAG, extra.getEnableFullWindowDrag());
tunnel.setParameter(GuacdConst.ENABLE_DESKTOP_COMPOSITION, extra.getEnableDesktopComposition());
tunnel.setParameter(GuacdConst.ENABLE_MENU_ANIMATIONS, extra.getEnableMenuAnimations());
tunnel.setParameter(GuacdConst.DISABLE_BITMAP_CACHING, extra.getDisableBitmapCaching());
tunnel.setParameter(GuacdConst.DISABLE_OFFSCREEN_CACHING, extra.getDisableOffscreenCaching());
tunnel.setParameter(GuacdConst.DISABLE_GLYPH_CACHING, extra.getDisableGlyphCaching());
tunnel.setParameter(GuacdConst.DISABLE_BITMAP_CACHING, extra.getDisableBitmapCaching());
tunnel.setParameter(GuacdConst.DISABLE_GFX, extra.getDisableGfx());
// 音频
tunnel.setAudioMimeTypes(GuacdConst.AUDIO_MIMETYPES);
tunnel.setParameter(GuacdConst.ENABLE_AUDIO_INPUT, extra.getEnableAudioInput());
@@ -153,8 +154,9 @@ public class RdpSession extends AbstractGuacdSession<TerminalSessionRdpConfig> i
extra.setEnableDesktopComposition(false);
extra.setEnableMenuAnimations(false);
extra.setDisableBitmapCaching(false);
extra.setDisableOffscreenCaching(false);
extra.setDisableGlyphCaching(false);
extra.setDisableBitmapCaching(false);
extra.setDisableGfx(false);
extra.setEnableAudioInput(false);
extra.setEnableAudioOutput(false);
}