You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用GTK3 ScrolledWindow触摸屏滚动并保存设置?

禁用GTK3下SWT ScrolledComposite的触摸滚动(Kinetic Scrolling)

下面是几种可行的配置方式,以及如何固化GtkInspector的修改:

1. 通过GTK Settings.ini配置

GTK3允许通过settings.ini全局或针对单个应用禁用滚动动效:

  • 全局生效:编辑系统级配置/etc/gtk-3.0/settings.ini或用户级~/.config/gtk-3.0/settings.ini,添加:
    [Settings]
    gtk-scrolled-window-kinetic-scrolling = false
    
  • 仅当前应用生效:在应用启动前设置环境变量GTK_SETTINGS_FILE指向自定义配置文件(内容同上),比如启动脚本中添加:
    export GTK_SETTINGS_FILE=/path/to/your/app-gtk-settings.ini
    ./your-terminal-app
    

2. 通过GTK主题CSS设置

修改当前使用的GTK主题CSS文件(路径通常为/usr/share/themes/[ThemeName]/gtk-3.0/gtk.css或~/.themes/[ThemeName]/gtk-3.0/gtk.css),添加以下规则:

GtkScrolledWindow {
  kinetic-scrolling: false;
}

如果只想针对你的应用生效,可以添加应用前缀(需先在SWT中通过Display.setAppName("YourAppName")设置应用名):

.YourAppName GtkScrolledWindow {
  kinetic-scrolling: false;
}

保存后重启应用即可。

3. 固化GtkInspector的修改

GtkInspector的临时修改无法直接保存,可通过以下方式固化:

  • 在Inspector中修改完kinetic-scrolling为false后,右键点击目标GtkScrolledWindow部件,选择Copy CSS,将生成的规则复制到上述主题CSS或应用专属CSS文件中。
  • 更可靠的方式是直接在SWT代码中设置属性(注意:使用SWT内部API需考虑版本兼容):
    ScrolledComposite sc = ...; // 你的ScrolledComposite实例
    long handle = sc.handle;
    // 调用GTK原生API关闭kinetic scrolling
    org.eclipse.swt.internal.gtk.GTK.gtk_scrolled_window_set_kinetic_scrolling(handle, false);
    

关键说明

  • GTK配置属性的命名规则:文档中的[property@Gtk.ScrolledWindow:kinetic-scrolling]对应settings.ini中的gtk-scrolled-window-kinetic-scrolling(驼峰转短横线,前缀加gtk-)。
  • 所有配置变更后必须重启应用才能生效。

内容的提问来源于stack exchange,提问作者Kuba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:10:59