Commit graph

3883 commits

Author SHA1 Message Date
Calvin Lee 843ad38b3c Implement Tray Icons
This commit implements the StatusNotifierItem protocol, and enables
swaybar to show tray icons. It also uses `xembedsniproxy` in order to
communicate with xembed applications.
The tray is completely optional, and can be disabled on compile time
with the `enable-tray` option. Or on runtime with the bar config option
`tray_output none`.

Overview of changes:
In swaybar very little is changed outside the tray subfolder except
that all events are now polled in `event_loop.c`, this creates no
functional difference.

Six bar configuration options were added, these are detailed in
sway-bar(5)

The tray subfolder is where all protocol implementation takes place and
is organised as follows:

tray/sni_watcher.c:
	This file contains the StatusNotifierWatcher. It keeps track of
	items and hosts and reports when they come or go.
tray/tray.c
	This file contains the StatusNotifierHost. It keeps track of
	sway's version of the items and represents the tray itself.
tray/sni.c
	This file contains the StatusNotifierItem struct and all
	communication with individual items.
tray/icon.c
	This file implements the icon theme protocol. It allows for
	finding icons by name, rather than by pixmap.
tray/dbus.c
	This file allows for asynchronous DBus communication.

See #986 #343
2017-06-07 17:49:16 -07:00
Drew DeVault fd47a30e75 Merge pull request #1232 from johalun/master-freebsd
FreeBSD fixes
2017-06-06 09:34:01 -04:00
johalun 7fef283044 FreeBSD fixes
Increase _POSIX_SOURCE value where needed.
Increase _XOPEN_SOURCE value where needed.
Conditionally link to libcap (only on Linux).
Possibly some trailing whitespace fixes (automatic).
2017-06-06 09:45:50 +02:00
Drew DeVault 5ed533a943 Revert "Drop epoll dependency"
This reverts commit 91f2bf81bf.
2017-05-17 13:11:49 -04:00
Drew DeVault 91f2bf81bf Drop epoll dependency 2017-05-17 13:10:33 -04:00
Drew DeVault 6df0f9a7e4 Merge pull request #1218 from Hummer12007/suicaps
Terminate when both suid bit and filecaps are set
2017-05-11 12:48:30 -04:00
Mykyta Holubakha f470fa58a3 Replace spaces with tabs in resolve_path 2017-05-11 19:38:32 +03:00
Mykyta Holubakha 93cf21fb9a Terminate when both suid bit and filecaps are set 2017-05-11 19:33:57 +03:00
Mykyta Holubakha f736198c31 Initialise logging earlier 2017-05-11 19:29:25 +03:00
Drew DeVault 46fbb413f2 Mention Patreon in README.md
Does this make me a sellout
2017-05-11 11:47:42 -04:00
Drew DeVault ee81b1aecb Merge pull request #1211 from wdbw/missing-send-event
Add missing send-event mode to sway-input(5)
2017-05-06 08:43:48 -04:00
wdbw 264a9ee9d8 Add missing send-event mode to sway-input(5)
Also, fix a small typo.
2017-05-06 10:45:17 +01:00
Drew DeVault 781fc604b4 Merge pull request #1209 from janza/mouse-bindings
Add mouse button bindings
2017-05-04 17:17:13 -04:00
Josip Janzic 400998d6d2 Add mouse button bindings
Adds support for bindings like:

bindsym button3 floating toggle
bindsym $mod+button3 floating toggle
2017-05-04 23:00:03 +02:00
Drew DeVault 02d1ae7e27 Merge pull request #1206 from zandrmartin/document-font-command
document font command
2017-05-01 12:58:02 -04:00
Zandr Martin 51ce752ebf
document font command 2017-05-01 12:53:07 -04:00
Drew DeVault 106868ddbf Update config.in
swaymsg -t get_inputs now pretty prints its output, so this warning is
obsolete
2017-04-30 22:52:19 -04:00
Drew DeVault 5e845a38f5 Merge pull request #1204 from zandrmartin/prevent-layout-auto-crash
prevent crash when `layout auto` is missing args
2017-04-29 14:16:20 -04:00
Zandr Martin f65a88e68d
prevent crash when layout auto is missing args 2017-04-29 14:02:07 -04:00
Drew DeVault 34fae764a5 Add HACKING.md 2017-04-29 10:54:08 -04:00
Drew DeVault 816ceddcbd Set child border to background if not specified 2017-04-29 10:07:18 -04:00
Drew DeVault eab29ca0ce Merge pull request #1201 from SirCmpwn/fix-colors
Support specifying fewer than 5 colors
2017-04-29 10:04:13 -04:00
Drew DeVault 02812a2e4d Support specifying fewer than 5 colors
This doesn't work, I'm not sure why. The color structs definitely get
changed but if you specify fewer than 5, it renders with the defaults.
2017-04-29 09:56:07 -04:00
Drew DeVault a5c07dde6a Implement KDE's server-side decoration protocol 2017-04-28 20:32:05 -04:00
Drew DeVault 1376de4f46 Update .build.yml 2017-04-26 22:37:15 -04:00
Drew DeVault 11b4c3454c Merge pull request #1196 from SirCmpwn/no_focus
Implement no_focus
2017-04-26 17:20:12 -04:00
Drew DeVault 537261f23f Fix handling of floating windows 2017-04-26 17:14:24 -04:00
Drew DeVault ffd0d020d6 Update sway(5) 2017-04-26 15:35:54 -04:00
Drew DeVault 51143a75af Implement no_focus
Ref #2
2017-04-26 15:29:42 -04:00
Drew DeVault 3c1fc00f12 Merge pull request #1194 from snoack/version
Add -DVERSION flag for release version numbers
2017-04-26 10:18:03 -04:00
Drew DeVault 586eca0e4c Fix link to dotfiles, closes #1193 2017-04-26 10:07:32 -04:00
Sebastian Noack 173b338567 Add -DVERSION flag for release version numbers 2017-04-26 15:56:46 +02:00
Drew DeVault aca0710b9e Merge pull request #1187 from 4e554c4c/master
Fix typo in sway(5)
2017-04-24 03:08:28 -04:00
Calvin Lee 0dc7e9f514 Fix typo in sway(5) 2017-04-23 21:57:23 -06:00
Drew DeVault d2de52209e Merge pull request #1184 from JerziKaminsky/logging2
More Logging Fixes
2017-04-20 13:00:56 -04:00
Drew DeVault 39a65a6181 Merge branch 'master' into logging2 2017-04-20 12:55:34 -04:00
Jerzi Kaminsky 8ecb490679 Make sway_abort() report location 2017-04-20 19:20:40 +03:00
Drew DeVault 382b678100 Merge pull request #1183 from sleep-walker/master
explicitly ignore unused return value
2017-04-19 09:17:00 -04:00
Tomáš Čech 974be01e83
explicitly ignore unused return value
fixes issue#1182
2017-04-19 10:16:24 +02:00
Drew DeVault 94ad169eb6 Merge pull request #1181 from wasamasa/bugfix-initial-scratchpad-size
Use i3's dimensions for initial scratchpad views
2017-04-18 17:57:07 -04:00
Drew DeVault 35603b2341 Merge pull request #1178 from 4e554c4c/fork
Prevent sway from duplicating on a failed fork
2017-04-18 17:49:23 -04:00
Vasilij Schneidermann 0f31323659 Use i3's dimensions for initial scratchpad views
See https://github.com/i3/i3/blob/master/src/scratchpad.c#L196-L197
2017-04-18 23:47:09 +02:00
Calvin Lee cee26500a8 Prevent sway from duplicating on a failed fork
Also remove a useless `sway_log` and replace it with a pipe
2017-04-18 15:25:37 -06:00
Drew DeVault 17593ac559 Merge pull request #1180 from wasamasa/feature-move-to-scratchpad
Feature move to scratchpad
2017-04-18 15:50:54 -04:00
Vasilij Schneidermann d4ac594264 Implement and document move [to] scratchpad 2017-04-18 21:41:28 +02:00
Drew DeVault 3c02aa17ca Add .build.yml (for builds.sr.ht) 2017-04-18 13:15:23 -04:00
Drew DeVault 7494a48378 Merge pull request #1173 from JerziKaminsky/security_resolve_symlink
FOR_REVIEW: IPC security - Allow policy targets to be symlinks
2017-04-16 10:17:43 -04:00
Jerzi Kaminsky 2ad8850398 Handle symlinks as IPC security targets
- When policies are allocated, the ipc target path goes
  through symlink resolution. The result is used as
  the canonical for matching pids to policies at runtime.
  In particular, this matches up with the target of
  the `/proc/<pid>/exe`.
- There's a possible race condition if this isn't done
  correctly, read below.

Originally, validate_ipc_target() always tried to resolve
its argument for symlinks, and returned a parogram target string
if it validates. This created a possible race condition with
security implications. The problem is that get_feature_policy()
first independently resolved the policy target in order to check
whether a policy already exists. If it didn't find any, it called
alloc_feature_policy() which called validate_ipc_target() which
resolved the policy target again. In the time between the two
checks, the symlink could be altered, and a lucky attacker could
fool the program into thinking that a policy doesn't exist
for a target, and then switch the symlink to point at another file.
At the very least this could allow him to create two policies
for the same program target, and possibly to bypass security
by associating the permissions for one target with another,
or force default permissions to apply to a target for which
a more specific rule has been configured. So we don't that.

Instead, the policy target is resolved once and that result is
used for the rest of the lookup/creation process.
2017-04-16 17:09:53 +03:00
Jerzi Kaminsky c9694ee63d Add resolve_path() to utils 2017-04-16 17:09:53 +03:00
Jerzi Kaminsky bcf9338ce7 Add validate_ipc_target() 2017-04-16 17:09:53 +03:00