Compare commits

...

65 commits

Author SHA1 Message Date
f87305b06d Temporary disable sharing individual windows feature
Needs some work for dinamycally adding/removing headles output
2025-04-08 11:37:17 +04:00
d8e0fa71c2 Implement the individual windows sharing feature
Original MR: https://gitlab.com/tile-os/tileos-settings-sway/-/merge_requests/21
2025-02-28 00:16:34 +04:00
ee226de17d Update to 1.2.0 2024-10-20 00:39:30 +04:00
e72799525c 1.1.5 2024-09-04 21:38:35 +04:00
66bdd5592c Merge branch 'user/okmans/fix/idle-inhibitor' into 'master'
Fix the idle-inhibitor script

See merge request tile-os/tileos-settings-sway!20
2024-08-25 06:47:58 +00:00
f59dabef60 Merge branch 'user/okmans/improvement/recording-mode' into 'master'
Add missed changes related to d59a581

See merge request tile-os/tileos-settings-sway!19
2024-08-25 06:47:19 +00:00
Alexander Oakman
8dc7da2815 Fix the idle-inhibitor script
It turns out that the idle-inhibitor provided by sway only works
with views (application windows), i.e. inhibition cannot be run
on empty workspaces because they do not contain views.
Also, when switching between different workspaces, the views of
the previous workspace may have idle inhibitors, causing inhibition
to be active even if no sound is played until the old views are
updated. To update the old views, it is necessary to switch to the
appropriate workspace and wait for the script to execute, which
will remove the inhibitors that is incorrect and inconvenient.
This patch introduces a new inhibit method based on
systemd-inhibit, which has none of the above problems.
2024-08-25 05:34:38 +03:00
Alexander Oakman
54dc20e1da Add missed changes related to d59a581 2024-08-25 01:53:48 +03:00
ddb15dba49 nwg-wrapper: pkill only help.sh 2024-08-24 22:18:32 +04:00
8f24ae2946 Merge branch 'user/okmans/improvement/recording-mode' into 'master'
Improve the recorder script

See merge request tile-os/tileos-settings-sway!17
2024-08-24 17:59:37 +00:00
3e8279f479 Merge branch 'user/okmans/mic-mute' into 'master'
Add support for turning the microphone on/off

See merge request tile-os/tileos-settings-sway!16
2024-08-24 17:59:23 +00:00
Alexander Oakman
bca213279f Make the recorder script more readable 2024-08-24 20:23:03 +03:00
Alexander Oakman
d59a58120b Improve the recorder script
Make it possible to interrupt the recording area selection process
by pressing the $mod + Escape key combination.
2024-08-24 20:22:49 +03:00
Alexander Oakman
1810959292 Fix notifications in recording mode 2024-08-24 19:47:33 +03:00
Alexander Oakman
ac0926cf32 Add support for turning the microphone on/off 2024-08-24 19:39:06 +03:00
307f026e9d Merge branch 'user/okmans/screensaver/improvements' into 'master'
Improvements in running screensaver

See merge request tile-os/tileos-settings-sway!15
2024-08-23 19:03:10 +00:00
Alexander Oakman
d36e203e98 Fix the screensaver running hotkey
The screensaver running hotkey didn't work because the appropriate
command was not defined.
2024-08-23 21:59:49 +03:00
Alexander Oakman
2be7224e32 Improve the lock screen command
Running a screensaver is a very important security feature.
It is necessary that it always works and does not depend on the
state of the user's directories, so the screensaver run-script
should be placed in the system directory.
However, the locking process remains customizable because the user
script can be used too.
2024-08-23 21:59:49 +03:00
f09dfbb6c6 Merge branch 'user/okmans/theme-colors' into 'master'
Improve theme colors contrast

See merge request tile-os/tileos-settings-sway!14
2024-08-23 18:51:57 +00:00
Alexander Oakman
778dc6528b Make the Alacritty theme file cleaner
Transform color keys to lowercase like in all other theme files.
Remove unnecessary comments.
2024-08-22 17:58:41 +03:00
Alexander Oakman
271069c881 Adapt the bluetuith to theme's colorscheme 2024-08-22 17:58:41 +03:00
Alexander Oakman
cc095e898e Improve theme colors contrast
Improve contrast of the peach color combined with the white background.
2024-08-22 17:56:50 +03:00
862b9dcb1b Update changelog for 1.1.4 2024-08-20 18:53:49 +04:00
c4a3c1dbc7 Merge branch 'user/okmans/menu_fixes' into 'master'
Improves and fixes for variables

See merge request tile-os/tileos-settings-sway!13
2024-08-20 14:50:07 +00:00
fc3b2472aa Merge branch 'user/okmans/shortcus_inhibition' into 'master'
Improve the shortcuts inhibition

See merge request tile-os/tileos-settings-sway!12
2024-08-20 14:48:47 +00:00
56e05fbcb2 Merge branch 'user/okmans/swayidle/inhibition' into 'master'
Add screensaver inhibition control service

See merge request tile-os/tileos-settings-sway!8
2024-08-20 14:47:01 +00:00
Alexander Oakman
9c4aaa4207 Add screensaver inhibition control service
The service enables or disables swayidle inhibition depending on
whether any audio plays or not. It replaces the activation of
inhibition for fullscreen browser windows.
2024-08-20 08:28:32 +03:00
Alexander Oakman
89a7a823ad Use the terminal alias in term_float command 2024-08-20 02:16:17 +03:00
Alexander Oakman
94b0219902 Fix that nwg-drawer doesn't run applications
Providing a terminal emulator to the nwg-drawer allows it to run
applications.
2024-08-20 02:13:05 +03:00
Alexander Oakman
418cc0a2fc Fix the rofi binding
Update the rofi binding according to the modern syntax (1.7.3+).
Remove redundant options.
2024-08-20 02:12:05 +03:00
Alexander Oakman
1fc0ce29c3 Add a keybinding to toggle shortcuts inhibitor 2024-08-20 02:02:59 +03:00
Alexander Oakman
d6ac253fb2 Fix that rofi doesn't execute commands
Using the default pattern for the run-shell-command option in
the rofi binding allows it to run applications and commands.
2024-08-20 01:42:45 +03:00
Alexander Oakman
34e6157757 Allow some applications to inhibit shortcuts
Virtualization and remote desktop applications should be able to
inhibit keyboard shortcuts.
2024-08-19 23:22:00 +03:00
b4cef4847a Update changelog 2024-08-18 12:55:44 +04:00
be42ae6fc1 Merge branch 'user/okmans/window-fixes' into 'master'
Improve rules for applications and make some fixes

See merge request tile-os/tileos-settings-sway!10
2024-08-17 19:42:43 +00:00
cd1155de86 Merge branch 'user/okmans/fix-pcmanfm-daemon' into 'master'
Fix the pcmanfm-qt daemon start command

See merge request tile-os/tileos-settings-sway!11
2024-08-17 19:42:13 +00:00
Alexander Oakman
a5592ab130 Fix the pcmanfm-qt daemon start command 2024-08-17 22:22:25 +03:00
Alexander Oakman
ce28901167 Add a rule for Removable medium dialog
Forces the dialog to open in floating mode.
2024-08-17 20:13:19 +03:00
Alexander Oakman
938d9d7eda Add a rule for Choose an Application dialog
Forces the dialog to open in floating mode.
2024-08-17 20:11:41 +03:00
Alexander Oakman
1b7c96ee50 Add librewolf window rules 2024-08-17 20:11:41 +03:00
Alexander Oakman
5baec8d64c Disable sticky mode for Firefox Library windows
This forces firefox's library windows to stay in the same workspace
as the parent firefox window. Moving a child window across all
workspaces is strange behavior.
2024-08-17 20:06:42 +03:00
Alexander Oakman
803ace98f7 Fix regex in rule for Firefox
The rule was not used for windows, the title of which began with
the uppercase letter. Now this is fixed.
2024-08-17 20:01:55 +03:00
afe557042c Merge branch 'user/okmans/swayidle/sleep' into 'master'
Add swayidle timeout to suspend

See merge request tile-os/tileos-settings-sway!9
2024-07-31 18:18:43 +00:00
Alexander Oakman
2a9f64fbe9 Add swayidle timeout to suspend 2024-07-27 19:05:20 +03:00
70078da4ac Update changelog 2024-07-24 23:57:17 +04:00
ca95164088 Merge branch 'user/okmans/start-sway/ssh-agent' into 'master'
Pass the env variable SSH_AUTH_SOCK to all processes in the session

See merge request tile-os/tileos-settings-sway!5
2024-07-24 19:46:11 +00:00
Alexander Oakman
98d42bd113 Pass SSH_AUTH_SOCK env to all processes in the session
As stated in the ssh-agent manual, running desktop-manager as a fork of ssh-agent
is a possible way to configure the agent and pass its socket to all underlying processes.
A similar trick is used in LMDE.
2024-07-24 22:32:35 +03:00
836e378d5a Merge branch 'user/okmans/swayidle/restart' into 'master'
Fix ordering cycle on swayidle-restart.path

See merge request tile-os/tileos-settings-sway!6
2024-07-23 12:30:36 +00:00
4f10917b6f Merge branch 'user/okmans/waybar/restart' into 'master'
Add waybar configuration monitoring service

See merge request tile-os/tileos-settings-sway!7
2024-07-23 12:29:39 +00:00
Alexander Oakman
6dd19b8f20 Add waybar configuration monitoring service 2024-07-23 02:25:10 +03:00
Alexander Oakman
84cced30d0 Fix ordering cycle on swayidle-restart.path 2024-07-23 02:21:25 +03:00
5af0a5be11 Update changelog 2024-07-20 15:02:03 +04:00
c5ac3155f5 Merge branch 'user/okmans/catppuccin-colors/fixed' into 'master'
An attempt to make the theme colors more contrast

See merge request tile-os/tileos-settings-sway!4
2024-07-18 15:28:39 +00:00
6ffbd754be Merge branch 'user/okmans/alacritty/theme' into 'master'
Use variables for colors instead of repeating colors in Alacritty's theme.yaml file

See merge request tile-os/tileos-settings-sway!3
2024-07-18 15:27:13 +00:00
46224a32e6 Merge branch 'user/okmans/swayidle/restart' into 'master'
Automatically restart the swayidle when its configuration changed

See merge request tile-os/tileos-settings-sway!2
2024-07-18 15:26:32 +00:00
60b0e8c8ec Merge branch 'user/okmans/swayidle/wait' into 'master'
Non-blurry screen content appears on the locked screen for a second when the laptop wakes up.

See merge request tile-os/tileos-settings-sway!1
2024-07-18 15:25:30 +00:00
Alexander Oakman
178fe562cf Improve theme contrast for Alacritty 2024-07-17 22:48:43 +03:00
Alexander Oakman
1a3b4d924b Improve theme contrast for pluma 2024-07-17 22:46:19 +03:00
Alexander Oakman
76acec7bb7 Improve theme contrast for waybar 2024-07-17 22:44:21 +03:00
Alexander Oakman
f3cc45993d Use variables for colors in the Alacritty theme yaml 2024-07-17 22:37:02 +03:00
Alexander Oakman
852abda7aa Add swayidle configuration monitoring service 2024-07-17 22:28:39 +03:00
Alexander Oakman
178b7041eb Fix showing a non-blurry screen when the laptop wakes up
Before entering sleep mode, make sure that the swayidle is waiting for all commands to be completed. This prevents unprotected content from briefly flashing on the laptop screen when it wakes up.
2024-07-17 22:21:11 +03:00
88e5d60fbc
Set qt6 style to kvantum-dark 2024-06-19 17:00:03 +04:00
9fed8eaf1c Fix appending user keybindings to help overlay 2024-02-25 19:23:25 +04:00
5a6c730298 Change wallpaper 2024-02-14 23:01:42 +04:00
36 changed files with 447 additions and 117 deletions

57
debian/changelog vendored
View file

@ -1,3 +1,60 @@
tileos-settings-sway (1.2.0~tileos) unstable; urgency=medium
* Change module order
-- Aleksey Samoilov <samoilov.lex@gmail.com> Sun, 20 Oct 2024 00:38:40 +0400
tileos-settings-sway (1.1.5~tileos) unstable; urgency=medium
* Update color theme
-- Aleksey Samoilov <samoilov.lex@gmail.com> Wed, 04 Sep 2024 21:38:06 +0400
tileos-settings-sway (1.1.4~tileos) unstable; urgency=medium
* Add swayidle inhibit service
* Fixes for variables
* Add keyboard shortcut inhibition
-- Aleksey Samoilov <samoilov.lex@gmail.com> Tue, 20 Aug 2024 18:52:41 +0400
tileos-settings-sway (1.1.3~tileos) unstable; urgency=medium
* Fix daemonize pcmanfm-qt
* Fixes for some window rules
-- Aleksey Samoilov <samoilov.lex@gmail.com> Sun, 18 Aug 2024 12:54:54 +0400
tileos-settings-sway (1.1.2~tileos) unstable; urgency=medium
* Pass SSH_AUTH_SOCK to all processes
-- Aleksey Samoilov <samoilov.lex@gmail.com> Wed, 24 Jul 2024 23:56:46 +0400
tileos-settings-sway (1.1.1~tileos) unstable; urgency=medium
* Some fixes
-- Aleksey Samoilov <samoilov.lex@gmail.com> Sat, 20 Jul 2024 15:01:31 +0400
tileos-settings-sway (1.1~tileos) unstable; urgency=medium
* Set qt6 style to kvantum-dark
-- Aleksey Samoilov <samoilov.lex@gmail.com> Wed, 19 Jun 2024 16:57:49 +0400
tileos-settings-sway (1.0.14~tileos) unstable; urgency=medium
* Fix appending user keybindings to help overlay
-- Aleksey Samoilov <samoilov.lex@gmail.com> Sun, 25 Feb 2024 19:22:45 +0400
tileos-settings-sway (1.0.13~tileos) unstable; urgency=medium
* Change wallpaper
-- Aleksey Samoilov <samoilov.lex@gmail.com> Wed, 14 Feb 2024 23:01:19 +0400
tileos-settings-sway (1.0.12~tileos) unstable; urgency=medium tileos-settings-sway (1.0.12~tileos) unstable; urgency=medium
* waybar: disable bluetooth module if no controller is found * waybar: disable bluetooth module if no controller is found

View file

@ -1,3 +1,3 @@
#!/usr/bin/env bash #!/usr/bin/env bash
pkill swaybg pkill swaybg
swaybg -o '*' -i "/usr/share/wallpapers/tileos-final.png" -m fill & swaybg -o '*' -i "/usr/share/wallpapers/tileos-final-sway.png" -m fill &

View file

@ -1,79 +1,97 @@
color_set:
text: &TEXT "#cad3f5"
subtext0: &SUBTEXT0 "#e3e3f3"
subtext1: &SUBTEXT1 "#ced4e0"
surface2: &SURFACE2 "#5b6078"
surface1: &SURFACE1 "#494d64"
index16: &INDEX16 "#ed6c13"
index17: &INDEX17 "#f4dbd6"
base: &BASE "#24273a"
red: &RED "#ed6070"
green: &GREEN "#a6da95"
blue: &BLUE "#8aadf4"
yellow: &YELLOW "#eed49f"
pink: &PINK "#f5bde6"
teal: &TEAL "#8bd5ca"
rosewater: &ROSEWATER "#f4dbd6"
lavender: &LAVENDER "#b7bdf8"
colors: colors:
# Default colors # Default colors
primary: primary:
background: "#24273A" # base background: *BASE
foreground: "#CAD3F5" # text foreground: *TEXT
# Bright and dim foreground colors # Bright and dim foreground colors
dim_foreground: "#CAD3F5" # text dim_foreground: *TEXT
bright_foreground: "#CAD3F5" # text bright_foreground: *TEXT
# Cursor colors # Cursor colors
cursor: cursor:
text: "#24273A" # base text: *BASE
cursor: "#F4DBD6" # rosewater cursor: *ROSEWATER
vi_mode_cursor: vi_mode_cursor:
text: "#24273A" # base text: *BASE
cursor: "#B7BDF8" # lavender cursor: *LAVENDER
# Search colors # Search colors
search: search:
matches: matches:
foreground: "#24273A" # base foreground: *BASE
background: "#A5ADCB" # subtext0 background: *SUBTEXT0
focused_match: focused_match:
foreground: "#24273A" # base foreground: *BASE
background: "#A6DA95" # green background: *GREEN
footer_bar: footer_bar:
foreground: "#24273A" # base foreground: *BASE
background: "#A5ADCB" # subtext0 background: *SUBTEXT0
# Keyboard regex hints # Keyboard regex hints
hints: hints:
start: start:
foreground: "#24273A" # base foreground: *BASE
background: "#EED49F" # yellow background: *YELLOW
end: end:
foreground: "#24273A" # base foreground: *BASE
background: "#A5ADCB" # subtext0 background: *SUBTEXT0
# Selection colors # Selection colors
selection: selection:
text: "#24273A" # base text: *BASE
background: "#F4DBD6" # rosewater background: *ROSEWATER
# Normal colors # Normal colors
normal: normal:
black: "#494D64" # surface1 black: *SURFACE1
red: "#ED8796" # red red: *RED
green: "#A6DA95" # green green: *GREEN
yellow: "#EED49F" # yellow yellow: *YELLOW
blue: "#8AADF4" # blue blue: *BLUE
magenta: "#F5BDE6" # pink magenta: *PINK
cyan: "#8BD5CA" # teal cyan: *TEAL
white: "#B8C0E0" # subtext1 white: *SUBTEXT1
# Bright colors # Bright colors
bright: bright:
black: "#5B6078" # surface2 black: *SURFACE2
red: "#ED8796" # red red: *RED
green: "#A6DA95" # green green: *GREEN
yellow: "#EED49F" # yellow yellow: *YELLOW
blue: "#8AADF4" # blue blue: *BLUE
magenta: "#F5BDE6" # pink magenta: *PINK
cyan: "#8BD5CA" # teal cyan: *TEAL
white: "#A5ADCB" # subtext0 white: *SUBTEXT0
# Dim colors # Dim colors
dim: dim:
black: "#494D64" # surface1 black: *SURFACE1
red: "#ED8796" # red red: *RED
green: "#A6DA95" # green green: *GREEN
yellow: "#EED49F" # yellow yellow: *YELLOW
blue: "#8AADF4" # blue blue: *BLUE
magenta: "#F5BDE6" # pink magenta: *PINK
cyan: "#8BD5CA" # teal cyan: *TEAL
white: "#B8C0E0" # subtext1 white: *SUBTEXT1
indexed_colors: indexed_colors:
- { index: 16, color: "#F5A97F" } - { index: 16, color: *INDEX16 }
- { index: 17, color: "#F4DBD6" } - { index: 17, color: *INDEX17 }

View file

@ -0,0 +1,15 @@
{
adapter: ""
gsm-apn: ""
gsm-number: ""
keybindings: {}
receive-dir: ""
theme: {
AdapterPowered: "powderblue",
AdapterNotPowered: "lightcoral",
AdapterPairable: "thistle",
AdapterScanning: "mistyrose",
DevicePropertyDiscovered: "mistyrose",
DevicePropertyConnected: "powderblue"
}
}

View file

@ -58,7 +58,7 @@ theme[cached_mid]="#8aadf4"
theme[cached_end]="#b7bdf8" theme[cached_end]="#b7bdf8"
# Mem/Disk available meter (Peach -> Red) # Mem/Disk available meter (Peach -> Red)
theme[available_start]="#f5a97f" theme[available_start]="#ed6c13"
theme[available_mid]="#ee99a0" theme[available_mid]="#ee99a0"
theme[available_end]="#ed8796" theme[available_end]="#ed8796"
@ -68,7 +68,7 @@ theme[used_mid]="#8bd5ca"
theme[used_end]="#91d7e3" theme[used_end]="#91d7e3"
# Download graph colors (Peach -> Red) # Download graph colors (Peach -> Red)
theme[download_start]="#f5a97f" theme[download_start]="#ed6c13"
theme[download_mid]="#ee99a0" theme[download_mid]="#ee99a0"
theme[download_end]="#ed8796" theme[download_end]="#ed8796"

View file

@ -17,7 +17,7 @@
# #
# If this option is set to mouse or keyboard, the monitor option # If this option is set to mouse or keyboard, the monitor option
# will be ignored. # will be ignored.
follow = none follow = mouse
### Geometry ### ### Geometry ###
@ -329,7 +329,7 @@
[urgency_critical] [urgency_critical]
background = "#24273A" background = "#24273A"
foreground = "#CAD3F5" foreground = "#CAD3F5"
frame_color = "#F5A97F" frame_color = "#ED6C13"
timeout = 0 timeout = 0
# Icon for notifications with critical urgency, uncomment to enable # Icon for notifications with critical urgency, uncomment to enable
#default_icon = /path/to/icon #default_icon = /path/to/icon

View file

@ -1,7 +1,7 @@
[ [
{ {
"label": "Lock", "label": "Lock",
"exec": "swaymsg exec ~/.config/swaylock/lock.sh", "exec": "swaymsg exec /usr/share/sway/scripts/lock.sh",
"icon": "system-lock-screen" "icon": "system-lock-screen"
}, },
{ {

View file

@ -13,9 +13,9 @@ Catppuccin Gedit theme based on Oblivion theme and Cappuccin for Visual Studio C
<color name="macchiato_flamingo" value="#f0c6c6"/> <color name="macchiato_flamingo" value="#f0c6c6"/>
<color name="macchiato_pink" value="#f5bde6"/> <color name="macchiato_pink" value="#f5bde6"/>
<color name="macchiato_mauve" value="#c6a0f6"/> <color name="macchiato_mauve" value="#c6a0f6"/>
<color name="macchiato_red" value="#ed8796"/> <color name="macchiato_red" value="#ed6070"/>
<color name="macchiato_maroon" value="#ee99a0"/> <color name="macchiato_maroon" value="#ee99a0"/>
<color name="macchiato_peach" value="#f5a97f"/> <color name="macchiato_peach" value="#ed6c13"/>
<color name="macchiato_yellow" value="#eed49f"/> <color name="macchiato_yellow" value="#eed49f"/>
<color name="macchiato_green" value="#a6da95"/> <color name="macchiato_green" value="#a6da95"/>
<color name="macchiato_teal" value="#8bd5ca"/> <color name="macchiato_teal" value="#8bd5ca"/>
@ -24,8 +24,8 @@ Catppuccin Gedit theme based on Oblivion theme and Cappuccin for Visual Studio C
<color name="macchiato_blue" value="#8aadf4"/> <color name="macchiato_blue" value="#8aadf4"/>
<color name="macchiato_lavender" value="#b7bdf8"/> <color name="macchiato_lavender" value="#b7bdf8"/>
<color name="macchiato_text" value="#cad3f5"/> <color name="macchiato_text" value="#cad3f5"/>
<color name="macchiato_subtext1" value="#b8c0e0"/> <color name="macchiato_subtext1" value="#ced4e0"/>
<color name="macchiato_subtext0" value="#a5adcb"/> <color name="macchiato_subtext0" value="#e3e3f3"/>
<color name="macchiato_overlay2" value="#939ab7"/> <color name="macchiato_overlay2" value="#939ab7"/>
<color name="macchiato_overlay1" value="#8087a2"/> <color name="macchiato_overlay1" value="#8087a2"/>
<color name="macchiato_overlay0" value="#6e738d"/> <color name="macchiato_overlay0" value="#6e738d"/>

View file

@ -3,7 +3,7 @@ color_scheme_path=$HOME/.config/qt6ct/colors/Catppuccin-Macchiato.conf
custom_palette=true custom_palette=true
icon_theme=ePapirus icon_theme=ePapirus
standard_dialogs=default standard_dialogs=default
style=Fusion style=kvantum-dark
[Fonts] [Fonts]
fixed="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" fixed="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"

View file

@ -1,6 +1,7 @@
timeout 240 'light -G > /tmp/brightness && light -S 10' resume 'light -S $([ -f /tmp/brightness ] && cat /tmp/brightness || echo 100%)' timeout 240 'light -G > /tmp/brightness && light -S 10' resume 'light -S $([ -f /tmp/brightness ] && cat /tmp/brightness || echo 100%)'
timeout 300 ~/.config/swaylock/lock.sh timeout 300 '/usr/share/sway/scripts/lock.sh'
timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"'
timeout 900 'systemctl suspend'
before-sleep 'playerctl pause' before-sleep 'playerctl pause'
before-sleep ~/.config/swaylock/lock.sh before-sleep '/usr/share/sway/scripts/lock.sh'
lock ~/.config/swaylock/lock.sh lock '/usr/share/sway/scripts/lock.sh'

View file

@ -15,4 +15,4 @@ ring-color=c6a0f6
ring-ver-color=7dc4e4 ring-ver-color=7dc4e4
ring-wrong-color=ee99a0 ring-wrong-color=ee99a0
ring-clear-color=8aadf4 ring-clear-color=8aadf4
ring-caps-lock-color=f5a97f ring-caps-lock-color=ed6c13

View file

@ -10,8 +10,8 @@
@define-color crust #181926; @define-color crust #181926;
@define-color text #cad3f5; @define-color text #cad3f5;
@define-color subtext0 #a5adcb; @define-color subtext0 #e3e3f3;
@define-color subtext1 #b8c0e0; @define-color subtext1 #ced4e0;
@define-color surface0 #363a4f; @define-color surface0 #363a4f;
@define-color surface1 #494d64; @define-color surface1 #494d64;
@ -28,9 +28,9 @@
@define-color teal #8bd5ca; @define-color teal #8bd5ca;
@define-color green #a6da95; @define-color green #a6da95;
@define-color yellow #eed49f; @define-color yellow #eed49f;
@define-color peach #f5a97f; @define-color peach #ed6c13;
@define-color maroon #ee99a0; @define-color maroon #ee99a0;
@define-color red #ed8796; @define-color red #ed6070;
@define-color mauve #c6a0f6; @define-color mauve #c6a0f6;
@define-color pink #f5bde6; @define-color pink #f5bde6;
@define-color flamingo #f0c6c6; @define-color flamingo #f0c6c6;

View file

@ -10,8 +10,8 @@
"custom/help", "custom/help",
"custom/wlsunset", "custom/wlsunset",
"idle_inhibitor", "idle_inhibitor",
"custom/dunst",
"sway/language", "sway/language",
"custom/dunst",
"custom/clipboard", "custom/clipboard",
"cpu", "cpu",
"memory", "memory",
@ -47,7 +47,7 @@
"tooltip-format": "{tooltip}", "tooltip-format": "{tooltip}",
"exec": "echo '{\"class\": \"recording\",\"text\":\"\",\"tooltip\":\"press $mod+Esc to stop recording\"}'", "exec": "echo '{\"class\": \"recording\",\"text\":\"\",\"tooltip\":\"press $mod+Esc to stop recording\"}'",
"exec-if": "pgrep wf-recorder", "exec-if": "pgrep wf-recorder",
"on-click": "killall -s SIGINT wf-recorder", "on-click": "/usr/share/sway/scripts/recorder.sh",
"signal": 8 "signal": 8
}, },

View file

@ -1,5 +1,6 @@
# set floating mode for specific application # set floating mode for specific application
for_window [app_id="firefox" title="^Library$"] floating enable, border pixel 1, sticky enable for_window [app_id="[Ff]irefox" title="^Library$"] floating enable, border pixel 1
for_window [app_id="[Ll]ibrewolf" title="^Library$"] floating enable, border pixel 1
for_window [app_id="thunderbird" title=".*Reminder"] floating enable for_window [app_id="thunderbird" title=".*Reminder"] floating enable
for_window [app_id="floating_shell_portrait"] floating enable, border pixel 1, sticky enable, resize set width 30 ppt height 40 ppt for_window [app_id="floating_shell_portrait"] floating enable, border pixel 1, sticky enable, resize set width 30 ppt height 40 ppt
for_window [app_id="floating_shell"] floating enable, border pixel 1, sticky enable, resize set width 50 ppt height 60 ppt for_window [app_id="floating_shell"] floating enable, border pixel 1, sticky enable, resize set width 50 ppt height 60 ppt
@ -22,7 +23,7 @@ for_window [class="calamares"] floating enable
for_window [app_id="calamares"] floating enable for_window [app_id="calamares"] floating enable
for_window [app_id="sway-input-config"] floating enable for_window [app_id="sway-input-config"] floating enable
for_window [title="Save File"] floating enable for_window [title="Save File"] floating enable
for_window [title="Firefox .*— Sharing Indicator"] floating enable, sticky enable, move to scratchpad for_window [title="[Ff]irefox .*— Sharing Indicator"] floating enable, sticky enable, move to scratchpad
for_window [app_id="" title=".* is sharing your screen."] floating enable for_window [app_id="" title=".* is sharing your screen."] floating enable
# set floating mode for generated windows # set floating mode for generated windows
@ -41,21 +42,19 @@ for_window [title="Copy Files"] floating enable;
for_window [title="Copy Files"] resize set 600 400 for_window [title="Copy Files"] resize set 600 400
for_window [title="Confirm to replace files"] floating enable; for_window [title="Confirm to replace files"] floating enable;
for_window [title="Confirm to replace files"] move position center for_window [title="Confirm to replace files"] move position center
for_window [title="Choose an Application"] floating enable
# apply mark for Xwayland and wayland native browser windows for_window [title="Removable medium is inserted"] floating enable
for_window [class="Chromium-browser"] mark Browser
for_window [class="Brave-browser"] mark Browser
for_window [class="firefox"] mark Browser
for_window [app_id="Chromium-browser"] mark Browser
for_window [app_id="brave-browser"] mark Browser
for_window [app_id="firefox"] mark Browser
# inhibit scrensaver for fullscreen browser windows
for_window [con_mark="Browser"] {
inhibit_idle fullscreen
}
# Don't allow applications to inhibit shortcuts, i.e. grab total control of the # Don't allow applications to inhibit shortcuts, i.e. grab total control of the
# keyboard. Chrome currently abuses this by enabling it for all "--app=..." # keyboard. Chrome currently abuses this by enabling it for all "--app=..."
# shortcuts. # shortcuts.
seat * shortcuts_inhibitor disable seat * shortcuts_inhibitor disable
# mark applications for which shortcuts inhibition is allowed
for_window [class="[Vv]irt-"] mark Grabbing
for_window [class="[Rr]eminna"] mark Grabbing
for_window [app_id="[Vv]irt-"] mark Grabbing
for_window [app_id="[Rr]emmina"] mark Grabbing
# inhibit keyboard shortcuts for marked applications
for_window [con_mark="Grabbing"] shortcuts_inhibitor enable

View file

@ -32,6 +32,7 @@ $bindsym $mod+Shift+e exec nwg-bar -x
$bindsym --locked XF86AudioRaiseVolume exec $volume_up $bindsym --locked XF86AudioRaiseVolume exec $volume_up
$bindsym --locked XF86AudioLowerVolume exec $volume_down $bindsym --locked XF86AudioLowerVolume exec $volume_down
$bindsym --locked XF86AudioMute exec $volume_mute $bindsym --locked XF86AudioMute exec $volume_mute
$bindsym --locked XF86AudioMicMute exec $mic_mute
$bindsym --locked XF86AudioPlay exec playerctl play-pause $bindsym --locked XF86AudioPlay exec playerctl play-pause
$bindsym --locked XF86AudioNext exec playerctl next $bindsym --locked XF86AudioNext exec playerctl next
$bindsym --locked XF86AudioPrev exec playerctl previous $bindsym --locked XF86AudioPrev exec playerctl previous
@ -96,7 +97,6 @@ $bindsym $mod+6 workspace $ws6
$bindsym $mod+7 workspace $ws7 $bindsym $mod+7 workspace $ws7
$bindsym $mod+8 workspace $ws8 $bindsym $mod+8 workspace $ws8
$bindsym $mod+9 workspace $ws9 $bindsym $mod+9 workspace $ws9
$bindsym $mod+0 workspace $ws10
set $focus_ws [ "$focus_after_move" == 'true' ] && swaymsg workspace set $focus_ws [ "$focus_after_move" == 'true' ] && swaymsg workspace
@ -124,6 +124,9 @@ $bindsym $mod+Shift+n exec /usr/share/sway/scripts/first-empty-workspace.py --mo
## Action // Move focused window to a new workspace and switch there ## ## Action // Move focused window to a new workspace and switch there ##
$bindsym $mod+Shift+m exec /usr/share/sway/scripts/first-empty-workspace.py --move --switch $bindsym $mod+Shift+m exec /usr/share/sway/scripts/first-empty-workspace.py --move --switch
## Action // Toogle shortcuts inhibition // $mod + Control_R ##
$bindsym --inhibited $mod+Control_R exec $toggle_shorcuts_inhibitor
# #
# Layout stuff: # Layout stuff:
# #

View file

@ -16,4 +16,4 @@ mode --pango_markup $mode_recording {
$bindsym $mod+Shift+r mode $mode_recording $bindsym $mod+Shift+r mode $mode_recording
## Launch // Stop Recording Mode ## ## Launch // Stop Recording Mode ##
$bindsym $mod+Escape exec killall -s SIGINT wf-recorder $bindsym $mod+Escape exec $recorder

View file

@ -0,0 +1,18 @@
#
# Screenmirror:
#
# The mode allows the user to mirror the headless output.
# This is primarily used when screencasting to cast only the windows that
# belong to the headless output instead of casting the entire screen.
#
# See the following link for more details:
# https://github.com/emersion/xdg-desktop-portal-wlr/issues/107#issuecomment-1596107337
# set $screenmirror /usr/share/sway/scripts/screenmirror.sh
# set $start_mirror systemd-cat $screenmirror $headless
# set $stop_mirror systemd-cat $screenmirror -k
# ## Launch // Switch to the workspace for mirroring ##
# $bindsym $mod+0 exec $start_mirror, workspace $ws10
# ## Launch // Switch back from the workspace for mirroring ##
# $bindsym $mod+Mod1+0 exec $stop_mirror, workspace back_and_forth

View file

@ -0,0 +1,9 @@
# This output configuration is required for the screenmirror mode to work.
#set $headless HEADLESS-1
#output $headless {
# position 16000 16000
#}
#workspace $ws10 output $headless
#exec swaymsg create_output

View file

@ -15,13 +15,13 @@ set $flock /usr/share/sway/scripts/flock.sh
# Your preferred terminal emulator # Your preferred terminal emulator
set $term alacritty set $term alacritty
set $term_cwd $term --working-directory "$(/usr/share/sway/scripts/swaycwd.sh 2>/dev/null || echo $HOME)" set $term_cwd $term --working-directory "$(/usr/share/sway/scripts/swaycwd.sh 2>/dev/null || echo $HOME)"
set $term_float alacritty --class floating_shell -e set $term_float $term --class floating_shell -e
# Rofi theme # Rofi theme
set $rofi_theme "* {lightbg: $base; background: $base; lightfg: $blue; foreground: $text; border-color: $blue;} window {border: 2;}" set $rofi_theme "* {lightbg: $base; background: $base; lightfg: $blue; foreground: $text; border-color: $blue;} window {border: 2;}"
# Your preferred application launcher # Your preferred application launcher
set $menu rofi -show combi -combi-modi "drun,run" -terminal $term -ssh-command "{terminal} {ssh-client} {host} [-p {port}]" -run-shell-command "{terminal} {cmd}" -show-icons -font "$gui-font" set $menu rofi -show combi -modes combi -combi-modes "drun,run" -terminal "$term" -show-icons -font "$gui-font"
# Add --to-code to bindsym, support for non-latin layouts # Add --to-code to bindsym, support for non-latin layouts
set $bindsym bindsym --to-code set $bindsym bindsym --to-code
@ -44,6 +44,7 @@ set $brightness_down light -r -U $($brightness_step) && $brightness_bar
set $volume_down pulsemixer --change-volume -5 && $volume_bar set $volume_down pulsemixer --change-volume -5 && $volume_bar
set $volume_up pulsemixer --change-volume +5 && $volume_bar set $volume_up pulsemixer --change-volume +5 && $volume_bar
set $volume_mute pulsemixer --toggle-mute && $volume_bar set $volume_mute pulsemixer --toggle-mute && $volume_bar
set $mic_mute /usr/share/sway/scripts/mic-mute.sh
# Clipboard history # Clipboard history
set $clipboard cliphist list | rofi -dmenu -font "$gui-font" -p "Select item to copy:" -lines 10 -width 35 | cliphist decode | wl-copy set $clipboard cliphist list | rofi -dmenu -font "$gui-font" -p "Select item to copy:" -lines 10 -width 35 | cliphist decode | wl-copy
@ -71,7 +72,7 @@ set $ws6 number 6
set $ws7 number 7 set $ws7 number 7
set $ws8 number 8 set $ws8 number 8
set $ws9 number 9 set $ws9 number 9
set $ws10 number 10 set $ws10 "<span baseline_shift='-20pt' weight='bold'>🖵</span>"
# Screenshot # Screenshot
set $grimshot /usr/bin/grimshot set $grimshot /usr/bin/grimshot
@ -104,14 +105,14 @@ set $switch_toplevel '[ -f /usr/share/sway/scripts/switch-top-level.py ] && /usr
set $kanshi '[ -x "$(command -v kanshi)" ] && pkill kanshi; exec kanshi' set $kanshi '[ -x "$(command -v kanshi)" ] && pkill kanshi; exec kanshi'
# Start PCmanFM-Qt as a daemon # Start PCmanFM-Qt as a daemon
set $pcmanfm_daemon '[ -x "$(command -v pcmanfm)" ] && pcmanfm-qt -d' set $pcmanfm_daemon '[ -x "$(command -v pcmanfm-qt)" ] && pcmanfm-qt -d'
# Clipboard manager # Clipboard manager
set $cliphist_store '[ -x "$(command -v wl-paste)" ] && [ -x "$(command -v cliphist)" ] && wl-paste --watch cliphist store' set $cliphist_store '[ -x "$(command -v wl-paste)" ] && [ -x "$(command -v cliphist)" ] && wl-paste --watch cliphist store'
set $cliphist_watch '[ -x "$(command -v wl-paste)" ] && [ -x "$(command -v cliphist)" ] && wl-paste --watch pkill -RTMIN+9 waybar' set $cliphist_watch '[ -x "$(command -v wl-paste)" ] && [ -x "$(command -v cliphist)" ] && wl-paste --watch pkill -RTMIN+9 waybar'
# Start nwg-drawer as a daemon # Start nwg-drawer as a daemon
set $nwg_drawer_daemon '[ -x "$(command -v nwg-drawer)" ] && nwg-drawer -r' set $nwg_drawer_daemon '[ -x "$(command -v nwg-drawer)" ] && nwg-drawer -r -term "$term"'
# Start playerctl as daemon # Start playerctl as daemon
set $watch_playerctl '[ -x "$(command -v playerctl)" ] && pkill playerctl; playerctl -a metadata --format \'{{status}} {{title}}\' --follow | while read line; do pkill -RTMIN+5 waybar; done' set $watch_playerctl '[ -x "$(command -v playerctl)" ] && pkill playerctl; playerctl -a metadata --format \'{{status}} {{title}}\' --follow | while read line; do pkill -RTMIN+5 waybar; done'
@ -124,3 +125,9 @@ set $calendar_daemon 'calcurse --daemon'
# Notifications from Swappy # Notifications from Swappy
set $swappy_notify '[ -x "$(command -v swappy)" ] && /usr/share/sway/scripts/screenshot-notify.sh' set $swappy_notify '[ -x "$(command -v swappy)" ] && /usr/share/sway/scripts/screenshot-notify.sh'
# Start a screensaver
set $lock '/usr/share/sway/scripts/lock.sh'
# Toggle shortcuts inhibition mode for the current focused window
set $toggle_shorcuts_inhibitor 'swaymsg "seat - shortcuts_inhibitor toggle"'

View file

@ -0,0 +1,3 @@
[screencast]
chooser_type=dmenu
chooser_cmd=/usr/share/sway/scripts/select-output.sh

View file

@ -47,9 +47,14 @@ if [ -d "${XDG_CONFIG_HOME:-$HOME/.config}/environment.d" ]; then
set +o allexport set +o allexport
fi fi
# Run Sway under ssh-agent
run_sway() {
exec systemd-cat -- /usr/bin/ssh-agent /usr/bin/sway $@
}
# Check if Nvidia driver installed, start Sway and send output to the journal # Check if Nvidia driver installed, start Sway and send output to the journal
if [ -d /sys/module/nvidia ] && [ ! -d /sys/module/amdgpu ] && [ ! -d /sys/module/i915 ]; then if [ -d /sys/module/nvidia ] && [ ! -d /sys/module/amdgpu ] && [ ! -d /sys/module/i915 ]; then
exec systemd-cat -- /usr/bin/sway --unsupported-gpu $@ run_sway --unsupported-gpu $@
else else
exec systemd-cat -- /usr/bin/sway $@ run_sway
fi fi

View file

@ -0,0 +1,12 @@
[Unit]
Description=Toggle idle inhibition depending on whether the audio is playing or not
PartOf=swayidle.service
After=swayidle.service
[Service]
ExecStart=/usr/share/sway/scripts/idle-inhibitor.sh
Restart=always
RestartSec=30
[Install]
WantedBy=sway-session.target

View file

@ -0,0 +1,9 @@
[Unit]
Description=Automatically restart the swayidle when its configuration changes
PartOf=swayidle.service
[Path]
PathChanged=%h/.config/swayidle/config
[Install]
WantedBy=paths.target

View file

@ -0,0 +1,6 @@
[Service]
ExecStart=systemctl --user restart swayidle.service
Type=oneshot
[Install]
WantedBy=graphical-session.target

View file

@ -6,7 +6,7 @@ ConditionPathExists=/usr/bin/swayidle
[Service] [Service]
Type=simple Type=simple
ExecStart=/usr/bin/swayidle ExecStart=/usr/bin/swayidle -w
[Install] [Install]
WantedBy=sway-session.target WantedBy=sway-session.target

View file

@ -0,0 +1,11 @@
[Unit]
Description=Automatically restart the waybar when its configuration changes
PartOf=waybar.service
[Path]
PathChanged=%h/.config/waybar
PathChanged=%h/.config/waybar/colors
PathChanged=%h/waybar/config
[Install]
WantedBy=paths.target

View file

@ -0,0 +1,3 @@
[Service]
ExecStart=systemctl --user restart waybar.service
Type=oneshot

View file

@ -6,9 +6,9 @@ VISIBILITY_SIGNAL=30
QUIT_SIGNAL=31 QUIT_SIGNAL=31
if [ "$1" = "--toggle" ]; then if [ "$1" = "--toggle" ]; then
pkill -f -${VISIBILITY_SIGNAL} nwg-wrapper pkill -f -${VISIBILITY_SIGNAL} 'nwg-wrapper.*-s help.sh'
else else
pkill -f -${QUIT_SIGNAL} nwg-wrapper pkill -f -${QUIT_SIGNAL} 'nwg-wrapper.*-s help.sh'
for output in $(swaymsg -t get_outputs --raw | jq -r '.[].name'); do for output in $(swaymsg -t get_outputs --raw | jq -r '.[].name'); do
nwg-wrapper -o "$output" -i -sv ${VISIBILITY_SIGNAL} -sq ${QUIT_SIGNAL} -s help.sh -p left -a end & nwg-wrapper -o "$output" -i -sv ${VISIBILITY_SIGNAL} -sq ${QUIT_SIGNAL} -s help.sh -p left -a end &
done done

View file

@ -0,0 +1,32 @@
#!/bin/bash
check_status() {
grep -s -l -v "closed" \
/proc/asound/card*/pcm*/sub*/status \
&>/dev/null
}
out() {
printf "Idle inhibition is OFF.\n"
exit 0
}
watch_status() {
printf "Idle inhibition is ON.\n"
while check_status; do
sleep 10
done
out
}
main() {
check_status || out
test "$1" = "-w" && watch_status
systemd-inhibit \
--what=idle \
--who="${0##*/}" \
--why="Inhibit idle due to audio is now playing" \
--mode=block \
"$0" -w
}
main "$@"

10
usr/share/sway/scripts/lock.sh Executable file
View file

@ -0,0 +1,10 @@
#!/bin/bash
USER_SCRIPT="$HOME/.config/swaylock/lock.sh"
GLOB_SCRIPT="/usr/share/sway/scripts/swaylock.sh"
if [[ -x "$USER_SCRIPT" ]]; then
"$USER_SCRIPT"
else
"$GLOB_SCRIPT"
fi

View file

@ -0,0 +1,14 @@
#!/bin/bash
set -e
MIC="${1:-'Capture'}"
amixer sset "$MIC" toggle
STATE="$(amixer sget "$MIC",0 | sed -E -e '0,/^.*\[(on|off)\].*$/d' -e 's/^.*\[(\w+)\].*$/\1/')"
test -n "$STATE" && notify-send \
--app-name sway \
--expire-time 800 \
"Microphone is $STATE"

View file

@ -1,44 +1,69 @@
#!/bin/bash #!/bin/bash
set -x
pgrep wf-recorder
status=$?
countdown() { countdown() {
notify "Recording in 3 seconds" -t 1000 for count in {3..1}; do
sleep 1 notify "Recording in $count seconds" -t 1000
notify "Recording in 2 seconds" -t 1000 sleep 1
sleep 1 done
notify "Recording in 1 seconds" -t 1000
sleep 1
} }
notify() { notify() {
line=$1 notify-send \
shift "$1" \
notify-send "Recording" "${line}" -i /usr/share/icons/Yaru/scalable/devices/camera-video-symbolic.svg "$*" -i "/usr/share/icons/Yaru/scalable/devices/camera-video-symbolic.svg" \
"${@:2}"
} }
if [ $status != 0 ]; then kill_waybar() {
pkill -RTMIN+8 waybar
}
kill_recursive() {
ps -o sid= -p "$1" | xargs pkill --signal SIGINT -g
}
cleanup() {
pid=$(cat "$1")
rm "$1"
kill_waybar
kill_recursive "$pid"
exit
}
main() {
pid_file="/tmp/screenrecorder-$UID.pid"
test -e "$pid_file" && cleanup "$pid_file"
echo "$$" > "$pid_file"
target_path=$(xdg-user-dir VIDEOS) target_path=$(xdg-user-dir VIDEOS)
timestamp=$(date +'recording_%Y%m%d-%H%M%S') timestamp=$(date +'recording_%Y%m%d-%H%M%S')
notify "Select a region to record" -t 1000 notify "Select a region to record" -t 1000
area=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp) area=$(swaymsg -t get_tree | \
jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | \
slurp)
countdown countdown
(sleep 0.5 && pkill -RTMIN+8 waybar) & (sleep 0.5 && kill_waybar) &
if [ "$1" == "-a" ]; then if [[ "$1" == "-a" ]]; then
file="$target_path/$timestamp.mp4" file="$target_path/$timestamp.mp4"
wf-recorder --audio -g "$area" --file="$file" wf-recorder --audio -g "$area" --file="$file"
else else
file="$target_path/$timestamp.webm" file="$target_path/$timestamp.webm"
wf-recorder -g "$area" -c libvpx --codec-param="qmin=0" --codec-param="qmax=25" --codec-param="crf=4" --codec-param="b:v=1M" --file="$file" output="$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')"
wf-recorder \
-g "$area" -c libvpx \
--codec-param="qmin=0" \
--codec-param="qmax=25" \
--codec-param="crf=4" \
--codec-param="b:v=1M" \
-o "$output" \
--file="$file"
fi fi
pkill -RTMIN+8 waybar && notify "Finished recording ${file}" kill_waybar && notify "Finished recording ${file}"
else rm $pid_file
pkill --signal SIGINT wf-recorder }
pkill -RTMIN+8 waybar main "$@"
fi

View file

@ -2,6 +2,7 @@
import sys import sys
import glob import glob
import re import re
import os
from typing import Text from typing import Text
import json import json
@ -26,6 +27,7 @@ def readFile(filePath):
for line in allLines: for line in allLines:
if re.search(r'^include\s+(.+?)$', line): if re.search(r'^include\s+(.+?)$', line):
nextPath = re.findall(r'^include\s+(.+?)$', line)[0] nextPath = re.findall(r'^include\s+(.+?)$', line)[0]
nextPath = os.path.expandvars(nextPath)
finalLines = finalLines + readFile(nextPath) finalLines = finalLines + readFile(nextPath)
else: else:
finalLines = finalLines + [line] finalLines = finalLines + [line]

View file

@ -0,0 +1,38 @@
#!/bin/bash
#
# This script implements the function of mirroring outputs.
# It uses wl-mirror and Sway's ability to create headless outputs.
#
# The script is written as a singleton. It allows the user to run only one
# instance of itself and kills all others. This is necessary so that wl-mirror
# instances do not interfere with each other.
SELF_NAME="$(basename "$0")"
SELF_PID="$$"
get_pgid() {
ps -h -o "%r" -p "$1" | awk '{print $1}'
}
SELF_PGID="$(get_pgid "$SELF_PID")"
kill_by_pgid() {
pkill -"$2" -g "$1"
}
kill_copies() {
mapfile -t pids < <(pgrep -u "$USER" -x "$SELF_NAME")
for pid in "${pids[@]}" ; do
pgid="$(get_pgid "$pid")"
[[ $pgid -ne $SELF_PGID ]] && kill_by_pgid "$pgid" "INT"
done
}
main() {
# Don't single quote the trap's command!
# It must be expanded when the trap is defined.
# shellcheck disable=SC2064
trap "kill_by_pgid $SELF_PGID TERM" INT
kill_copies
[[ "$1" != "-k" ]] && wl-mirror -F "${1:-HEADLESS-1}"
}
main "$@"

View file

@ -0,0 +1,33 @@
#!/bin/bash
export LC_ALL=C
TITLE="Select the output for the screencast"
OUT_NAME="HEADLESS-1"
FONT_SIZE="12"
ROSEWATER="#f4dbd6"
FONT="Noto Sans ${FONT_SIZE}"
FONT_COLOR="${ROSEWATER}"
I_SIZE="$(awk "BEGIN {print (${FONT_SIZE}*1.08)}")"
OUT_SIZE="$(awk "BEGIN {print (${FONT_SIZE}*0.94)}")"
TIP_SHIFT="$(awk "BEGIN {print (1+(${I_SIZE}-${FONT_SIZE})/2)}")"
TIP="\
<span color='${FONT_COLOR}'>\
<span size='${I_SIZE}pt'></span> \
<span baseline_shift='${TIP_SHIFT}pt'>use \
<span size='${OUT_SIZE}pt'>${OUT_NAME}</span> \
to cast only chosen windows\
</span>\
</span>\
"
swaymsg -t get_outputs \
| jq -r '.[] | .name' \
| rofi \
-dmenu -i -l 4 \
-p "${TITLE}" \
-window-title "${TITLE}" \
-mesg "${TIP}" \
-font "${FONT}"