我发现 KDE 中提供了“Pack Window”快捷方式,它们工作得很好:
我想添加快捷方式以将窗口直接移动到屏幕角落。目前,如果我想让窗口进入左下角,我必须执行类似Pack Window Left (Ctrl+Num4)
+ 的操作Pack Window Down (Ctrl+Num2)
我想使用一个快捷方式,例如Pack Window Bottom-Left (Ctrl+Num1)
以这种方式移动我的窗口 - 并且至关重要没有改变窗口大小。
我也希望能够使用快捷方式将窗口居中,例如Pack Window Center (Ctrl+Num5)
,再次没有更改窗口大小 - 尽管将窗口居中并将其设置为预定义大小的第二个快捷方式也非常好,这样我就可以拥有类似Pack Window Center - Large (Ctrl+Shift+Num5)
90% 最大化窗口的居中窗口。
我找到了几个 kwin 脚本来满足我的需求这里和这里,但是我是编程方面的初学者,这似乎是用 JavaScript 编写的。我希望有一种简单的基于 GUI/模板的方法来创建自定义快捷方式,在我尝试深入定制或创建这样的脚本之前,我错过了这种方法。
我目前使用的是 Manjaro KDE 版本。
答案1
这可能并不比您提到的 KWin 脚本更容易理解,但我使用的是 Bash 脚本,该脚本依赖于xdotool
映射xbindkeys
数字键盘键的配置。
剧本:
#!/bin/bash
#
# Move a window to a certain location.
#
# Examples:
# move-window.sh 'search --onlyvisible --name SpeedCrunch' top-right
# move-window.sh getactivewindow bottom-left
set -euo pipefail
what=${1?What window would you like to move?}
where=${2?Where would you like to move your window to?}
# Determine the screen resolution
res=$(cat /sys/class/graphics/fb0/virtual_size)
screen_width=${res%,*}
screen_height=${res#*,}
# Determine the window size
window_id=$(xdotool $what)
eval $(xdotool $what getwindowgeometry --shell)
# Calculate the target location
case "$where" in
top-left) pos="0 0";;
top-right) pos="$(($screen_width-$WIDTH)) 0";;
bottom-left) pos="0 $(($screen_height-$HEIGHT))";;
bottom-right) pos="$(($screen_width-$WIDTH)) $(($screen_height-$HEIGHT))";;
center) pos="$(($screen_width/2-$WIDTH/2)) $(($screen_height/2-$HEIGHT/2))";;
*) pos="$where"
esac
# Move the window
xdotool windowmove $window_id $pos
然后~/.xbindkeysrc
我有以下内容:
# Win+Num7: Move active window to top left
"move-window.sh getactivewindow top-left"
Mod4 + KP_Home
# Win+Num9: Move active window to top right
"move-window.sh getactivewindow top-right"
Mod4 + KP_Prior
# Win+Num1: Move active window to bottom left
"move-window.sh getactivewindow bottom-left"
Mod4 + KP_End
# Win+Num3: Move active window to bottom right
"move-window.sh getactivewindow bottom-right"
Mod4 + KP_Next
# Win+Num5: Move active window to center
"move-window.sh getactivewindow center"
Mod4 + KP_Begin
(记住xbindkeys
更新配置文件后(重新)启动。)
我还没有机会在多显示器设置上测试它,我不希望它在 Wayland 上工作,但它在我当前的单屏 Debian bullseye + KDE 设置上运行得足够好。
答案2
笔记:
- 我没有数字键盘,所以我使用的快捷键与您使用的不同。
- 您需要
xdotool
从存储库安装。它可以模拟按键。 - 这可能在 Wayland 会话中不起作用。
在系统设置 > 快捷方式 > 全局快捷方式 > Kwin,
- 我将Super+ Ctrl+设置Down为“Pack Window Down”并且
- Super+ Ctrl+Right到“右侧打包窗口”
正如您所观察到的,这些命令不能直接合并为一个。您需要连续运行它们。
但是,有一个解决方法,使用xdotool
.
- 打开一些窗口,不控制台只是为了简单起见,调整大小并将其放置在某个位置,但不要放在右下角。
打开控制台并粘贴以下代码:
sleep 10s && xdotool key Super+Ctrl+Down && sleep 0.1 && xdotool key Super+Ctrl+Right
按Enter入控制台然后切换到您想要移动到右角而不调整大小的窗口。
10 秒后,焦点窗口将移至右角,且不调整大小。
假设这对你有用,
- 打开系统设置 > 快捷方式 > 自定义快捷方式
- 点击编辑 > 新建 > 全局快捷方式 > 命令/URL
- 在左侧面板中,提供合适的名称,例如包右下
- 在右侧面板中,输入评论(可选)
- 接下来,对于扳机,单击输入框,然后按与您将使用的键盘快捷键相对应的键,例如Ctrl+ Meta+Z或任何方便且可用的键。
- 在里面行动选项卡,粘贴到
xdotool key Super+Ctrl+Down && sleep 0.1 && xdotool key Super+Ctrl+Right
. - 点击申请在右下角。
现在,每当您按Ctrl+ Meta+Z时,焦点窗口都会被移动到屏幕的右下角,而不会调整大小。
拥有一个小睡觉这两个xdotool
命令之间的关系很有用,因为有时xdotool
会出现问题。
您需要重复整个过程来包装其他角落的窗户。
我不会解决将窗口居中于屏幕尺寸 90% 的另一个问题,因为这更具挑战性。
但同样,一种解决方法是让所有窗口最初都居中显示。然后您可以将它们移动到任何您喜欢的地方。为此,请打开系统设置 > 窗口管理 > 窗口行为 > 高级并选择居中在下面放置。
另一种方法是按Alt+ F3,选择更多操作进而特殊窗口设置或者特殊应用设置根据需要然后在里面设置你想要的尺寸和位置标签。