update
This commit is contained in:
parent
a4faab3db1
commit
35abfa07bc
9
home/dot_config/environment.d/sway.conf
Normal file
9
home/dot_config/environment.d/sway.conf
Normal file
@ -0,0 +1,9 @@
|
||||
# Sway essential session variables
|
||||
XDG_CURRENT_DESKTOP=sway
|
||||
XDG_SESSION_DESKTOP=sway
|
||||
XDG_SESSION_TYPE=wayland
|
||||
|
||||
# Toolkits and Compatibility
|
||||
ELECTRON_OZONE_PLATFORM_HINT=auto
|
||||
_JAVA_AWT_WM_NONREPARENTING=1
|
||||
QT_WAYLAND_DISABLE_WINDOWDECORATION=1
|
||||
@ -1,5 +1,4 @@
|
||||
XIM=fcitx
|
||||
|
||||
GTK_IM_MODULE=fcitx
|
||||
QT_IM_MODULE=fcitx
|
||||
XMODIFIERS=@im=fcitx
|
||||
@ -10,7 +9,7 @@ RTC_USE_PIPEWIRE=true
|
||||
IM_MODULE_CLASSNAME=fcitx::QFcitxPlatformInputContext
|
||||
|
||||
GDK_BACKEND=wayland,x11
|
||||
QT_QPA_PLATFORM="wayland;xcb"
|
||||
QT_QPA_PLATFORM=wayland;xcb
|
||||
CLUTTER_BACKEND=wayland
|
||||
SDL_VIDEODRIVER=wayland
|
||||
EDITOR=nvim
|
||||
|
||||
119
home/dot_config/eww/eww.scss
Normal file
119
home/dot_config/eww/eww.scss
Normal file
@ -0,0 +1,119 @@
|
||||
$bg: #1e1e2e;
|
||||
$fg: #cdd6f4;
|
||||
$blue: #89b4fa;
|
||||
$surface: #313244;
|
||||
$crust: #11111b;
|
||||
$yellow: #f9e2af;
|
||||
|
||||
* {
|
||||
font-family: "sans-serif";
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
button {
|
||||
all: unset;
|
||||
}
|
||||
|
||||
.main-container {
|
||||
background-color: $bg;
|
||||
color: $fg;
|
||||
border-radius: 8px;
|
||||
padding: 2px 5px;
|
||||
margin: 1px;
|
||||
}
|
||||
|
||||
.ws-focused {
|
||||
background-color: $blue;
|
||||
color: $crust;
|
||||
padding: 0 8px;
|
||||
border-radius: 6px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.ws-inactive {
|
||||
color: #cdd6f4;
|
||||
padding: 0 8px;
|
||||
border-radius: 6px;
|
||||
border: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
.ws-inactive:hover {
|
||||
background-color: $surface;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.date-time {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.date-time:hover {
|
||||
background-color: $surface;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.volume-widget, .brightness-widget {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.volume-widget button:hover, .brightness-widget button:hover {
|
||||
background-color: $surface;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.popup-box {
|
||||
background-color: $bg;
|
||||
color: $fg;
|
||||
padding: 15px;
|
||||
border: 1px solid $blue;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.vol-bar trough, .br-bar trough {
|
||||
background-color: $surface;
|
||||
border-radius: 10px;
|
||||
min-height: 4px;
|
||||
}
|
||||
|
||||
.vol-bar highlight {
|
||||
background-color: $blue;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.br-bar highlight {
|
||||
background-color: $yellow;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.caffeine {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.caffeine-on {
|
||||
color: $yellow;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.caffeine-off {
|
||||
color: $fg;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.tray-container {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.calendar-box {
|
||||
background-color: $bg;
|
||||
color: $fg;
|
||||
padding: 15px;
|
||||
border: 1px solid $blue;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
calendar {
|
||||
padding: 5px;
|
||||
}
|
||||
87
home/dot_config/eww/eww.yuck
Normal file
87
home/dot_config/eww/eww.yuck
Normal file
@ -0,0 +1,87 @@
|
||||
(defpoll time :interval "1s" "date '+%Y/%m/%d %H:%M:%S'")
|
||||
(defpoll inhibit_status :interval "1s" "[ -f /tmp/eww-inhibit.pid ] && echo 'on' || echo 'off'")
|
||||
(defpoll vol :interval "1s" :initial "0" "bash ~/.config/eww/scripts/volume.sh get")
|
||||
(defpoll vol_icon :interval "1s" :initial "🔉" "bash ~/.config/eww/scripts/volume.sh icon")
|
||||
(defpoll br :interval "1s" :initial "50" "bash ~/.config/eww/scripts/brightness.sh get")
|
||||
(defpoll br_icon :interval "1s" :initial "☀️" "bash ~/.config/eww/scripts/brightness.sh icon")
|
||||
|
||||
(deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get-workspaces.sh")
|
||||
|
||||
(defwidget workspaces_widget []
|
||||
(box :class "workspaces" :orientation "h" :space-evenly false :spacing 5
|
||||
(for ws in workspaces
|
||||
(button :onclick "swaymsg workspace ${ws.name}"
|
||||
:class {ws.focused ? "ws-focused" : "ws-inactive"}
|
||||
"${ws.name}"))))
|
||||
|
||||
(defwidget date_widget []
|
||||
(box :class "date-time"
|
||||
(button :onclick "bash ~/.config/eww/scripts/toggle-window.sh calendar"
|
||||
time)))
|
||||
|
||||
(defwidget volume_widget []
|
||||
(box :class "volume-widget"
|
||||
(button :onclick "bash ~/.config/eww/scripts/toggle-window.sh volume_popup"
|
||||
:onrightclick "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
"${vol_icon} ${vol}%")))
|
||||
|
||||
(defwidget brightness_widget []
|
||||
(box :class "brightness-widget"
|
||||
(button :onclick "bash ~/.config/eww/scripts/toggle-window.sh brightness_popup"
|
||||
"${br_icon} ${br}%")))
|
||||
|
||||
(defwidget caffeine_widget []
|
||||
(box :class "caffeine"
|
||||
(button :onclick "bash ~/.config/eww/scripts/toggle-inhibit.sh"
|
||||
:class {inhibit_status == "on" ? "caffeine-on" : "caffeine-off"}
|
||||
{inhibit_status == "on" ? "☕" : "🌙"})))
|
||||
|
||||
(defwidget tray_widget []
|
||||
(box :halign "end" :class "tray-container" :space-evenly false :spacing 10
|
||||
(brightness_widget)
|
||||
(volume_widget)
|
||||
(caffeine_widget)
|
||||
(systray :orientation "h" :spacing 5 :icon-size 20 :prepend-new true)))
|
||||
|
||||
(defwidget bar_layout []
|
||||
(box :class "main-container"
|
||||
(centerbox :orientation "h"
|
||||
(workspaces_widget)
|
||||
(date_widget)
|
||||
(tray_widget))))
|
||||
|
||||
(defwindow bar
|
||||
:monitor "eDP-1"
|
||||
:geometry (geometry :x "0%" :y "0%" :width "99%" :height "30px" :anchor "top center")
|
||||
:stacking "fg"
|
||||
:exclusive true
|
||||
:focusable false
|
||||
(bar_layout))
|
||||
|
||||
(defwindow calendar
|
||||
:monitor "eDP-1"
|
||||
:geometry (geometry :x "0%" :y "15px" :width "250px" :height "250px" :anchor "top center")
|
||||
:stacking "fg"
|
||||
:focusable false
|
||||
(box :class "calendar-box"
|
||||
(calendar)))
|
||||
|
||||
(defwindow volume_popup
|
||||
:monitor "eDP-1"
|
||||
:geometry (geometry :x "15px" :y "15px" :width "300px" :height "60px" :anchor "top right")
|
||||
:stacking "fg"
|
||||
:focusable false
|
||||
(box :class "popup-box" :space-evenly false :spacing 15
|
||||
(button :onclick "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" vol_icon)
|
||||
(scale :class "vol-bar" :min 0 :max 101 :value {vol == "" ? 0 : vol} :width 150 :onchange "wpctl set-volume @DEFAULT_AUDIO_SINK@ {}%")
|
||||
(label :text "${vol}%")))
|
||||
|
||||
(defwindow brightness_popup
|
||||
:monitor "eDP-1"
|
||||
:geometry (geometry :x "15px" :y "15px" :width "300px" :height "60px" :anchor "top right")
|
||||
:stacking "fg"
|
||||
:focusable false
|
||||
(box :class "popup-box" :space-evenly false :spacing 15
|
||||
(label :text br_icon)
|
||||
(scale :class "br-bar" :min 0 :max 101 :value {br == "" ? 0 : br} :width 150 :onchange "brightnessctl s {}%")
|
||||
(label :text "${br}%")))
|
||||
8
home/dot_config/eww/executable_open-main.sh
Normal file
8
home/dot_config/eww/executable_open-main.sh
Normal file
@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
if ! eww ping >/dev/null 2>&1; then
|
||||
eww daemon
|
||||
fi
|
||||
|
||||
eww close-all
|
||||
eww open bar --screen 'eDP-1'
|
||||
18
home/dot_config/eww/scripts/executable_brightness.sh
Normal file
18
home/dot_config/eww/scripts/executable_brightness.sh
Normal file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 獲取目前亮度百分比
|
||||
get_brightness() {
|
||||
brightnessctl -m | awk -F, '{print substr($4, 0, length($4)-1)}'
|
||||
}
|
||||
|
||||
case $1 in
|
||||
get)
|
||||
get_brightness
|
||||
;;
|
||||
icon)
|
||||
BR=$(get_brightness)
|
||||
if [ "$BR" -gt 66 ]; then echo "☀️";
|
||||
elif [ "$BR" -gt 33 ]; then echo "🌤️";
|
||||
else echo "🔅"; fi
|
||||
;;
|
||||
esac
|
||||
13
home/dot_config/eww/scripts/executable_get-workspaces.sh
Normal file
13
home/dot_config/eww/scripts/executable_get-workspaces.sh
Normal file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
# 需安裝 jq
|
||||
get_workspaces() {
|
||||
swaymsg -t get_workspaces | jq -c 'sort_by(.num)'
|
||||
}
|
||||
|
||||
# 初始輸出
|
||||
get_workspaces
|
||||
|
||||
# 監聽事件並更新
|
||||
swaymsg -t subscribe '["workspace"]' -m | while read -r line; do
|
||||
get_workspaces
|
||||
done
|
||||
15
home/dot_config/eww/scripts/executable_toggle-inhibit.sh
Normal file
15
home/dot_config/eww/scripts/executable_toggle-inhibit.sh
Normal file
@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 定義 PID 檔案路徑
|
||||
PID_FILE="/tmp/eww-inhibit.pid"
|
||||
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
# 讀取 PID 並殺掉程序
|
||||
PID=$(cat "$PID_FILE")
|
||||
kill "$PID" 2>/dev/null
|
||||
rm "$PID_FILE"
|
||||
else
|
||||
# 啟動並記錄 PID
|
||||
systemd-inhibit --what=idle --mode=block sleep infinity &
|
||||
echo $! > "$PID_FILE"
|
||||
fi
|
||||
24
home/dot_config/eww/scripts/toggle-window.sh
Normal file
24
home/dot_config/eww/scripts/toggle-window.sh
Normal file
@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 目標視窗名稱
|
||||
TARGET=$1
|
||||
|
||||
# 獲取目前所有已開啟的視窗名稱 (提取冒號前文字並去空格)
|
||||
OPENED_WINDOWS=$(eww active-windows | cut -d: -f1 | tr -d ' ')
|
||||
|
||||
# 所有受管理的彈出視窗清單
|
||||
MANAGED_WINDOWS=("calendar" "volume_popup" "brightness_popup")
|
||||
|
||||
# 遍歷目前已開啟的視窗
|
||||
for win in $OPENED_WINDOWS; do
|
||||
# 檢查該視窗是否在受管名單內,且不是目標視窗
|
||||
# 我們不關閉 "bar" 視窗
|
||||
if [[ " ${MANAGED_WINDOWS[@]} " =~ " ${win} " ]] && [ "$win" != "$TARGET" ]; then
|
||||
eww close "$win"
|
||||
fi
|
||||
done
|
||||
|
||||
# 如果有目標視窗,則切換其顯示狀態
|
||||
if [ -n "$TARGET" ]; then
|
||||
eww open --toggle "$TARGET"
|
||||
fi
|
||||
21
home/dot_config/eww/scripts/volume.sh
Normal file
21
home/dot_config/eww/scripts/volume.sh
Normal file
@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 獲取預設輸出裝置的音量資訊 (輸出範例: Volume: 0.50 [MUTED])
|
||||
GET_VOL=$(wpctl get-volume @DEFAULT_AUDIO_SINK@)
|
||||
|
||||
# 提取數值並轉換為百分比 (0-100)
|
||||
# 使用 printf %.0f 將小數四捨五入為整數
|
||||
VOL=$(echo "$GET_VOL" | awk '{print $2 * 100}' | xargs printf "%.0f")
|
||||
|
||||
if [ "$1" == "get" ]; then
|
||||
echo "$VOL"
|
||||
elif [ "$1" == "icon" ]; then
|
||||
# 檢查是否含有 [MUTED] 字樣
|
||||
if echo "$GET_VOL" | grep -q "\[MUTED\]"; then
|
||||
echo "🔇"
|
||||
else
|
||||
if [ "$VOL" -gt 60 ]; then echo "🔊";
|
||||
elif [ "$VOL" -gt 30 ]; then echo "🔉";
|
||||
else echo "🔈"; fi
|
||||
fi
|
||||
fi
|
||||
24
home/dot_config/sway/conf.d/input.conf
Normal file
24
home/dot_config/sway/conf.d/input.conf
Normal file
@ -0,0 +1,24 @@
|
||||
# vim: ft=swayconfig
|
||||
|
||||
### Input configuration
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
# input "2:14:SynPS/2_Synaptics_TouchPad" {
|
||||
# dwt enabled
|
||||
# tap enabled
|
||||
# natural_scroll enabled
|
||||
# middle_emulation enabled
|
||||
# }
|
||||
|
||||
input type:touchpad {
|
||||
drag enabled
|
||||
drag_lock enabled
|
||||
tap enabled
|
||||
scroll_factor 0.6
|
||||
}
|
||||
#
|
||||
# You can get the names of your inputs by running: swaymsg -t get_inputs
|
||||
# Read `man 5 sway-input` for more information about this section.
|
||||
|
||||
|
||||
170
home/dot_config/sway/conf.d/keybinding.conf
Normal file
170
home/dot_config/sway/conf.d/keybinding.conf
Normal file
@ -0,0 +1,170 @@
|
||||
# vim: ft=swayconfig
|
||||
### Key bindings
|
||||
#
|
||||
# Basics:
|
||||
#
|
||||
bindsym $alt+Shift+c exec ~/bin/screenshot
|
||||
bindsym $alt+Shift+m exec ~/bin/screenshot-monitor
|
||||
bindsym $alt+Shift+v exec ~/bin/auto-screenshot-monitor
|
||||
# Start a terminal
|
||||
bindsym $mod+Return exec $term
|
||||
|
||||
# Kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# Find cursor
|
||||
bindsym $mod+Shift+f exec ~/.config/sway/scripts/scale-cursor.sh $cursor_theme $cursor_big_size $cursor_size
|
||||
|
||||
# Start your launcher
|
||||
bindsym $mod+d exec $menu
|
||||
bindsym $alt+space exec $menu
|
||||
bindsym $mod+Shift+w exec $window_switcher
|
||||
bindsym $mod+w exec $window_workspace_switcher
|
||||
|
||||
# Drag floating windows by holding down $mod and left mouse button.
|
||||
# Resize them with right mouse button + $mod.
|
||||
# Despite the name, also works for non-floating windows.
|
||||
# Change normal to inverse to use left mouse button for resizing and right
|
||||
# mouse button for dragging.
|
||||
floating_modifier $mod normal
|
||||
|
||||
# Reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
bindsym $mod+Shift+x exec swaylock -f -i ~/.config/sway/bg2.png -s fill
|
||||
|
||||
# Exit sway (logs you out of your Wayland session)
|
||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
||||
|
||||
bindsym $mod+Shift+p exec ~/.config/wofi/wofi-power.sh
|
||||
|
||||
bindsym XF86AudioRaiseVolume exec "pactl set-sink-volume @DEFAULT_SINK@ +5%; pkill -RTMIN+8 waybar"
|
||||
bindsym XF86AudioLowerVolume exec "pactl set-sink-volume @DEFAULT_SINK@ -5%; pkill -RTMIN+8 waybar"
|
||||
bindsym XF86AudioMute exec "pactl set-sink-mute @DEFAULT_SINK@ toggle; pkill -RTMIN+8 waybar"
|
||||
|
||||
bindsym XF86AudioPlay exec playerctl play-pause
|
||||
bindsym XF86AudioNext exec playerctl next
|
||||
bindsym XF86AudioPrev exec playerctl previous
|
||||
|
||||
bindsym XF86MonBrightnessUp exec "brightnessctl set 5%+"
|
||||
bindsym XF86MonBrightnessDown exec "brightnessctl set 5%-"
|
||||
#
|
||||
# Moving around:
|
||||
#
|
||||
# Move your focus around
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
# Or use $mod+[up|down|left|right]
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# Move the focused window with the same, but add Shift
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
# Ditto, with arrow keys
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
#
|
||||
# Workspaces:
|
||||
#
|
||||
# Switch to workspace
|
||||
bindsym $mod+1 workspace number 1
|
||||
bindsym $mod+2 workspace number 2
|
||||
bindsym $mod+3 workspace number 3
|
||||
bindsym $mod+4 workspace number 4
|
||||
bindsym $mod+5 workspace number 5
|
||||
bindsym $mod+6 workspace number 6
|
||||
bindsym $mod+7 workspace number 7
|
||||
bindsym $mod+8 workspace number 8
|
||||
bindsym $mod+9 workspace number 9
|
||||
bindsym $mod+0 workspace number 10
|
||||
|
||||
# Move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace number 1
|
||||
bindsym $mod+Shift+2 move container to workspace number 2
|
||||
bindsym $mod+Shift+3 move container to workspace number 3
|
||||
bindsym $mod+Shift+4 move container to workspace number 4
|
||||
bindsym $mod+Shift+5 move container to workspace number 5
|
||||
bindsym $mod+Shift+6 move container to workspace number 6
|
||||
bindsym $mod+Shift+7 move container to workspace number 7
|
||||
bindsym $mod+Shift+8 move container to workspace number 8
|
||||
bindsym $mod+Shift+9 move container to workspace number 9
|
||||
bindsym $mod+Shift+0 move container to workspace number 10
|
||||
# Note: workspaces can have any name you want, not just numbers.
|
||||
# We just use 1-10 as the default.
|
||||
#
|
||||
# Layout stuff:
|
||||
#
|
||||
# You can "split" the current object of your focus with
|
||||
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||
# respectively.
|
||||
bindsym $mod+b splith
|
||||
bindsym $mod+v splitv
|
||||
|
||||
# Switch the current container between different layout styles
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+t layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# Make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
|
||||
# Toggle the current focus between tiling and floating mode
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# Swap focus between the tiling area and the floating area
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# Move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
#
|
||||
# Scratchpad:
|
||||
#
|
||||
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||
# You can send windows there and get them back later.
|
||||
|
||||
# Move the currently focused window to the scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
bindsym $mod+minus scratchpad show
|
||||
#
|
||||
# Resizing containers:
|
||||
#
|
||||
mode "resize" {
|
||||
# left will shrink the containers width
|
||||
# right will grow the containers width
|
||||
# up will shrink the containers height
|
||||
# down will grow the containers height
|
||||
bindsym $left resize shrink width 10px
|
||||
bindsym $down resize grow height 10px
|
||||
bindsym $up resize shrink height 10px
|
||||
bindsym $right resize grow width 10px
|
||||
|
||||
# Ditto, with arrow keys
|
||||
bindsym Left resize shrink width 10px
|
||||
bindsym Down resize grow height 10px
|
||||
bindsym Up resize shrink height 10px
|
||||
bindsym Right resize grow width 10px
|
||||
|
||||
# Return to default mode
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
# show sov
|
||||
#bindsym --no-repeat $mod+Shift+w exec "echo 1 > /tmp/sovpipe"
|
||||
#bindsym --release $mod+Shift+w exec "echo 0 > /tmp/sovpipe"
|
||||
|
||||
# show bindsym help
|
||||
bindsym $mod+Ctrl+h exec cat ~/.config/sway/config |grep bindsym |grep -v "#"| sed 's/^[[:space:]]*//'| wofi --dmenu
|
||||
13
home/dot_config/sway/conf.d/monitor.conf
Normal file
13
home/dot_config/sway/conf.d/monitor.conf
Normal file
@ -0,0 +1,13 @@
|
||||
# vim: ft=swayconfig
|
||||
output eDP-1 scale 1.3
|
||||
# set workspace monitor
|
||||
workspace 1 output eDP-1
|
||||
workspace 2 output eDP-1
|
||||
workspace 3 output eDP-1
|
||||
workspace 4 output HDMI-A-1 DP-9 eDP-1
|
||||
workspace 5 output HDMI-A-1 DP-9 eDP-1
|
||||
workspace 6 output HDMI-A-1 DP-9 eDP-1
|
||||
workspace 7 output HDMI-A-1 DP-9 eDP-1
|
||||
workspace 8 output HDMI-A-1 DP-9 eDP-1
|
||||
workspace 9 output eDP-1
|
||||
workspace 10 output eDP-1
|
||||
@ -18,7 +18,8 @@ set $up k
|
||||
set $right l
|
||||
# Your preferred terminal emulator
|
||||
# set $term env WAYLAND_DISPLAY= WINIT_X11_SCALE_FACTOR=1.0 alacritty
|
||||
set $term alacritty
|
||||
# set $term alacritty
|
||||
set $term ghostty
|
||||
# set $term env WAYLAND_DISPLAY= WINIT_X11_SCALE_FACTOR=1.0 WINIT_UNIX_BACKEND=x11 alacritty
|
||||
# Your preferred application launcher
|
||||
# Note: pass the final command to swaymsg so that the resulting window can be opened
|
||||
@ -26,6 +27,11 @@ set $term alacritty
|
||||
# set $menu dmenu_path | dmenu | xargs swaymsg exec --
|
||||
set $menu wofi --show drun
|
||||
set $window_switcher ~/.config/wofi/wofi-window-switch.sh
|
||||
set $window_workspace_switcher ~/.config/wofi/wofi-current-workspace.sh
|
||||
|
||||
set $cursor_theme Sweet-cursors
|
||||
set $cursor_size 24
|
||||
set $cursor_big_size 64
|
||||
|
||||
### Output configuration
|
||||
#
|
||||
@ -39,8 +45,9 @@ output * bg /home/jay/.config/sway/wallpaper.png fill
|
||||
#
|
||||
# You can get the names of your outputs by running: swaymsg -t get_outputs
|
||||
|
||||
exec systemctl --user import-environment
|
||||
exec systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE
|
||||
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||||
# exec systemctl --user restart xdg-desktop-portal xdg-desktop-portal-wlr
|
||||
# exec_always xdg-desktop-portal -r
|
||||
# exec_always /usr/libexec/xdg-desktop-portal-wlr
|
||||
# exec env XDG_CONFIG_HOME=/home/jay/.config gentoo-pipewire-launcher restart &
|
||||
@ -48,9 +55,11 @@ exec_always kanshi
|
||||
exec dex -a -e sway -s /etc/xdg/autostart/:~/.config/autostart/
|
||||
exec mako
|
||||
exec udiskie --smart-tray
|
||||
exec_always ~/.config/eww/open-main.sh
|
||||
|
||||
|
||||
# for sway overview
|
||||
exec_always rm -f /tmp/sovpipe && mkfifo /tmp/sovpipe && tail -f /tmp/sovpipe | sov -t 100
|
||||
#exec_always rm -f /tmp/sovpipe && mkfifo /tmp/sovpipe && tail -f /tmp/sovpipe | sov -t 100
|
||||
|
||||
### Idle configuration
|
||||
#
|
||||
@ -65,222 +74,27 @@ exec swayidle -w \
|
||||
# your displays after another 300 seconds, and turn your screens back on when
|
||||
# resumed. It will also lock your screen before your computer goes to sleep.
|
||||
|
||||
### Input configuration
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
# input "2:14:SynPS/2_Synaptics_TouchPad" {
|
||||
# dwt enabled
|
||||
# tap enabled
|
||||
# natural_scroll enabled
|
||||
# middle_emulation enabled
|
||||
# }
|
||||
|
||||
input type:touchpad {
|
||||
drag enabled
|
||||
drag_lock enabled
|
||||
tap enabled
|
||||
scroll_factor 0.6
|
||||
}
|
||||
#
|
||||
# You can get the names of your inputs by running: swaymsg -t get_inputs
|
||||
# Read `man 5 sway-input` for more information about this section.
|
||||
|
||||
### Key bindings
|
||||
#
|
||||
# Basics:
|
||||
#
|
||||
bindsym $alt+Shift+c exec ~/bin/screenshot
|
||||
bindsym $alt+Shift+m exec ~/bin/screenshot-monitor
|
||||
bindsym $alt+Shift+v exec ~/bin/auto-screenshot-monitor
|
||||
# Start a terminal
|
||||
bindsym $mod+Return exec $term
|
||||
|
||||
# Kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# Start your launcher
|
||||
bindsym $mod+d exec $menu
|
||||
bindsym $mod+w exec $window_switcher
|
||||
|
||||
# Drag floating windows by holding down $mod and left mouse button.
|
||||
# Resize them with right mouse button + $mod.
|
||||
# Despite the name, also works for non-floating windows.
|
||||
# Change normal to inverse to use left mouse button for resizing and right
|
||||
# mouse button for dragging.
|
||||
floating_modifier $mod normal
|
||||
|
||||
# Reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
bindsym $mod+Shift+x exec swaylock -f -i ~/.config/sway/bg2.png -s fill
|
||||
|
||||
# Exit sway (logs you out of your Wayland session)
|
||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
||||
|
||||
bindsym $mod+Shift+p exec ~/.config/wofi/wofi-power.sh
|
||||
|
||||
bindsym XF86AudioRaiseVolume exec "pactl set-sink-volume @DEFAULT_SINK@ +5%; pkill -RTMIN+8 waybar"
|
||||
bindsym XF86AudioLowerVolume exec "pactl set-sink-volume @DEFAULT_SINK@ -5%; pkill -RTMIN+8 waybar"
|
||||
bindsym XF86AudioMute exec "pactl set-sink-mute @DEFAULT_SINK@ toggle; pkill -RTMIN+8 waybar"
|
||||
|
||||
bindsym XF86AudioPlay exec playerctl play-pause
|
||||
bindsym XF86AudioNext exec playerctl next
|
||||
bindsym XF86AudioPrev exec playerctl previous
|
||||
|
||||
bindsym XF86MonBrightnessUp exec "brightnessctl set 5%+"
|
||||
bindsym XF86MonBrightnessDown exec "brightnessctl set 5%-"
|
||||
#
|
||||
# Moving around:
|
||||
#
|
||||
# Move your focus around
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
# Or use $mod+[up|down|left|right]
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# Move the focused window with the same, but add Shift
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
# Ditto, with arrow keys
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
#
|
||||
# Workspaces:
|
||||
#
|
||||
# Switch to workspace
|
||||
bindsym $mod+1 workspace number 1
|
||||
bindsym $mod+2 workspace number 2
|
||||
bindsym $mod+3 workspace number 3
|
||||
bindsym $mod+4 workspace number 4
|
||||
bindsym $mod+5 workspace number 5
|
||||
bindsym $mod+6 workspace number 6
|
||||
bindsym $mod+7 workspace number 7
|
||||
bindsym $mod+8 workspace number 8
|
||||
bindsym $mod+9 workspace number 9
|
||||
bindsym $mod+0 workspace number 10
|
||||
|
||||
# Move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace number 1
|
||||
bindsym $mod+Shift+2 move container to workspace number 2
|
||||
bindsym $mod+Shift+3 move container to workspace number 3
|
||||
bindsym $mod+Shift+4 move container to workspace number 4
|
||||
bindsym $mod+Shift+5 move container to workspace number 5
|
||||
bindsym $mod+Shift+6 move container to workspace number 6
|
||||
bindsym $mod+Shift+7 move container to workspace number 7
|
||||
bindsym $mod+Shift+8 move container to workspace number 8
|
||||
bindsym $mod+Shift+9 move container to workspace number 9
|
||||
bindsym $mod+Shift+0 move container to workspace number 10
|
||||
# Note: workspaces can have any name you want, not just numbers.
|
||||
# We just use 1-10 as the default.
|
||||
#
|
||||
# Layout stuff:
|
||||
#
|
||||
# You can "split" the current object of your focus with
|
||||
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||
# respectively.
|
||||
bindsym $mod+b splith
|
||||
bindsym $mod+v splitv
|
||||
|
||||
# Switch the current container between different layout styles
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+t layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# Make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
|
||||
# Toggle the current focus between tiling and floating mode
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# Swap focus between the tiling area and the floating area
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# Move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
#
|
||||
# Scratchpad:
|
||||
#
|
||||
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||
# You can send windows there and get them back later.
|
||||
|
||||
# Move the currently focused window to the scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
bindsym $mod+minus scratchpad show
|
||||
#
|
||||
# Resizing containers:
|
||||
#
|
||||
mode "resize" {
|
||||
# left will shrink the containers width
|
||||
# right will grow the containers width
|
||||
# up will shrink the containers height
|
||||
# down will grow the containers height
|
||||
bindsym $left resize shrink width 10px
|
||||
bindsym $down resize grow height 10px
|
||||
bindsym $up resize shrink height 10px
|
||||
bindsym $right resize grow width 10px
|
||||
|
||||
# Ditto, with arrow keys
|
||||
bindsym Left resize shrink width 10px
|
||||
bindsym Down resize grow height 10px
|
||||
bindsym Up resize shrink height 10px
|
||||
bindsym Right resize grow width 10px
|
||||
|
||||
# Return to default mode
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
# show sov
|
||||
#bindsym --no-repeat $mod+Shift+w exec "echo 1 > /tmp/sovpipe"
|
||||
#bindsym --release $mod+Shift+w exec "echo 0 > /tmp/sovpipe"
|
||||
|
||||
# show bindsym help
|
||||
bindsym $mod+Ctrl+h exec cat ~/.config/sway/config |grep bindsym |grep -v "#"| sed 's/^[[:space:]]*//'| wofi --dmenu
|
||||
|
||||
# set workspace monitor
|
||||
#workspace 1 output eDP-1
|
||||
#workspace 2 output HDMI-A-1 DP-1 eDP-1
|
||||
#workspace 3 output HDMI-A-1 DP-1 eDP-1
|
||||
#workspace 4 output HDMI-A-1 DP-1 eDP-1
|
||||
#workspace 5 output HDMI-A-1 DP-1 eDP-1
|
||||
#workspace 6 output HDMI-A-1 DP-1 eDP-1
|
||||
#workspace 7 output eDP-1
|
||||
#workspace 8 output eDP-1
|
||||
#workspace 9 output eDP-1
|
||||
#workspace 10 output eDP-1
|
||||
|
||||
#
|
||||
# Status Bar:
|
||||
#
|
||||
# Read `man 5 sway-bar` for more information about this section.
|
||||
bar {
|
||||
# position top
|
||||
# bar {
|
||||
# # position top
|
||||
|
||||
# When the status_command prints a new line to stdout, swaybar updates.
|
||||
# The default just shows the current date and time.
|
||||
# status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
|
||||
# status_command ~/.config/waybar/launch.sh
|
||||
swaybar_command waybar
|
||||
# # When the status_command prints a new line to stdout, swaybar updates.
|
||||
# # The default just shows the current date and time.
|
||||
# # status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
|
||||
# # status_command ~/.config/waybar/launch.sh
|
||||
# swaybar_command waybar
|
||||
|
||||
colors {
|
||||
statusline #ffffff
|
||||
background #323232
|
||||
inactive_workspace #32323200 #32323200 #5c5c5c
|
||||
}
|
||||
# colors {
|
||||
# statusline #ffffff
|
||||
# background #323232
|
||||
# inactive_workspace #32323200 #32323200 #5c5c5c
|
||||
# }
|
||||
# }
|
||||
seat seat0 {
|
||||
xcursor_theme Adwaita 24
|
||||
}
|
||||
|
||||
gaps outer 5
|
||||
@ -290,7 +104,7 @@ gaps inner 5
|
||||
for_window [app_id="^.*"] border pixel 4
|
||||
for_window [class="^.*"] border pixel 4
|
||||
for_window [workspace=8] floating enable
|
||||
for_window [workspace=6] floating enable
|
||||
for_window [workspace=9] floating enable
|
||||
|
||||
focus_follows_mouse no
|
||||
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
cursorTheme=$(swaymsg -t get_inputs | jq -r '.[] | select(.type == "pointer") | .xcursor_theme' | head -n 1)
|
||||
|
||||
echo "Current cursor theme: $cursorTheme"
|
||||
# swaymsg "seat seat0 xcursor_theme "
|
||||
15
home/dot_config/sway/scripts/executable_scale-cursor.sh
Normal file
15
home/dot_config/sway/scripts/executable_scale-cursor.sh
Normal file
@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
# usage: scale-cursor.sh <cursor-theme> <bigSize> <originalSize>
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "Usage: $0 <cursor-theme> <bigSize> <originalSize>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CURSOR_THEME="$1"
|
||||
BIG_SIZE="$2"
|
||||
ORIGINAL_SIZE="$3"
|
||||
|
||||
swaymsg "seat seat0 xcursor_theme $CURSOR_THEME $BIG_SIZE"
|
||||
sleep 1
|
||||
swaymsg "seat seat0 xcursor_theme $CURSOR_THEME $ORIGINAL_SIZE"
|
||||
32
home/dot_config/wofi/executable_wofi-current-workspace.sh
Normal file
32
home/dot_config/wofi/executable_wofi-current-workspace.sh
Normal file
@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 1. 取得目前 focused workspace 的名稱
|
||||
CURRENT_WS=$(swaymsg -t get_workspaces | jq -r '.[] | select(.focused).name')
|
||||
|
||||
# 如果沒抓到 workspace,直接退出
|
||||
if [ -z "$CURRENT_WS" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 2. 列出該 workspace 內的所有視窗 (con 與 floating_con)
|
||||
# 直接從 get_tree 找對應名稱的 workspace 節點並遞迴出視窗資訊
|
||||
entries=$(swaymsg -t get_tree | jq -r --arg WS "$CURRENT_WS" '
|
||||
.. |
|
||||
select(.type? == "workspace" and .name == $WS) |
|
||||
recurse(.nodes[]?, .floating_nodes[]?) |
|
||||
select(.type == "con" or .type == "floating_con") |
|
||||
select(.name != null) |
|
||||
(.id | tostring) + " [" + (.app_id // .window_properties.class // "Unknown") + "] " + .name')
|
||||
|
||||
# 如果沒有視窗,直接結束
|
||||
if [ -z "$entries" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 3. 透過 wofi 顯示選單,並取得選擇視窗的 id (第一個欄位)
|
||||
selected=$(echo "$entries" | wofi --width 600 --height 400 --dmenu --cache-file /dev/null | awk '{print $1}')
|
||||
|
||||
# 如果有選擇,則切換焦點到該視窗
|
||||
if [ -n "$selected" ]; then
|
||||
swaymsg "[con_id=$selected]" focus
|
||||
fi
|
||||
Loading…
x
Reference in New Issue
Block a user